From b0a357d401aecf419253180c36369fb99fd3297c Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Wed, 20 Jan 2021 10:42:44 -0300 Subject: [PATCH 1/6] Add buildroot example Signed-off-by: Uilian Ries --- README.md | 7 + features/buildroot/.defconfig | 51 + features/buildroot/.flake8 | 5 + features/buildroot/.gitignore | 15 + features/buildroot/.gitlab-ci.yml | 465 + features/buildroot/.gitlab-ci.yml.in | 118 + features/buildroot/CHANGES | 8045 +++++++++++++++++ features/buildroot/COPYING | 355 + features/buildroot/Config.in | 868 ++ features/buildroot/Config.in.legacy | 4372 +++++++++ features/buildroot/DEVELOPERS | 2413 +++++ features/buildroot/Makefile | 1212 +++ features/buildroot/Makefile.legacy | 59 + features/buildroot/README | 26 + features/buildroot/arch/Config.in | 472 + features/buildroot/arch/Config.in.arc | 102 + features/buildroot/arch/Config.in.arm | 934 ++ features/buildroot/arch/Config.in.csky | 49 + features/buildroot/arch/Config.in.m68k | 43 + features/buildroot/arch/Config.in.microblaze | 17 + features/buildroot/arch/Config.in.mips | 276 + features/buildroot/arch/Config.in.nds32 | 14 + features/buildroot/arch/Config.in.nios2 | 11 + features/buildroot/arch/Config.in.or1k | 11 + features/buildroot/arch/Config.in.powerpc | 213 + features/buildroot/arch/Config.in.riscv | 130 + features/buildroot/arch/Config.in.sh | 35 + features/buildroot/arch/Config.in.sparc | 37 + features/buildroot/arch/Config.in.x86 | 306 + features/buildroot/arch/Config.in.xtensa | 55 + features/buildroot/arch/arch.mk | 22 + features/buildroot/arch/arch.mk.arc | 4 + features/buildroot/arch/arch.mk.csky | 26 + features/buildroot/arch/arch.mk.riscv | 30 + features/buildroot/arch/arch.mk.xtensa | 36 + .../board/aarch64-efi/genimage-efi.cfg | 30 + features/buildroot/board/aarch64-efi/grub.cfg | 6 + .../buildroot/board/aarch64-efi/post-image.sh | 5 + .../buildroot/board/aarch64-efi/readme.txt | 34 + .../board/acmesystems/aria-g25/genimage.cfg | 35 + .../board/acmesystems/aria-g25/post-image.sh | 14 + .../board/acmesystems/aria-g25/readme.txt | 44 + .../acmesystems/arietta-g25/genimage.cfg | 35 + .../acmesystems/arietta-g25/post-image.sh | 14 + .../board/acmesystems/arietta-g25/readme.txt | 49 + .../altera/socrates_cyclone5/boot-env.txt | 8 + .../altera/socrates_cyclone5/genimage.cfg | 58 + .../board/altera/socrates_cyclone5/readme.txt | 52 + .../board/amarula/a64-relic/extlinux.conf | 4 + .../board/amarula/a64-relic/genimage.cfg | 10 + .../board/amarula/a64-relic/post-build.sh | 4 + .../board/amarula/a64-relic/readme.txt | 90 + .../lib/firmware/brcm/brcmfmac4330-sdio.txt | 83 + .../board/amarula/vyasa/extlinux.conf | 4 + .../board/amarula/vyasa/genimage.cfg | 22 + .../board/amarula/vyasa/linux_gmac.fragment | 3 + ...Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch | 35 + .../board/amarula/vyasa/post-build.sh | 9 + .../buildroot/board/amarula/vyasa/readme.txt | 31 + .../board/andes/ae3xx/ae3xx.fragment | 1 + ...0001-nds32-Fix-boot-messages-garbled.patch | 28 + features/buildroot/board/andes/readme.txt | 49 + .../arcturus/aarch64-ucls1012a/post-image.sh | 6 + .../arcturus/aarch64-ucls1012a/readme.txt | 74 + .../rootfs_overlay/etc/init.d/S09modload | 14 + .../board/arcturus/ppc-ucp1020/readme.txt | 74 + .../board/arm/foundation-v8/readme.txt | 19 + .../board/arm/juno/linux-juno-defconfig | 169 + features/buildroot/board/arm/juno/readme.txt | 134 + .../board/armadeus/apf27/linux-4.12.config | 216 + .../board/armadeus/apf51/linux-4.4.config | 278 + features/buildroot/board/armadeus/readme.txt | 84 + .../buildroot/board/asus/tinker/extlinux.conf | 4 + .../buildroot/board/asus/tinker/genimage.cfg | 15 + ...Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch | 35 + .../buildroot/board/asus/tinker/post-build.sh | 9 + .../buildroot/board/asus/tinker/readme.txt | 37 + .../board/atmel/at91sam9x5ek_mmc/genimage.cfg | 39 + .../atmel/at91sam9x5ek_mmc/uboot-env.txt | 7 + features/buildroot/board/atmel/flasher.sh | 145 + features/buildroot/board/atmel/nandflash.tcl | 358 + features/buildroot/board/atmel/readme.txt | 173 + .../atmel/sama5d27_som1_ek_mmc/genimage.cfg | 31 + .../atmel/sama5d2_xplained_mmc/genimage.cfg | 34 + .../atmel/sama5d3_xplained_mmc/genimage.cfg | 34 + .../atmel/sama5d4_xplained_mmc/genimage.cfg | 35 + .../board/avnet/s6lx9_microboard/lx9_mmu.dts | 247 + .../avnet/s6lx9_microboard/lx9_mmu_defconfig | 68 + .../board/avnet/s6lx9_microboard/readme.txt | 70 + .../board/bananapi/bananapi-m1/boot.cmd | 7 + .../board/bananapi/bananapi-m1/genimage.cfg | 33 + .../board/bananapi/bananapi-m1/readme.txt | 37 + .../board/bananapi/bananapi-m2-ultra/boot.cmd | 7 + .../bananapi/bananapi-m2-ultra/genimage.cfg | 33 + .../bananapi/bananapi-m2-ultra/readme.txt | 35 + .../board/bananapi/bananapi-m64/boot.cmd | 6 + .../board/bananapi/bananapi-m64/genimage.cfg | 39 + .../board/bananapi/bananapi-m64/readme.txt | 37 + .../board/beagleboardx15/genimage.cfg | 26 + .../board/beagleboardx15/post-image.sh | 15 + .../buildroot/board/beagleboardx15/readme.txt | 49 + .../buildroot/board/beaglebone/genimage.cfg | 33 + .../board/beaglebone/genimage_linux41.cfg | 32 + .../board/beaglebone/linux-4.1-sgx.fragment | 12 + ...1-keep-jtag-clock-alive-for-debugger.patch | 16 + .../buildroot/board/beaglebone/post-image.sh | 29 + .../buildroot/board/beaglebone/readme.txt | 52 + features/buildroot/board/beaglebone/uEnv.txt | 8 + .../board/boundarydevices/common/boot.cmd | 151 + .../board/boundarydevices/common/genimage.cfg | 18 + .../boundarydevices/common/post-build.sh | 29 + .../boundarydevices/common/post-image.sh | 16 + .../board/boundarydevices/common/readme.txt | 30 + .../board/boundarydevices/common/upgrade.cmd | 211 + .../board/chromebook/snow/kernel.args | 1 + .../board/chromebook/snow/kernel.its | 37 + .../chromebook/snow/linux-4.15-dts-tpm.patch | 27 + .../board/chromebook/snow/linux-4.15.fragment | 2 + .../buildroot/board/chromebook/snow/mksd.sh | 69 + .../board/chromebook/snow/readme.txt | 137 + .../buildroot/board/chromebook/snow/sign.sh | 41 + features/buildroot/board/ci20/genimage.cfg | 29 + .../0001-mips-Remove-default-endiannes.patch | 66 + features/buildroot/board/ci20/readme.txt | 46 + features/buildroot/board/ci20/uboot-env.txt | 10 + features/buildroot/board/csky/gx6605s/gdbinit | 25 + ...ine-for-serial-console-and-rootfs-on.patch | 25 + features/buildroot/board/csky/readme.txt | 88 + .../board/cubietech/cubieboard2/boot.cmd | 5 + .../board/cubietech/cubieboard2/genimage.cfg | 37 + .../board/cubietech/cubieboard2/post-image.sh | 16 + .../board/embest/riotboard/genimage.cfg | 17 + .../board/embest/riotboard/readme.txt | 38 + .../boot/extlinux/extlinux.conf | 6 + .../board/engicam/geam6ul/genimage.cfg | 38 + .../board/engicam/geam6ul/readme.txt | 66 + .../board/engicam/icorem6/genimage.cfg | 41 + .../board/engicam/icorem6/linux_qt5.fragment | 4 + .../board/engicam/icorem6/readme.txt | 93 + .../root/imx6qdl-icore-ofcap10.json | 11 + .../root/imx6qdl-icore-ofcap12.json | 11 + .../rootfs_overlay/root/imx6qdl-icore.json | 11 + .../board/engicam/icorem6_rqs/genimage.cfg | 39 + .../board/engicam/icorem6_rqs/readme.txt | 69 + .../board/engicam/isiot/genimage.cfg | 38 + .../buildroot/board/engicam/isiot/readme.txt | 66 + .../common/imx/genimage.cfg.template | 40 + .../common/imx/genimage.cfg.template_imx8 | 40 + .../genimage.cfg.template_no_boot_part_spl | 30 + .../common/imx/genimage.cfg.template_spl | 46 + .../common/imx/imx8-bootloader-prepare.sh | 37 + .../board/freescale/common/imx/post-image.sh | 103 + .../common/mxs/genimage.cfg.template | 39 + .../board/freescale/common/mxs/post-image.sh | 54 + .../board/freescale/imx23evk/readme.txt | 48 + .../board/freescale/imx25pdk/readme.txt | 54 + .../board/freescale/imx28evk/readme.txt | 57 + .../board/freescale/imx51evk/readme.txt | 54 + .../freescale/imx6-sabresd/linux_qt5.fragment | 5 + .../board/freescale/imx6-sabresd/readme.txt | 110 + .../rootfs_overlay/root/sabresd.json | 15 + ...nct-pre-processed-mkimage-config-fil.patch | 89 + ...-boot-Linux-to-init-in-mfgtools-mode.patch | 36 + .../board/freescale/imx6sabre/readme.txt | 171 + .../board/freescale/imx6slevk/readme.txt | 14 + .../board/freescale/imx6sxsdb/readme.txt | 14 + .../board/freescale/imx6ulevk/readme.txt | 74 + ...nct-pre-processed-mkimage-config-fil.patch | 89 + .../board/freescale/imx7dsdb/readme.txt | 54 + .../board/freescale/imx8mmevk/readme.txt | 71 + .../board/freescale/imx8mqevk/readme.txt | 80 + .../board/freescale/imx8qxpmek/readme.txt | 67 + .../board/freescale/p1025twr/readme.txt | 25 + .../board/freescale/t1040_t2080/readme.txt | 51 + .../board/freescale/warpboard/README | 77 + .../board/freescale/warpboard/linux.fragment | 1 + .../lib/firmware/brcm/brcmfmac4330-sdio.txt | 40 + .../board/friendlyarm/nanopi-a64/boot.cmd | 6 + .../board/friendlyarm/nanopi-a64/genimage.cfg | 39 + .../board/friendlyarm/nanopi-a64/readme.txt | 37 + .../board/friendlyarm/nanopi-m1-plus/boot.cmd | 8 + .../friendlyarm/nanopi-m1-plus/genimage.cfg | 35 + .../friendlyarm/nanopi-m1-plus/readme.txt | 29 + .../board/friendlyarm/nanopi-m1/boot.cmd | 8 + .../board/friendlyarm/nanopi-m1/genimage.cfg | 36 + .../board/friendlyarm/nanopi-m1/readme.txt | 29 + .../board/friendlyarm/nanopi-neo/boot.cmd | 8 + .../board/friendlyarm/nanopi-neo/genimage.cfg | 34 + .../friendlyarm/nanopi-neo/post-build.sh | 12 + .../friendlyarm/nanopi-neo/post-image.sh | 15 + .../board/friendlyarm/nanopi-neo/readme.txt | 42 + .../board/friendlyarm/nanopi-neo2/boot.cmd | 6 + .../friendlyarm/nanopi-neo2/genimage.cfg | 39 + .../board/friendlyarm/nanopi-neo2/readme.txt | 37 + .../board/grinn/chiliboard/genimage.cfg | 31 + .../board/grinn/chiliboard/post-image.sh | 14 + .../board/grinn/chiliboard/readme.txt | 46 + .../board/grinn/liteboard/genimage.cfg | 48 + .../board/grinn/liteboard/post-image.sh | 14 + .../board/grinn/liteboard/readme.txt | 45 + .../board/hardkernel/odroidc2/boot.ini | 176 + .../board/hardkernel/odroidc2/genimage.cfg | 27 + .../board/hardkernel/odroidc2/post-image.sh | 19 + .../board/hardkernel/odroidc2/readme.txt | 53 + .../board/hardkernel/odroidxu4/boot.ini | 38 + .../board/hardkernel/odroidxu4/genimage.cfg | 54 + .../board/hardkernel/odroidxu4/post-image.sh | 24 + .../board/hardkernel/odroidxu4/readme.txt | 37 + .../board/intel/galileo/genimage.cfg | 31 + .../buildroot/board/intel/galileo/grub.cfg | 11 + .../board/intel/galileo/linux-3.14.config | 308 + .../board/intel/galileo/post-build.sh | 2 + .../board/intel/galileo/post-image.sh | 13 + .../buildroot/board/intel/galileo/readme.txt | 52 + .../rootfs_overlay/etc/init.d/S09modload | 33 + .../etc/modules-load.galileo/galileo.conf | 3 + .../modules-load.galileo/galileo_gen2.conf | 4 + .../buildroot/board/lego/ev3/busybox.fragment | 3 + .../buildroot/board/lego/ev3/genimage.cfg | 65 + .../buildroot/board/lego/ev3/linux.fragment | 68 + .../buildroot/board/lego/ev3/post-image.sh | 14 + features/buildroot/board/lego/ev3/readme.txt | 99 + .../board/lemaker/bananapro/boot.cmd | 5 + .../board/lemaker/bananapro/genimage.cfg | 37 + .../lemaker/bananapro/linux-wifi.fragment | 24 + ...s-sun7i-a20-bananapro.dts-disable-00.patch | 44 + .../board/lemaker/bananapro/post-build.sh | 12 + .../board/lemaker/bananapro/post-image.sh | 16 + .../board/lemaker/bananapro/readme.txt | 62 + .../brcmfmac43362-sdio.lemaker,bananapro.txt | 1 + .../lib/firmware/brcm/brcmfmac43362-sdio.txt | 56 + features/buildroot/board/licheepi/boot.cmd | 4 + .../buildroot/board/licheepi/genimage.cfg | 35 + features/buildroot/board/licheepi/readme.txt | 62 + .../board/linksprite/pcduino/boot.cmd | 8 + .../board/linksprite/pcduino/genimage.cfg | 42 + .../linksprite/pcduino/linux-extras.config | 16 + .../board/linksprite/pcduino/post-build.sh | 11 + .../board/linksprite/pcduino/post-image.sh | 16 + .../board/linksprite/pcduino/readme.txt | 42 + .../fs-overlay-graphical/etc/X11/Xsession | 7 + .../fs-overlay-graphical/etc/asound.conf | 4 + .../buildroot/board/minnowboard/genimage.cfg | 34 + features/buildroot/board/minnowboard/grub.cfg | 6 + .../buildroot/board/minnowboard/linux.config | 60 + .../buildroot/board/minnowboard/post-build.sh | 10 + .../buildroot/board/minnowboard/post-image.sh | 13 + .../buildroot/board/minnowboard/readme.txt | 28 + features/buildroot/board/nexbox/a95x/boot.txt | 11 + .../buildroot/board/nexbox/a95x/genimage.cfg | 28 + .../buildroot/board/nexbox/a95x/post-build.sh | 12 + .../buildroot/board/nexbox/a95x/post-image.sh | 14 + .../buildroot/board/nexbox/a95x/readme.txt | 48 + .../board/olimex/a10_olinuxino/boot.cmd | 1 + .../board/olimex/a10_olinuxino/genimage.cfg | 1 + .../board/olimex/a10_olinuxino/post-build.sh | 1 + .../board/olimex/a10_olinuxino/readme.txt | 57 + .../board/olimex/a13_olinuxino/boot.cmd | 7 + .../board/olimex/a13_olinuxino/genimage.cfg | 34 + .../board/olimex/a13_olinuxino/post-build.sh | 7 + .../board/olimex/a13_olinuxino/readme.txt | 43 + .../board/olimex/a20_olinuxino/boot.cmd | 5 + .../board/olimex/a20_olinuxino/genimage.cfg | 17 + .../board/olimex/a20_olinuxino/post-build.sh | 3 + .../board/olimex/a20_olinuxino/readme.txt | 69 + .../board/olimex/a64-olinuxino/boot.cmd | 6 + .../board/olimex/a64-olinuxino/genimage.cfg | 39 + .../board/olimex/a64-olinuxino/readme.txt | 37 + .../imx233_olinuxino/linux-wifi.fragment | 18 + .../board/olimex/imx233_olinuxino/readme.txt | 29 + .../buildroot/board/openblocks/a6/readme.txt | 78 + .../board/orangepi/orangepi-lite/boot.cmd | 8 + .../board/orangepi/orangepi-lite/genimage.cfg | 36 + .../orangepi-lite/linux-extras.config | 15 + .../board/orangepi/orangepi-lite/readme.txt | 29 + .../orangepi/orangepi-lite2/extlinux.conf | 4 + .../orangepi/orangepi-lite2/genimage.cfg | 33 + .../orangepi/orangepi-lite2/post-build.sh | 4 + .../board/orangepi/orangepi-lite2/readme.txt | 44 + .../lib/firmware/brcm/brcmfmac43455-sdio.txt | 82 + .../orangepi/orangepi-one-plus/extlinux.conf | 4 + .../orangepi/orangepi-one-plus/genimage.cfg | 33 + .../orangepi/orangepi-one-plus/post-build.sh | 4 + .../orangepi/orangepi-one-plus/readme.txt | 37 + .../board/orangepi/orangepi-one/boot.cmd | 8 + .../board/orangepi/orangepi-one/genimage.cfg | 36 + .../board/orangepi/orangepi-one/readme.txt | 29 + .../board/orangepi/orangepi-pc-plus/boot.cmd | 8 + .../orangepi/orangepi-pc-plus/genimage.cfg | 36 + .../orangepi-pc-plus/linux-extras.config | 8 + .../orangepi/orangepi-pc-plus/readme.txt | 29 + .../board/orangepi/orangepi-pc/boot.cmd | 8 + .../board/orangepi/orangepi-pc/genimage.cfg | 36 + .../board/orangepi/orangepi-pc/linux.fragment | 5 + .../board/orangepi/orangepi-pc/readme.txt | 29 + .../board/orangepi/orangepi-pc2/boot.cmd | 6 + .../board/orangepi/orangepi-pc2/genimage.cfg | 39 + .../board/orangepi/orangepi-pc2/readme.txt | 37 + .../board/orangepi/orangepi-plus/boot.cmd | 8 + .../board/orangepi/orangepi-plus/genimage.cfg | 35 + .../board/orangepi/orangepi-plus/readme.txt | 29 + .../board/orangepi/orangepi-prime/boot.cmd | 6 + .../orangepi/orangepi-prime/genimage.cfg | 39 + .../board/orangepi/orangepi-prime/readme.txt | 37 + .../board/orangepi/orangepi-r1/boot.cmd | 8 + .../board/orangepi/orangepi-r1/genimage.cfg | 36 + .../orangepi/orangepi-r1/linux-extras.config | 11 + .../board/orangepi/orangepi-r1/readme.txt | 29 + .../board/orangepi/orangepi-win/boot.cmd | 6 + .../board/orangepi/orangepi-win/genimage.cfg | 39 + .../board/orangepi/orangepi-win/readme.txt | 37 + .../orangepi/orangepi-zero-plus2/boot.cmd | 6 + .../orangepi/orangepi-zero-plus2/genimage.cfg | 39 + .../orangepi-zero-plus2/linux-extras.config | 10 + .../orangepi/orangepi-zero-plus2/readme.txt | 37 + .../lib/firmware/brcm/brcmfmac43430-sdio.txt | 54 + .../board/orangepi/orangepi-zero/boot.cmd | 8 + .../board/orangepi/orangepi-zero/genimage.cfg | 36 + .../orangepi-zero/linux-extras.config | 20 + ...e-pi-zero-interrupt-triggering-xr819.patch | 35 + ...RM-dts-orange-pi-zero-enable-spi-nor.patch | 42 + ...ARM-dts-orange-pi-zero-enable-spidev.patch | 42 + .../board/orangepi/orangepi-zero/readme.txt | 29 + .../buildroot/board/pandaboard/genimage.cfg | 26 + .../buildroot/board/pandaboard/post-image.sh | 16 + .../buildroot/board/pandaboard/readme.txt | 46 + features/buildroot/board/pc/genimage-bios.cfg | 24 + features/buildroot/board/pc/grub-bios.cfg | 6 + features/buildroot/board/pc/linux.config | 85 + features/buildroot/board/pc/post-build.sh | 10 + .../buildroot/board/pc/post-image-efi-gpt.sh | 62 + features/buildroot/board/pc/readme.txt | 72 + .../buildroot/board/pine64/pine64/boot.cmd | 6 + .../board/pine64/pine64/genimage.cfg | 39 + .../buildroot/board/pine64/pine64/readme.txt | 38 + .../board/pine64/rock64/extlinux.conf | 4 + .../board/pine64/rock64/genimage.cfg | 23 + ...328-needs-itb-image-to-boot-properly.patch | 32 + .../board/pine64/rock64/post-build.sh | 9 + .../buildroot/board/pine64/rock64/readme.txt | 95 + .../buildroot/board/pine64/sopine/boot.cmd | 6 + .../board/pine64/sopine/genimage.cfg | 39 + .../buildroot/board/pine64/sopine/readme.txt | 38 + .../board/qemu/aarch64-virt/linux.config | 54 + .../board/qemu/aarch64-virt/readme.txt | 7 + .../qemu/arm-versatile/linux-nommu.config | 47 + .../board/qemu/arm-versatile/linux.config | 43 + .../patches/linux/versatile-nommu.patch | 113 + .../board/qemu/arm-versatile/readme.txt | 12 + .../board/qemu/arm-vexpress/readme.txt | 11 + .../board/qemu/m68k-mcf5208/linux.config | 28 + .../board/qemu/m68k-mcf5208/readme.txt | 7 + .../board/qemu/m68k-q800/linux.config | 26 + .../buildroot/board/qemu/m68k-q800/readme.txt | 8 + .../board/qemu/microblazebe-mmu/linux.config | 20 + .../board/qemu/microblazebe-mmu/readme.txt | 7 + .../microblazebe-mmu/xilinx-xemaclite.patch | 11 + .../board/qemu/microblazeel-mmu/linux.config | 19 + .../board/qemu/microblazeel-mmu/readme.txt | 7 + .../microblazeel-mmu/xilinx-xemaclite.patch | 11 + .../board/qemu/mips32r2-malta/linux.config | 30 + .../board/qemu/mips32r2-malta/readme.txt | 9 + .../board/qemu/mips32r2el-malta/linux.config | 31 + .../board/qemu/mips32r2el-malta/readme.txt | 9 + .../board/qemu/mips32r6-malta/linux.config | 30 + .../board/qemu/mips32r6-malta/readme.txt | 7 + .../board/qemu/mips32r6el-malta/linux.config | 30 + .../board/qemu/mips32r6el-malta/readme.txt | 7 + .../board/qemu/mips64-malta/linux.config | 34 + .../board/qemu/mips64-malta/readme.txt | 8 + .../board/qemu/mips64el-malta/linux.config | 35 + .../board/qemu/mips64el-malta/readme.txt | 8 + .../board/qemu/mips64r6-malta/linux.config | 34 + .../board/qemu/mips64r6-malta/readme.txt | 7 + .../board/qemu/mips64r6el-malta/linux.config | 34 + .../board/qemu/mips64r6el-malta/readme.txt | 7 + .../board/qemu/nios2-10m50/linux.fragment | 3 + .../board/qemu/nios2-10m50/readme.txt | 7 + .../buildroot/board/qemu/or1k/linux.config | 30 + features/buildroot/board/qemu/or1k/readme.txt | 9 + .../board/qemu/ppc-g3beige/linux.config | 25 + .../board/qemu/ppc-g3beige/readme.txt | 8 + .../board/qemu/ppc-mac99/linux.fragment | 3 + .../buildroot/board/qemu/ppc-mac99/readme.txt | 5 + .../board/qemu/ppc-mpc8544ds/linux.config | 38 + .../board/qemu/ppc-mpc8544ds/readme.txt | 7 + .../board/qemu/ppc-virtex-ml507/linux.config | 36 + .../board/qemu/ppc-virtex-ml507/readme.txt | 7 + .../board/qemu/ppc64-e5500/linux.fragment | 10 + .../board/qemu/ppc64-e5500/readme.txt | 7 + .../board/qemu/ppc64-pseries/readme.txt | 7 + .../board/qemu/ppc64le-pseries/readme.txt | 7 + ...ert-riscv-Use-latest-system-call-ABI.patch | 66 + .../board/qemu/riscv32-virt/readme.txt | 7 + .../board/qemu/riscv64-virt/readme.txt | 7 + .../buildroot/board/qemu/sh4-r2d/linux.config | 38 + ...-sci-increase-RX-FIFO-trigger-defaul.patch | 61 + .../buildroot/board/qemu/sh4-r2d/readme.txt | 8 + .../board/qemu/sh4eb-r2d/linux.config | 38 + ...-sci-increase-RX-FIFO-trigger-defaul.patch | 61 + .../buildroot/board/qemu/sh4eb-r2d/readme.txt | 8 + .../board/qemu/sparc-ss10/linux.config | 31 + .../board/qemu/sparc-ss10/readme.txt | 7 + .../board/qemu/sparc64-sun4u/linux.config | 25 + .../board/qemu/sparc64-sun4u/readme.txt | 7 + .../buildroot/board/qemu/x86/linux.config | 51 + features/buildroot/board/qemu/x86/readme.txt | 9 + .../buildroot/board/qemu/x86_64/linux.config | 52 + .../buildroot/board/qemu/x86_64/readme.txt | 9 + .../board/qemu/xtensa-lx60/linux-nommu.config | 39 + .../board/qemu/xtensa-lx60/linux.config | 36 + .../board/qemu/xtensa-lx60/readme.txt | 7 + .../raspberrypi/genimage-raspberrypi.cfg | 32 + .../raspberrypi/genimage-raspberrypi0.cfg | 30 + .../raspberrypi/genimage-raspberrypi0w.cfg | 31 + .../raspberrypi/genimage-raspberrypi2.cfg | 30 + .../raspberrypi/genimage-raspberrypi3-64.cfg | 33 + .../raspberrypi/genimage-raspberrypi3.cfg | 33 + .../buildroot/board/raspberrypi/post-build.sh | 11 + .../buildroot/board/raspberrypi/post-image.sh | 61 + .../buildroot/board/raspberrypi/readme.txt | 93 + features/buildroot/board/raspberrypi0 | 1 + features/buildroot/board/raspberrypi0w | 1 + features/buildroot/board/raspberrypi2 | 1 + features/buildroot/board/raspberrypi3 | 1 + features/buildroot/board/raspberrypi3-64 | 1 + .../buildroot/board/roseapplepi/genimage.cfg | 43 + .../linux/0001-unbreak-xhci-trace.patch | 31 + .../0002-kernel-add-support-for-gcc-5.patch | 99 + ...inux-use-static-inline-in-ARM-ftrace.patch | 54 + .../0004-Fix-compile-errors-with-gcc5.patch | 121 + ...egrate-the-various-compiler-gcc-345-.patch | 363 + ...-include-linux-compiler-.h-with-Linu.patch | 809 ++ .../buildroot/board/roseapplepi/post-image.sh | 18 + features/buildroot/board/roseapplepi/uEnv.txt | 3 + .../buildroot/board/sheevaplug/readme.txt | 36 + .../buildroot/board/sinovoip/m2-plus/boot.cmd | 7 + .../board/sinovoip/m2-plus/genimage.cfg | 33 + .../board/solidrun/clearfog/extlinux.conf | 4 + .../board/solidrun/clearfog/genimage.cfg | 16 + .../board/solidrun/clearfog/linux.fragment | 1 + .../board/solidrun/clearfog/post-build.sh | 5 + .../board/solidrun/clearfog/readme.txt | 61 + .../solidrun/clearfog_gt_8k/extlinux.conf | 4 + .../solidrun/clearfog_gt_8k/genimage.cfg | 1 + .../clearfog_gt_8k/linux-extras.config | 4 + .../clearfog_gt_8k/post-build-mainline.sh | 1 + .../board/solidrun/clearfog_gt_8k/readme.txt | 61 + .../clearfog_gt_8k/uboot-fragment.config | 1 + .../board/solidrun/macchiatobin/extlinux.conf | 4 + .../board/solidrun/macchiatobin/genimage.cfg | 16 + .../solidrun/macchiatobin/linux-extras.config | 3 + .../macchiatobin/post-build-mainline.sh | 5 + .../board/solidrun/macchiatobin/post-build.sh | 5 + .../board/solidrun/macchiatobin/readme.txt | 95 + .../solidrun/macchiatobin/uEnv-example.txt | 7 + .../macchiatobin/uboot-fragment.config | 2 + .../board/solidrun/mx6cubox/boot.scr.txt | 7 + .../board/solidrun/mx6cubox/genimage.cfg | 29 + .../board/solidrun/mx6cubox/post-build.sh | 8 + .../board/solidrun/mx6cubox/post-image.sh | 14 + .../board/solidrun/mx6cubox/readme.txt | 18 + .../stmicroelectronics/stm32-post-build.sh | 8 + .../stm32f429-disco/flash.sh | 26 + ...sco-don-t-force-init-in-chosen-boota.patch | 32 + .../stm32f429-disco/readme.txt | 37 + .../stm32f469-disco/flash.sh | 20 + ...sco-don-t-force-init-in-chosen-boota.patch | 33 + .../stm32f469-disco/readme.txt | 19 + .../board/synopsys/axs10x/post-build.sh | 11 + .../board/synopsys/hsdk/genimage.cfg | 27 + .../board/synopsys/hsdk/linux.fragment | 2 + .../buildroot/board/synopsys/hsdk/readme.txt | 33 + .../board/synopsys/hsdk/uboot.env.txt | 9 + .../synopsys/vdk/linux-vdk-aarch64-defconfig | 143 + .../buildroot/board/synopsys/vdk/readme.txt | 65 + .../board/technexion/imx6ulpico/readme.txt | 70 + .../lib/firmware/brcm/brcmfmac4339-sdio.txt | 102 + .../board/technexion/imx7dpico/readme.txt | 124 + .../boot/extlinux/extlinux.conf | 4 + .../lib/firmware/brcm/brcmfmac4339-sdio.txt | 99 + .../board/technexion/imx8mmpico/readme.txt | 96 + .../board/technexion/imx8mpico/readme.txt | 95 + .../board/technologic/ts4800/genimage.cfg | 37 + .../board/technologic/ts4800/linux.fragment | 3 + .../board/technologic/ts4800/post-image.sh | 19 + .../board/technologic/ts4800/readme.txt | 50 + .../board/technologic/ts4900/genimage.cfg | 10 + .../board/technologic/ts4900/post-image.sh | 17 + .../board/technologic/ts4900/readme.txt | 52 + .../fs-overlay/boot/syslinux/syslinux.cfg | 9 + .../technologic/ts5500/linux-4.14.config | 111 + .../board/technologic/ts5500/readme.txt | 52 + .../board/technologic/ts7680/genimage.cfg | 14 + .../board/technologic/ts7680/readme.txt | 51 + .../board/toradex/apalis-imx6/genimage.cfg | 15 + .../board/toradex/apalis-imx6/post-image.sh | 20 + .../board/toradex/apalis-imx6/readme.txt | 53 + .../board/toradex/apalis-imx6/uEnv.txt | 6 + .../board/udoo/mx6qdl/linux.fragment | 1 + .../buildroot/board/udoo/mx6qdl/readme.txt | 17 + .../buildroot/board/udoo/neo/boot.scr.txt | 7 + .../buildroot/board/udoo/neo/genimage.cfg | 32 + .../buildroot/board/udoo/neo/post-build.sh | 8 + .../buildroot/board/udoo/neo/post-image.sh | 15 + features/buildroot/board/udoo/neo/readme.txt | 16 + .../buildroot/board/wandboard/boot.scr.txt | 7 + .../buildroot/board/wandboard/genimage.cfg | 32 + .../buildroot/board/wandboard/post-build.sh | 8 + .../buildroot/board/wandboard/post-image.sh | 15 + features/buildroot/board/wandboard/readme.txt | 14 + features/buildroot/board/warp7/readme.txt | 118 + .../lib/firmware/brcm/brcmfmac43430-sdio.txt | 42 + features/buildroot/board/zynq/genimage.cfg | 25 + features/buildroot/board/zynq/post-image.sh | 13 + features/buildroot/board/zynq/readme.txt | 86 + features/buildroot/board/zynqmp/genimage.cfg | 28 + ...64-zynqmp-zcu106-fix-SPL-MMC-booting.patch | 52 + ...2-arm64-zynqmp-Enable-booting-to-ATF.patch | 114 + ...ept-an-absolute-path-for-PMUFW_INIT_.patch | 68 + ...ynqmp-pass-the-PS-init-file-as-a-kco.patch | 175 + features/buildroot/board/zynqmp/post-image.sh | 13 + features/buildroot/board/zynqmp/readme.txt | 51 + features/buildroot/boot/Config.in | 26 + ...01-Use-ld-instead-of-gcc-for-linking.patch | 61 + .../buildroot/boot/afboot-stm32/Config.in | 7 + .../boot/afboot-stm32/afboot-stm32.hash | 2 + .../boot/afboot-stm32/afboot-stm32.mk | 20 + .../boot/arm-trusted-firmware/Config.in | 138 + .../arm-trusted-firmware.hash | 3 + .../arm-trusted-firmware.mk | 171 + .../buildroot/boot/at91bootstrap/Config.in | 49 + .../at91bootstrap-1.16-eabi-fix.patch | 334 + ...ootstrap-1.16-gcc-4.6.x-ldscript-fix.patch | 29 + ...bootstrap-1.16-u-boot-relocation-fix.patch | 284 + .../boot/at91bootstrap/at91bootstrap.hash | 2 + .../boot/at91bootstrap/at91bootstrap.mk | 47 + .../buildroot/boot/at91bootstrap3/Config.in | 91 + .../boot/at91bootstrap3/at91bootstrap3.hash | 2 + .../boot/at91bootstrap3/at91bootstrap3.mk | 83 + .../boot/at91dataflashboot/Config.in | 3 + ...t91dataflashboot-1.05-do-not-install.patch | 22 + .../at91dataflashboot-1.05-eabi-fixes.patch | 43 + .../at91dataflashboot/at91dataflashboot.hash | 2 + .../at91dataflashboot/at91dataflashboot.mk | 22 + features/buildroot/boot/barebox/Config.in | 85 + .../boot/barebox/barebox-aux/Config.in | 75 + .../boot/barebox/barebox-aux/barebox-aux.hash | 1 + .../boot/barebox/barebox-aux/barebox-aux.mk | 8 + features/buildroot/boot/barebox/barebox.hash | 5 + features/buildroot/boot/barebox/barebox.mk | 161 + .../buildroot/boot/barebox/barebox/Config.in | 80 + .../boot/barebox/barebox/barebox.hash | 1 + .../buildroot/boot/barebox/barebox/barebox.mk | 13 + .../buildroot/boot/binaries-marvell/Config.in | 32 + .../binaries-marvell/binaries-marvell.hash | 3 + .../boot/binaries-marvell/binaries-marvell.mk | 21 + .../boot/boot-wrapper-aarch64/Config.in | 41 + .../boot-wrapper-aarch64.mk | 53 + features/buildroot/boot/common.mk | 1 + ...reat-R_X86_64_PLT32-as-R_X86_64_PC32.patch | 74 + features/buildroot/boot/grub2/Config.in | 123 + features/buildroot/boot/grub2/grub.cfg | 6 + features/buildroot/boot/grub2/grub2.hash | 2 + features/buildroot/boot/grub2/grub2.mk | 140 + features/buildroot/boot/grub2/readme.txt | 190 + ...w-building-with-newer-glibc-versions.patch | 31 + ...king-for-non-host-compatible-targets.patch | 54 + features/buildroot/boot/gummiboot/Config.in | 24 + .../buildroot/boot/gummiboot/buildroot.conf | 4 + .../buildroot/boot/gummiboot/gummiboot.mk | 43 + features/buildroot/boot/gummiboot/loader.conf | 2 + features/buildroot/boot/lpc32xxcdl/Config.in | 10 + .../lpc32xxcdl-2.11-compiler_name.patch | 52 + ...c32xxcdl-2.11-delete_redundant_files.patch | 969 ++ .../lpc32xxcdl-2.11-libnosys_gnu.patch | 188 + .../lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch | 521 ++ .../buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk | 70 + ...raining_leveling.c-uninitialized-var.patch | 31 + .../buildroot/boot/mv-ddr-marvell/Config.in | 10 + .../boot/mv-ddr-marvell/mv-ddr-marvell.hash | 2 + .../boot/mv-ddr-marvell/mv-ddr-marvell.mk | 13 + .../buildroot/boot/mxs-bootlets/Config.in | 90 + .../boot/mxs-bootlets/barebox_ivt.bd | 34 + .../boot/mxs-bootlets/mxs-bootlets.hash | 2 + .../boot/mxs-bootlets/mxs-bootlets.mk | 106 + features/buildroot/boot/opensbi/Config.in | 25 + features/buildroot/boot/opensbi/opensbi.hash | 2 + features/buildroot/boot/opensbi/opensbi.mk | 43 + features/buildroot/boot/optee-os/Config.in | 102 + .../buildroot/boot/optee-os/optee-os.hash | 4 + features/buildroot/boot/optee-os/optee-os.mk | 115 + features/buildroot/boot/riscv-pk/Config.in | 17 + features/buildroot/boot/riscv-pk/riscv-pk.mk | 32 + .../buildroot/boot/s500-bootloader/Config.in | 17 + .../boot/s500-bootloader/s500-bootloader.hash | 2 + .../boot/s500-bootloader/s500-bootloader.mk | 34 + features/buildroot/boot/shim/Config.in | 19 + features/buildroot/boot/shim/shim.hash | 3 + features/buildroot/boot/shim/shim.mk | 31 + ...bios-Fix-alignment-change-with-gcc-5.patch | 82 + ...-Disable-PIE-to-avoid-FTBFS-on-amd64.patch | 30 + ...sk-Force-ld-output-format-to-32-bits.patch | 32 + ...tils-Use-the-host-toolchain-to-build.patch | 60 + ...-Use-the-host-toolchain-for-prepcore.patch | 44 + ...ition-is-now-part-of-the-exports-of-.patch | 37 + ...ump-calls-to-fit-the-new-declaration.patch | 37 + ...per-build-it-with-the-host-toolchain.patch | 32 + ...-try-to-guess-the-sections-alignment.patch | 295 + ...10-core-Clean-up-the-i386-bios-build.patch | 622 ++ ...inux-Use-the-host-toolchain-to-build.patch | 53 + ...-sysmacros-h-for-major-minor-makedev.patch | 34 + ...Fix-build-with-gnu-efi-version-3.0.9.patch | 45 + ...h-binutils-note-gnu-property-section.patch | 47 + features/buildroot/boot/syslinux/Config.in | 62 + .../buildroot/boot/syslinux/syslinux.hash | 2 + features/buildroot/boot/syslinux/syslinux.mk | 105 + .../buildroot/boot/ts4800-mbrboot/Config.in | 7 + .../boot/ts4800-mbrboot/ts4800-mbrboot.hash | 2 + .../boot/ts4800-mbrboot/ts4800-mbrboot.mk | 21 + ...ake-board-selection-choices-optional.patch | 742 ++ ...mcpu-XXX-instead-of-obsolete-marcXXX.patch | 39 + ...mcpu-XXX-instead-of-obsolete-marcXXX.patch | 39 + features/buildroot/boot/uboot/Config.in | 555 ++ features/buildroot/boot/uboot/uboot.hash | 3 + features/buildroot/boot/uboot/uboot.mk | 473 + .../boot/vexpress-firmware/Config.in | 8 + .../vexpress-firmware/vexpress-firmware.hash | 2 + .../vexpress-firmware/vexpress-firmware.mk | 20 + features/buildroot/build | Bin 0 -> 132833 bytes .../buildroot/configs/aarch64_efi_defconfig | 38 + .../acmesystems_aria_g25_128mb_defconfig | 36 + .../acmesystems_aria_g25_256mb_defconfig | 36 + .../acmesystems_arietta_g25_128mb_defconfig | 36 + .../acmesystems_arietta_g25_256mb_defconfig | 36 + .../configs/amarula_a64_relic_defconfig | 62 + .../configs/amarula_vyasa_rk3288_defconfig | 47 + .../buildroot/configs/andes_ae3xx_defconfig | 10 + .../configs/arcturus_ucls1012a_defconfig | 36 + .../configs/arcturus_ucp1020_defconfig | 30 + .../configs/arm_foundationv8_defconfig | 16 + features/buildroot/configs/arm_juno_defconfig | 23 + .../configs/armadeus_apf27_defconfig | 34 + .../configs/armadeus_apf28_defconfig | 28 + .../configs/armadeus_apf51_defconfig | 27 + .../configs/asus_tinker_rk3288_defconfig | 46 + .../configs/at91sam9260eknf_defconfig | 33 + .../configs/at91sam9g20dfc_defconfig | 39 + .../configs/at91sam9g45m10ek_defconfig | 34 + .../buildroot/configs/at91sam9rlek_defconfig | 34 + .../buildroot/configs/at91sam9x5ek_defconfig | 27 + .../configs/at91sam9x5ek_dev_defconfig | 98 + .../configs/at91sam9x5ek_mmc_defconfig | 45 + .../configs/at91sam9x5ek_mmc_dev_defconfig | 106 + .../atmel_sama5d27_som1_ek_mmc_dev_defconfig | 87 + .../atmel_sama5d2_xplained_mmc_defconfig | 31 + .../atmel_sama5d2_xplained_mmc_dev_defconfig | 106 + .../configs/atmel_sama5d3_xplained_defconfig | 28 + .../atmel_sama5d3_xplained_dev_defconfig | 100 + .../atmel_sama5d3_xplained_mmc_defconfig | 30 + .../atmel_sama5d3_xplained_mmc_dev_defconfig | 105 + .../configs/atmel_sama5d3xek_defconfig | 40 + .../configs/atmel_sama5d4_xplained_defconfig | 32 + .../atmel_sama5d4_xplained_dev_defconfig | 104 + .../atmel_sama5d4_xplained_mmc_defconfig | 31 + .../atmel_sama5d4_xplained_mmc_dev_defconfig | 106 + .../buildroot/configs/bananapi_m1_defconfig | 28 + .../configs/bananapi_m2_plus_defconfig | 29 + .../configs/bananapi_m2_ultra_defconfig | 29 + .../buildroot/configs/bananapi_m64_defconfig | 48 + .../buildroot/configs/bananapro_defconfig | 74 + .../configs/beagleboardx15_defconfig | 28 + .../buildroot/configs/beaglebone_defconfig | 30 + .../configs/beaglebone_qt5_defconfig | 44 + .../configs/chromebook_snow_defconfig | 23 + features/buildroot/configs/ci20_defconfig | 39 + .../buildroot/configs/csky_gx6605s_defconfig | 18 + .../buildroot/configs/cubieboard2_defconfig | 31 + .../configs/engicam_imx6qdl_icore_defconfig | 43 + .../engicam_imx6qdl_icore_qt5_defconfig | 81 + .../engicam_imx6qdl_icore_rqs_defconfig | 43 + .../configs/engicam_imx6ul_geam_defconfig | 43 + .../configs/engicam_imx6ul_isiot_defconfig | 43 + .../configs/freescale_imx28evk_defconfig | 34 + .../freescale_imx6dlsabreauto_defconfig | 43 + .../configs/freescale_imx6dlsabresd_defconfig | 42 + .../freescale_imx6qsabreauto_defconfig | 43 + .../configs/freescale_imx6qsabresd_defconfig | 43 + .../configs/freescale_imx6sxsabresd_defconfig | 42 + .../configs/freescale_imx7dsabresd_defconfig | 40 + .../configs/freescale_imx8mmevk_defconfig | 42 + .../configs/freescale_imx8mqevk_defconfig | 42 + .../configs/freescale_imx8qxpmek_defconfig | 40 + .../configs/freescale_p1025twr_defconfig | 24 + .../configs/freescale_t1040d4rdb_defconfig | 24 + .../configs/freescale_t2080_qds_rdb_defconfig | 25 + .../configs/friendlyarm_nanopi_a64_defconfig | 49 + .../configs/friendlyarm_nanopi_neo2_defconfig | 49 + features/buildroot/configs/galileo_defconfig | 24 + .../configs/grinn_chiliboard_defconfig | 27 + .../configs/grinn_liteboard_defconfig | 25 + features/buildroot/configs/imx23evk_defconfig | 34 + .../configs/imx6-sabreauto_defconfig | 38 + .../buildroot/configs/imx6-sabresd_defconfig | 39 + .../configs/imx6-sabresd_qt5_defconfig | 98 + .../buildroot/configs/imx6slevk_defconfig | 26 + .../buildroot/configs/imx6sx-sdb_defconfig | 26 + .../buildroot/configs/imx6ulevk_defconfig | 39 + .../buildroot/configs/imx6ulpico_defconfig | 51 + .../buildroot/configs/imx7d-sdb_defconfig | 36 + .../buildroot/configs/imx7dpico_defconfig | 50 + .../buildroot/configs/imx8mmpico_defconfig | 39 + .../buildroot/configs/imx8mpico_defconfig | 39 + features/buildroot/configs/lego_ev3_defconfig | 52 + .../buildroot/configs/licheepi_zero_defconfig | 53 + .../configs/linksprite_pcduino_defconfig | 63 + .../minnowboard_max-graphical_defconfig | 74 + .../configs/minnowboard_max_defconfig | 37 + features/buildroot/configs/mx25pdk_defconfig | 35 + features/buildroot/configs/mx51evk_defconfig | 35 + features/buildroot/configs/mx53loco_defconfig | 35 + features/buildroot/configs/mx6cubox_defconfig | 32 + .../configs/mx6sx_udoo_neo_defconfig | 30 + features/buildroot/configs/mx6udoo_defconfig | 29 + .../buildroot/configs/nanopi_m1_defconfig | 44 + .../configs/nanopi_m1_plus_defconfig | 44 + .../buildroot/configs/nanopi_neo_defconfig | 40 + .../buildroot/configs/nexbox_a95x_defconfig | 21 + .../buildroot/configs/nitrogen6sx_defconfig | 42 + .../buildroot/configs/nitrogen6x_defconfig | 42 + .../buildroot/configs/nitrogen7_defconfig | 41 + .../buildroot/configs/nitrogen8m_defconfig | 54 + features/buildroot/configs/odroidc2_defconfig | 36 + .../buildroot/configs/odroidxu4_defconfig | 27 + .../olimex_a10_olinuxino_lime_defconfig | 47 + .../configs/olimex_a13_olinuxino_defconfig | 46 + .../olimex_a20_olinuxino_lime2_defconfig | 53 + .../olimex_a20_olinuxino_lime_defconfig | 53 + .../olimex_a20_olinuxino_micro_defconfig | 45 + .../configs/olimex_a64_olinuxino_defconfig | 49 + .../configs/olimex_imx233_olinuxino_defconfig | 52 + .../buildroot/configs/openblocks_a6_defconfig | 24 + .../configs/orangepi_lite2_defconfig | 60 + .../buildroot/configs/orangepi_lite_defconfig | 38 + .../buildroot/configs/orangepi_one_defconfig | 33 + .../configs/orangepi_one_plus_defconfig | 46 + .../buildroot/configs/orangepi_pc2_defconfig | 49 + .../buildroot/configs/orangepi_pc_defconfig | 34 + .../configs/orangepi_pc_plus_defconfig | 49 + .../buildroot/configs/orangepi_plus_defconfig | 43 + .../configs/orangepi_prime_defconfig | 49 + .../buildroot/configs/orangepi_r1_defconfig | 38 + .../buildroot/configs/orangepi_win_defconfig | 47 + .../buildroot/configs/orangepi_zero_defconfig | 53 + .../configs/orangepi_zero_plus2_defconfig | 63 + .../buildroot/configs/pandaboard_defconfig | 30 + .../configs/pc_x86_64_bios_defconfig | 65 + .../buildroot/configs/pc_x86_64_efi_defconfig | 65 + features/buildroot/configs/pine64_defconfig | 49 + .../buildroot/configs/pine64_sopine_defconfig | 49 + .../configs/qemu_aarch64_virt_defconfig | 23 + .../configs/qemu_arm_versatile_defconfig | 23 + .../qemu_arm_versatile_nommu_defconfig | 34 + .../configs/qemu_arm_vexpress_defconfig | 25 + .../configs/qemu_m68k_mcf5208_defconfig | 28 + .../configs/qemu_m68k_q800_defconfig | 25 + .../configs/qemu_microblazebe_mmu_defconfig | 23 + .../configs/qemu_microblazeel_mmu_defconfig | 23 + .../configs/qemu_mips32r2_malta_defconfig | 25 + .../configs/qemu_mips32r2el_malta_defconfig | 25 + .../configs/qemu_mips32r6_malta_defconfig | 29 + .../configs/qemu_mips32r6el_malta_defconfig | 29 + .../configs/qemu_mips64_malta_defconfig | 25 + .../configs/qemu_mips64el_malta_defconfig | 25 + .../configs/qemu_mips64r6_malta_defconfig | 30 + .../configs/qemu_mips64r6el_malta_defconfig | 30 + .../configs/qemu_nios2_10m50_defconfig | 13 + .../buildroot/configs/qemu_or1k_defconfig | 16 + .../configs/qemu_ppc64_e5500_defconfig | 21 + .../configs/qemu_ppc64_pseries_defconfig | 21 + .../configs/qemu_ppc64le_pseries_defconfig | 21 + .../configs/qemu_ppc_g3beige_defconfig | 25 + .../configs/qemu_ppc_mac99_defconfig | 14 + .../configs/qemu_ppc_mpc8544ds_defconfig | 28 + .../configs/qemu_ppc_virtex_ml507_defconfig | 26 + .../configs/qemu_riscv32_virt_defconfig | 27 + .../configs/qemu_riscv64_virt_defconfig | 26 + .../buildroot/configs/qemu_sh4_r2d_defconfig | 23 + .../configs/qemu_sh4eb_r2d_defconfig | 22 + .../configs/qemu_sparc64_sun4u_defconfig | 20 + .../configs/qemu_sparc_ss10_defconfig | 20 + .../buildroot/configs/qemu_x86_64_defconfig | 20 + features/buildroot/configs/qemu_x86_defconfig | 21 + .../configs/qemu_xtensa_lx60_defconfig | 28 + .../configs/qemu_xtensa_lx60_nommu_defconfig | 32 + .../buildroot/configs/raspberrypi0_defconfig | 36 + .../buildroot/configs/raspberrypi0w_defconfig | 32 + .../buildroot/configs/raspberrypi2_defconfig | 38 + .../configs/raspberrypi3_64_defconfig | 38 + .../buildroot/configs/raspberrypi3_defconfig | 37 + .../configs/raspberrypi3_qt5we_defconfig | 51 + .../buildroot/configs/raspberrypi_defconfig | 37 + .../buildroot/configs/riotboard_defconfig | 42 + features/buildroot/configs/rock64_defconfig | 38 + .../buildroot/configs/roseapplepi_defconfig | 39 + .../configs/s6lx9_microboard_defconfig | 13 + .../buildroot/configs/sheevaplug_defconfig | 33 + .../configs/snps_aarch64_vdk_defconfig | 12 + .../configs/snps_arc700_axs101_defconfig | 27 + .../configs/snps_archs38_axs103_defconfig | 28 + .../configs/snps_archs38_haps_defconfig | 18 + .../configs/snps_archs38_hsdk_defconfig | 40 + .../configs/snps_archs38_vdk_defconfig | 20 + .../configs/socrates_cyclone5_defconfig | 31 + .../configs/solidrun_clearfog_defconfig | 42 + .../configs/solidrun_clearfog_gt_8k_defconfig | 46 + .../solidrun_macchiatobin_mainline_defconfig | 47 + .../solidrun_macchiatobin_marvell_defconfig | 45 + .../configs/stm32f429_disco_defconfig | 18 + .../configs/stm32f469_disco_defconfig | 19 + .../configs/toradex_apalis_imx6_defconfig | 25 + features/buildroot/configs/ts4800_defconfig | 22 + features/buildroot/configs/ts4900_defconfig | 16 + features/buildroot/configs/ts5500_defconfig | 26 + features/buildroot/configs/ts7680_defconfig | 16 + .../buildroot/configs/wandboard_defconfig | 32 + features/buildroot/configs/warp7_defconfig | 51 + .../buildroot/configs/warpboard_defconfig | 58 + .../buildroot/configs/zynq_microzed_defconfig | 32 + .../buildroot/configs/zynq_zc706_defconfig | 32 + features/buildroot/configs/zynq_zed_defconfig | 32 + .../buildroot/configs/zynqmp_zcu106_defconfig | 34 + .../buildroot/docs/conf/asciidoc-text.conf | 23 + features/buildroot/docs/images | 1 + .../docs/manual/adding-board-support.txt | 38 + .../docs/manual/adding-packages-asciidoc.txt | 124 + .../docs/manual/adding-packages-autotools.txt | 175 + .../docs/manual/adding-packages-cargo.txt | 110 + .../docs/manual/adding-packages-cmake.txt | 152 + .../manual/adding-packages-conclusion.txt | 13 + .../docs/manual/adding-packages-directory.txt | 556 ++ .../docs/manual/adding-packages-generic.txt | 584 ++ .../docs/manual/adding-packages-gettext.txt | 62 + .../docs/manual/adding-packages-golang.txt | 124 + .../docs/manual/adding-packages-hooks.txt | 87 + .../docs/manual/adding-packages-kconfig.txt | 87 + .../manual/adding-packages-kernel-module.txt | 143 + ...dding-packages-linux-kernel-spec-infra.txt | 152 + .../docs/manual/adding-packages-luarocks.txt | 111 + .../docs/manual/adding-packages-meson.txt | 117 + .../docs/manual/adding-packages-perl.txt | 129 + .../docs/manual/adding-packages-python.txt | 257 + .../docs/manual/adding-packages-rebar.txt | 108 + .../docs/manual/adding-packages-tips.txt | 206 + .../docs/manual/adding-packages-virtual.txt | 144 + .../docs/manual/adding-packages-waf.txt | 91 + .../buildroot/docs/manual/adding-packages.txt | 56 + features/buildroot/docs/manual/advanced.txt | 16 + features/buildroot/docs/manual/appendix.txt | 6 + .../docs/manual/beyond-buildroot.txt | 66 + .../buildroot/docs/manual/ccache-support.txt | 55 + .../buildroot/docs/manual/common-usage.txt | 334 + .../manual/configure-other-components.txt | 60 + features/buildroot/docs/manual/configure.txt | 384 + features/buildroot/docs/manual/contribute.txt | 489 + .../docs/manual/customize-configuration.txt | 64 + .../customize-device-permission-tables.txt | 30 + .../manual/customize-directory-structure.txt | 111 + .../docs/manual/customize-outside-br.txt | 313 + .../docs/manual/customize-packages.txt | 56 + .../docs/manual/customize-patches.txt | 59 + .../docs/manual/customize-post-image.txt | 37 + .../docs/manual/customize-quick-guide.txt | 66 + .../docs/manual/customize-rootfs.txt | 153 + .../docs/manual/customize-users-tables.txt | 18 + features/buildroot/docs/manual/customize.txt | 60 + .../docs/manual/debugging-buildroot.txt | 43 + features/buildroot/docs/manual/developers.txt | 49 + .../buildroot/docs/manual/download-infra.txt | 8 + .../docs/manual/download-location.txt | 27 + .../docs/manual/eclipse-integration.txt | 30 + .../docs/manual/faq-troubleshooting.txt | 241 + features/buildroot/docs/manual/getting.txt | 36 + .../docs/manual/how-buildroot-works.txt | 69 + .../buildroot/docs/manual/introduction.txt | 26 + .../buildroot/docs/manual/known-issues.txt | 15 + .../buildroot/docs/manual/legal-notice.txt | 123 + features/buildroot/docs/manual/make-tips.txt | 133 + .../buildroot/docs/manual/makedev-syntax.txt | 103 + .../docs/manual/makeusers-syntax.txt | 89 + features/buildroot/docs/manual/manual.mk | 10 + features/buildroot/docs/manual/manual.txt | 71 + features/buildroot/docs/manual/migrating.txt | 58 + .../docs/manual/package-make-target.txt | 96 + .../buildroot/docs/manual/patch-policy.txt | 162 + .../buildroot/docs/manual/prerequisite.txt | 89 + features/buildroot/docs/manual/quickstart.txt | 123 + .../docs/manual/rebuilding-packages.txt | 122 + features/buildroot/docs/manual/resources.txt | 73 + .../docs/manual/using-buildroot-debugger.txt | 53 + .../manual/using-buildroot-development.txt | 121 + .../docs/manual/using-buildroot-toolchain.txt | 34 + .../buildroot/docs/manual/writing-rules.txt | 151 + features/buildroot/docs/website/.htaccess | 62 + .../buildroot/docs/website/association.html | 122 + .../buildroot/docs/website/contribute.html | 44 + features/buildroot/docs/website/copyright.txt | 30 + features/buildroot/docs/website/css/main.css | 260 + .../buildroot/docs/website/css/timeline.css | 184 + features/buildroot/docs/website/docs.html | 119 + features/buildroot/docs/website/download.html | 217 + features/buildroot/docs/website/favicon.ico | Bin 0 -> 2238 bytes features/buildroot/docs/website/favicon.png | Bin 0 -> 1801 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23292 bytes features/buildroot/docs/website/footer.html | 7 + features/buildroot/docs/website/header.html | 54 + .../website/images/amarula-solutions-logo.png | Bin 0 -> 16768 bytes .../docs/website/images/bootlin-logo.png | Bin 0 -> 6171 bytes .../website/images/boundary-devices-logo.png | Bin 0 -> 13305 bytes .../buildroot/docs/website/images/browser.png | Bin 0 -> 18175 bytes .../docs/website/images/bug-buddy.png | Bin 0 -> 5946 bytes .../docs/website/images/buildroot-slides.png | Bin 0 -> 32837 bytes .../docs/website/images/calao-logo.png | Bin 0 -> 15386 bytes .../docs/website/images/circuitco-logo.png | Bin 0 -> 10750 bytes .../buildroot/docs/website/images/clippy.svg | 3 + .../buildroot/docs/website/images/email.png | Bin 0 -> 4101 bytes .../docs/website/images/fluendo-logo.png | Bin 0 -> 9098 bytes .../website/images/free-electrons-logo.png | Bin 0 -> 9174 bytes .../buildroot/docs/website/images/gift.png | Bin 0 -> 15906 bytes .../website/images/github_hash_mongrel2.png | Bin 0 -> 19029 bytes .../docs/website/images/google-logo.png | Bin 0 -> 12005 bytes .../buildroot/docs/website/images/hammer.png | Bin 0 -> 18353 bytes .../docs/website/images/imgtec-logo.png | Bin 0 -> 5276 bytes .../buildroot/docs/website/images/irc.png | Bin 0 -> 7696 bytes .../docs/website/images/logilin-logo.png | Bin 0 -> 34112 bytes .../buildroot/docs/website/images/logo.png | Bin 0 -> 117499 bytes .../buildroot/docs/website/images/logo.xcf | Bin 0 -> 356067 bytes .../docs/website/images/logo_small.png | Bin 0 -> 3624 bytes .../docs/website/images/menuconfig.png | Bin 0 -> 181491 bytes .../docs/website/images/mind-logo.png | Bin 0 -> 10214 bytes .../buildroot/docs/website/images/nconfig.png | Bin 0 -> 88055 bytes .../buildroot/docs/website/images/package.png | Bin 0 -> 7746 bytes .../docs/website/images/pdf-icon.png | Bin 0 -> 10324 bytes .../website/images/rockwell-collins-logo.png | Bin 0 -> 6124 bytes .../docs/website/images/scaleway-logo.png | Bin 0 -> 12331 bytes .../docs/website/images/smile-logo.png | Bin 0 -> 60367 bytes .../docs/website/images/synopsys-logo.png | Bin 0 -> 52426 bytes .../buildroot/docs/website/images/text.png | Bin 0 -> 6437 bytes .../docs/website/images/tkos-logo.png | Bin 0 -> 10101 bytes .../docs/website/images/tux-flat.png | Bin 0 -> 20106 bytes .../buildroot/docs/website/images/xconfig.png | Bin 0 -> 224081 bytes .../docs/website/images/zillabit-logo.png | Bin 0 -> 5394 bytes .../buildroot/docs/website/images/zip.png | Bin 0 -> 8208 bytes features/buildroot/docs/website/index.html | 151 + .../buildroot/docs/website/js/buildroot.js | 93 + features/buildroot/docs/website/news.html | 4944 ++++++++++ features/buildroot/docs/website/robots.txt | 2 + features/buildroot/docs/website/sponsors.html | 350 + features/buildroot/docs/website/support.html | 99 + features/buildroot/fs/Config.in | 20 + features/buildroot/fs/axfs/Config.in | 17 + features/buildroot/fs/axfs/axfs.mk | 13 + features/buildroot/fs/btrfs/Config.in | 50 + features/buildroot/fs/btrfs/btrfs.mk | 36 + features/buildroot/fs/cloop/Config.in | 10 + features/buildroot/fs/cloop/cloop.mk | 14 + features/buildroot/fs/common.mk | 208 + features/buildroot/fs/cpio/Config.in | 65 + features/buildroot/fs/cpio/cpio.mk | 52 + features/buildroot/fs/cpio/init | 7 + features/buildroot/fs/cramfs/Config.in | 26 + features/buildroot/fs/cramfs/cramfs.mk | 27 + features/buildroot/fs/ext2/Config.in | 135 + features/buildroot/fs/ext2/ext2.mk | 46 + features/buildroot/fs/f2fs/Config.in | 59 + features/buildroot/fs/f2fs/f2fs.mk | 45 + features/buildroot/fs/initramfs/Config.in | 22 + features/buildroot/fs/initramfs/initramfs.mk | 31 + features/buildroot/fs/iso9660/Config.in | 89 + features/buildroot/fs/iso9660/grub.cfg | 7 + features/buildroot/fs/iso9660/iso9660.mk | 146 + features/buildroot/fs/iso9660/isolinux.cfg | 5 + features/buildroot/fs/jffs2/Config.in | 113 + features/buildroot/fs/jffs2/jffs2.mk | 52 + features/buildroot/fs/romfs/Config.in | 4 + features/buildroot/fs/romfs/romfs.mk | 13 + features/buildroot/fs/squashfs/Config.in | 34 + features/buildroot/fs/squashfs/squashfs.mk | 29 + features/buildroot/fs/tar/Config.in | 57 + features/buildroot/fs/tar/tar.mk | 19 + features/buildroot/fs/ubi/Config.in | 52 + features/buildroot/fs/ubi/ubi.mk | 32 + features/buildroot/fs/ubi/ubinize.cfg | 8 + features/buildroot/fs/ubifs/Config.in | 98 + features/buildroot/fs/ubifs/ubifs.mk | 30 + features/buildroot/fs/yaffs2/Config.in | 4 + features/buildroot/fs/yaffs2/yaffs2.mk | 13 + ...l-Eliminate-Perl-warning.patch.conditional | 45 + features/buildroot/linux/Config.ext.in | 141 + features/buildroot/linux/Config.in | 459 + features/buildroot/linux/linux-ext-aufs.mk | 21 + .../linux/linux-ext-ev3dev-linux-drivers.mk | 12 + features/buildroot/linux/linux-ext-fbtft.mk | 22 + features/buildroot/linux/linux-ext-rtai.mk | 30 + features/buildroot/linux/linux-ext-xenomai.mk | 35 + features/buildroot/linux/linux.hash | 8 + features/buildroot/linux/linux.mk | 583 ++ .../package/18xx-ti-utils/18xx-ti-utils.hash | 3 + .../package/18xx-ti-utils/18xx-ti-utils.mk | 30 + .../buildroot/package/18xx-ti-utils/Config.in | 14 + .../4th/0001-avoid-regen-during-install.patch | 17 + features/buildroot/package/4th/4th.hash | 2 + features/buildroot/package/4th/4th.mk | 70 + features/buildroot/package/4th/Config.in | 8 + features/buildroot/package/Config.in | 2277 +++++ features/buildroot/package/Config.in.host | 80 + features/buildroot/package/Makefile.in | 450 + features/buildroot/package/a10disp/Config.in | 13 + .../buildroot/package/a10disp/a10disp.hash | 2 + features/buildroot/package/a10disp/a10disp.mk | 22 + features/buildroot/package/abootimg/Config.in | 10 + .../buildroot/package/abootimg/abootimg.hash | 3 + .../buildroot/package/abootimg/abootimg.mk | 23 + .../0001-Build-with-old-GCC-versions.patch | 32 + features/buildroot/package/acl/Config.in | 10 + features/buildroot/package/acl/acl.hash | 6 + features/buildroot/package/acl/acl.mk | 20 + .../acpica/0001-build-do-not-use-Werror.patch | 67 + features/buildroot/package/acpica/Config.in | 13 + features/buildroot/package/acpica/acpica.hash | 3 + features/buildroot/package/acpica/acpica.mk | 39 + .../acpid/0001-dont-use-isfdtype.patch | 20 + .../acpid/0002-add-missing-defines.patch | 40 + features/buildroot/package/acpid/Config.in | 11 + features/buildroot/package/acpid/S02acpid | 22 + features/buildroot/package/acpid/acpid.hash | 3 + features/buildroot/package/acpid/acpid.mk | 40 + .../buildroot/package/acpid/acpid.service | 9 + features/buildroot/package/acpitool/Config.in | 14 + .../buildroot/package/acpitool/acpitool.hash | 2 + .../buildroot/package/acpitool/acpitool.mk | 13 + features/buildroot/package/acsccid/Config.in | 19 + .../buildroot/package/acsccid/acsccid.hash | 3 + features/buildroot/package/acsccid/acsccid.mk | 16 + .../package/adwaita-icon-theme/Config.in | 5 + .../adwaita-icon-theme.hash | 2 + .../adwaita-icon-theme/adwaita-icon-theme.mk | 16 + .../buildroot/package/aer-inject/Config.in | 12 + .../package/aer-inject/aer-inject.hash | 2 + .../package/aer-inject/aer-inject.mk | 22 + features/buildroot/package/aespipe/Config.in | 11 + .../buildroot/package/aespipe/Config.in.host | 10 + .../buildroot/package/aespipe/aespipe.hash | 2 + features/buildroot/package/aespipe/aespipe.mk | 23 + features/buildroot/package/agentpp/Config.in | 23 + .../buildroot/package/agentpp/agentpp.hash | 2 + features/buildroot/package/agentpp/agentpp.mk | 19 + .../buildroot/package/aircrack-ng/Config.in | 19 + .../package/aircrack-ng/aircrack-ng.hash | 6 + .../package/aircrack-ng/aircrack-ng.mk | 76 + .../buildroot/package/alljoyn-base/Config.in | 51 + .../package/alljoyn-base/alljoyn-base.hash | 2 + .../package/alljoyn-base/alljoyn-base.mk | 91 + .../package/alljoyn-tcl-base/Config.in | 18 + .../alljoyn-tcl-base/alljoyn-tcl-base.hash | 2 + .../alljoyn-tcl-base/alljoyn-tcl-base.mk | 45 + .../buildroot/package/alljoyn-tcl/Config.in | 20 + .../package/alljoyn-tcl/alljoyn-tcl.hash | 2 + .../package/alljoyn-tcl/alljoyn-tcl.mk | 43 + ...1-UARTStreamLinux-fix-build-on-sparc.patch | 56 + features/buildroot/package/alljoyn/Config.in | 24 + .../buildroot/package/alljoyn/alljoyn.hash | 2 + features/buildroot/package/alljoyn/alljoyn.mk | 67 + ...01-Don-t-use-fork-on-noMMU-platforms.patch | 60 + features/buildroot/package/alsa-lib/Config.in | 78 + .../buildroot/package/alsa-lib/alsa-lib.hash | 4 + .../buildroot/package/alsa-lib/alsa-lib.mk | 69 + .../buildroot/package/alsa-utils/Config.in | 94 + .../package/alsa-utils/alsa-utils.hash | 3 + .../package/alsa-utils/alsa-utils.mk | 101 + .../alsamixergui/0001-misc-fixes.patch | 40 + .../buildroot/package/alsamixergui/Config.in | 18 + .../package/alsamixergui/alsamixergui.hash | 2 + .../package/alsamixergui/alsamixergui.mk | 21 + .../0001-install-does-not-build.patch | 23 + .../package/am335x-pru-package/Config.in | 7 + .../am335x-pru-package.hash | 2 + .../am335x-pru-package/am335x-pru-package.mk | 74 + .../package/am33x-cm3/0001-fix-makefile.patch | 30 + .../buildroot/package/am33x-cm3/Config.in | 8 + .../am33x-cm3/S93-am335x-pm-firmware-load | 6 + .../package/am33x-cm3/am33x-cm3.hash | 2 + .../buildroot/package/am33x-cm3/am33x-cm3.mk | 31 + .../0001-Add-support-for-Linux-4.0.patch | 45 + .../0002-Add-support-for-Linux-4.1.patch | 31 + .../0003-Add-support-for-Linux-4.2.patch | 121 + ...Use-fpregs_active-instead-of-has_fpu.patch | 33 + ...a-local-copy-of-copy_xregs_to_kernel.patch | 79 + .../0006-Add-support-for-Linux-4.4.patch | 78 + .../0007-remove-gpl-symbols.patch | 54 + .../package/amd-catalyst/20-fglrx.conf | 4 + .../buildroot/package/amd-catalyst/Config.in | 65 + .../package/amd-catalyst/amd-catalyst.hash | 2 + .../package/amd-catalyst/amd-catalyst.mk | 162 + features/buildroot/package/amd-catalyst/gl.pc | 12 + ...-Fix-makefiles-for-out-of-tree-build.patch | 162 + ...0002-Fix-adbd-for-non-Ubuntu-systems.patch | 264 + .../0003-Fix-build-issue-with-uclibc.patch | 36 + .../0004-Fix-build-issue-with-musl.patch | 54 + .../0005-Use-pkgconf-to-get-libs-deps.patch | 35 + .../0006-fix-big-endian-build.patch | 61 + .../0007-include-cdefs-h-when-needed.patch | 41 + ...smacros.h-to-compile-with-glibc-2.28.patch | 42 + ...les-for-out-of-tree-ext4_utils-build.patch | 48 + ...atch-for-openssl-1.1.0-compatibility.patch | 47 + .../buildroot/package/android-tools/Config.in | 84 + .../package/android-tools/Config.in.host | 33 + .../package/android-tools/android-tools.hash | 3 + .../package/android-tools/android-tools.mk | 96 + .../package/angular-websocket/Config.in | 7 + .../angular-websocket/angular-websocket.hash | 2 + .../angular-websocket/angular-websocket.mk | 18 + .../buildroot/package/angularjs/Config.in | 6 + .../package/angularjs/angularjs.hash | 3 + .../buildroot/package/angularjs/angularjs.mk | 27 + ...ipt-interpreter-from-bin-bash-to-bin.patch | 26 + features/buildroot/package/aoetools/Config.in | 12 + .../buildroot/package/aoetools/aoetools.hash | 5 + .../buildroot/package/aoetools/aoetools.mk | 21 + .../package/apache/0001-cross-compile.patch | 63 + .../apache/0002-nios2_is_not_os2.patch | 18 + features/buildroot/package/apache/Config.in | 48 + features/buildroot/package/apache/S50apache | 15 + features/buildroot/package/apache/apache.hash | 4 + features/buildroot/package/apache/apache.mk | 117 + .../buildroot/package/apache/apache.service | 13 + features/buildroot/package/apitrace/Config.in | 19 + .../buildroot/package/apitrace/apitrace.hash | 2 + .../buildroot/package/apitrace/apitrace.mk | 17 + .../apr-util/0001-remove-checkapr.patch | 21 + features/buildroot/package/apr-util/Config.in | 15 + .../buildroot/package/apr-util/apr-util.hash | 4 + .../buildroot/package/apr-util/apr-util.mk | 84 + .../package/apr/0001-cross-compile.patch | 58 + features/buildroot/package/apr/Config.in | 16 + features/buildroot/package/apr/apr.hash | 4 + features/buildroot/package/apr/apr.mk | 81 + .../0001-throw-in-funcdef.patch | 79 + .../argp-standalone/0002-isprint.patch | 45 + .../0003-fix_build_with_c99_compilers.patch | 68 + .../package/argp-standalone/Config.in | 8 + .../argp-standalone/argp-standalone.hash | 2 + .../argp-standalone/argp-standalone.mk | 25 + features/buildroot/package/argparse/Config.in | 10 + .../buildroot/package/argparse/argparse.hash | 3 + .../buildroot/package/argparse/argparse.mk | 12 + features/buildroot/package/argus/Config.in | 14 + features/buildroot/package/argus/argus.hash | 2 + features/buildroot/package/argus/argus.mk | 22 + .../buildroot/package/armadillo/Config.in | 20 + .../package/armadillo/armadillo.hash | 7 + .../buildroot/package/armadillo/armadillo.mk | 15 + .../package/armbian-firmware/Config.in | 21 + .../armbian-firmware/armbian-firmware.hash | 2 + .../armbian-firmware/armbian-firmware.mk | 53 + ...nking-to-detect-stack-protector-supp.patch | 39 + features/buildroot/package/arp-scan/Config.in | 10 + .../buildroot/package/arp-scan/arp-scan.hash | 3 + .../buildroot/package/arp-scan/arp-scan.mk | 22 + ...01-arptables-disable-dlfcn.h-include.patch | 32 + .../arptables/0002-src-Use-stdint-types.patch | 134 + .../0003-src-Remove-support-for-libc5.patch | 64 + .../arptables/0004-Fix-musl-build-issue.patch | 71 + .../buildroot/package/arptables/Config.in | 7 + .../package/arptables/arptables.hash | 2 + .../buildroot/package/arptables/arptables.mk | 21 + ...Converter-use-proper-64-bit-constant.patch | 35 + features/buildroot/package/assimp/Config.in | 15 + features/buildroot/package/assimp/assimp.hash | 3 + features/buildroot/package/assimp/assimp.mk | 34 + ...unds-do-not-download-and-check-sha1s.patch | 52 + ...-configure-fix-detection-of-libcrypt.patch | 43 + ...-target-directory-for-modules-exists.patch | 32 + ...-install-samples-need-the-data-files.patch | 35 + ...tection-of-re-entrant-resolver-funct.patch | 38 + features/buildroot/package/asterisk/Config.in | 32 + .../buildroot/package/asterisk/asterisk.hash | 15 + .../buildroot/package/asterisk/asterisk.mk | 332 + .../buildroot/package/at-spi2-atk/Config.in | 22 + .../package/at-spi2-atk/at-spi2-atk.hash | 3 + .../package/at-spi2-atk/at-spi2-atk.mk | 16 + ...001-Fix-meson.build-for-meson-0.50.0.patch | 35 + .../buildroot/package/at-spi2-core/Config.in | 25 + .../package/at-spi2-core/at-spi2-core.hash | 3 + .../package/at-spi2-core/at-spi2-core.mk | 20 + ...vert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch | 34 + ...Makefile.in-replace-IROOT-by-DESTDIR.patch | 108 + .../0003-Makefile.in-make-install-fix.patch | 83 + .../package/at/0004-getloadavg.c-fix.patch | 30 + .../0005-parsetime.l-include-config-h.patch | 16 + ...006-remove-glibc-__isleap-assumption.patch | 59 + features/buildroot/package/at/Config.in | 12 + features/buildroot/package/at/S99at | 47 + features/buildroot/package/at/at.hash | 5 + features/buildroot/package/at/at.mk | 29 + features/buildroot/package/atest/Config.in | 13 + features/buildroot/package/atest/atest.hash | 2 + features/buildroot/package/atest/atest.mk | 21 + features/buildroot/package/atf/Config.in | 13 + features/buildroot/package/atf/atf.hash | 2 + features/buildroot/package/atf/atf.mk | 24 + ...am-link-against-libpthread-for-atftp.patch | 26 + ...fix-musl-compile-add-missing-defines.patch | 42 + ...d.h-fix-musl-compile-missing-include.patch | 40 + features/buildroot/package/atftp/Config.in | 14 + features/buildroot/package/atftp/atftp.hash | 3 + features/buildroot/package/atftp/atftp.mk | 37 + features/buildroot/package/atk/Config.in | 12 + features/buildroot/package/atk/atk.hash | 5 + features/buildroot/package/atk/atk.mk | 19 + features/buildroot/package/atkmm/Config.in | 20 + features/buildroot/package/atkmm/atkmm.hash | 2 + features/buildroot/package/atkmm/atkmm.mk | 16 + features/buildroot/package/atop/Config.in | 23 + features/buildroot/package/atop/atop.hash | 5 + features/buildroot/package/atop/atop.mk | 28 + .../attr/0001-build-with-older-GCCs.patch | 87 + .../attr/0002-Switch-back-to-syscall.patch | 126 + features/buildroot/package/attr/Config.in | 7 + features/buildroot/package/attr/attr.hash | 6 + features/buildroot/package/attr/attr.mk | 17 + .../0001-Fix-build-with-FFmpeg-4.0.patch | 32 + features/buildroot/package/aubio/Config.in | 21 + features/buildroot/package/aubio/aubio.hash | 5 + features/buildroot/package/aubio/aubio.mk | 62 + ...01-Fix-pkg-config-for-static-linking.patch | 56 + .../0002-cast-to-unsigned-gcc6.patch | 28 + ...ays-check-the-number-of-coefficients.patch | 36 + ...ues-to-fix-index-overflow-in-IMA.cpp.patch | 39 + ...multiplication-overflow-in-sfconvert.patch | 72 + ...ail-when-error-occurs-in-parseFormat.patch | 42 + ...lication-overflow-in-MSADPCM-decodeS.patch | 122 + .../audiofile/0008-CVE-2015-7747.patch | 161 + ...9-Fix-static-linking-with-libsndfile.patch | 193 + .../buildroot/package/audiofile/Config.in | 11 + .../package/audiofile/audiofile.hash | 2 + .../buildroot/package/audiofile/audiofile.mk | 25 + ...0001-Fix-audispd-path-in-auditd.conf.patch | 32 + features/buildroot/package/audit/Config.in | 26 + features/buildroot/package/audit/S02auditd | 80 + features/buildroot/package/audit/audit.hash | 4 + features/buildroot/package/audit/audit.mk | 66 + .../package/audit/audit_tmpfiles.conf | 1 + .../aufs-util/0001-remove-user-settings.patch | 16 + .../package/aufs-util/0002-no-check-ver.patch | 24 + .../package/aufs-util/0003-no-strip-lib.patch | 18 + .../buildroot/package/aufs-util/Config.in | 36 + .../buildroot/package/aufs-util/aufs-util.mk | 59 + features/buildroot/package/aufs/Config.in | 16 + features/buildroot/package/aufs/aufs.mk | 22 + features/buildroot/package/augeas/Config.in | 20 + features/buildroot/package/augeas/augeas.hash | 4 + features/buildroot/package/augeas/augeas.mk | 25 + .../0001-fix-incorrect-makefile-am.patch | 28 + features/buildroot/package/aumix/Config.in | 12 + features/buildroot/package/aumix/aumix.hash | 2 + features/buildroot/package/aumix/aumix.mk | 24 + .../0001-AX_TLS-fix-syntax-error.patch | 48 + .../autoconf-archive/autoconf-archive.hash | 2 + .../autoconf-archive/autoconf-archive.mk | 14 + .../0001-dont-add-dirty-to-version.patch | 28 + .../buildroot/package/autoconf/autoconf.hash | 4 + .../buildroot/package/autoconf/autoconf.mk | 26 + ...lude-linux-nfs.h-directly-in-rpc_sub.patch | 32 + features/buildroot/package/autofs/Config.in | 22 + features/buildroot/package/autofs/autofs.hash | 2 + features/buildroot/package/autofs/autofs.mk | 41 + .../package/automake/0001-noman.patch | 27 + .../buildroot/package/automake/automake.hash | 4 + .../buildroot/package/automake/automake.mk | 35 + .../buildroot/package/automake/gtk-doc.m4 | 88 + features/buildroot/package/autossh/Config.in | 10 + .../buildroot/package/autossh/autossh.hash | 6 + features/buildroot/package/autossh/autossh.mk | 17 + ...ast-queries-from-address-not-on-loca.patch | 48 + features/buildroot/package/avahi/Config.in | 49 + .../buildroot/package/avahi/S05avahi-setup.sh | 16 + .../buildroot/package/avahi/S50avahi-daemon | 20 + features/buildroot/package/avahi/avahi.hash | 3 + features/buildroot/package/avahi/avahi.mk | 236 + .../package/avahi/avahi_sysusers.conf | 5 + .../package/avahi/avahi_tmpfiles.conf | 1 + features/buildroot/package/avrdude/Config.in | 19 + .../buildroot/package/avrdude/avrdude.hash | 2 + features/buildroot/package/avrdude/avrdude.mk | 33 + features/buildroot/package/axel/Config.in | 10 + features/buildroot/package/axel/axel.hash | 1 + features/buildroot/package/axel/axel.mk | 27 + .../package/axfsutils/axfsutils.hash | 2 + .../buildroot/package/axfsutils/axfsutils.mk | 24 + ...tionally-disable-test-and-doc-builds.patch | 43 + features/buildroot/package/azmq/Config.in | 28 + features/buildroot/package/azmq/azmq.hash | 4 + features/buildroot/package/azmq/azmq.mk | 18 + .../package/azure-iot-sdk-c/Config.in | 17 + .../azure-iot-sdk-c/azure-iot-sdk-c.mk | 51 + .../buildroot/package/b43-firmware/Config.in | 25 + .../package/b43-firmware/b43-firmware.hash | 3 + .../package/b43-firmware/b43-firmware.mk | 29 + .../package/b43-fwcutter/b43-fwcutter.hash | 2 + .../package/b43-fwcutter/b43-fwcutter.mk | 21 + features/buildroot/package/babeld/Config.in | 8 + features/buildroot/package/babeld/S50babeld | 40 + features/buildroot/package/babeld/babeld.hash | 3 + features/buildroot/package/babeld/babeld.mk | 35 + .../buildroot/package/babeld/babeld.service | 10 + .../buildroot/package/bandwidthd/Config.in | 56 + .../package/bandwidthd/bandwidthd.hash | 2 + .../package/bandwidthd/bandwidthd.mk | 44 + .../package/bandwidthd/bandwidthd.service | 11 + ...file.am-Use-install-data-hook-not-in.patch | 35 + .../package/bash-completion/Config.in | 15 + .../bash-completion/bash-completion.hash | 3 + .../bash-completion/bash-completion.mk | 19 + .../package/bash/0001-bash44-019.patch | 54 + .../package/bash/0002-bash44-020.patch | 181 + .../package/bash/0003-bash44-021.patch | 61 + .../package/bash/0004-bash44-022.patch | 65 + .../package/bash/0005-bash44-023.patch | 56 + features/buildroot/package/bash/Config.in | 11 + features/buildroot/package/bash/bash.hash | 4 + features/buildroot/package/bash/bash.mk | 54 + features/buildroot/package/batctl/Config.in | 11 + features/buildroot/package/batctl/batctl.hash | 4 + features/buildroot/package/batctl/batctl.mk | 21 + .../buildroot/package/batman-adv/Config.in | 36 + .../package/batman-adv/batman-adv.hash | 3 + .../package/batman-adv/batman-adv.mk | 34 + .../buildroot/package/bats-core/Config.in | 11 + .../package/bats-core/bats-core.hash | 5 + .../buildroot/package/bats-core/bats-core.mk | 16 + .../package/bayer2rgb-neon/Config.in | 17 + .../bayer2rgb-neon/bayer2rgb-neon.hash | 3 + .../package/bayer2rgb-neon/bayer2rgb-neon.mk | 24 + .../package/bc/01_array_initialize.patch | 20 + .../bc/02_notice_read_write_errors.patch | 708 ++ .../bc/03_use_appropiate_makeinfo.patch | 17 + features/buildroot/package/bc/Config.in | 15 + features/buildroot/package/bc/bc.hash | 2 + features/buildroot/package/bc/bc.mk | 14 + ...inline-crc64-for-gcc-5-compatability.patch | 35 + .../buildroot/package/bcache-tools/Config.in | 21 + .../package/bcache-tools/bcache-tools.hash | 2 + .../package/bcache-tools/bcache-tools.mk | 33 + features/buildroot/package/bcg729/Config.in | 7 + features/buildroot/package/bcg729/bcg729.hash | 3 + features/buildroot/package/bcg729/bcg729.mk | 21 + features/buildroot/package/bcm2835/Config.in | 19 + .../buildroot/package/bcm2835/bcm2835.hash | 2 + features/buildroot/package/bcm2835/bcm2835.mk | 13 + ...1-Fix-Libs.private-flags-for-mbedtls.patch | 49 + .../buildroot/package/bctoolbox/Config.in | 14 + .../package/bctoolbox/bctoolbox.hash | 2 + .../buildroot/package/bctoolbox/bctoolbox.mk | 38 + ...t-requires-inclusion-of-sys-select.h.patch | 31 + ...ss-recursion-when-using-USB-backends.patch | 35 + features/buildroot/package/bcusdk/Config.in | 25 + features/buildroot/package/bcusdk/bcusdk.hash | 2 + features/buildroot/package/bcusdk/bcusdk.mk | 34 + ...h-of-bdw-gc-with-a-system-atomic_ops.patch | 57 + features/buildroot/package/bdwgc/Config.in | 10 + features/buildroot/package/bdwgc/bdwgc.hash | 3 + features/buildroot/package/bdwgc/bdwgc.mk | 37 + .../0001-cppglue.cxx-cplusplus-only.patch | 28 + .../package/beecrypt/0002-build-system.patch | 173 + ...3-don-t-check-for-cplusplus-compiler.patch | 27 + features/buildroot/package/beecrypt/Config.in | 10 + .../buildroot/package/beecrypt/beecrypt.hash | 2 + .../buildroot/package/beecrypt/beecrypt.mk | 38 + .../package/bellagio/0001-drop-werror.patch | 22 + .../bellagio/0002-dynamicloader-linking.patch | 16 + .../bellagio/0003-parallel-build.patch | 16 + ...4-segfault-on-removeFromWaitResource.patch | 37 + .../0005-fix-doc-installation-path.patch | 24 + features/buildroot/package/bellagio/Config.in | 28 + .../buildroot/package/bellagio/bellagio.hash | 3 + .../buildroot/package/bellagio/bellagio.mk | 16 + .../package/benejson/0001-c-std.patch | 22 + features/buildroot/package/benejson/Config.in | 15 + .../buildroot/package/benejson/benejson.hash | 2 + .../buildroot/package/benejson/benejson.mk | 60 + .../berkeleydb/0001-cwd-db_config.patch | 21 + .../0002-atomic_compare_exchange.patch | 27 + .../buildroot/package/berkeleydb/Config.in | 22 + .../package/berkeleydb/berkeleydb.hash | 3 + .../package/berkeleydb/berkeleydb.mk | 80 + .../buildroot/package/bind/0001-cross.patch | 18 + ...perations-in-bin-named-client.c-with.patch | 133 + ...n_driver.c-fix-build-without-dlfcn.h.patch | 28 + features/buildroot/package/bind/Config.in | 39 + features/buildroot/package/bind/S81named | 38 + features/buildroot/package/bind/bind.hash | 4 + features/buildroot/package/bind/bind.mk | 132 + features/buildroot/package/bind/named.service | 12 + .../package/binutils/2.30/0001-sh-conf.patch | 48 + .../binutils/2.30/0002-ld-makefile.patch | 41 + .../2.30/0003-check-ldrunpath-length.patch | 36 + .../0004-add-sysroot-fix-from-bug-3049.patch | 51 + .../2.30/0005-poison-system-directories.patch | 306 + ...ocation-where-GOT-information-is-col.patch | 197 + ...ustness.-Return-FALSE-in-case-of-NUL.patch | 34 + ...obal-symbol-is-not-an-indirect-or-wa.patch | 42 + ...ion-was-still-being-generated-when-s.patch | 35 + ...s-const16-for-xtensa-loop-relaxation.patch | 294 + .../binutils/2.31.1/0001-sh-conf.patch | 48 + .../0005-poison-system-directories.patch | 306 + ...ion-where-GOT-information-is-collect.patch | 198 + ...ess.-Return-FALSE-in-case-of-NULL-po.patch | 35 + ...-symbol-is-not-an-indirect-or-warnin.patch | 43 + ...was-still-being-generated-when-symbo.patch | 37 + ...ation-of-undefined-weak-references-i.patch | 48 + ...mic-relocations-sections-consistency.patch | 90 + ...OPERTY_X86_ISA_1_USED-note-if-needed.patch | 568 ++ ...ly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch | 588 ++ ...operly-add-X86_ISA_1_NEEDED-property.patch | 140 + ...hrink_dynamic_reloc_sections-for-exp.patch | 41 + ...s-const16-for-xtensa-loop-relaxation.patch | 294 + ...t-.literal_position-at-section-start.patch | 96 + .../package/binutils/2.32/0001-sh-conf.patch | 48 + .../2.32/0002-poison-system-directories.patch | 306 + ...hrink_dynamic_reloc_sections-for-exp.patch | 41 + ...s-const16-for-xtensa-loop-relaxation.patch | 294 + ...t-.literal_position-at-section-start.patch | 96 + features/buildroot/package/binutils/Config.in | 25 + .../buildroot/package/binutils/Config.in.host | 53 + .../0001-poison-system-directories.patch | 306 + .../buildroot/package/binutils/binutils.hash | 10 + .../buildroot/package/binutils/binutils.mk | 147 + .../buildroot/package/biosdevname/Config.in | 15 + .../package/biosdevname/biosdevname.hash | 3 + .../package/biosdevname/biosdevname.mk | 15 + features/buildroot/package/bird/Config.in | 75 + features/buildroot/package/bird/bird.hash | 2 + features/buildroot/package/bird/bird.mk | 36 + features/buildroot/package/bison/bison.hash | 4 + features/buildroot/package/bison/bison.mk | 14 + .../package/bitstream-vera/Config.in | 6 + .../bitstream-vera/bitstream-vera.hash | 2 + .../package/bitstream-vera/bitstream-vera.mk | 19 + .../buildroot/package/bitstream/Config.in | 8 + .../package/bitstream/bitstream.hash | 6 + .../buildroot/package/bitstream/bitstream.mk | 21 + features/buildroot/package/blktrace/Config.in | 15 + .../buildroot/package/blktrace/blktrace.hash | 6 + .../buildroot/package/blktrace/blktrace.mk | 22 + .../buildroot/package/bluez-alsa/Config.in | 42 + .../package/bluez-alsa/bluez-alsa.hash | 3 + .../package/bluez-alsa/bluez-alsa.mk | 56 + .../buildroot/package/bluez-tools/Config.in | 19 + .../package/bluez-tools/bluez-tools.hash | 3 + .../package/bluez-tools/bluez-tools.mk | 36 + .../package/bluez5_utils-headers/Config.in | 7 + .../bluez5_utils-headers.hash | 1 + .../bluez5_utils-headers.mk | 23 + ...x-build-after-y2038-changes-in-glibc.patch | 68 + .../buildroot/package/bluez5_utils/Config.in | 105 + .../package/bluez5_utils/bluez5_utils.hash | 4 + .../package/bluez5_utils/bluez5_utils.mk | 129 + .../0001-enable_cg2900_on_upstream_4.91.patch | 106 + ...0002-tools-hciconfig-include-fcntl.h.patch | 27 + ...003-fix-compilation-issues-with-musl.patch | 61 + .../0004-test-add-missing-header.patch | 34 + ...avoid-conflict-with-encrypt-function.patch | 107 + ...x-build-after-y2038-changes-in-glibc.patch | 68 + .../buildroot/package/bluez_utils/Config.in | 48 + .../package/bluez_utils/bluez_utils.hash | 5 + .../package/bluez_utils/bluez_utils.mk | 61 + features/buildroot/package/bmon/Config.in | 15 + features/buildroot/package/bmon/bmon.hash | 2 + features/buildroot/package/bmon/bmon.mk | 22 + .../package/boa/0001-use-name-max.patch | 21 + features/buildroot/package/boa/Config.in | 8 + features/buildroot/package/boa/boa.conf | 187 + features/buildroot/package/boa/boa.hash | 2 + features/buildroot/package/boa/boa.mk | 19 + features/buildroot/package/boa/mime.types | 205 + features/buildroot/package/boinc/Config.in | 22 + .../buildroot/package/boinc/S99boinc-client | 37 + features/buildroot/package/boinc/boinc.hash | 4 + features/buildroot/package/boinc/boinc.mk | 62 + features/buildroot/package/bonnie/Config.in | 13 + features/buildroot/package/bonnie/bonnie.hash | 2 + features/buildroot/package/bonnie/bonnie.mk | 18 + ...mbiguous-format-call-on-64bit-builds.patch | 27 + .../boost/0002-fix-uclibc-eventfd.patch | 38 + .../buildroot/package/boost/0003-fenv.patch | 37 + .../boost/0004-workaround-musl-bug.patch | 26 + features/buildroot/package/boost/Config.in | 343 + features/buildroot/package/boost/boost.hash | 5 + features/buildroot/package/boost/boost.mk | 203 + .../buildroot/package/bootstrap/Config.in | 7 + .../package/bootstrap/bootstrap.hash | 3 + .../buildroot/package/bootstrap/bootstrap.mk | 26 + features/buildroot/package/botan/Config.in | 29 + features/buildroot/package/botan/botan.hash | 4 + features/buildroot/package/botan/botan.mk | 109 + .../package/brcm-patchram-plus/Config.in | 7 + .../brcm-patchram-plus.hash | 3 + .../brcm-patchram-plus/brcm-patchram-plus.mk | 13 + features/buildroot/package/brickd/Config.in | 19 + features/buildroot/package/brickd/S70brickd | 37 + features/buildroot/package/brickd/brickd.hash | 5 + features/buildroot/package/brickd/brickd.mk | 22 + .../bridge-utils/0001-build-system.patch | 11 + .../buildroot/package/bridge-utils/Config.in | 7 + .../package/bridge-utils/bridge-utils.hash | 2 + .../package/bridge-utils/bridge-utils.mk | 18 + .../0001-buildsys-fix-cross-compilation.patch | 41 + .../0002-Fix-linking-error-on-mips64el.patch | 42 + features/buildroot/package/brltty/Config.in | 22 + features/buildroot/package/brltty/S10brltty | 40 + features/buildroot/package/brltty/brltty.hash | 3 + features/buildroot/package/brltty/brltty.mk | 112 + .../buildroot/package/brltty/brltty.service | 23 + ...g-BUILD_SHARED_LIBS-to-choose-static.patch | 144 + features/buildroot/package/brotli/Config.in | 12 + features/buildroot/package/brotli/brotli.hash | 5 + features/buildroot/package/brotli/brotli.mk | 25 + .../0001-Add-missing-header-for-u_char.patch | 17 + features/buildroot/package/bsdiff/Config.in | 8 + features/buildroot/package/bsdiff/bsdiff.hash | 2 + features/buildroot/package/bsdiff/bsdiff.mk | 25 + ...-static-library-and-headers-in-insta.patch | 51 + ...ine-BTRFS_DISABLE_BACKTRACE-when-bui.patch | 42 + .../buildroot/package/btrfs-progs/Config.in | 17 + .../package/btrfs-progs/Config.in.host | 6 + .../package/btrfs-progs/btrfs-progs.hash | 6 + .../package/btrfs-progs/btrfs-progs.mk | 42 + features/buildroot/package/bullet/Config.in | 11 + features/buildroot/package/bullet/bullet.hash | 3 + features/buildroot/package/bullet/bullet.mk | 34 + features/buildroot/package/bustle/Config.in | 26 + features/buildroot/package/bustle/bustle.hash | 2 + features/buildroot/package/bustle/bustle.mk | 28 + ...route-use-linux-if_packet.h-instead-.patch | 29 + ...trip-non-l-arguments-returned-by-pkg.patch | 30 + features/buildroot/package/busybox/Config.in | 106 + features/buildroot/package/busybox/S01syslogd | 55 + features/buildroot/package/busybox/S02klogd | 55 + features/buildroot/package/busybox/S10mdev | 42 + .../buildroot/package/busybox/S15watchdog | 20 + features/buildroot/package/busybox/S50telnet | 39 + .../package/busybox/busybox-minimal.config | 1143 +++ .../buildroot/package/busybox/busybox.config | 1152 +++ .../buildroot/package/busybox/busybox.hash | 3 + features/buildroot/package/busybox/busybox.mk | 356 + features/buildroot/package/busybox/inittab | 39 + features/buildroot/package/busybox/mdev.conf | 39 + .../buildroot/package/busybox/udhcpc.script | 82 + features/buildroot/package/bwm-ng/Config.in | 8 + features/buildroot/package/bwm-ng/bwm-ng.hash | 2 + features/buildroot/package/bwm-ng/bwm-ng.mk | 19 + .../bzip2/0001-build-objects-twice.patch | 56 + .../bzip2/0002-improve-build-system.patch | 84 + ...-sure-nSelectors-is-not-out-of-range.patch | 33 + features/buildroot/package/bzip2/Config.in | 7 + features/buildroot/package/bzip2/bzip2.hash | 6 + features/buildroot/package/bzip2/bzip2.mk | 69 + ...se_check_build_instead_of_check_user.patch | 17 + features/buildroot/package/c-ares/Config.in | 6 + features/buildroot/package/c-ares/c-ares.hash | 5 + features/buildroot/package/c-ares/c-ares.mk | 17 + .../buildroot/package/c-capnproto/Config.in | 21 + .../package/c-capnproto/c-capnproto.hash | 3 + .../package/c-capnproto/c-capnproto.mk | 24 + .../package/c-icap-modules/Config.in | 7 + .../c-icap-modules/c-icap-modules.hash | 3 + .../package/c-icap-modules/c-icap-modules.mk | 32 + features/buildroot/package/c-icap/Config.in | 18 + features/buildroot/package/c-icap/S96cicap | 27 + features/buildroot/package/c-icap/c-icap.hash | 2 + features/buildroot/package/c-icap/c-icap.mk | 101 + .../buildroot/package/c-periphery/Config.in | 16 + .../package/c-periphery/c-periphery.hash | 3 + .../package/c-periphery/c-periphery.mk | 27 + .../package/ca-certificates/Config.in | 12 + .../ca-certificates/ca-certificates.hash | 6 + .../ca-certificates/ca-certificates.mk | 47 + .../0001-Fix-conflicting-round-function.patch | 108 + .../package/cache-calibrator/Config.in | 13 + .../cache-calibrator/cache-calibrator.hash | 3 + .../cache-calibrator/cache-calibrator.mk | 29 + .../package/cairo/0001-fix-nofork-build.patch | 29 + features/buildroot/package/cairo/Config.in | 48 + features/buildroot/package/cairo/cairo.hash | 9 + features/buildroot/package/cairo/cairo.mk | 170 + features/buildroot/package/cairomm/Config.in | 19 + .../buildroot/package/cairomm/cairomm.hash | 2 + features/buildroot/package/cairomm/cairomm.mk | 16 + ...o-find-SIOCGSTAMP-with-latest-kernel.patch | 109 + .../buildroot/package/can-utils/Config.in | 14 + .../package/can-utils/can-utils.hash | 3 + .../buildroot/package/can-utils/can-utils.mk | 13 + ...all-pkgconfig-module-for-canfestival.patch | 74 + ...0002-allow-to-set-python-interpreter.patch | 176 + .../buildroot/package/canfestival/Config.in | 90 + .../package/canfestival/canfestival.hash | 3 + .../package/canfestival/canfestival.mk | 59 + .../0001-Add-missing-cstdio-include.patch | 29 + .../buildroot/package/cannelloni/Config.in | 17 + .../package/cannelloni/cannelloni.hash | 2 + .../package/cannelloni/cannelloni.mk | 19 + .../buildroot/package/cantarell/Config.in | 7 + .../package/cantarell/cantarell.hash | 2 + .../buildroot/package/cantarell/cantarell.mk | 15 + ...01-Do-not-use-execinfo-h-with-uclibc.patch | 30 + .../buildroot/package/capnproto/Config.in | 24 + .../package/capnproto/capnproto.hash | 3 + .../buildroot/package/capnproto/capnproto.mk | 25 + .../package/cargo-bin/cargo-bin.hash | 13 + .../buildroot/package/cargo-bin/cargo-bin.mk | 13 + .../buildroot/package/cargo/Config.in.host | 9 + features/buildroot/package/cargo/cargo.hash | 8 + features/buildroot/package/cargo/cargo.mk | 91 + features/buildroot/package/cargo/config.in | 2 + ...crash-on-devices-without-RSA-support.patch | 43 + .../buildroot/package/cbootimage/Config.in | 16 + .../package/cbootimage/Config.in.host | 9 + .../package/cbootimage/cbootimage.hash | 2 + .../package/cbootimage/cbootimage.mk | 14 + .../0001-add-missing-stdarg-include.patch | 18 + .../package/cc-tool/0002-boost-m4.patch | 883 ++ ...03-Makefile.am-do-not-overwrite-LIBS.patch | 50 + ...rpath-option-check-for-static-linkin.patch | 44 + features/buildroot/package/cc-tool/Config.in | 20 + .../buildroot/package/cc-tool/cc-tool.hash | 3 + features/buildroot/package/cc-tool/cc-tool.mk | 31 + features/buildroot/package/ccache/ccache.hash | 4 + features/buildroot/package/ccache/ccache.mk | 79 + features/buildroot/package/ccid/Config.in | 15 + features/buildroot/package/ccid/ccid.hash | 3 + features/buildroot/package/ccid/ccid.mk | 26 + features/buildroot/package/ccrypt/Config.in | 7 + features/buildroot/package/ccrypt/ccrypt.hash | 2 + features/buildroot/package/ccrypt/ccrypt.mk | 13 + .../package/cdrkit/0001-no-rcmd.patch | 22 + ...THROW-to-avoid-build-issue-with-musl.patch | 47 + features/buildroot/package/cdrkit/Config.in | 13 + features/buildroot/package/cdrkit/cdrkit.hash | 2 + features/buildroot/package/cdrkit/cdrkit.mk | 22 + .../package/cegui06/0001-stddef.h.patch | 26 + features/buildroot/package/cegui06/Config.in | 20 + .../buildroot/package/cegui06/cegui06.hash | 2 + features/buildroot/package/cegui06/cegui06.mk | 36 + .../celt051/0001-fix-gnuc-prereq.patch | 29 + features/buildroot/package/celt051/Config.in | 15 + .../buildroot/package/celt051/celt051.hash | 2 + features/buildroot/package/celt051/celt051.mk | 30 + .../package/cgic/0001-prepare_makefile.patch | 44 + .../package/cgic/0002-file_enhancements.patch | 56 + ...3-restore-cgiFormFileGetTempfileName.patch | 43 + features/buildroot/package/cgic/Config.in | 6 + features/buildroot/package/cgic/cgic.hash | 2 + features/buildroot/package/cgic/cgic.mk | 25 + features/buildroot/package/cgilua/Config.in | 8 + features/buildroot/package/cgilua/cgilua.hash | 3 + features/buildroot/package/cgilua/cgilua.mk | 11 + .../package/cgroupfs-mount/Config.in | 19 + .../package/cgroupfs-mount/S30cgroupfs | 34 + .../cgroupfs-mount/cgroupfs-mount.hash | 2 + .../package/cgroupfs-mount/cgroupfs-mount.mk | 22 + features/buildroot/package/check/Config.in | 6 + features/buildroot/package/check/check.hash | 4 + features/buildroot/package/check/check.mk | 20 + .../buildroot/package/checkpolicy/Config.in | 21 + .../package/checkpolicy/Config.in.host | 10 + .../package/checkpolicy/checkpolicy.hash | 5 + .../package/checkpolicy/checkpolicy.mk | 50 + ...cksec-Fixed-issue-with-relative-path.patch | 43 + .../buildroot/package/checksec/Config.in.host | 17 + .../buildroot/package/checksec/checksec.hash | 3 + .../buildroot/package/checksec/checksec.mk | 16 + .../0001-Fix-build-failure-on-musl.patch | 37 + features/buildroot/package/chipmunk/Config.in | 12 + .../buildroot/package/chipmunk/chipmunk.hash | 5 + .../buildroot/package/chipmunk/chipmunk.mk | 28 + ...onfigure-Switch-to-pkg-config-macros.patch | 217 + .../package/chocolate-doom/Config.in | 12 + .../chocolate-doom/chocolate-doom.hash | 2 + .../package/chocolate-doom/chocolate-doom.mk | 46 + .../0001-ntp-fix-build-with-musl-libc.patch | 39 + ...02-hash-include-util.h-for-MIN-macro.patch | 28 + features/buildroot/package/chrony/Config.in | 8 + features/buildroot/package/chrony/S49chrony | 26 + features/buildroot/package/chrony/chrony.hash | 5 + features/buildroot/package/chrony/chrony.mk | 73 + .../buildroot/package/chrony/chrony.service | 11 + .../buildroot/package/cifs-utils/Config.in | 15 + .../package/cifs-utils/cifs-utils.hash | 5 + .../package/cifs-utils/cifs-utils.mk | 30 + ...ame-async-argument-of-_create_circus.patch | 97 + features/buildroot/package/circus/Config.in | 19 + features/buildroot/package/circus/circus.hash | 4 + features/buildroot/package/circus/circus.mk | 13 + .../0001-modlua.ini-include-dlfcn.h.patch | 34 + features/buildroot/package/civetweb/Config.in | 40 + .../buildroot/package/civetweb/civetweb.hash | 3 + .../buildroot/package/civetweb/civetweb.mk | 87 + features/buildroot/package/cjson/Config.in | 7 + features/buildroot/package/cjson/cjson.hash | 3 + features/buildroot/package/cjson/cjson.mk | 27 + ...c-fix-build-error-due-to-missing-soc.patch | 34 + ...backtrace-if-using-uClibc-without-ba.patch | 34 + features/buildroot/package/clamav/Config.in | 19 + features/buildroot/package/clamav/clamav.hash | 14 + features/buildroot/package/clamav/clamav.mk | 100 + features/buildroot/package/clang/Config.in | 26 + features/buildroot/package/clang/clang.hash | 3 + features/buildroot/package/clang/clang.mk | 106 + ...bf2c-to-be-built-as-a-static-library.patch | 32 + ...est-build-sensitive-to-BUILD_TESTING.patch | 80 + ...-to-run-arithchk-when-cross-compilin.patch | 70 + ...add-library-and-header-install-rules.patch | 23 + ...add-library-and-header-install-rules.patch | 24 + .../clapack/0006-remove-uninit-f2c.patch | 24 + .../package/clapack/0007-off64-t.patch | 16 + features/buildroot/package/clapack/Config.in | 28 + .../buildroot/package/clapack/clapack.hash | 5 + features/buildroot/package/clapack/clapack.mk | 22 + .../buildroot/package/classpath/Config.in | 19 + .../package/classpath/classpath.hash | 2 + .../buildroot/package/classpath/classpath.mk | 62 + features/buildroot/package/clinfo/Config.in | 12 + features/buildroot/package/clinfo/clinfo.hash | 4 + features/buildroot/package/clinfo/clinfo.mk | 21 + .../buildroot/package/cloop/0001-cflags.patch | 30 + features/buildroot/package/cloop/cloop.hash | 2 + features/buildroot/package/cloop/cloop.mk | 25 + .../cmake/0001-rename_cmake_rootfile.patch | 29 + ...k-uv-version-h-for-version-detection.patch | 32 + features/buildroot/package/cmake/Config.in | 48 + .../buildroot/package/cmake/Config.in.host | 11 + features/buildroot/package/cmake/cmake.hash | 5 + features/buildroot/package/cmake/cmake.mk | 84 + features/buildroot/package/cmocka/Config.in | 15 + features/buildroot/package/cmocka/cmocka.hash | 3 + features/buildroot/package/cmocka/cmocka.mk | 24 + features/buildroot/package/cog/Config.in | 27 + features/buildroot/package/cog/cog.hash | 7 + features/buildroot/package/cog/cog.mk | 19 + ...collectdclient-increase-error-buffer.patch | 87 + ...gps-plugin-fix-build-with-newer-gpsd.patch | 43 + ...checks-for-upper-limit-of-SENSORS_AP.patch | 89 + features/buildroot/package/collectd/Config.in | 643 ++ .../buildroot/package/collectd/collectd.hash | 6 + .../buildroot/package/collectd/collectd.mk | 218 + .../package/collectd/collectd.service | 17 + .../buildroot/package/comix-cursors/Config.in | 6 + .../package/comix-cursors/comix-cursors.hash | 2 + .../package/comix-cursors/comix-cursors.mk | 19 + .../buildroot/package/conan-gtest/Config.in | 6 + .../package/conan-gtest/conan-gtest.mk | 15 + .../buildroot/package/conan-zlib/Config.in | 7 + .../package/conan-zlib/conan-zlib.mk | 15 + features/buildroot/package/conan/Config.in | 40 + .../buildroot/package/connman-gtk/Config.in | 22 + .../package/connman-gtk/connman-gtk.hash | 3 + .../package/connman-gtk/connman-gtk.mk | 17 + .../connman/0001-nat-build-failure.patch | 30 + features/buildroot/package/connman/Config.in | 78 + features/buildroot/package/connman/S45connman | 22 + .../buildroot/package/connman/connman.hash | 4 + features/buildroot/package/connman/connman.mk | 54 + .../package/conntrack-tools/Config.in | 22 + .../conntrack-tools/conntrack-tools.hash | 4 + .../conntrack-tools/conntrack-tools.mk | 25 + ...0001-Do-not-load-coxpcall-for-LuaJIT.patch | 49 + features/buildroot/package/copas/Config.in | 11 + features/buildroot/package/copas/copas.hash | 3 + features/buildroot/package/copas/copas.mk | 12 + .../0001-fix-for-dummy-man-usage.patch | 25 + .../buildroot/package/coreutils/Config.in | 39 + .../package/coreutils/coreutils.hash | 2 + .../buildroot/package/coreutils/coreutils.mk | 151 + .../buildroot/package/corkscrew/Config.in | 7 + .../package/corkscrew/corkscrew.hash | 3 + .../buildroot/package/corkscrew/corkscrew.mk | 13 + features/buildroot/package/coxpcall/Config.in | 8 + .../buildroot/package/coxpcall/coxpcall.hash | 3 + .../buildroot/package/coxpcall/coxpcall.mk | 12 + .../package/cpio/0001-fix-CVE-2016-2037.patch | 51 + features/buildroot/package/cpio/Config.in | 12 + features/buildroot/package/cpio/cpio.hash | 2 + features/buildroot/package/cpio/cpio.mk | 20 + features/buildroot/package/cppcms/Config.in | 45 + features/buildroot/package/cppcms/cppcms.hash | 8 + features/buildroot/package/cppcms/cppcms.mk | 44 + .../cppdb/0001-mysql-library-suffix.patch | 23 + features/buildroot/package/cppdb/Config.in | 20 + features/buildroot/package/cppdb/cppdb.hash | 3 + features/buildroot/package/cppdb/cppdb.mk | 31 + features/buildroot/package/cppunit/Config.in | 14 + .../buildroot/package/cppunit/cppunit.hash | 5 + features/buildroot/package/cppunit/cppunit.mk | 14 + ...01-fix-install-without-static-libzmq.patch | 47 + features/buildroot/package/cppzmq/Config.in | 12 + features/buildroot/package/cppzmq/cppzmq.hash | 3 + features/buildroot/package/cppzmq/cppzmq.mk | 15 + features/buildroot/package/cpuload/Config.in | 9 + .../buildroot/package/cpuload/cpuload.hash | 2 + features/buildroot/package/cpuload/cpuload.mk | 12 + ...eat-the-input-as-text-when-formattin.patch | 30 + features/buildroot/package/cracklib/Config.in | 28 + .../buildroot/package/cracklib/cracklib.hash | 4 + .../buildroot/package/cracklib/cracklib.mk | 53 + features/buildroot/package/cramfs/Config.in | 8 + .../buildroot/package/cramfs/Config.in.host | 7 + features/buildroot/package/cramfs/cramfs.hash | 2 + features/buildroot/package/cramfs/cramfs.mk | 34 + ...support-python-3-in-utils-key2pub.py.patch | 273 + .../crda/0002-drop-ldconfig-call.patch | 15 + .../package/crda/0003-drop-werror.patch | 37 + features/buildroot/package/crda/Config.in | 21 + features/buildroot/package/crda/crda.hash | 2 + features/buildroot/package/crda/crda.mk | 22 + features/buildroot/package/crudini/Config.in | 9 + .../buildroot/package/crudini/crudini.hash | 3 + features/buildroot/package/crudini/crudini.mk | 13 + .../cryptodev-linux/cryptodev-linux.hash | 3 + .../cryptodev-linux/cryptodev-linux.mk | 26 + .../buildroot/package/cryptodev/Config.in | 50 + .../buildroot/package/cryptodev/cryptodev.mk | 7 + .../buildroot/package/cryptopp/cryptopp.hash | 5 + .../buildroot/package/cryptopp/cryptopp.mk | 37 + .../0001-Remove-json_object-typedef.patch | 46 + .../buildroot/package/cryptsetup/Config.in | 22 + .../package/cryptsetup/Config.in.host | 8 + .../package/cryptsetup/cryptsetup.hash | 4 + .../package/cryptsetup/cryptsetup.mk | 45 + .../ctorrent/0001-fix-musl-build.patch | 20 + features/buildroot/package/ctorrent/Config.in | 13 + .../buildroot/package/ctorrent/ctorrent.hash | 2 + .../buildroot/package/ctorrent/ctorrent.mk | 19 + features/buildroot/package/cunit/Config.in | 6 + features/buildroot/package/cunit/cunit.hash | 3 + features/buildroot/package/cunit/cunit.mk | 17 + ...lative-linking-with-absolute-linking.patch | 46 + .../buildroot/package/cups-filters/Config.in | 38 + .../package/cups-filters/cups-filters.hash | 3 + .../package/cups-filters/cups-filters.mk | 74 + ...move-man-from-BUILDDIRS-in-configure.patch | 26 + .../cups/0002-Do-not-use-genstrings.patch | 36 + ...03-Sanitize-the-installation-process.patch | 131 + ...0004-Remove-PIE-flags-from-the-build.patch | 33 + ...tead-of-GZIP-to-avoid-install-issues.patch | 301 + features/buildroot/package/cups/Config.in | 15 + features/buildroot/package/cups/cups.hash | 3 + features/buildroot/package/cups/cups.mk | 85 + .../0001-fix-CURLOPT_INFILESIZE.patch | 13 + .../0002-free_ftpfs_file-memleak-fix.patch | 14 + .../curlftpfs/0003-nocache-memleak-fix.patch | 59 + .../curlftpfs/0004-fix-musl-build-off-t.patch | 39 + .../buildroot/package/curlftpfs/Config.in | 20 + .../package/curlftpfs/curlftpfs.hash | 2 + .../buildroot/package/curlftpfs/curlftpfs.mk | 17 + features/buildroot/package/curlpp/Config.in | 12 + features/buildroot/package/curlpp/curlpp.hash | 5 + features/buildroot/package/curlpp/curlpp.mk | 15 + features/buildroot/package/cutelyst/Config.in | 17 + .../buildroot/package/cutelyst/cutelyst.hash | 3 + .../buildroot/package/cutelyst/cutelyst.mk | 38 + features/buildroot/package/cvs/Config.in | 24 + features/buildroot/package/cvs/cvs.hash | 3 + features/buildroot/package/cvs/cvs.mk | 52 + ...ng-by-adding-the-missing-lbluetooth-.patch | 27 + ...-configure-make-wmgui-build-optional.patch | 64 + features/buildroot/package/cwiid/Config.in | 29 + features/buildroot/package/cwiid/cwiid.hash | 4 + features/buildroot/package/cwiid/cwiid.mk | 29 + features/buildroot/package/cxxtest/Config.in | 10 + .../buildroot/package/cxxtest/cxxtest.hash | 5 + features/buildroot/package/cxxtest/cxxtest.mk | 30 + features/buildroot/package/czmq/Config.in | 14 + features/buildroot/package/czmq/czmq.hash | 6 + features/buildroot/package/czmq/czmq.mk | 17 + features/buildroot/package/dacapo/Config.in | 12 + features/buildroot/package/dacapo/dacapo.hash | 3 + features/buildroot/package/dacapo/dacapo.mk | 21 + features/buildroot/package/dado/Config.in | 6 + features/buildroot/package/dado/dado.hash | 3 + features/buildroot/package/dado/dado.mk | 11 + .../package/daemon/0001-fix-musl.patch | 18 + features/buildroot/package/daemon/Config.in | 12 + features/buildroot/package/daemon/daemon.hash | 3 + features/buildroot/package/daemon/daemon.mk | 27 + .../buildroot/package/dahdi-linux/Config.in | 19 + .../package/dahdi-linux/dahdi-linux.hash | 27 + .../package/dahdi-linux/dahdi-linux.mk | 88 + .../dahdi-tools/0001-no-build-docs.patch | 16 + .../dahdi-tools/0002-no-perl-manpages.patch | 37 + .../buildroot/package/dahdi-tools/Config.in | 19 + .../package/dahdi-tools/dahdi-tools.hash | 8 + .../package/dahdi-tools/dahdi-tools.mk | 32 + .../dante/0001-fix-sparc-compile.patch | 24 + ...002-compiler.m4-do-not-remove-g-flag.patch | 42 + features/buildroot/package/dante/Config.in | 11 + features/buildroot/package/dante/S50dante | 40 + features/buildroot/package/dante/dante.hash | 2 + features/buildroot/package/dante/dante.mk | 41 + .../buildroot/package/dante/dante.service | 15 + ...Fix-build-against-the-musl-C-library.patch | 54 + features/buildroot/package/daq/Config.in | 11 + features/buildroot/package/daq/daq.hash | 5 + features/buildroot/package/daq/daq.mk | 40 + .../buildroot/package/darkhttpd/Config.in | 14 + .../buildroot/package/darkhttpd/S50darkhttpd | 45 + .../package/darkhttpd/darkhttpd.hash | 2 + .../buildroot/package/darkhttpd/darkhttpd.mk | 34 + .../package/darkhttpd/darkhttpd.service | 11 + .../dash/0001-no-config.h-for-helpers.patch | 35 + features/buildroot/package/dash/Config.in | 12 + features/buildroot/package/dash/dash.hash | 4 + features/buildroot/package/dash/dash.mk | 42 + ...do-not-hardcode-fstack-protector-str.patch | 45 + .../package/davfs2/0002-fix-iconv.patch | 48 + features/buildroot/package/davfs2/Config.in | 18 + features/buildroot/package/davfs2/davfs2.hash | 4 + features/buildroot/package/davfs2/davfs2.mk | 21 + features/buildroot/package/davici/Config.in | 18 + features/buildroot/package/davici/davici.hash | 3 + features/buildroot/package/davici/davici.mk | 20 + features/buildroot/package/dawgdic/Config.in | 19 + .../buildroot/package/dawgdic/dawgdic.hash | 2 + features/buildroot/package/dawgdic/dawgdic.mk | 14 + .../package/dbus-cpp/0001-gcc4.7.patch | 17 + .../dbus-cpp/0002-cross-compile-tools.patch | 34 + ...-pipe.c-fix-build-error-with-gcc-7.x.patch | 36 + features/buildroot/package/dbus-cpp/Config.in | 20 + .../buildroot/package/dbus-cpp/dbus-cpp.hash | 2 + .../buildroot/package/dbus-cpp/dbus-cpp.mk | 44 + .../buildroot/package/dbus-glib/Config.in | 16 + .../package/dbus-glib/dbus-glib.hash | 5 + .../buildroot/package/dbus-glib/dbus-glib.mk | 42 + .../buildroot/package/dbus-python/Config.in | 18 + .../package/dbus-python/Config.in.host | 6 + .../package/dbus-python/dbus-python.hash | 5 + .../package/dbus-python/dbus-python.mk | 49 + .../buildroot/package/dbus-triggerd/Config.in | 15 + .../package/dbus-triggerd/dbus-triggerd.hash | 2 + .../package/dbus-triggerd/dbus-triggerd.mk | 21 + features/buildroot/package/dbus/Config.in | 14 + features/buildroot/package/dbus/S30dbus | 71 + features/buildroot/package/dbus/dbus.hash | 6 + features/buildroot/package/dbus/dbus.mk | 122 + .../buildroot/package/dc3dd/0001-no_man.patch | 15 + .../package/dc3dd/0002-fix-autoreconf.patch | 32 + .../dc3dd/0003-fix-for-glibc-2.28.patch | 87 + features/buildroot/package/dc3dd/Config.in | 15 + features/buildroot/package/dc3dd/dc3dd.hash | 4 + features/buildroot/package/dc3dd/dc3dd.mk | 18 + features/buildroot/package/dcron/Config.in | 23 + features/buildroot/package/dcron/S90dcron | 22 + features/buildroot/package/dcron/dcron.hash | 2 + features/buildroot/package/dcron/dcron.mk | 39 + .../buildroot/package/dcron/dcron.service | 10 + .../0001-io.cc-add-stdio.h-include.patch | 36 + features/buildroot/package/ddrescue/Config.in | 12 + .../buildroot/package/ddrescue/ddrescue.hash | 2 + .../buildroot/package/ddrescue/ddrescue.mk | 35 + .../buildroot/package/debianutils/Config.in | 11 + .../package/debianutils/debianutils.hash | 2 + .../package/debianutils/debianutils.mk | 14 + .../buildroot/package/dehydrated/Config.in | 33 + .../package/dehydrated/dehydrated.hash | 6 + .../package/dehydrated/dehydrated.mk | 18 + features/buildroot/package/dejavu/Config.in | 33 + features/buildroot/package/dejavu/dejavu.hash | 2 + features/buildroot/package/dejavu/dejavu.mk | 62 + .../0001-be-coherent-in-type-usage.patch | 52 + features/buildroot/package/devmem2/Config.in | 7 + .../buildroot/package/devmem2/devmem2.hash | 3 + features/buildroot/package/devmem2/devmem2.mk | 30 + features/buildroot/package/dfu-util/Config.in | 13 + .../buildroot/package/dfu-util/Config.in.host | 8 + .../buildroot/package/dfu-util/dfu-util.hash | 5 + .../buildroot/package/dfu-util/dfu-util.mk | 16 + ...ibility-headers-updated-util-bind-sh.patch | 87 + features/buildroot/package/dhcp/Config.in | 36 + features/buildroot/package/dhcp/S80dhcp-relay | 53 + .../buildroot/package/dhcp/S80dhcp-server | 49 + .../buildroot/package/dhcp/dhclient-script | 284 + features/buildroot/package/dhcp/dhclient.conf | 50 + features/buildroot/package/dhcp/dhcp.hash | 4 + features/buildroot/package/dhcp/dhcp.mk | 107 + features/buildroot/package/dhcp/dhcpd.conf | 108 + features/buildroot/package/dhcp/dhcpd.service | 13 + features/buildroot/package/dhcpcd/Config.in | 10 + features/buildroot/package/dhcpcd/S41dhcpcd | 33 + features/buildroot/package/dhcpcd/dhcpcd.hash | 4 + features/buildroot/package/dhcpcd/dhcpcd.mk | 60 + .../buildroot/package/dhcpcd/dhcpcd.service | 13 + .../0001-use-non-bsd-structures.patch | 23 + features/buildroot/package/dhcpdump/Config.in | 7 + .../buildroot/package/dhcpdump/dhcpdump.hash | 2 + .../buildroot/package/dhcpdump/dhcpdump.mk | 30 + .../dhrystone/0001-cmdline-nruns.patch | 53 + .../buildroot/package/dhrystone/0002-HZ.patch | 17 + .../package/dhrystone/0003-exit.patch | 14 + .../package/dhrystone/0004-headers.patch | 15 + .../package/dhrystone/0005-prototypes.patch | 35 + .../buildroot/package/dhrystone/Config.in | 6 + features/buildroot/package/dhrystone/Makefile | 12 + .../package/dhrystone/dhrystone.hash | 2 + .../buildroot/package/dhrystone/dhrystone.mk | 24 + features/buildroot/package/dialog/Config.in | 14 + features/buildroot/package/dialog/dialog.hash | 2 + features/buildroot/package/dialog/dialog.mk | 22 + ...dedir-as-include-search-path-for-bui.patch | 62 + .../0002-Fix-missing-type-intptr_t.patch | 27 + ...RCE-for-uint-and-M_PI-with-musl-libc.patch | 28 + .../0004-Add-static-to-inline-functions.patch | 65 + .../buildroot/package/dieharder/Config.in | 9 + .../package/dieharder/dieharder.hash | 2 + .../buildroot/package/dieharder/dieharder.mk | 39 + .../buildroot/package/diffutils/Config.in | 12 + .../package/diffutils/diffutils.hash | 2 + .../buildroot/package/diffutils/diffutils.mk | 20 + .../dillo/0002-usr-local-include.patch | 27 + features/buildroot/package/dillo/Config.in | 19 + features/buildroot/package/dillo/dillo.hash | 2 + features/buildroot/package/dillo/dillo.mk | 46 + .../buildroot/package/ding-libs/Config.in | 16 + .../package/ding-libs/ding-libs.hash | 4 + .../buildroot/package/ding-libs/ding-libs.mk | 21 + .../directfb-examples/0001-remove-bzero.patch | 17 + .../package/directfb-examples/Config.in | 9 + .../directfb-examples/directfb-examples.hash | 2 + .../directfb-examples/directfb-examples.mk | 18 + ...01-fix-missing-davinci-voodoo-header.patch | 1726 ++++ .../package/directfb/0002-imlib2-config.patch | 36 + .../directfb/0003-setregion-lock.patch | 99 + .../package/directfb/0004-use-gcc-link.patch | 35 + .../0005-add-missing-idivine-header.patch | 65 + ...-fix-client-gfx_state-initialisation.patch | 39 + features/buildroot/package/directfb/Config.in | 167 + .../buildroot/package/directfb/directfb.hash | 2 + .../buildroot/package/directfb/directfb.mk | 173 + .../package/dmalloc/0001-add-fpic.patch | 58 + .../buildroot/package/dmalloc/0002-mips.patch | 43 + .../dmalloc/0003-fix-parallel-build.patch | 18 + .../package/dmalloc/0004-fix-shlibs.patch | 46 + .../package/dmalloc/0005-fix-strdup.patch | 24 + .../package/dmalloc/0006-fix-strndup.patch | 24 + features/buildroot/package/dmalloc/Config.in | 9 + .../buildroot/package/dmalloc/dmalloc.hash | 2 + features/buildroot/package/dmalloc/dmalloc.mk | 74 + .../dmidecode/0001-build-system-fixes.patch | 35 + .../buildroot/package/dmidecode/Config.in | 9 + .../package/dmidecode/dmidecode.hash | 3 + .../buildroot/package/dmidecode/dmidecode.mk | 21 + .../0001-fix-compilation-under-musl.patch | 47 + features/buildroot/package/dmraid/Config.in | 17 + features/buildroot/package/dmraid/S20dmraid | 29 + features/buildroot/package/dmraid/dmraid.hash | 2 + features/buildroot/package/dmraid/dmraid.mk | 24 + ...01-Makefile-fix-i18n-build-with-ubus.patch | 33 + .../0002-Fix-build-with-libnettle-3.5.patch | 46 + features/buildroot/package/dnsmasq/Config.in | 50 + features/buildroot/package/dnsmasq/S80dnsmasq | 25 + .../buildroot/package/dnsmasq/dnsmasq.hash | 7 + features/buildroot/package/dnsmasq/dnsmasq.mk | 102 + features/buildroot/package/doc-asciidoc.mk | 190 + .../buildroot/package/docker-cli/Config.in | 25 + .../package/docker-cli/docker-cli.hash | 3 + .../package/docker-cli/docker-cli.mk | 31 + ...low-all-recent-2.x-requests-releases.patch | 34 + .../0002-Upgrade-pyyaml-to-4.2b1.patch | 27 + .../package/docker-compose/Config.in | 29 + .../docker-compose/docker-compose.hash | 4 + .../package/docker-compose/docker-compose.mk | 13 + .../package/docker-containerd/Config.in | 35 + .../docker-containerd/docker-containerd.hash | 3 + .../docker-containerd/docker-containerd.mk | 40 + ...ix-faulty-runc-version-commit-scrape.patch | 45 + .../buildroot/package/docker-engine/Config.in | 57 + .../package/docker-engine/S60dockerd | 38 + .../package/docker-engine/docker-engine.hash | 3 + .../package/docker-engine/docker-engine.mk | 85 + .../buildroot/package/docker-proxy/Config.in | 19 + .../package/docker-proxy/docker-proxy.hash | 2 + .../package/docker-proxy/docker-proxy.mk | 23 + features/buildroot/package/docker/Config.in | 17 + features/buildroot/package/docker/docker.hash | 2 + features/buildroot/package/docker/docker.mk | 25 + ...ersion.default-bump-version-to-10717.patch | 23 + features/buildroot/package/domoticz/Config.in | 41 + .../buildroot/package/domoticz/S99domoticz | 51 + .../buildroot/package/domoticz/domoticz.hash | 3 + .../buildroot/package/domoticz/domoticz.mk | 86 + .../package/domoticz/domoticz.service | 10 + features/buildroot/package/doom-wad/Config.in | 9 + .../buildroot/package/doom-wad/doom-wad.hash | 2 + .../buildroot/package/doom-wad/doom-wad.mk | 24 + features/buildroot/package/dos2unix/Config.in | 7 + .../buildroot/package/dos2unix/Config.in.host | 6 + .../buildroot/package/dos2unix/dos2unix.hash | 4 + .../buildroot/package/dos2unix/dos2unix.mk | 48 + .../buildroot/package/dosfstools/Config.in | 30 + .../package/dosfstools/Config.in.host | 6 + .../package/dosfstools/dosfstools.hash | 5 + .../package/dosfstools/dosfstools.mk | 59 + .../package/dovecot-pigeonhole/Config.in | 8 + .../dovecot-pigeonhole.hash | 3 + .../dovecot-pigeonhole/dovecot-pigeonhole.mk | 16 + .../0001-byteorder.h-fix-uclibc-build.patch | 32 + features/buildroot/package/dovecot/Config.in | 41 + .../buildroot/package/dovecot/dovecot.hash | 5 + features/buildroot/package/dovecot/dovecot.mk | 129 + .../buildroot/package/doxygen/doxygen.hash | 2 + features/buildroot/package/doxygen/doxygen.mk | 14 + .../buildroot/package/drbd-utils/Config.in | 7 + .../package/drbd-utils/drbd-utils.hash | 2 + .../package/drbd-utils/drbd-utils.mk | 29 + features/buildroot/package/dropbear/Config.in | 76 + .../buildroot/package/dropbear/S50dropbear | 61 + .../buildroot/package/dropbear/dropbear.hash | 5 + .../buildroot/package/dropbear/dropbear.mk | 143 + .../package/dropbear/dropbear.service | 27 + .../buildroot/package/dropbear/etc-pam.d-sshd | 7 + .../dropwatch/0001-binutils-2.23.1.patch | 60 + .../buildroot/package/dropwatch/Config.in | 17 + .../package/dropwatch/dropwatch.hash | 3 + .../buildroot/package/dropwatch/dropwatch.mk | 24 + features/buildroot/package/dstat/Config.in | 28 + features/buildroot/package/dstat/dstat.hash | 2 + features/buildroot/package/dstat/dstat.mk | 16 + features/buildroot/package/dt-utils/Config.in | 11 + .../buildroot/package/dt-utils/dt-utils.hash | 3 + .../buildroot/package/dt-utils/dt-utils.mk | 15 + .../package/dt/0001-adjust-os-symlink.patch | 19 + .../dt/0002-dt-default-source-define.patch | 20 + features/buildroot/package/dt/Config.in | 21 + features/buildroot/package/dt/dt.hash | 5 + features/buildroot/package/dt/dt.mk | 39 + features/buildroot/package/dtach/Config.in | 10 + features/buildroot/package/dtach/dtach.hash | 2 + features/buildroot/package/dtach/dtach.mk | 17 + ...ards-for-older-kernel-u-boot-sources.patch | 62 + ...2-Makefile-Add-EXTRA_CFLAGS-variable.patch | 37 + features/buildroot/package/dtc/Config.in | 39 + features/buildroot/package/dtc/Config.in.host | 10 + features/buildroot/package/dtc/dtc.hash | 6 + features/buildroot/package/dtc/dtc.mk | 73 + .../package/dtv-scan-tables/Config.in | 6 + .../dtv-scan-tables/dtv-scan-tables.hash | 4 + .../dtv-scan-tables/dtv-scan-tables.mk | 27 + features/buildroot/package/duktape/Config.in | 16 + .../buildroot/package/duktape/duktape.hash | 3 + features/buildroot/package/duktape/duktape.mk | 27 + .../duma/0001-fix-cross-compilation.patch | 37 + .../package/duma/0002-no-tests.patch | 19 + .../package/duma/0003-fix-C++14.patch | 65 + features/buildroot/package/duma/Config.in | 29 + features/buildroot/package/duma/duma.hash | 2 + features/buildroot/package/duma/duma.mk | 35 + features/buildroot/package/dump1090/Config.in | 11 + .../buildroot/package/dump1090/dump1090.hash | 3 + .../buildroot/package/dump1090/dump1090.mk | 25 + .../dvb-apps/0001-Fix-generate-keynames.patch | 30 + .../0002-Fix-compiler-warning-flags.patch | 44 + ...0003-handle-static-shared-only-build.patch | 44 + .../dvb-apps/0004-Makefile-remove-test.patch | 27 + ...s-fix-build-with-kernel-headers-4.14.patch | 52 + features/buildroot/package/dvb-apps/Config.in | 14 + .../buildroot/package/dvb-apps/dvb-apps.mk | 44 + .../package/dvblast/0001-missing-lm.patch | 29 + .../package/dvblast/0002-fix-int-types.patch | 24 + features/buildroot/package/dvblast/Config.in | 14 + .../buildroot/package/dvblast/dvblast.hash | 7 + features/buildroot/package/dvblast/dvblast.mk | 29 + .../package/dvbsnoop/0001-musl-types-h.patch | 15 + features/buildroot/package/dvbsnoop/Config.in | 21 + .../buildroot/package/dvbsnoop/dvbsnoop.hash | 2 + .../buildroot/package/dvbsnoop/dvbsnoop.mk | 12 + .../buildroot/package/dvdauthor/Config.in | 25 + .../package/dvdauthor/dvdauthor.hash | 5 + .../buildroot/package/dvdauthor/dvdauthor.mk | 47 + .../package/dvdrw-tools/0001-limits.h.patch | 23 + ...ysmacros.h-to-compile-with-newer-gcc.patch | 14 + .../buildroot/package/dvdrw-tools/Config.in | 53 + .../package/dvdrw-tools/dvdrw-tools.hash | 2 + .../package/dvdrw-tools/dvdrw-tools.mk | 35 + .../buildroot/package/e2fsprogs/Config.in | 69 + .../package/e2fsprogs/Config.in.host | 7 + .../package/e2fsprogs/e2fsprogs.hash | 6 + .../buildroot/package/e2fsprogs/e2fsprogs.mk | 78 + features/buildroot/package/e2tools/Config.in | 17 + .../buildroot/package/e2tools/Config.in.host | 10 + .../buildroot/package/e2tools/e2tools.hash | 2 + features/buildroot/package/e2tools/e2tools.mk | 20 + features/buildroot/package/easy-rsa/Config.in | 15 + .../buildroot/package/easy-rsa/easy-rsa.hash | 2 + .../buildroot/package/easy-rsa/easy-rsa.mk | 23 + features/buildroot/package/easydbus/Config.in | 14 + .../buildroot/package/easydbus/easydbus.hash | 2 + .../buildroot/package/easydbus/easydbus.mk | 13 + ...ove-C-specific-compiler-hint-macro-_.patch | 50 + .../0002-Fix-musl-compatibility.patch | 30 + features/buildroot/package/ebtables/Config.in | 7 + .../buildroot/package/ebtables/ebtables.hash | 2 + .../buildroot/package/ebtables/ebtables.mk | 39 + .../package/ecryptfs-utils/0001-musl.patch | 35 + .../ecryptfs-utils/0002-openssl110.patch | 173 + .../package/ecryptfs-utils/Config.in | 39 + .../ecryptfs-utils/ecryptfs-utils.hash | 4 + .../package/ecryptfs-utils/ecryptfs-utils.mk | 28 + features/buildroot/package/ed/Config.in | 8 + features/buildroot/package/ed/ed.hash | 4 + features/buildroot/package/ed/ed.mk | 29 + .../buildroot/package/edid-decode/Config.in | 6 + .../package/edid-decode/edid-decode.hash | 2 + .../package/edid-decode/edid-decode.mk | 21 + .../0001-Allow-build-with-uClibc.patch | 40 + .../buildroot/package/efibootmgr/Config.in | 25 + .../package/efibootmgr/efibootmgr.hash | 3 + .../package/efibootmgr/efibootmgr.mk | 26 + .../efivar/0001-Allow-build-with-uClibc.patch | 37 + ..._guid-handle-misaligned-guid-pointer.patch | 62 + ...es-Werror-address-of-packed-member-c.patch | 174 + ...r-of-Werror-address-of-packed-member.patch | 57 + features/buildroot/package/efivar/Config.in | 33 + features/buildroot/package/efivar/efivar.hash | 3 + features/buildroot/package/efivar/efivar.mk | 46 + ...missing-__has_attribute-definitions-.patch | 48 + ...EINA_VALUE_EMPTY-during-library-init.patch | 51 + features/buildroot/package/efl/Config.in | 310 + features/buildroot/package/efl/efl.hash | 11 + features/buildroot/package/efl/efl.mk | 389 + features/buildroot/package/eigen/Config.in | 25 + features/buildroot/package/eigen/eigen.hash | 8 + features/buildroot/package/eigen/eigen.mk | 42 + ...not-download-or-compile-dependencies.patch | 35 + .../ejabberd/0002-fix-ejabberdctl.patch | 32 + features/buildroot/package/ejabberd/Config.in | 30 + .../buildroot/package/ejabberd/S50ejabberd | 54 + .../package/ejabberd/check-erlang-lib | 55 + .../buildroot/package/ejabberd/ejabberd.hash | 2 + .../buildroot/package/ejabberd/ejabberd.mk | 67 + ...e-properly-when-called-with-a-name-d.patch | 79 + .../buildroot/package/elf2flt/Config.in.host | 11 + .../buildroot/package/elf2flt/elf2flt.hash | 2 + features/buildroot/package/elf2flt/elf2flt.mk | 48 + .../package/elftosb/0001-fixes-includes.patch | 19 + .../elftosb/0002-force-cxx-compiler.patch | 98 + .../buildroot/package/elftosb/elftosb.hash | 2 + features/buildroot/package/elftosb/elftosb.mk | 22 + ...nable-disable-progs-configure-option.patch | 62 + ...implementation-of-the-fts_-functions.patch | 1332 +++ ...e-Werror-conditional-to-BUILD_WERROR.patch | 36 + features/buildroot/package/elfutils/Config.in | 31 + .../buildroot/package/elfutils/elfutils.hash | 6 + .../buildroot/package/elfutils/elfutils.mk | 77 + ...0001-ell-ecc.h-fix-build-with-uclibc.patch | 31 + features/buildroot/package/ell/Config.in | 13 + features/buildroot/package/ell/ell.hash | 5 + features/buildroot/package/ell/ell.mk | 27 + features/buildroot/package/emlog/Config.in | 17 + features/buildroot/package/emlog/emlog.hash | 2 + features/buildroot/package/emlog/emlog.mk | 22 + .../package/empty/0001-respect-LDFLAGS.patch | 22 + features/buildroot/package/empty/Config.in | 8 + features/buildroot/package/empty/empty.hash | 2 + features/buildroot/package/empty/empty.mk | 21 + features/buildroot/package/enchant/Config.in | 17 + .../buildroot/package/enchant/enchant.hash | 2 + features/buildroot/package/enchant/enchant.mk | 14 + features/buildroot/package/enet/Config.in | 16 + features/buildroot/package/enet/enet.hash | 3 + features/buildroot/package/enet/enet.mk | 14 + .../buildroot/package/enlightenment/Config.in | 35 + .../package/enlightenment/enlightenment.hash | 3 + .../package/enlightenment/enlightenment.mk | 54 + features/buildroot/package/enscript/Config.in | 13 + .../buildroot/package/enscript/enscript.hash | 2 + .../buildroot/package/enscript/enscript.mk | 19 + .../buildroot/package/erlang-eimp/Config.in | 12 + .../package/erlang-eimp/erlang-eimp.mk | 13 + .../package/erlang-goldrush/Config.in | 7 + .../erlang-goldrush/erlang-goldrush.hash | 2 + .../erlang-goldrush/erlang-goldrush.mk | 14 + .../buildroot/package/erlang-jiffy/Config.in | 10 + .../package/erlang-jiffy/erlang-jiffy.hash | 2 + .../package/erlang-jiffy/erlang-jiffy.mk | 14 + .../buildroot/package/erlang-lager/Config.in | 11 + .../package/erlang-lager/erlang-lager.hash | 2 + .../package/erlang-lager/erlang-lager.mk | 15 + .../package/erlang-p1-cache-tab/Config.in | 7 + .../erlang-p1-cache-tab.hash | 2 + .../erlang-p1-cache-tab.mk | 13 + .../package/erlang-p1-iconv/Config.in | 8 + .../erlang-p1-iconv/erlang-p1-iconv.hash | 2 + .../erlang-p1-iconv/erlang-p1-iconv.mk | 19 + .../package/erlang-p1-oauth2/Config.in | 6 + .../erlang-p1-oauth2/erlang-p1-oauth2.hash | 2 + .../erlang-p1-oauth2/erlang-p1-oauth2.mk | 13 + .../erlang-p1-sip/0001-fix-includes.patch | 19 + .../buildroot/package/erlang-p1-sip/Config.in | 9 + .../package/erlang-p1-sip/erlang-p1-sip.hash | 2 + .../package/erlang-p1-sip/erlang-p1-sip.mk | 14 + .../package/erlang-p1-stringprep/Config.in | 11 + .../erlang-p1-stringprep.hash | 2 + .../erlang-p1-stringprep.mk | 13 + .../package/erlang-p1-stun/Config.in | 8 + .../erlang-p1-stun/erlang-p1-stun.hash | 2 + .../package/erlang-p1-stun/erlang-p1-stun.mk | 14 + .../buildroot/package/erlang-p1-tls/Config.in | 8 + .../package/erlang-p1-tls/erlang-p1-tls.hash | 2 + .../package/erlang-p1-tls/erlang-p1-tls.mk | 14 + .../package/erlang-p1-utils/Config.in | 6 + .../erlang-p1-utils/erlang-p1-utils.hash | 2 + .../erlang-p1-utils/erlang-p1-utils.mk | 14 + .../buildroot/package/erlang-p1-xml/Config.in | 8 + .../package/erlang-p1-xml/erlang-p1-xml.hash | 2 + .../package/erlang-p1-xml/erlang-p1-xml.mk | 18 + .../erlang-p1-xmpp/0001-fix-includes.patch | 16 + .../package/erlang-p1-xmpp/Config.in | 15 + .../erlang-p1-xmpp/erlang-p1-xmpp.hash | 2 + .../package/erlang-p1-xmpp/erlang-p1-xmpp.mk | 16 + .../package/erlang-p1-yaml/Config.in | 8 + .../erlang-p1-yaml/erlang-p1-yaml.hash | 2 + .../package/erlang-p1-yaml/erlang-p1-yaml.mk | 13 + .../package/erlang-p1-zlib/Config.in | 7 + .../erlang-p1-zlib/erlang-p1-zlib.hash | 2 + .../package/erlang-p1-zlib/erlang-p1-zlib.mk | 13 + .../package/erlang-rebar/erlang-rebar.hash | 2 + .../package/erlang-rebar/erlang-rebar.mk | 31 + ...truct-libatomic_ops-we-do-require-CA.patch | 70 + ...ulator-reorder-inclued-headers-paths.patch | 46 + ...-with-LDLIBS-instead-of-LIBS-for-DED.patch | 42 + features/buildroot/package/erlang/Config.in | 47 + features/buildroot/package/erlang/erlang.hash | 4 + features/buildroot/package/erlang/erlang.mk | 96 + ...red-library-on-architectures-needing.patch | 31 + ...ages-cast-string_ordinal-init-values.patch | 33 + features/buildroot/package/espeak/Config.in | 43 + features/buildroot/package/espeak/espeak.hash | 2 + features/buildroot/package/espeak/espeak.mk | 43 + features/buildroot/package/ethtool/Config.in | 15 + .../buildroot/package/ethtool/ethtool.hash | 5 + features/buildroot/package/ethtool/ethtool.mk | 15 + ...-pragma-for-ignoring-diagnostics-if-.patch | 39 + features/buildroot/package/eudev/Config.in | 43 + features/buildroot/package/eudev/S10udev | 46 + features/buildroot/package/eudev/eudev.hash | 5 + features/buildroot/package/eudev/eudev.mk | 56 + .../package/ev3dev-linux-drivers/Config.in | 12 + .../ev3dev-linux-drivers.mk | 11 + .../lego-linux-drivers.hash | 2 + .../0001-Include-limits.h-for-PATH_MAX.patch | 35 + features/buildroot/package/evemu/Config.in | 7 + features/buildroot/package/evemu/evemu.hash | 2 + features/buildroot/package/evemu/evemu.mk | 32 + features/buildroot/package/eventlog/Config.in | 8 + .../buildroot/package/eventlog/eventlog.hash | 2 + .../buildroot/package/eventlog/eventlog.mk | 15 + features/buildroot/package/evtest/Config.in | 9 + features/buildroot/package/evtest/evtest.hash | 2 + features/buildroot/package/evtest/evtest.mk | 20 + features/buildroot/package/execline/Config.in | 12 + .../buildroot/package/execline/execline.hash | 3 + .../buildroot/package/execline/execline.mk | 72 + features/buildroot/package/exempi/Config.in | 16 + features/buildroot/package/exempi/exempi.hash | 3 + features/buildroot/package/exempi/exempi.mk | 17 + .../buildroot/package/exfat-utils/Config.in | 10 + .../package/exfat-utils/exfat-utils.hash | 3 + .../package/exfat-utils/exfat-utils.mk | 12 + features/buildroot/package/exfat/Config.in | 16 + features/buildroot/package/exfat/exfat.hash | 3 + features/buildroot/package/exfat/exfat.mk | 15 + .../0001-Build-buildconfig-for-the-host.patch | 23 + ...ake-backup-copies-of-installed-files.patch | 40 + ...rsion-check-and-symlink-installation.patch | 41 + .../package/exim/0004-remove-libnsl.patch | 37 + .../package/exim/0005-Fix-uClibc-build.patch | 35 + features/buildroot/package/exim/Config.in | 36 + features/buildroot/package/exim/S86exim | 26 + features/buildroot/package/exim/exim.hash | 3 + features/buildroot/package/exim/exim.mk | 153 + features/buildroot/package/exim/exim.service | 10 + features/buildroot/package/exiv2/Config.in | 44 + features/buildroot/package/exiv2/exiv2.hash | 4 + features/buildroot/package/exiv2/exiv2.mk | 47 + features/buildroot/package/expat/Config.in | 6 + features/buildroot/package/expat/expat.hash | 7 + features/buildroot/package/expat/expat.mk | 20 + .../0001-enable-cross-compilation.patch | 120 + .../0002-allow-tcl-build-directory.patch | 34 + features/buildroot/package/expect/Config.in | 7 + features/buildroot/package/expect/expect.hash | 4 + features/buildroot/package/expect/expect.mk | 21 + .../package/explorercanvas/Config.in | 10 + .../explorercanvas/explorercanvas.hash | 2 + .../package/explorercanvas/explorercanvas.mk | 16 + .../ezxml/0001-allow-compiler-override.patch | 17 + features/buildroot/package/ezxml/Config.in | 7 + features/buildroot/package/ezxml/ezxml.hash | 2 + features/buildroot/package/ezxml/ezxml.mk | 35 + ...0001-configure-uclinux-is-also-linux.patch | 31 + .../buildroot/package/f2fs-tools/Config.in | 12 + .../package/f2fs-tools/Config.in.host | 7 + .../package/f2fs-tools/f2fs-tools.hash | 3 + .../package/f2fs-tools/f2fs-tools.mk | 41 + ...k-for-syntax-element-inconsistencies.patch | 64 + ...fadj-sanitize-frequency-band-borders.patch | 71 + .../0003-Fix-a-couple-buffer-overflows.patch | 50 + ...prevent-crash-on-SCE-followed-by-CPE.patch | 54 + features/buildroot/package/faad2/Config.in | 6 + features/buildroot/package/faad2/faad2.hash | 6 + features/buildroot/package/faad2/faad2.mk | 16 + ...y-include-endian.h-for-BYTE_ORDER-ma.patch | 32 + ...t-include-linux-if_ether.h-for-musl-.patch | 32 + features/buildroot/package/faifa/Config.in | 16 + features/buildroot/package/faifa/faifa.hash | 2 + features/buildroot/package/faifa/faifa.mk | 41 + features/buildroot/package/fail2ban/Config.in | 15 + .../buildroot/package/fail2ban/S60fail2ban | 23 + .../buildroot/package/fail2ban/fail2ban.hash | 3 + .../buildroot/package/fail2ban/fail2ban.mk | 35 + features/buildroot/package/fakedate/fakedate | 51 + .../buildroot/package/fakedate/fakedate.mk | 14 + .../fakeroot/0001-hide-dlsym-error.patch | 34 + ...nicate-check-return-status-of-msgrcv.patch | 46 + .../buildroot/package/fakeroot/fakeroot.hash | 6 + .../buildroot/package/fakeroot/fakeroot.mk | 22 + ...e-the-non-null-compare-warning-error.patch | 32 + .../0002-src-Makefile-disable-Werror.patch | 32 + .../buildroot/package/faketime/Config.in.host | 7 + .../buildroot/package/faketime/faketime.hash | 2 + .../buildroot/package/faketime/faketime.mk | 20 + features/buildroot/package/fan-ctrl/Config.in | 11 + .../buildroot/package/fan-ctrl/fan-ctrl.hash | 2 + .../buildroot/package/fan-ctrl/fan-ctrl.mk | 27 + ...ROCEDURAL_OPTIMIZATION-target-proper.patch | 69 + ...akeList-do-not-overwrite-module-path.patch | 56 + ...emove-aes128-ctr-NaCl-implementation.patch | 137 + features/buildroot/package/fastd/Config.in | 29 + features/buildroot/package/fastd/fastd.hash | 4 + features/buildroot/package/fastd/fastd.mk | 41 + .../buildroot/package/fatcat/Config.in.host | 8 + features/buildroot/package/fatcat/fatcat.hash | 3 + features/buildroot/package/fatcat/fatcat.mk | 12 + .../buildroot/package/fb-test-app/Config.in | 6 + .../package/fb-test-app/fb-test-app.hash | 2 + .../package/fb-test-app/fb-test-app.mk | 23 + features/buildroot/package/fbdump/Config.in | 9 + features/buildroot/package/fbdump/fbdump.hash | 2 + features/buildroot/package/fbdump/fbdump.mk | 21 + .../fbgrab/0001-fix-static-build.patch | 21 + .../fbgrab/0100-fix-pixfmt-report.patch | 24 + features/buildroot/package/fbgrab/Config.in | 8 + features/buildroot/package/fbgrab/fbgrab.hash | 2 + features/buildroot/package/fbgrab/fbgrab.mk | 21 + .../package/fbset/0001-Fix-musl-compile.patch | 33 + features/buildroot/package/fbset/Config.in | 10 + features/buildroot/package/fbset/fbset.hash | 2 + features/buildroot/package/fbset/fbset.mk | 20 + ...roxy.cpp-fbterm.cpp-fix-musl-compile.patch | 70 + .../0002-mouse.cpp-fix-musl-compile.patch | 30 + .../fbterm/0003-C++11-compliance.patch | 93 + .../buildroot/package/fbterm/0004-iconv.patch | 41 + features/buildroot/package/fbterm/Config.in | 17 + features/buildroot/package/fbterm/fbterm.hash | 2 + features/buildroot/package/fbterm/fbterm.mk | 26 + features/buildroot/package/fbtft/Config.in | 13 + features/buildroot/package/fbtft/fbtft.hash | 2 + features/buildroot/package/fbtft/fbtft.mk | 11 + .../buildroot/package/fbv/0002-cross.patch | 44 + ...0003-fix-24bpp-support-on-big-endian.patch | 32 + .../package/fbv/0004-fix-bgr555.patch | 64 + .../buildroot/package/fbv/0005-giflib.patch | 84 + .../buildroot/package/fbv/0006-include.patch | 20 + .../buildroot/package/fbv/0007-libpng15.patch | 24 + features/buildroot/package/fbv/Config.in | 33 + features/buildroot/package/fbv/fbv.hash | 2 + features/buildroot/package/fbv/fbv.mk | 57 + .../0001-use-LIBS-from-configure.patch | 22 + ...systemd-instead-of-libsystemd-daemon.patch | 20 + features/buildroot/package/fcgiwrap/Config.in | 10 + .../buildroot/package/fcgiwrap/fcgiwrap.hash | 2 + .../buildroot/package/fcgiwrap/fcgiwrap.mk | 33 + features/buildroot/package/fconfig/Config.in | 6 + .../buildroot/package/fconfig/fconfig.hash | 2 + features/buildroot/package/fconfig/fconfig.mk | 22 + features/buildroot/package/fdk-aac/Config.in | 24 + .../buildroot/package/fdk-aac/fdk-aac.hash | 6 + features/buildroot/package/fdk-aac/fdk-aac.mk | 14 + features/buildroot/package/feh/Config.in | 13 + features/buildroot/package/feh/feh.hash | 3 + features/buildroot/package/feh/feh.mk | 45 + .../buildroot/package/fetchmail/Config.in | 11 + .../package/fetchmail/fetchmail.hash | 3 + .../buildroot/package/fetchmail/fetchmail.mk | 23 + features/buildroot/package/ffmpeg/Config.in | 181 + features/buildroot/package/ffmpeg/ffmpeg.hash | 5 + features/buildroot/package/ffmpeg/ffmpeg.mk | 561 ++ features/buildroot/package/fftw/Config.in | 35 + .../package/fftw/fftw-double/Config.in | 5 + .../package/fftw/fftw-double/fftw-double.hash | 1 + .../package/fftw/fftw-double/fftw-double.mk | 22 + .../package/fftw/fftw-long-double/Config.in | 8 + .../fftw-long-double/fftw-long-double.hash | 1 + .../fftw/fftw-long-double/fftw-long-double.mk | 22 + .../package/fftw/fftw-quad/Config.in | 7 + .../package/fftw/fftw-quad/fftw-quad.hash | 1 + .../package/fftw/fftw-quad/fftw-quad.mk | 22 + .../package/fftw/fftw-single/Config.in | 5 + .../package/fftw/fftw-single/fftw-single.hash | 1 + .../package/fftw/fftw-single/fftw-single.mk | 37 + features/buildroot/package/fftw/fftw.hash | 5 + features/buildroot/package/fftw/fftw.mk | 36 + .../package/ficl/0001-fix-Makefile.patch | 47 + features/buildroot/package/ficl/Config.in | 9 + features/buildroot/package/ficl/ficl.hash | 2 + features/buildroot/package/ficl/ficl.mk | 59 + features/buildroot/package/file/Config.in | 8 + features/buildroot/package/file/file.hash | 7 + features/buildroot/package/file/file.mk | 25 + features/buildroot/package/filemq/Config.in | 16 + features/buildroot/package/filemq/filemq.hash | 2 + features/buildroot/package/filemq/filemq.mk | 23 + ...ntlist-include-sysmacros-h-for-glibc.patch | 81 + ...adjust-to-glibc-2-28-libio-h-removal.patch | 152 + .../buildroot/package/findutils/Config.in | 15 + .../package/findutils/findutils.hash | 2 + .../buildroot/package/findutils/findutils.mk | 18 + features/buildroot/package/fio/Config.in | 20 + features/buildroot/package/fio/fio.hash | 4 + features/buildroot/package/fio/fio.mk | 36 + .../buildroot/package/fis/0001-checksum.patch | 274 + .../package/fis/0003-list_output.patch | 21 + .../package/fis/0004-sorted_list.patch | 30 + features/buildroot/package/fis/Config.in | 4 + features/buildroot/package/fis/fis.mk | 22 + ...onfigure.ac-relax-linux-OS-detection.patch | 35 + features/buildroot/package/flac/Config.in | 10 + features/buildroot/package/flac/flac.hash | 2 + features/buildroot/package/flac/flac.mk | 35 + .../0001-src-cpp-fix-cmake-3.11-build.patch | 80 + features/buildroot/package/flann/Config.in | 25 + features/buildroot/package/flann/flann.hash | 2 + features/buildroot/package/flann/flann.mk | 29 + features/buildroot/package/flannel/Config.in | 15 + .../buildroot/package/flannel/flannel.hash | 2 + features/buildroot/package/flannel/flannel.mk | 22 + .../buildroot/package/flare-engine/Config.in | 19 + .../package/flare-engine/flare-engine.hash | 3 + .../package/flare-engine/flare-engine.mk | 30 + .../buildroot/package/flare-game/Config.in | 13 + .../package/flare-game/flare-game.hash | 3 + .../package/flare-game/flare-game.mk | 18 + .../buildroot/package/flashbench/Config.in | 10 + .../package/flashbench/flashbench.hash | 2 + .../package/flashbench/flashbench.mk | 23 + .../buildroot/package/flashrom/0001-spi.patch | 25 + features/buildroot/package/flashrom/Config.in | 23 + .../buildroot/package/flashrom/flashrom.hash | 4 + .../buildroot/package/flashrom/flashrom.mk | 55 + ...Add-detection-of-strtoull_l-function.patch | 38 + .../buildroot/package/flatbuffers/Config.in | 14 + .../package/flatbuffers/flatbuffers.hash | 3 + .../package/flatbuffers/flatbuffers.mk | 33 + ...onditionally-require-C-based-on-FLAT.patch | 56 + features/buildroot/package/flatcc/Config.in | 8 + features/buildroot/package/flatcc/flatcc.hash | 3 + features/buildroot/package/flatcc/flatcc.mk | 30 + ...SE_SYSTEM_EXTENSIONS-in-configure.ac.patch | 35 + ...ssible-to-disable-the-build-of-the-f.patch | 76 + ...ssible-to-disable-the-build-of-the-d.patch | 58 + features/buildroot/package/flex/Config.in | 9 + features/buildroot/package/flex/flex.hash | 4 + features/buildroot/package/flex/flex.mk | 31 + .../buildroot/package/flickcurl/Config.in | 21 + .../package/flickcurl/flickcurl.hash | 2 + .../buildroot/package/flickcurl/flickcurl.mk | 23 + .../0001-now-honor-DESTDIR-env.-var.patch | 30 + .../package/flite/0002-fix-alsa-static.patch | 19 + .../flite/0003-fix-alsa-version-check.patch | 26 + features/buildroot/package/flite/Config.in | 16 + features/buildroot/package/flite/flite.hash | 4 + features/buildroot/package/flite/flite.mk | 46 + features/buildroot/package/flot/Config.in | 97 + features/buildroot/package/flot/flot.hash | 2 + features/buildroot/package/flot/flot.mk | 34 + .../package/fltk/0001-disable-tests.patch | 16 + features/buildroot/package/fltk/Config.in | 19 + features/buildroot/package/fltk/fltk.hash | 4 + features/buildroot/package/fltk/fltk.mk | 64 + features/buildroot/package/fluxbox/Config.in | 16 + .../buildroot/package/fluxbox/fluxbox.hash | 2 + features/buildroot/package/fluxbox/fluxbox.mk | 88 + features/buildroot/package/fluxbox/xsession | 2 + features/buildroot/package/fmc/Config.in | 25 + features/buildroot/package/fmc/fmc.hash | 2 + features/buildroot/package/fmc/fmc.mk | 39 + features/buildroot/package/fmlib/Config.in | 50 + features/buildroot/package/fmlib/fmlib.hash | 2 + features/buildroot/package/fmlib/fmlib.mk | 37 + features/buildroot/package/fmt/Config.in | 11 + features/buildroot/package/fmt/fmt.hash | 3 + features/buildroot/package/fmt/fmt.mk | 18 + features/buildroot/package/fmtools/Config.in | 9 + .../buildroot/package/fmtools/fmtools.hash | 2 + features/buildroot/package/fmtools/fmtools.mk | 12 + .../buildroot/package/font-awesome/Config.in | 7 + .../package/font-awesome/font-awesome.hash | 2 + .../package/font-awesome/font-awesome.mk | 18 + ...x-the-build-issue-with-enable-static.patch | 133 + .../buildroot/package/fontconfig/Config.in | 11 + .../package/fontconfig/fontconfig.hash | 5 + .../package/fontconfig/fontconfig.mk | 26 + features/buildroot/package/fping/Config.in | 8 + features/buildroot/package/fping/fping.hash | 2 + features/buildroot/package/fping/fping.mk | 12 + .../0001-fix-for-nettle.patch | 20 + .../package/freeradius-client/Config.in | 7 + .../freeradius-client/freeradius-client.hash | 2 + .../freeradius-client/freeradius-client.mk | 22 + ..._floatbar.c-fix-build-without-Xfixes.patch | 32 + features/buildroot/package/freerdp/Config.in | 91 + .../buildroot/package/freerdp/freerdp.hash | 3 + features/buildroot/package/freerdp/freerdp.mk | 266 + .../buildroot/package/freescale-imx/Config.in | 108 + .../freescale-imx/firmware-imx/Config.in | 10 + .../firmware-imx/firmware-imx.hash | 4 + .../firmware-imx/firmware-imx.mk | 68 + .../package/freescale-imx/freescale-imx.mk | 34 + .../freescale-imx/gpu-amd-bin-mx51/Config.in | 60 + .../freescale-imx/gpu-amd-bin-mx51/egl.pc | 10 + .../freescale-imx/gpu-amd-bin-mx51/glesv2.pc | 10 + .../gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash | 3 + .../gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk | 67 + .../freescale-imx/gpu-amd-bin-mx51/vg.pc | 10 + .../freescale-imx/imx-alsa-plugins/Config.in | 22 + .../imx-alsa-plugins/imx-alsa-plugins.hash | 3 + .../imx-alsa-plugins/imx-alsa-plugins.mk | 21 + .../package/freescale-imx/imx-codec/Config.in | 13 + .../freescale-imx/imx-codec/imx-codec.hash | 4 + .../freescale-imx/imx-codec/imx-codec.mk | 44 + .../freescale-imx/imx-gpu-g2d/Config.in | 25 + .../imx-gpu-g2d/imx-gpu-g2d.hash | 1 + .../freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk | 37 + .../freescale-imx/imx-gpu-viv/Config.in | 93 + .../imx-gpu-viv/imx-gpu-viv.hash | 2 + .../freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 128 + .../imx-kobs/0001-Fix-musl-build.patch | 39 + ...0002-Fix-build-for-recent-toolchains.patch | 26 + .../package/freescale-imx/imx-kobs/Config.in | 9 + .../freescale-imx/imx-kobs/imx-kobs.hash | 1 + .../freescale-imx/imx-kobs/imx-kobs.mk | 12 + .../package/freescale-imx/imx-lib/Config.in | 15 + .../freescale-imx/imx-lib/imx-lib.hash | 2 + .../package/freescale-imx/imx-lib/imx-lib.mk | 39 + .../freescale-imx/imx-m4fwloader/Config.in | 8 + .../imx-m4fwloader/imx-m4fwloader.hash | 3 + .../imx-m4fwloader/imx-m4fwloader.mk | 22 + .../freescale-imx/imx-parser/Config.in | 8 + .../freescale-imx/imx-parser/imx-parser.hash | 4 + .../freescale-imx/imx-parser/imx-parser.mk | 42 + .../freescale-imx/imx-sc-firmware/Config.in | 9 + .../imx-sc-firmware/imx-sc-firmware.mk | 27 + .../package/freescale-imx/imx-uuc/Config.in | 23 + .../package/freescale-imx/imx-uuc/S80imx-uuc | 27 + .../freescale-imx/imx-uuc/imx-uuc.hash | 3 + .../package/freescale-imx/imx-uuc/imx-uuc.mk | 41 + .../freescale-imx/imx-uuc/imx-uuc.service | 11 + ...on.h-header-inclusion-to-be-standard.patch | 44 + .../freescale-imx/imx-vpu-hantro/Config.in | 20 + .../imx-vpu-hantro/imx-vpu-hantro.hash | 3 + .../imx-vpu-hantro/imx-vpu-hantro.mk | 42 + .../package/freescale-imx/imx-vpu/Config.in | 14 + .../freescale-imx/imx-vpu/imx-vpu.hash | 4 + .../package/freescale-imx/imx-vpu/imx-vpu.mk | 39 + .../freescale-imx/imx-vpuwrap/Config.in | 19 + .../imx-vpuwrap/imx-vpuwrap.hash | 4 + .../freescale-imx/imx-vpuwrap/imx-vpuwrap.mk | 28 + .../kernel-module-imx-gpu-viv/Config.in | 16 + .../kernel-module-imx-gpu-viv.hash | 2 + .../kernel-module-imx-gpu-viv.mk | 20 + .../package/freescale-imx/libz160/Config.in | 11 + .../freescale-imx/libz160/libz160.hash | 2 + .../package/freescale-imx/libz160/libz160.mk | 30 + .../package/freeswitch-mod-bcg729/Config.in | 10 + .../freeswitch-mod-bcg729.hash | 3 + .../freeswitch-mod-bcg729.mk | 30 + .../0001-Fix-cross-compiling-libvpx.patch | 29 + .../buildroot/package/freeswitch/Config.in | 37 + .../package/freeswitch/freeswitch.hash | 19 + .../package/freeswitch/freeswitch.mk | 320 + features/buildroot/package/freetype/Config.in | 6 + .../buildroot/package/freetype/freetype.hash | 9 + .../buildroot/package/freetype/freetype.mk | 65 + .../buildroot/package/fscryptctl/Config.in | 12 + .../package/fscryptctl/fscryptctl.hash | 3 + .../package/fscryptctl/fscryptctl.mk | 20 + features/buildroot/package/fswebcam/Config.in | 22 + .../buildroot/package/fswebcam/fswebcam.hash | 2 + .../buildroot/package/fswebcam/fswebcam.mk | 15 + .../package/ftop/0001-overflow.patch | 17 + features/buildroot/package/ftop/Config.in | 9 + features/buildroot/package/ftop/ftop.hash | 5 + features/buildroot/package/ftop/ftop.mk | 14 + .../fwts/0001-build-do-not-use-Werror.patch | 72 + features/buildroot/package/fwts/Config.in | 42 + features/buildroot/package/fwts/fwts.hash | 2 + features/buildroot/package/fwts/fwts.mk | 22 + features/buildroot/package/fwup/Config.in | 18 + .../buildroot/package/fwup/Config.in.host | 7 + features/buildroot/package/fwup/fwup.hash | 3 + features/buildroot/package/fwup/fwup.mk | 17 + features/buildroot/package/fxload/Config.in | 10 + features/buildroot/package/fxload/fxload.hash | 2 + features/buildroot/package/fxload/fxload.mk | 27 + .../0001-fix-usb-ch9-include.patch | 40 + ...name-include-usb_gadgetfs-to-usb-dir.patch | 12 + .../buildroot/package/gadgetfs-test/Config.in | 19 + .../package/gadgetfs-test/gadgetfs-test.hash | 2 + .../package/gadgetfs-test/gadgetfs-test.mk | 25 + .../gamin/0001-no-abstract-sockets.patch | 61 + .../package/gamin/0002-no-const-return.patch | 57 + ...x-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch | 39 + features/buildroot/package/gamin/Config.in | 14 + features/buildroot/package/gamin/gamin.hash | 2 + features/buildroot/package/gamin/gamin.mk | 21 + .../package/gauche/0001-fix-so-suffix.patch | 31 + ...d-check-for-NO_GETCONTEXT-definition.patch | 62 + ...-version.h-build-error-uClibc-x86-_6.patch | 46 + .../package/gauche/0004-rfc-needs-srfi.patch | 35 + features/buildroot/package/gauche/Config.in | 28 + features/buildroot/package/gauche/gauche.hash | 5 + features/buildroot/package/gauche/gauche.mk | 33 + .../package/gawk/0001-no-versioned.patch | 16 + features/buildroot/package/gawk/Config.in | 16 + features/buildroot/package/gawk/gawk.hash | 5 + features/buildroot/package/gawk/gawk.mk | 43 + ...059-libgcc-should-not-use-__write-fo.patch | 43 + .../4.9.4/0002-m68k-coldfire-pr68467.patch | 48 + ...3-libsanitizer-Use-pre-computed-size.patch | 71 + .../package/gcc/4.9.4/100-uclibc-conf.patch | 15 + ...werpc-link-with-math-lib.patch.conditional | 122 + .../package/gcc/4.9.4/111-pr65730.patch | 34 + ...ix-typo-for-powerpc-e6500-cpu_is_64b.patch | 26 + .../package/gcc/4.9.4/130-pr43538.patch | 25 + ...-Fix-build-with-_FILE_OFFSET_BITS-64.patch | 37 + .../gcc/4.9.4/301-missing-execinfo_h.patch | 13 + .../gcc/4.9.4/810-arm-softfloat-libgcc.patch | 30 + .../gcc/4.9.4/830-arm_unbreak_armv4t.patch | 13 + ...0-microblaze-enable-dwarf-eh-support.patch | 166 + .../gcc/4.9.4/850-libstdcxx-uclibc-c99.patch | 274 + .../package/gcc/4.9.4/860-cilk-wchar.patch | 56 + ...870-xtensa-add-mauto-litpools-option.patch | 287 + ...xtensa-reimplement-register-spilling.patch | 76 + ...d-dw2-fde-dip-instead-of-unwind-dw2-.patch | 33 + .../4.9.4/873-xtensa-fix-_Unwind_GetCFA.patch | 40 + .../874-xtensa-add-uclinux-support.patch | 169 + .../875-xtensa-fix-PR-target-82181.patch | 31 + .../4.9.4/880-nios2_legitimize_address.patch | 49 + .../gcc/4.9.4/890-fix-m68k-compile.patch | 15 + .../package/gcc/4.9.4/900-musl-support.patch | 640 ++ .../gcc/4.9.4/901-microblaze-uclibc.patch | 21 + ...libgcc-disable-split-stack-nothreads.patch | 14 + .../4.9.4/940-uclinux-enable-threads.patch | 20 + ...42-asan-fix-missing-include-signal-h.patch | 36 + ...ot-struct-ucontext-in-linux-unwind.h.patch | 190 + .../gcc/4.9.4/944-sanitizer-linux.patch | 88 + .../5.5.0/0001-m68k-coldfire-pr68467.patch | 48 + ...2-libsanitizer-Use-pre-computed-size.patch | 72 + .../package/gcc/5.5.0/100-uclibc-conf.patch | 15 + ...ix-typo-for-powerpc-e6500-cpu_is_64b.patch | 29 + .../gcc/5.5.0/301-missing-execinfo_h.patch | 13 + .../gcc/5.5.0/810-arm-softfloat-libgcc.patch | 30 + .../gcc/5.5.0/830-arm_unbreak_armv4t.patch | 15 + ...473-Reduce-size-of-Cortex-A8-automat.patch | 68 + ...0-microblaze-enable-dwarf-eh-support.patch | 166 + .../gcc/5.5.0/850-libstdcxx-uclibc-c99.patch | 273 + .../package/gcc/5.5.0/860-cilk-wchar.patch | 56 + ...870-xtensa-add-mauto-litpools-option.patch | 290 + ...xtensa-reimplement-register-spilling.patch | 76 + .../874-xtensa-add-uclinux-support.patch | 174 + .../875-xtensa-implement-trap-pattern.patch | 67 + .../880-gcc-nios2-Add-IJMP_REGS-enum.patch | 103 + .../gcc/5.5.0/890-fix-m68k-compile.patch | 15 + .../900-libitm-fixes-for-musl-support.patch | 65 + ...-fixincludes-update-for-musl-support.patch | 32 + .../gcc/5.5.0/902-unwind-fix-for-musl.patch | 36 + ...libgfortran-gthr-workaround-for-musl.patch | 80 + .../gcc/5.5.0/904-musl-libc-config.patch | 285 + .../5.5.0/905-add-musl-support-to-gcc.patch | 130 + .../gcc/5.5.0/906-mips-musl-support.patch | 37 + .../gcc/5.5.0/907-x86-musl-support.patch | 45 + .../gcc/5.5.0/908-arm-musl-support.patch | 45 + .../gcc/5.5.0/909-aarch64-musl-support.patch | 33 + .../910-microblaze-musl-and-uclibc.patch | 36 + .../gcc/5.5.0/911-ppc-musl-support.patch | 75 + .../gcc/5.5.0/912-sh-musl-support.patch | 50 + ...libgcc-disable-split-stack-nothreads.patch | 14 + .../5.5.0/940-uclinux-enable-threads.patch | 19 + ...41-mips-Add-support-for-mips-r6-musl.patch | 43 + .../6.5.0/0001-m68k-coldfire-pr68467.patch | 48 + ...a-don-t-force-PIC-for-uclinux-target.patch | 41 + .../package/gcc/6.5.0/100-uclibc-conf.patch | 15 + .../gcc/6.5.0/301-missing-execinfo_h.patch | 13 + .../gcc/6.5.0/810-arm-softfloat-libgcc.patch | 30 + .../gcc/6.5.0/830-arm_unbreak_armv4t.patch | 15 + ...473-Reduce-size-of-Cortex-A8-automat.patch | 69 + .../package/gcc/6.5.0/860-cilk-wchar.patch | 56 + .../gcc/6.5.0/890-fix-m68k-compile.patch | 15 + .../gcc/6.5.0/896-microblaze-Revert.patch | 40 + ...support-DWARF-EH-old-Xilinx-patch-ne.patch | 178 + .../6.5.0/940-uclinux-enable-threads.patch | 19 + ...41-mips-Add-support-for-mips-r6-musl.patch | 43 + .../package/gcc/7.4.0/0100-uclibc-conf.patch | 29 + .../gcc/7.4.0/0810-arm-softfloat-libgcc.patch | 45 + .../0860-cilk-fix-build-without-wchar.patch | 64 + .../gcc/7.4.0/0892-microblaze-Revert.patch | 41 + ...PR-target-81497-Fix-arm_acle.h-for-C.patch | 324 + ...TRANT-for-RISC-V-when-pthread-is-pas.patch | 31 + .../9.1.0/0001-ARC-Backport-fix-PR89838.patch | 367 + .../0002-ARC-Fix-emitting-TLS-symbols.patch | 61 + features/buildroot/package/gcc/Config.in.host | 181 + .../0001-ARC-PR89838.patch | 369 + .../0002-ARC-Fix-emitting-TLS-symbols.patch | 61 + .../0100-uclibc-conf.patch | 29 + .../package/gcc/gcc-final/gcc-final.hash | 1 + .../package/gcc/gcc-final/gcc-final.mk | 222 + .../package/gcc/gcc-initial/gcc-initial.hash | 1 + .../package/gcc/gcc-initial/gcc-initial.mk | 54 + features/buildroot/package/gcc/gcc.hash | 19 + features/buildroot/package/gcc/gcc.mk | 331 + .../100-uclibc-conf.patch | 15 + .../301-missing-execinfo_h.patch | 13 + .../850-libstdcxx-uclibc-c99.patch | 273 + .../860-cilk-wchar.patch | 56 + ...libgcc-disable-split-stack-nothreads.patch | 14 + features/buildroot/package/gconf/Config.in | 21 + features/buildroot/package/gconf/gconf.hash | 4 + features/buildroot/package/gconf/gconf.mk | 16 + features/buildroot/package/gcr/Config.in | 20 + features/buildroot/package/gcr/gcr.hash | 3 + features/buildroot/package/gcr/gcr.mk | 29 + features/buildroot/package/gd/Config.in | 58 + features/buildroot/package/gd/gd.hash | 3 + features/buildroot/package/gd/gd.mk | 96 + ...st-in-xtensa-linux-nat.c-fetch_gregs.patch | 39 + ...e-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch | 53 + ...-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch | 41 + ...-Fix-gdbserver-build-on-uClibc-noMMU.patch | 32 + .../gdb/7.12.1/0005-use-asm-sgidefs.h.patch | 40 + ...x-ptrace.c-add-missing-gdb_byte-cast.patch | 41 + .../0007-gdbserver-fix-build-for-m68k.patch | 62 + ...P_HWBKPT-before-including-gdb_wait-h.patch | 54 + ...e-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch | 55 + ...-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch | 43 + .../gdb/8.1.1/0003-use-asm-sgidefs.h.patch | 40 + .../0004-gdbserver-fix-build-for-m68k.patch | 62 + ...fork-inferior-include-linux-ptrace.h.patch | 51 + ...file-from-common-utils.c-to-filestuf.patch | 172 + ...P_HWBKPT-before-including-gdb_wait-h.patch | 54 + ...e-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch | 55 + ...-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch | 43 + .../gdb/8.2.1/0003-use-asm-sgidefs.h.patch | 40 + .../0004-gdbserver-fix-build-for-m68k.patch | 62 + ...fork-inferior-include-linux-ptrace.h.patch | 51 + ...e-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch | 55 + ...-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch | 43 + .../gdb/8.3/0003-use-asm-sgidefs.h.patch | 40 + .../0004-gdbserver-fix-build-for-m68k.patch | 62 + ...fork-inferior-include-linux-ptrace.h.patch | 53 + features/buildroot/package/gdb/Config.in | 91 + features/buildroot/package/gdb/Config.in.host | 105 + ...ining-TRAP_HWBKPT-before-including-g.patch | 52 + .../buildroot/package/gdb/gdb-python-config | 36 + features/buildroot/package/gdb/gdb.hash | 11 + features/buildroot/package/gdb/gdb.mk | 260 + features/buildroot/package/gdbm/Config.in | 7 + features/buildroot/package/gdbm/gdbm.hash | 5 + features/buildroot/package/gdbm/gdbm.mk | 21 + .../buildroot/package/gdk-pixbuf/Config.in | 16 + .../package/gdk-pixbuf/gdk-pixbuf.hash | 4 + .../package/gdk-pixbuf/gdk-pixbuf.mk | 89 + ...0001-update-genext2fs.c-to-rev-1.118.patch | 2971 ++++++ .../buildroot/package/genext2fs/Config.in | 9 + .../package/genext2fs/Config.in.host | 9 + .../package/genext2fs/genext2fs.hash | 2 + .../buildroot/package/genext2fs/genext2fs.mk | 13 + ...mpilation-warnings-in-generated-code.patch | 65 + .../package/gengetopt/gengetopt.hash | 2 + .../buildroot/package/gengetopt/gengetopt.mk | 15 + .../buildroot/package/genimage/Config.in.host | 13 + .../buildroot/package/genimage/genimage.hash | 3 + .../buildroot/package/genimage/genimage.mk | 14 + .../genpart/0001-fix-return-code.patch | 25 + features/buildroot/package/genpart/Config.in | 8 + .../buildroot/package/genpart/Config.in.host | 8 + .../buildroot/package/genpart/genpart.hash | 2 + features/buildroot/package/genpart/genpart.mk | 19 + .../package/genromfs/0001-build-system.patch | 26 + features/buildroot/package/genromfs/Config.in | 6 + .../buildroot/package/genromfs/genromfs.hash | 2 + .../buildroot/package/genromfs/genromfs.mk | 34 + features/buildroot/package/geoip/Config.in | 14 + features/buildroot/package/geoip/geoip.hash | 3 + features/buildroot/package/geoip/geoip.mk | 14 + features/buildroot/package/gerbera/Config.in | 27 + features/buildroot/package/gerbera/S99gerbera | 52 + features/buildroot/package/gerbera/config.xml | 139 + .../buildroot/package/gerbera/gerbera.hash | 3 + features/buildroot/package/gerbera/gerbera.mk | 114 + ...v3-attributes-according-to-draft-iet.patch | 30 + .../buildroot/package/gesftpserver/Config.in | 18 + .../package/gesftpserver/gesftpserver.hash | 3 + .../package/gesftpserver/gesftpserver.mk | 31 + features/buildroot/package/getent/Config.in | 10 + features/buildroot/package/getent/getent | 45 + features/buildroot/package/getent/getent.mk | 26 + .../0001-error_print_progname.patch | 14 + .../0002-Update-after-gnulib-changed.patch | 86 + .../buildroot/package/gettext-gnu/Config.in | 24 + .../package/gettext-gnu/gettext-gnu.hash | 5 + .../package/gettext-gnu/gettext-gnu.mk | 99 + .../buildroot/package/gettext-tiny/Config.in | 18 + .../package/gettext-tiny/gettext-tiny.hash | 7 + .../package/gettext-tiny/gettext-tiny.mk | 108 + .../package/gettext-tiny/gettext-wrapper | 24 + features/buildroot/package/gettext/Config.in | 18 + features/buildroot/package/gettext/gettext.mk | 10 + features/buildroot/package/gflags/Config.in | 13 + features/buildroot/package/gflags/gflags.hash | 5 + features/buildroot/package/gflags/gflags.mk | 18 + .../package/ghostscript-fonts/Config.in | 8 + .../ghostscript-fonts/ghostscript-fonts.hash | 5 + .../ghostscript-fonts/ghostscript-fonts.mk | 21 + .../0001-Fix-cross-compilation-issue.patch | 36 + ...-the-crazy-md5-file-copying-nonsense.patch | 252 + .../buildroot/package/ghostscript/Config.in | 14 + .../package/ghostscript/ghostscript.hash | 5 + .../package/ghostscript/ghostscript.mk | 64 + .../giblib/0001-fix-imlib2-detection.patch | 127 + features/buildroot/package/giblib/Config.in | 13 + features/buildroot/package/giblib/giblib.hash | 2 + features/buildroot/package/giblib/giblib.mk | 19 + features/buildroot/package/giflib/Config.in | 6 + features/buildroot/package/giflib/giflib.hash | 3 + features/buildroot/package/giflib/giflib.mk | 30 + .../buildroot/package/git-crypt/Config.in | 22 + .../package/git-crypt/git-crypt.hash | 5 + .../buildroot/package/git-crypt/git-crypt.mk | 26 + features/buildroot/package/git/Config.in | 11 + features/buildroot/package/git/git.hash | 4 + features/buildroot/package/git/git.mk | 84 + features/buildroot/package/gli/Config.in | 10 + features/buildroot/package/gli/gli.hash | 3 + features/buildroot/package/gli/gli.mk | 17 + .../package/glib-networking/Config.in | 13 + .../glib-networking/glib-networking.hash | 3 + .../glib-networking/glib-networking.mk | 40 + .../glibc.hash | 7 + .../glibc.hash | 7 + .../glibc.hash | 2 + features/buildroot/package/glibc/Config.in | 10 + .../glibc/arc-2019.03-release/glibc.hash | 7 + features/buildroot/package/glibc/glibc.hash | 2 + features/buildroot/package/glibc/glibc.mk | 152 + .../buildroot/package/glibc/nsswitch.conf | 13 + features/buildroot/package/glibmm/Config.in | 18 + features/buildroot/package/glibmm/glibmm.hash | 5 + features/buildroot/package/glibmm/glibmm.mk | 24 + features/buildroot/package/glm/Config.in | 10 + features/buildroot/package/glm/glm.hash | 3 + features/buildroot/package/glm/glm.mk | 23 + features/buildroot/package/glmark2/Config.in | 30 + .../buildroot/package/glmark2/glmark2.hash | 2 + features/buildroot/package/glmark2/glmark2.mk | 48 + features/buildroot/package/glog/Config.in | 13 + features/buildroot/package/glog/glog.hash | 5 + features/buildroot/package/glog/glog.mk | 28 + features/buildroot/package/glorytun/Config.in | 7 + .../buildroot/package/glorytun/glorytun.hash | 2 + .../buildroot/package/glorytun/glorytun.mk | 13 + features/buildroot/package/gmp/Config.in | 6 + features/buildroot/package/gmp/gmp.hash | 6 + features/buildroot/package/gmp/gmp.mk | 23 + features/buildroot/package/gmpc/Config.in | 26 + features/buildroot/package/gmpc/gmpc.hash | 2 + features/buildroot/package/gmpc/gmpc.mk | 18 + .../package/gmrender-resurrect/Config.in | 16 + .../gmrender-resurrect.hash | 2 + .../gmrender-resurrect/gmrender-resurrect.mk | 16 + ...roblem-with-undeclared-intptr_t-type.patch | 114 + ...n-t-override-ARCH-when-cross-compili.patch | 32 + features/buildroot/package/gnu-efi/Config.in | 17 + .../buildroot/package/gnu-efi/gnu-efi.hash | 6 + features/buildroot/package/gnu-efi/gnu-efi.mk | 43 + features/buildroot/package/gnuchess/Config.in | 13 + .../buildroot/package/gnuchess/gnuchess.hash | 3 + .../buildroot/package/gnuchess/gnuchess.mk | 16 + features/buildroot/package/gnupg/Config.in | 45 + .../buildroot/package/gnupg/Config.in.host | 12 + features/buildroot/package/gnupg/gnupg.hash | 3 + features/buildroot/package/gnupg/gnupg.mk | 83 + features/buildroot/package/gnupg2/Config.in | 43 + features/buildroot/package/gnupg2/gnupg2.hash | 7 + features/buildroot/package/gnupg2/gnupg2.mk | 66 + ...01-configure-add-without-demo-option.patch | 67 + .../0002-use-gdlib-config-properly.patch | 27 + features/buildroot/package/gnuplot/Config.in | 6 + .../buildroot/package/gnuplot/gnuplot.hash | 5 + features/buildroot/package/gnuplot/gnuplot.mk | 55 + ..._impl.cc-fix-build-with-boost-1.70.0.patch | 42 + features/buildroot/package/gnuradio/Config.in | 131 + .../buildroot/package/gnuradio/gnuradio.hash | 5 + .../buildroot/package/gnuradio/gnuradio.mk | 160 + features/buildroot/package/gnutls/Config.in | 30 + features/buildroot/package/gnutls/gnutls.hash | 6 + features/buildroot/package/gnutls/gnutls.mk | 95 + .../package/go-bootstrap/Config.in.host | 7 + .../package/go-bootstrap/go-bootstrap.hash | 2 + .../package/go-bootstrap/go-bootstrap.mk | 48 + ...explicit-option-for-crosscompilation.patch | 40 + features/buildroot/package/go/Config.in.host | 26 + features/buildroot/package/go/go.hash | 3 + features/buildroot/package/go/go.mk | 122 + .../gob2/0001-dont-include-from-prefix.patch | 40 + features/buildroot/package/gob2/gob2.hash | 2 + features/buildroot/package/gob2/gob2.mk | 15 + .../0001-add-missing-asm-ptrace-include.patch | 31 + ...g-references-to-struct-ucontext-with.patch | 257 + .../package/google-breakpad/Config.in | 44 + .../package/google-breakpad/Config.in.host | 8 + .../package/google-breakpad/gen-syms.sh | 34 + .../google-breakpad/google-breakpad.hash | 2 + .../google-breakpad/google-breakpad.mk | 42 + .../google-material-design-icons/Config.in | 40 + .../google-material-design-icons.hash | 3 + .../google-material-design-icons.mk | 61 + .../package/googlefontdirectory/Config.in | 19 + .../googlefontdirectory.hash | 994 ++ .../googlefontdirectory.mk | 37 + features/buildroot/package/gperf/Config.in | 10 + features/buildroot/package/gperf/gperf.hash | 5 + features/buildroot/package/gperf/gperf.mk | 13 + ...usl-support-to-libgpm-and-the-daemon.patch | 71 + .../0002-Install-unversioned-solibrary.patch | 41 + ...Really-install-unversioned-solibrary.patch | 31 + ...mptyset-API-instead-of-__sigemptyset.patch | 33 + .../gpm/0005-fix-building-w-newer-glibc.patch | 32 + features/buildroot/package/gpm/Config.in | 26 + features/buildroot/package/gpm/gpm.hash | 2 + features/buildroot/package/gpm/gpm.mk | 71 + ...Construct-do-not-force-O2-by-default.patch | 29 + ...h-when-not-building-python-man-pages.patch | 59 + ...-Save-UBX-RXM-RAWX-data-in-rawdate_t.patch | 38 + ...tates.h-fix-isync-build-without-NMEA.patch | 37 + features/buildroot/package/gpsd/Config.in | 255 + features/buildroot/package/gpsd/S50gpsd | 40 + features/buildroot/package/gpsd/gpsd.hash | 3 + features/buildroot/package/gpsd/gpsd.mk | 252 + .../package/gptfdisk/0001-ldlibs.patch | 31 + features/buildroot/package/gptfdisk/Config.in | 47 + .../buildroot/package/gptfdisk/Config.in.host | 11 + .../buildroot/package/gptfdisk/gptfdisk.hash | 6 + .../buildroot/package/gptfdisk/gptfdisk.mk | 55 + features/buildroot/package/gqrx/Config.in | 47 + features/buildroot/package/gqrx/gqrx.hash | 4 + features/buildroot/package/gqrx/gqrx.mk | 21 + .../buildroot/package/gqview/0001-make.patch | 11 + features/buildroot/package/gqview/Config.in | 7 + features/buildroot/package/gqview/gqview.hash | 2 + features/buildroot/package/gqview/gqview.mk | 14 + .../buildroot/package/gr-osmosdr/Config.in | 37 + .../package/gr-osmosdr/gr-osmosdr.hash | 2 + .../package/gr-osmosdr/gr-osmosdr.mk | 55 + features/buildroot/package/granite/Config.in | 18 + .../buildroot/package/granite/granite.hash | 4 + features/buildroot/package/granite/granite.mk | 16 + features/buildroot/package/grantlee/Config.in | 9 + .../buildroot/package/grantlee/grantlee.hash | 2 + .../buildroot/package/grantlee/grantlee.mk | 14 + .../buildroot/package/graphite2/Config.in | 13 + .../package/graphite2/graphite2.hash | 5 + .../buildroot/package/graphite2/graphite2.mk | 23 + features/buildroot/package/grep/Config.in | 12 + features/buildroot/package/grep/grep.hash | 5 + features/buildroot/package/grep/grep.mk | 28 + .../0001-target-build-using-host-plugin.patch | 52 + ...the-availability-of-pthread_setname_.patch | 52 + ...py.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch | 34 + features/buildroot/package/grpc/Config.in | 25 + features/buildroot/package/grpc/grpc.hash | 3 + features/buildroot/package/grpc/grpc.mk | 52 + .../gsettings-desktop-schemas/Config.in | 16 + .../gsettings-desktop-schemas.hash | 2 + .../gsettings-desktop-schemas.mk | 16 + features/buildroot/package/gsl/Config.in | 10 + features/buildroot/package/gsl/gsl.hash | 2 + features/buildroot/package/gsl/gsl.mk | 27 + features/buildroot/package/gssdp/Config.in | 16 + features/buildroot/package/gssdp/gssdp.hash | 5 + features/buildroot/package/gssdp/gssdp.mk | 16 + .../buildroot/package/gstreamer/Config.in | 13 + .../gstreamer/gst-ffmpeg/0001-gcc47.patch | 65 + ...arm-avoid-using-the-movw-instruction.patch | 41 + .../package/gstreamer/gst-ffmpeg/Config.in | 30 + .../gstreamer/gst-ffmpeg/gst-ffmpeg.hash | 2 + .../gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 103 + .../0001-gplay-add-missing-include.patch | 23 + ...0002-Fix-bashism-in-configure-script.patch | 48 + .../0003-Use-proper-objdump.patch | 36 + ...nkage-add-lrt-for-shared-memory-func.patch | 46 + ...-of-obsolete-VIDIOC_DBG_G_CHIP_IDENT.patch | 69 + .../gstreamer/gst-fsl-plugins/Config.in | 105 + .../gst-fsl-plugins/gst-fsl-plugins.hash | 2 + .../gst-fsl-plugins/gst-fsl-plugins.mk | 47 + .../package/gstreamer/gst-omapfb/Config.in | 7 + .../gstreamer/gst-omapfb/gst-omapfb.hash | 2 + .../gstreamer/gst-omapfb/gst-omapfb.mk | 20 + .../gst-plugin-x170/0001-correct-CFLAGS.patch | 28 + .../gstreamer/gst-plugin-x170/Config.in | 16 + .../gst-plugin-x170/gst-plugin-x170.hash | 2 + .../gst-plugin-x170/gst-plugin-x170.mk | 18 + ...s-jpegformat-unbreak-non-debug-build.patch | 78 + .../0002-fix-dfb-example.patch | 22 + ...03-drop-buggy-libvpx-legacy-handling.patch | 44 + .../gstreamer/gst-plugins-bad/Config.in | 332 + .../gst-plugins-bad/gst-plugins-bad.hash | 2 + .../gst-plugins-bad/gst-plugins-bad.mk | 593 ++ .../gst-plugins-base/0001-tremor.patch | 139 + ...x-build-on-x86-if-emmintrin.h-is-ava.patch | 38 + ...-s-HAVE_EMMINTRIN_H-not-HAVE_XMMINTR.patch | 27 + .../gstreamer/gst-plugins-base/Config.in | 108 + .../gst-plugins-base/gst-plugins-base.hash | 2 + .../gst-plugins-base/gst-plugins-base.mk | 196 + .../gst-plugins-good/0001-linux36.patch | 37 + ...ilation-against-newer-kernel-headers.patch | 30 + .../gstreamer/gst-plugins-good/Config.in | 234 + .../gst-plugins-good/gst-plugins-good.hash | 2 + .../gst-plugins-good/gst-plugins-good.mk | 394 + .../gstreamer/gst-plugins-ugly/Config.in | 53 + .../gst-plugins-ugly/gst-plugins-ugly.hash | 5 + .../gst-plugins-ugly/gst-plugins-ugly.mk | 90 + .../buildroot/package/gstreamer/gstreamer.mk | 1 + .../gstreamer/gstreamer/0001-bison3.patch | 24 + .../package/gstreamer/gstreamer/Config.in | 38 + .../gstreamer/gstreamer/gstreamer.hash | 4 + .../package/gstreamer/gstreamer/gstreamer.mk | 36 + .../buildroot/package/gstreamer1/Config.in | 20 + .../package/gstreamer1/gst-omx/Config.in | 11 + .../package/gstreamer1/gst-omx/gst-omx.hash | 3 + .../package/gstreamer1/gst-omx/gst-omx.mk | 45 + .../package/gstreamer1/gst1-imx/Config.in | 98 + .../package/gstreamer1/gst1-imx/gst1-imx.hash | 3 + .../package/gstreamer1/gst1-imx/gst1-imx.mk | 103 + .../gstreamer1/gst1-interpipe/Config.in | 10 + .../gst1-interpipe/gst1-interpipe.hash | 5 + .../gst1-interpipe/gst1-interpipe.mk | 21 + .../package/gstreamer1/gst1-libav/Config.in | 16 + .../gstreamer1/gst1-libav/gst1-libav.hash | 3 + .../gstreamer1/gst1-libav/gst1-libav.mk | 42 + .../gstreamer1/gst1-plugins-bad/Config.in | 629 ++ .../gst1-plugins-bad/gst1-plugins-bad.hash | 4 + .../gst1-plugins-bad/gst1-plugins-bad.mk | 742 ++ .../gstreamer1/gst1-plugins-base/Config.in | 305 + .../gst1-plugins-base/gst1-plugins-base.hash | 3 + .../gst1-plugins-base/gst1-plugins-base.mk | 275 + .../gst1-plugins-bayer2rgb-neon/Config.in | 20 + .../gst1-plugins-bayer2rgb-neon.hash | 3 + .../gst1-plugins-bayer2rgb-neon.mk | 28 + .../gstreamer1/gst1-plugins-good/Config.in | 427 + .../gst1-plugins-good/gst1-plugins-good.hash | 3 + .../gst1-plugins-good/gst1-plugins-good.mk | 467 + .../gstreamer1/gst1-plugins-ugly/Config.in | 61 + .../gst1-plugins-ugly/gst1-plugins-ugly.hash | 3 + .../gst1-plugins-ugly/gst1-plugins-ugly.mk | 97 + .../gstreamer1/gst1-rtsp-server/Config.in | 12 + .../gst1-rtsp-server/gst1-rtsp-server.hash | 4 + .../gst1-rtsp-server/gst1-rtsp-server.mk | 27 + .../package/gstreamer1/gst1-shark/Config.in | 13 + .../gstreamer1/gst1-shark/gst1-shark.hash | 5 + .../gstreamer1/gst1-shark/gst1-shark.mk | 19 + .../package/gstreamer1/gst1-vaapi/Config.in | 50 + .../gstreamer1/gst1-vaapi/gst1-vaapi.hash | 3 + .../gstreamer1/gst1-vaapi/gst1-vaapi.mk | 33 + .../gstreamer1/gst1-validate/Config.in | 17 + .../gst1-validate/gst1-validate.hash | 3 + .../gstreamer1/gst1-validate/gst1-validate.mk | 23 + .../gstreamer1-editing-services/Config.in | 18 + .../gstreamer1-editing-services.hash | 6 + .../gstreamer1-editing-services.mk | 39 + .../gstreamer1/gstreamer1-mm/Config.in | 29 + .../gstreamer1-mm/gstreamer1-mm.hash | 6 + .../gstreamer1/gstreamer1-mm/gstreamer1-mm.mk | 24 + .../package/gstreamer1/gstreamer1.mk | 1 + ...jects-instea-of-static-helper-librar.patch | 42 + .../package/gstreamer1/gstreamer1/Config.in | 60 + .../gstreamer1/gstreamer1/gstreamer1.hash | 3 + .../gstreamer1/gstreamer1/gstreamer1.mk | 41 + features/buildroot/package/gtest/Config.in | 54 + features/buildroot/package/gtest/gmock.pc | 11 + features/buildroot/package/gtest/gtest.hash | 3 + features/buildroot/package/gtest/gtest.mk | 95 + features/buildroot/package/gtest/gtest.pc | 11 + .../buildroot/package/gtk2-engines/Config.in | 5 + .../package/gtk2-engines/gtk2-engines.hash | 2 + .../package/gtk2-engines/gtk2-engines.mk | 88 + features/buildroot/package/gtkmm3/Config.in | 30 + features/buildroot/package/gtkmm3/gtkmm3.hash | 2 + features/buildroot/package/gtkmm3/gtkmm3.mk | 16 + features/buildroot/package/gtkperf/Config.in | 9 + .../buildroot/package/gtkperf/gtkperf.hash | 3 + features/buildroot/package/gtkperf/gtkperf.mk | 15 + .../buildroot/package/gtksourceview/Config.in | 12 + .../package/gtksourceview/gtksourceview.hash | 5 + .../package/gtksourceview/gtksourceview.mk | 17 + .../guile/0001-fix_arm_endianness.patch | 25 + .../guile/0002-calculate-csqrt_manually.patch | 16 + .../0003-workaround-ice-ssa-corruption.patch | 64 + features/buildroot/package/guile/Config.in | 21 + features/buildroot/package/guile/guile.hash | 2 + features/buildroot/package/guile/guile.mk | 59 + features/buildroot/package/gupnp-av/Config.in | 17 + .../buildroot/package/gupnp-av/gupnp-av.hash | 5 + .../buildroot/package/gupnp-av/gupnp-av.mk | 16 + .../buildroot/package/gupnp-dlna/Config.in | 17 + .../package/gupnp-dlna/gupnp-dlna.hash | 5 + .../package/gupnp-dlna/gupnp-dlna.mk | 32 + .../buildroot/package/gupnp-tools/Config.in | 21 + .../package/gupnp-tools/gupnp-tools.hash | 5 + .../package/gupnp-tools/gupnp-tools.mk | 38 + features/buildroot/package/gupnp/Config.in | 20 + features/buildroot/package/gupnp/gupnp.hash | 5 + features/buildroot/package/gupnp/gupnp.mk | 16 + .../0001-use-pregen-xmli18n-header.patch | 48 + ...laces-static-with-static-libtool-lib.patch | 39 + .../buildroot/package/gutenprint/Config.in | 15 + .../package/gutenprint/gutenprint.hash | 3 + .../package/gutenprint/gutenprint.mk | 88 + features/buildroot/package/gvfs/Config.in | 20 + features/buildroot/package/gvfs/gvfs.hash | 5 + features/buildroot/package/gvfs/gvfs.mk | 179 + features/buildroot/package/gzip/Config.in | 13 + features/buildroot/package/gzip/gzip.hash | 6 + features/buildroot/package/gzip/gzip.mk | 25 + .../0001-Don-t-require-a-C-compiler.patch | 37 + features/buildroot/package/hackrf/Config.in | 14 + features/buildroot/package/hackrf/hackrf.hash | 3 + features/buildroot/package/hackrf/hackrf.mk | 26 + features/buildroot/package/hans/Config.in | 14 + features/buildroot/package/hans/hans.hash | 5 + features/buildroot/package/hans/hans.mk | 20 + features/buildroot/package/haproxy/Config.in | 19 + .../buildroot/package/haproxy/haproxy.hash | 5 + features/buildroot/package/haproxy/haproxy.mk | 88 + ...airo-svg-dependency-to-test-ot-color.patch | 38 + features/buildroot/package/harfbuzz/Config.in | 15 + .../buildroot/package/harfbuzz/harfbuzz.hash | 5 + .../buildroot/package/harfbuzz/harfbuzz.mk | 69 + .../haserl/0001-add-haserl_lualib.inc.patch | 149 + features/buildroot/package/haserl/Config.in | 16 + features/buildroot/package/haserl/haserl.hash | 3 + features/buildroot/package/haserl/haserl.mk | 32 + features/buildroot/package/haveged/Config.in | 9 + features/buildroot/package/haveged/S21haveged | 23 + .../buildroot/package/haveged/haveged.hash | 3 + features/buildroot/package/haveged/haveged.mk | 29 + .../buildroot/package/haveged/haveged.service | 10 + features/buildroot/package/hdparm/Config.in | 7 + features/buildroot/package/hdparm/hdparm.hash | 6 + features/buildroot/package/hdparm/hdparm.mk | 23 + .../buildroot/package/heimdal/heimdal.hash | 5 + features/buildroot/package/heimdal/heimdal.mk | 45 + ...-support-since-it-is-no-longer-suppo.patch | 42 + .../0002-fix-libressl-support.patch | 54 + .../package/heirloom-mailx/Config.in | 20 + .../heirloom-mailx/heirloom-mailx.hash | 2 + .../package/heirloom-mailx/heirloom-mailx.mk | 37 + .../buildroot/package/hello-world/Config.in | 7 + .../package/hello-world/hello-world.mk | 14 + .../package/hello-world/src/CMakeLists.txt | 10 + .../package/hello-world/src/conanfile.txt | 2 + .../package/hello-world/src/main.cpp | 32 + features/buildroot/package/hiawatha/Config.in | 37 + .../buildroot/package/hiawatha/hiawatha.hash | 3 + .../buildroot/package/hiawatha/hiawatha.mk | 29 + .../package/hicolor-icon-theme/Config.in | 9 + .../hicolor-icon-theme.hash | 2 + .../hicolor-icon-theme/hicolor-icon-theme.mk | 13 + ...se-a-C-source-file-since-it-s-pure-C.patch | 445 + features/buildroot/package/hidapi/Config.in | 18 + features/buildroot/package/hidapi/hidapi.hash | 2 + features/buildroot/package/hidapi/hidapi.mk | 24 + features/buildroot/package/hiredis/Config.in | 12 + .../buildroot/package/hiredis/hiredis.hash | 3 + features/buildroot/package/hiredis/hiredis.mk | 69 + features/buildroot/package/hostapd/Config.in | 114 + .../buildroot/package/hostapd/hostapd.hash | 20 + features/buildroot/package/hostapd/hostapd.mk | 153 + ...ld-use-pkg-config-to-discover-libusb.patch | 45 + ...nfigure.in-fix-AM_INIT_AUTOMAKE-call.patch | 35 + features/buildroot/package/hplip/Config.in | 23 + features/buildroot/package/hplip/hplip.hash | 2 + features/buildroot/package/hplip/hplip.mk | 46 + ...Panel-remove-0xe2-from-MetersPanel.c.patch | 52 + features/buildroot/package/htop/Config.in | 9 + features/buildroot/package/htop/htop.hash | 3 + features/buildroot/package/htop/htop.mk | 28 + .../0001-fix-math-library-linking.patch | 25 + ...Makefile-allow-build-without-gettext.patch | 48 + features/buildroot/package/httping/Config.in | 22 + .../buildroot/package/httping/httping.hash | 3 + features/buildroot/package/httping/httping.mk | 37 + features/buildroot/package/hwdata/Config.in | 38 + features/buildroot/package/hwdata/hwdata.hash | 4 + features/buildroot/package/hwdata/hwdata.mk | 26 + features/buildroot/package/hwloc/Config.in | 15 + features/buildroot/package/hwloc/hwloc.hash | 5 + features/buildroot/package/hwloc/hwloc.mk | 39 + .../buildroot/package/i2c-tools/Config.in | 11 + .../package/i2c-tools/i2c-tools.hash | 7 + .../buildroot/package/i2c-tools/i2c-tools.mk | 71 + ....txt-don-t-install-source-and-licens.patch | 58 + features/buildroot/package/i2pd/Config.in | 37 + features/buildroot/package/i2pd/S99i2pd | 38 + features/buildroot/package/i2pd/i2pd.hash | 3 + features/buildroot/package/i2pd/i2pd.mk | 67 + features/buildroot/package/i2pd/i2pd.service | 29 + features/buildroot/package/i7z/Config.in | 17 + features/buildroot/package/i7z/i7z.hash | 2 + features/buildroot/package/i7z/i7z.mk | 22 + ...File.cpp-support-POSIX-basename-call.patch | 55 + ...-added-openssl-1.1-compatibility-264.patch | 357 + ...sl-gcm-fix-static-build-with-openssl.patch | 94 + .../buildroot/package/ibrcommon/Config.in | 13 + .../package/ibrcommon/ibrcommon.hash | 4 + .../buildroot/package/ibrcommon/ibrcommon.mk | 35 + .../buildroot/package/ibrdtn-tools/Config.in | 15 + .../package/ibrdtn-tools/ibrdtn-tools.hash | 2 + .../package/ibrdtn-tools/ibrdtn-tools.mk | 31 + features/buildroot/package/ibrdtn/Config.in | 16 + features/buildroot/package/ibrdtn/ibrdtn.hash | 2 + features/buildroot/package/ibrdtn/ibrdtn.mk | 28 + ...-ibrdtnd-added-openssl-compatibility.patch | 205 + ...icateManager.cpp-include-cstring-267.patch | 29 + features/buildroot/package/ibrdtnd/Config.in | 15 + .../buildroot/package/ibrdtnd/ibrdtnd.hash | 2 + features/buildroot/package/ibrdtnd/ibrdtnd.mk | 51 + ...0001-dont-build-static-dynamic-twice.patch | 37 + .../icu/0002-workaround-toolchain-bugs.patch | 37 + .../icu/0003-link-icudata-as-data-only.patch | 35 + .../0004-fix-static-linking-with-icu-uc.patch | 34 + .../icu/0005-Fix-big-endian-build.patch | 34 + features/buildroot/package/icu/Config.in | 35 + features/buildroot/package/icu/icu.hash | 4 + features/buildroot/package/icu/icu.mk | 63 + .../buildroot/package/ifenslave/Config.in | 7 + .../package/ifenslave/ifenslave.hash | 3 + .../buildroot/package/ifenslave/ifenslave.mk | 19 + ...K-Packet-too-small-or-truncated-92-1.patch | 29 + features/buildroot/package/ifmetric/Config.in | 10 + .../buildroot/package/ifmetric/ifmetric.hash | 4 + .../buildroot/package/ifmetric/ifmetric.mk | 14 + .../package/ifplugd/0001-cross.patch | 17 + .../package/ifplugd/0002-fix-headers.patch | 24 + .../package/ifplugd/0003-no-cxx.patch | 17 + .../package/ifplugd/0004-musl-fix-types.patch | 24 + features/buildroot/package/ifplugd/Config.in | 14 + .../buildroot/package/ifplugd/ifplugd.hash | 2 + features/buildroot/package/ifplugd/ifplugd.mk | 34 + features/buildroot/package/iftop/Config.in | 16 + features/buildroot/package/iftop/iftop.hash | 2 + features/buildroot/package/iftop/iftop.mk | 19 + .../package/ifupdown-scripts/Config.in | 7 + .../package/ifupdown-scripts/S40network | 30 + .../ifupdown-scripts/ifupdown-scripts.mk | 56 + .../package/ifupdown-scripts/network.service | 21 + .../ifupdown-scripts/network/if-down.d/.empty | 0 .../network/if-post-down.d/.empty | 0 .../network/if-pre-up.d/wait_iface | 21 + .../ifupdown-scripts/network/if-up.d/.empty | 0 .../package/ifupdown-scripts/nfs_check | 20 + .../0001-dont-use-dpkg-architecture.patch | 17 + features/buildroot/package/ifupdown/Config.in | 18 + .../buildroot/package/ifupdown/ifupdown.hash | 2 + .../buildroot/package/ifupdown/ifupdown.mk | 34 + .../package/igd2-for-linux/Config.in | 25 + .../buildroot/package/igd2-for-linux/S99upnpd | 67 + .../igd2-for-linux/igd2-for-linux.hash | 3 + .../package/igd2-for-linux/igd2-for-linux.mk | 48 + .../package/igd2-for-linux/upnpd.service | 22 + .../buildroot/package/igh-ethercat/Config.in | 29 + .../package/igh-ethercat/igh-ethercat.hash | 2 + .../package/igh-ethercat/igh-ethercat.mk | 25 + .../buildroot/package/igmpproxy/Config.in | 15 + .../package/igmpproxy/igmpproxy.hash | 5 + .../buildroot/package/igmpproxy/igmpproxy.mk | 13 + features/buildroot/package/ijs/Config.in | 8 + features/buildroot/package/ijs/ijs.hash | 3 + features/buildroot/package/ijs/ijs.mk | 17 + .../imagemagick/0001-CVE-2019-13454.patch | 92 + .../buildroot/package/imagemagick/Config.in | 19 + .../package/imagemagick/Config.in.host | 26 + .../package/imagemagick/imagemagick.hash | 3 + .../package/imagemagick/imagemagick.mk | 209 + features/buildroot/package/imlib2/Config.in | 42 + features/buildroot/package/imlib2/imlib2.hash | 8 + features/buildroot/package/imlib2/imlib2.mk | 67 + ...overriding-bl32-and-bl33-not-only-bl.patch | 58 + .../0002-add-ldflags-to-link-step.patch | 26 + .../0003-Add-unused-fake-version.patch | 33 + .../package/imx-mkimage/Config.in.host | 7 + .../package/imx-mkimage/imx-mkimage.hash | 3 + .../package/imx-mkimage/imx-mkimage.mk | 37 + .../package/imx-usb-loader/Config.in | 13 + .../package/imx-usb-loader/Config.in.host | 9 + .../imx-usb-loader/imx-usb-loader.hash | 2 + .../package/imx-usb-loader/imx-usb-loader.mk | 32 + features/buildroot/package/inadyn/Config.in | 16 + features/buildroot/package/inadyn/S70inadyn | 44 + features/buildroot/package/inadyn/inadyn.conf | 11 + features/buildroot/package/inadyn/inadyn.hash | 5 + features/buildroot/package/inadyn/inadyn.mk | 42 + .../buildroot/package/inadyn/inadyn.service | 10 + .../buildroot/package/inconsolata/Config.in | 7 + .../package/inconsolata/inconsolata.hash | 2 + .../package/inconsolata/inconsolata.mk | 19 + .../buildroot/package/initscripts/Config.in | 4 + .../package/initscripts/init.d/S20urandom | 51 + .../buildroot/package/initscripts/init.d/rcK | 27 + .../buildroot/package/initscripts/init.d/rcS | 27 + .../package/initscripts/initscripts.mk | 12 + .../buildroot/package/inotify-tools/Config.in | 11 + .../package/inotify-tools/inotify-tools.hash | 3 + .../package/inotify-tools/inotify-tools.mk | 14 + .../package/input-event-daemon/Config.in | 10 + .../input-event-daemon/S99input-event-daemon | 39 + .../input-event-daemon.hash | 2 + .../input-event-daemon/input-event-daemon.mk | 38 + .../input-event-daemon.service | 9 + .../buildroot/package/intel-gmmlib/Config.in | 14 + .../package/intel-gmmlib/intel-gmmlib.hash | 3 + .../package/intel-gmmlib/intel-gmmlib.mk | 17 + .../0001-Drop-hardening-related-flags.patch | 63 + .../package/intel-mediadriver/Config.in | 30 + .../intel-mediadriver/intel-mediadriver.hash | 3 + .../intel-mediadriver/intel-mediadriver.mk | 31 + .../0001-Don-t-force-fstack-protector.patch | 52 + .../package/intel-mediasdk/Config.in | 31 + .../intel-mediasdk/intel-mediasdk.hash | 3 + .../package/intel-mediasdk/intel-mediasdk.mk | 17 + .../package/intel-microcode/Config.in | 18 + .../intel-microcode/intel-microcode.hash | 3 + .../intel-microcode/intel-microcode.mk | 30 + .../0001-perl-5.26-compatibility.patch | 55 + .../buildroot/package/intltool/intltool.hash | 6 + .../buildroot/package/intltool/intltool.mk | 14 + .../0001-disable-systemd-and-selinux.patch | 29 + features/buildroot/package/iodine/Config.in | 9 + features/buildroot/package/iodine/iodine.hash | 2 + features/buildroot/package/iodine/iodine.mk | 32 + .../package/iostat/0001-cpunum.patch | 27 + features/buildroot/package/iostat/Config.in | 6 + features/buildroot/package/iostat/iostat.hash | 2 + features/buildroot/package/iostat/iostat.mk | 21 + .../0001-Fix-build-error-with-Python-3.patch | 37 + features/buildroot/package/iotop/Config.in | 12 + features/buildroot/package/iotop/iotop.hash | 2 + features/buildroot/package/iotop/iotop.mk | 13 + .../0001-Add-new-targets-for-iozone.patch | 103 + features/buildroot/package/iozone/Config.in | 14 + features/buildroot/package/iozone/iozone.hash | 2 + features/buildroot/package/iozone/iozone.mk | 30 + features/buildroot/package/iperf/Config.in | 14 + features/buildroot/package/iperf/iperf.hash | 6 + features/buildroot/package/iperf/iperf.mk | 15 + .../iperf3/0001-disable-profiling.patch | 20 + .../0002-Fix-build-using-musl-libc.patch | 43 + features/buildroot/package/iperf3/Config.in | 16 + features/buildroot/package/iperf3/iperf3.hash | 4 + features/buildroot/package/iperf3/iperf3.mk | 24 + .../0001-Fix-missing-stddef.h-include.patch | 38 + ....1-compatibility-error-storage-size-.patch | 108 + ...iler-happier-about-changes-related-t.patch | 40 + ...ool-coredumps-in-EVP_CIPHER_CTX_init.patch | 57 + ...CIPHER_CTX_free-instead-of-EVP_CIPHE.patch | 148 + ...ompile-with-deprecated-APIs-disabled.patch | 50 + features/buildroot/package/ipmitool/Config.in | 40 + .../buildroot/package/ipmitool/ipmitool.hash | 2 + .../buildroot/package/ipmitool/ipmitool.mk | 40 + .../package/ipmiutil/0001-no-build-doc.patch | 31 + features/buildroot/package/ipmiutil/Config.in | 18 + .../buildroot/package/ipmiutil/ipmiutil.hash | 6 + .../buildroot/package/ipmiutil/ipmiutil.mk | 27 + features/buildroot/package/iproute2/Config.in | 13 + .../buildroot/package/iproute2/iproute2.hash | 3 + .../buildroot/package/iproute2/iproute2.mk | 49 + features/buildroot/package/iprutils/Config.in | 11 + .../buildroot/package/iprutils/iprutils.hash | 6 + .../buildroot/package/iprutils/iprutils.mk | 14 + .../ipsec-tools/0001-susv3-legacy.patch | 35 + .../ipsec-tools/0002-configure-automake.patch | 21 + .../0003-Don-t-link-against-libfl.patch | 92 + .../ipsec-tools/0004-CVE-2015-4047.patch | 26 + .../ipsec-tools/0005-CVE-2016-10396.patch | 208 + .../ipsec-tools/0006-openssl-1.1.patch | 1104 +++ .../buildroot/package/ipsec-tools/Config.in | 75 + .../package/ipsec-tools/ipsec-tools.hash | 3 + .../package/ipsec-tools/ipsec-tools.mk | 78 + features/buildroot/package/ipset/Config.in | 8 + features/buildroot/package/ipset/ipset.hash | 6 + features/buildroot/package/ipset/ipset.mk | 16 + features/buildroot/package/iptables/Config.in | 31 + .../buildroot/package/iptables/iptables.hash | 4 + .../buildroot/package/iptables/iptables.mk | 50 + .../buildroot/package/iptraf-ng/Config.in | 13 + .../package/iptraf-ng/iptraf-ng.hash | 2 + .../buildroot/package/iptraf-ng/iptraf-ng.mk | 19 + features/buildroot/package/iputils/Config.in | 9 + .../buildroot/package/iputils/iputils.hash | 6 + features/buildroot/package/iputils/iputils.mk | 89 + .../package/irda-utils/0001-daemon.patch | 34 + .../package/irda-utils/0002-nommu.patch | 24 + .../package/irda-utils/0003-subdir.patch | 23 + .../package/irda-utils/0004-musl.patch | 31 + .../buildroot/package/irda-utils/Config.in | 19 + .../package/irda-utils/irda-utils.hash | 2 + .../package/irda-utils/irda-utils.mk | 39 + .../buildroot/package/irqbalance/Config.in | 19 + .../package/irqbalance/S13irqbalance | 34 + .../package/irqbalance/irqbalance.hash | 3 + .../package/irqbalance/irqbalance.mk | 63 + .../package/irqbalance/irqbalance.service | 9 + ...LAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch | 44 + .../irrlicht/0002-remove-sys-sysctl.h.patch | 38 + features/buildroot/package/irrlicht/Config.in | 17 + .../buildroot/package/irrlicht/irrlicht.hash | 5 + .../buildroot/package/irrlicht/irrlicht.mk | 58 + features/buildroot/package/irssi/Config.in | 31 + features/buildroot/package/irssi/irssi.hash | 4 + features/buildroot/package/irssi/irssi.mk | 45 + features/buildroot/package/isl/isl.hash | 2 + features/buildroot/package/isl/isl.mk | 14 + .../buildroot/package/iucode-tool/Config.in | 11 + .../package/iucode-tool/S00iucode-tool | 28 + .../package/iucode-tool/iucode-tool.hash | 3 + .../package/iucode-tool/iucode-tool.mk | 29 + .../package/iucode-tool/iucode.service | 10 + features/buildroot/package/iw/Config.in | 11 + features/buildroot/package/iw/iw.hash | 4 + features/buildroot/package/iw/iw.mk | 25 + features/buildroot/package/iwd/Config.in | 14 + features/buildroot/package/iwd/iwd.hash | 5 + features/buildroot/package/iwd/iwd.mk | 47 + features/buildroot/package/jack2/Config.in | 54 + features/buildroot/package/jack2/jack2.hash | 2 + features/buildroot/package/jack2/jack2.mk | 46 + .../buildroot/package/jailhouse/Config.in | 27 + .../package/jailhouse/jailhouse.hash | 2 + .../buildroot/package/jailhouse/jailhouse.mk | 48 + ...n-available-instead-of-fpu_control.h.patch | 108 + features/buildroot/package/jamvm/Config.in | 26 + features/buildroot/package/jamvm/jamvm.hash | 2 + features/buildroot/package/jamvm/jamvm.mk | 34 + features/buildroot/package/jansson/Config.in | 7 + .../buildroot/package/jansson/jansson.hash | 3 + features/buildroot/package/jansson/jansson.mk | 14 + .../janus-gateway/0001-disable-ssp.patch | 33 + ...dd-test-for-Wunused-but-set-variable.patch | 146 + .../buildroot/package/janus-gateway/Config.in | 99 + .../package/janus-gateway/janus-gateway.hash | 3 + .../package/janus-gateway/janus-gateway.mk | 123 + features/buildroot/package/jasper/Config.in | 6 + features/buildroot/package/jasper/jasper.hash | 3 + features/buildroot/package/jasper/jasper.mk | 36 + .../jemalloc/0001-Disable-documentation.patch | 29 + features/buildroot/package/jemalloc/Config.in | 29 + .../buildroot/package/jemalloc/jemalloc.hash | 3 + .../buildroot/package/jemalloc/jemalloc.mk | 21 + features/buildroot/package/jhead/Config.in | 11 + features/buildroot/package/jhead/jhead.hash | 3 + features/buildroot/package/jhead/jhead.mk | 20 + features/buildroot/package/jimtcl/Config.in | 10 + features/buildroot/package/jimtcl/jimtcl.hash | 2 + features/buildroot/package/jimtcl/jimtcl.mk | 82 + features/buildroot/package/jo/Config.in | 6 + features/buildroot/package/jo/jo.hash | 2 + features/buildroot/package/jo/jo.mk | 14 + features/buildroot/package/joe/Config.in | 21 + features/buildroot/package/joe/joe.hash | 5 + features/buildroot/package/joe/joe.mk | 25 + ...-lib-hsh.c-rename-hsh-local-variable.patch | 71 + ...nfigure-fix-build-with-old-compilers.patch | 165 + features/buildroot/package/jose/Config.in | 14 + features/buildroot/package/jose/jose.hash | 3 + features/buildroot/package/jose/jose.mk | 17 + .../package/jpeg-turbo/jpeg-turbo.hash | 7 + .../package/jpeg-turbo/jpeg-turbo.mk | 40 + features/buildroot/package/jpeg/Config.in | 51 + features/buildroot/package/jpeg/jpeg.mk | 7 + features/buildroot/package/jq/Config.in | 8 + features/buildroot/package/jq/Config.in.host | 11 + features/buildroot/package/jq/jq.hash | 3 + features/buildroot/package/jq/jq.mk | 31 + .../package/jquery-datetimepicker/Config.in | 7 + .../jquery-datetimepicker.hash | 2 + .../jquery-datetimepicker.mk | 19 + .../package/jquery-keyboard/Config.in | 7 + .../jquery-keyboard/jquery-keyboard.hash | 2 + .../jquery-keyboard/jquery-keyboard.mk | 24 + .../buildroot/package/jquery-mobile/Config.in | 25 + .../package/jquery-mobile/jquery-mobile.hash | 2 + .../package/jquery-mobile/jquery-mobile.mk | 47 + .../package/jquery-sidebar/Config.in | 6 + .../jquery-sidebar/jquery-sidebar.hash | 2 + .../package/jquery-sidebar/jquery-sidebar.mk | 17 + .../package/jquery-sparkline/Config.in | 12 + .../jquery-sparkline/jquery-sparkline.hash | 2 + .../jquery-sparkline/jquery-sparkline.mk | 21 + .../package/jquery-ui-themes/Config.in | 117 + .../jquery-ui-themes/jquery-ui-themes.hash | 2 + .../jquery-ui-themes/jquery-ui-themes.mk | 30 + .../buildroot/package/jquery-ui/Config.in | 9 + .../package/jquery-ui/jquery-ui.hash | 2 + .../buildroot/package/jquery-ui/jquery-ui.mk | 34 + .../package/jquery-validation/Config.in | 8 + .../jquery-validation/jquery-validation.hash | 2 + .../jquery-validation/jquery-validation.mk | 22 + features/buildroot/package/jquery/Config.in | 8 + features/buildroot/package/jquery/jquery.hash | 2 + features/buildroot/package/jquery/jquery.mk | 21 + features/buildroot/package/jsmin/Config.in | 11 + .../buildroot/package/jsmin/Config.in.host | 11 + features/buildroot/package/jsmin/jsmin.hash | 3 + features/buildroot/package/jsmin/jsmin.mk | 29 + features/buildroot/package/jsmn/Config.in | 8 + features/buildroot/package/jsmn/jsmn.hash | 2 + features/buildroot/package/jsmn/jsmn.mk | 24 + features/buildroot/package/json-c/Config.in | 13 + features/buildroot/package/json-c/json-c.hash | 4 + features/buildroot/package/json-c/json-c.mk | 22 + .../package/json-for-modern-cpp/Config.in | 29 + .../json-for-modern-cpp.hash | 3 + .../json-for-modern-cpp.mk | 17 + .../buildroot/package/json-glib/Config.in | 16 + .../package/json-glib/json-glib.hash | 5 + .../buildroot/package/json-glib/json-glib.mk | 24 + .../package/json-javascript/Config.in | 6 + .../json-javascript/json-javascript.hash | 2 + .../json-javascript/json-javascript.mk | 16 + features/buildroot/package/jsoncpp/Config.in | 15 + .../buildroot/package/jsoncpp/jsoncpp.hash | 3 + features/buildroot/package/jsoncpp/jsoncpp.mk | 24 + features/buildroot/package/kbd/Config.in | 8 + features/buildroot/package/kbd/kbd.hash | 2 + features/buildroot/package/kbd/kbd.mk | 21 + ...lm-linker-library-flag-is-always-set.patch | 62 + .../buildroot/package/keepalived/Config.in | 20 + .../package/keepalived/keepalived.hash | 3 + .../package/keepalived/keepalived.mk | 58 + .../kexec-lite/0001-clean-restart.patch | 34 + .../buildroot/package/kexec-lite/Config.in | 21 + .../package/kexec-lite/kexec-lite.hash | 2 + .../package/kexec-lite/kexec-lite.mk | 21 + features/buildroot/package/kexec/Config.in | 22 + features/buildroot/package/kexec/kexec.hash | 4 + features/buildroot/package/kexec/kexec.mk | 36 + .../keyutils/0001-fix-install-rule.patch | 22 + .../package/keyutils/0002-cifs.patch | 15 + features/buildroot/package/keyutils/Config.in | 13 + .../buildroot/package/keyutils/keyutils.hash | 4 + .../buildroot/package/keyutils/keyutils.mk | 38 + features/buildroot/package/kf5/Config.in | 14 + .../kf5/kf5-extra-cmake-modules/Config.in | 10 + .../kf5-extra-cmake-modules.hash | 3 + .../kf5-extra-cmake-modules.mk | 17 + .../package/kf5/kf5-kcoreaddons/Config.in | 14 + .../kf5/kf5-kcoreaddons/kf5-kcoreaddons.hash | 3 + .../kf5/kf5-kcoreaddons/kf5-kcoreaddons.mk | 23 + .../package/kf5/kf5-modemmanager-qt/Config.in | 20 + .../kf5-modemmanager-qt.hash | 3 + .../kf5-modemmanager-qt.mk | 21 + .../kf5/kf5-networkmanager-qt/Config.in | 20 + .../kf5-networkmanager-qt.hash | 3 + .../kf5-networkmanager-qt.mk | 16 + features/buildroot/package/kf5/kf5.mk | 11 + .../package/kismet/0001-ncurses.patch | 11 + .../buildroot/package/kismet/0002-nobsd.patch | 44 + .../0003-fix-curses-libs-ordering.patch | 44 + .../kismet/0004-no-include-host-paths.patch | 25 + ...don-t-include-linux-if_tun.h-kernel-.patch | 51 + features/buildroot/package/kismet/Config.in | 42 + features/buildroot/package/kismet/kismet.hash | 2 + features/buildroot/package/kismet/kismet.mk | 65 + .../package/kmod/0001-fix-O_CLOEXEC.patch | 48 + features/buildroot/package/kmod/Config.in | 21 + features/buildroot/package/kmod/kmod.hash | 5 + features/buildroot/package/kmod/kmod.mk | 84 + features/buildroot/package/kmscube/Config.in | 9 + .../buildroot/package/kmscube/kmscube.hash | 2 + features/buildroot/package/kmscube/kmscube.mk | 13 + features/buildroot/package/kmsxx/Config.in | 26 + features/buildroot/package/kmsxx/kmsxx.hash | 2 + features/buildroot/package/kmsxx/kmsxx.mk | 65 + features/buildroot/package/knock/Config.in | 13 + features/buildroot/package/knock/knock.hash | 2 + features/buildroot/package/knock/knock.mk | 18 + .../kodi-audiodecoder-modplug/Config.in | 8 + .../kodi-audiodecoder-modplug.hash | 2 + .../kodi-audiodecoder-modplug.mk | 13 + .../kodi-audiodecoder-nosefart/Config.in | 7 + .../kodi-audiodecoder-nosefart.hash | 2 + .../kodi-audiodecoder-nosefart.mk | 13 + .../package/kodi-audiodecoder-opus/Config.in | 10 + .../kodi-audiodecoder-opus.hash | 2 + .../kodi-audiodecoder-opus.mk | 13 + .../kodi-audiodecoder-sidplay/Config.in | 8 + .../kodi-audiodecoder-sidplay.hash | 2 + .../kodi-audiodecoder-sidplay.mk | 13 + .../kodi-audiodecoder-snesapu/Config.in | 7 + .../kodi-audiodecoder-snesapu.hash | 2 + .../kodi-audiodecoder-snesapu.mk | 13 + .../kodi-audiodecoder-stsound/Config.in | 7 + .../kodi-audiodecoder-stsound.hash | 2 + .../kodi-audiodecoder-stsound.mk | 13 + .../kodi-audiodecoder-timidity/Config.in | 6 + .../kodi-audiodecoder-timidity.hash | 2 + .../kodi-audiodecoder-timidity.mk | 13 + .../kodi-audiodecoder-vgmstream/Config.in | 7 + .../kodi-audiodecoder-vgmstream.hash | 2 + .../kodi-audiodecoder-vgmstream.mk | 13 + .../package/kodi-audioencoder-flac/Config.in | 9 + .../kodi-audioencoder-flac.hash | 2 + .../kodi-audioencoder-flac.mk | 13 + .../package/kodi-audioencoder-lame/Config.in | 8 + .../kodi-audioencoder-lame.hash | 2 + .../kodi-audioencoder-lame.mk | 15 + .../kodi-audioencoder-vorbis/Config.in | 9 + .../kodi-audioencoder-vorbis.hash | 2 + .../kodi-audioencoder-vorbis.mk | 13 + .../package/kodi-audioencoder-wav/Config.in | 7 + .../kodi-audioencoder-wav.hash | 2 + .../kodi-audioencoder-wav.mk | 13 + .../kodi-inputstream-adaptive/Config.in | 11 + .../kodi-inputstream-adaptive.hash | 2 + .../kodi-inputstream-adaptive.mk | 15 + .../package/kodi-inputstream-rtmp/Config.in | 7 + .../kodi-inputstream-rtmp.hash | 2 + .../kodi-inputstream-rtmp.mk | 13 + .../kodi-jsonschemabuilder.hash | 1 + .../kodi-jsonschemabuilder.mk | 25 + .../kodi-peripheral-joystick/Config.in | 11 + .../kodi-peripheral-joystick.hash | 2 + .../kodi-peripheral-joystick.mk | 15 + .../kodi-peripheral-steamcontroller/Config.in | 8 + .../kodi-peripheral-steamcontroller.hash | 2 + .../kodi-peripheral-steamcontroller.mk | 13 + .../package/kodi-peripheral-xarcade/Config.in | 6 + .../kodi-peripheral-xarcade.hash | 2 + .../kodi-peripheral-xarcade.mk | 13 + ...nfig.cmake-fix-for-cross-compilation.patch | 54 + .../buildroot/package/kodi-platform/Config.in | 7 + .../package/kodi-platform/kodi-platform.hash | 2 + .../package/kodi-platform/kodi-platform.mk | 14 + .../package/kodi-pvr-argustv/Config.in | 8 + .../kodi-pvr-argustv/kodi-pvr-argustv.hash | 2 + .../kodi-pvr-argustv/kodi-pvr-argustv.mk | 15 + .../package/kodi-pvr-dvblink/Config.in | 8 + .../kodi-pvr-dvblink/kodi-pvr-dvblink.hash | 2 + .../kodi-pvr-dvblink/kodi-pvr-dvblink.mk | 15 + .../package/kodi-pvr-dvbviewer/Config.in | 7 + .../kodi-pvr-dvbviewer.hash | 2 + .../kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk | 15 + .../package/kodi-pvr-filmon/Config.in | 8 + .../kodi-pvr-filmon/kodi-pvr-filmon.hash | 2 + .../kodi-pvr-filmon/kodi-pvr-filmon.mk | 15 + .../package/kodi-pvr-hdhomerun/Config.in | 9 + .../kodi-pvr-hdhomerun.hash | 2 + .../kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk | 15 + .../buildroot/package/kodi-pvr-hts/Config.in | 7 + .../package/kodi-pvr-hts/kodi-pvr-hts.hash | 2 + .../package/kodi-pvr-hts/kodi-pvr-hts.mk | 15 + .../package/kodi-pvr-iptvsimple/Config.in | 7 + .../kodi-pvr-iptvsimple.hash | 2 + .../kodi-pvr-iptvsimple.mk | 15 + ...e555-remove-xlocale.h-from-Locale.hh.patch | 33 + .../kodi-pvr-mediaportal-tvserver/Config.in | 7 + .../kodi-pvr-mediaportal-tvserver.hash | 2 + .../kodi-pvr-mediaportal-tvserver.mk | 15 + .../package/kodi-pvr-mythtv/Config.in | 7 + .../kodi-pvr-mythtv/kodi-pvr-mythtv.hash | 2 + .../kodi-pvr-mythtv/kodi-pvr-mythtv.mk | 15 + .../package/kodi-pvr-nextpvr/Config.in | 7 + .../kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash | 2 + .../kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk | 15 + .../buildroot/package/kodi-pvr-njoy/Config.in | 7 + .../package/kodi-pvr-njoy/kodi-pvr-njoy.hash | 2 + .../package/kodi-pvr-njoy/kodi-pvr-njoy.mk | 15 + .../buildroot/package/kodi-pvr-pctv/Config.in | 8 + .../package/kodi-pvr-pctv/kodi-pvr-pctv.hash | 2 + .../package/kodi-pvr-pctv/kodi-pvr-pctv.mk | 15 + .../0001-src-CWatchdog.h-Fix-gcc7-build.patch | 29 + .../package/kodi-pvr-stalker/Config.in | 9 + .../kodi-pvr-stalker/kodi-pvr-stalker.hash | 2 + .../kodi-pvr-stalker/kodi-pvr-stalker.mk | 15 + .../buildroot/package/kodi-pvr-vbox/Config.in | 8 + .../package/kodi-pvr-vbox/kodi-pvr-vbox.hash | 2 + .../package/kodi-pvr-vbox/kodi-pvr-vbox.mk | 15 + .../package/kodi-pvr-vdr-vnsi/Config.in | 7 + .../kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash | 2 + .../kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk | 15 + .../package/kodi-pvr-vuplus/Config.in | 7 + .../kodi-pvr-vuplus/kodi-pvr-vuplus.hash | 2 + .../kodi-pvr-vuplus/kodi-pvr-vuplus.mk | 15 + .../buildroot/package/kodi-pvr-wmc/Config.in | 7 + .../package/kodi-pvr-wmc/kodi-pvr-wmc.hash | 2 + .../package/kodi-pvr-wmc/kodi-pvr-wmc.mk | 15 + .../kodi-screensaver-asteroids/Config.in | 10 + .../kodi-screensaver-asteroids.hash | 2 + .../kodi-screensaver-asteroids.mk | 13 + .../kodi-screensaver-asterwave/Config.in | 12 + .../kodi-screensaver-asterwave.hash | 2 + .../kodi-screensaver-asterwave.mk | 11 + .../kodi-screensaver-biogenesis/Config.in | 10 + .../kodi-screensaver-biogenesis.hash | 2 + .../kodi-screensaver-biogenesis.mk | 13 + .../kodi-screensaver-cpblobs/Config.in | 11 + .../kodi-screensaver-cpblobs.hash | 2 + .../kodi-screensaver-cpblobs.mk | 13 + .../kodi-screensaver-crystalmorph/Config.in | 10 + .../kodi-screensaver-crystalmorph.hash | 2 + .../kodi-screensaver-crystalmorph.mk | 13 + .../kodi-screensaver-greynetic/Config.in | 10 + .../kodi-screensaver-greynetic.hash | 2 + .../kodi-screensaver-greynetic.mk | 13 + .../kodi-screensaver-matrixtrails/Config.in | 11 + .../kodi-screensaver-matrixtrails.hash | 2 + .../kodi-screensaver-matrixtrails.mk | 14 + .../kodi-screensaver-pingpong/Config.in | 10 + .../kodi-screensaver-pingpong.hash | 2 + .../kodi-screensaver-pingpong.mk | 13 + .../kodi-screensaver-planestate/Config.in | 11 + .../kodi-screensaver-planestate.hash | 2 + .../kodi-screensaver-planestate.mk | 11 + .../package/kodi-screensaver-pyro/Config.in | 10 + .../kodi-screensaver-pyro.hash | 2 + .../kodi-screensaver-pyro.mk | 13 + .../0001-cross-compile.patch | 37 + .../0002-fix-default-include-dir.patch | 28 + .../package/kodi-screensaver-rsxs/Config.in | 13 + .../kodi-screensaver-rsxs.hash | 2 + .../kodi-screensaver-rsxs.mk | 13 + .../package/kodi-screensaver-stars/Config.in | 10 + .../kodi-screensaver-stars.hash | 2 + .../kodi-screensaver-stars.mk | 13 + .../package/kodi-skin-confluence/Config.in | 6 + .../kodi-skin-confluence.hash | 2 + .../kodi-skin-confluence.mk | 26 + .../0001-texturepacker.patch | 16 + .../0002-fix_reallocarray.patch | 170 + .../kodi-texturepacker.hash | 1 + .../kodi-texturepacker/kodi-texturepacker.mk | 41 + .../kodi-visualisation-fishbmc/Config.in | 10 + .../kodi-visualisation-fishbmc.hash | 2 + .../kodi-visualisation-fishbmc.mk | 13 + .../0001-cross-compile.patch | 32 + .../package/kodi-visualisation-goom/Config.in | 10 + .../kodi-visualisation-goom.hash | 2 + .../kodi-visualisation-goom.mk | 14 + ...-also-search-for-egl-with-pkg-config.patch | 44 + .../kodi-visualisation-shadertoy/Config.in | 7 + .../kodi-visualisation-shadertoy.hash | 2 + .../kodi-visualisation-shadertoy.mk | 13 + .../kodi-visualisation-spectrum/Config.in | 6 + .../kodi-visualisation-spectrum.hash | 2 + .../kodi-visualisation-spectrum.mk | 13 + .../kodi-visualisation-waveforhue/Config.in | 6 + .../kodi-visualisation-waveforhue.hash | 2 + .../kodi-visualisation-waveforhue.mk | 13 + .../kodi-visualisation-waveform/Config.in | 6 + .../kodi-visualisation-waveform.hash | 2 + .../kodi-visualisation-waveform.mk | 13 + ...e-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch | 42 + ...endency-on-gmp-and-libintl-from-Find.patch | 39 + ...cmake-iconv-is-a-required-dependency.patch | 92 + .../kodi/0004-Fix-ffmpeg-build-for-mips.patch | 43 + .../kodi/0005-Fix-crosscompiling-issues.patch | 81 + features/buildroot/package/kodi/Config.in | 377 + features/buildroot/package/kodi/S50kodi | 39 + features/buildroot/package/kodi/br-kodi | 36 + features/buildroot/package/kodi/kodi.hash | 10 + features/buildroot/package/kodi/kodi.mk | 418 + features/buildroot/package/kodi/kodi.service | 12 + ...e-use-autoconf-CXX-for-proper-builds.patch | 27 + .../0002-append-to-cflags-and-cxxflags.patch | 49 + .../buildroot/package/kompexsqlite/Config.in | 15 + .../package/kompexsqlite/kompexsqlite.hash | 2 + .../package/kompexsqlite/kompexsqlite.mk | 14 + features/buildroot/package/ktap/Config.in | 31 + features/buildroot/package/ktap/ktap.hash | 3 + features/buildroot/package/ktap/ktap.mk | 29 + features/buildroot/package/kvazaar/Config.in | 16 + .../buildroot/package/kvazaar/kvazaar.hash | 3 + features/buildroot/package/kvazaar/kvazaar.mk | 16 + ...emove-Werror-to-avoid-build-failures.patch | 27 + ...vm-unit-tests-test-for-rdseed-rdrand.patch | 110 + .../package/kvm-unit-tests/Config.in | 44 + .../kvm-unit-tests/kvm-unit-tests.hash | 2 + .../package/kvm-unit-tests/kvm-unit-tests.mk | 57 + features/buildroot/package/kvmtool/Config.in | 31 + .../buildroot/package/kvmtool/kvmtool.hash | 2 + features/buildroot/package/kvmtool/kvmtool.mk | 36 + features/buildroot/package/kyua/Config.in | 23 + features/buildroot/package/kyua/kyua.hash | 2 + features/buildroot/package/kyua/kyua.mk | 27 + features/buildroot/package/lame/Config.in | 6 + features/buildroot/package/lame/lame.hash | 3 + features/buildroot/package/lame/lame.mk | 33 + features/buildroot/package/lapack/Config.in | 21 + features/buildroot/package/lapack/lapack.hash | 3 + features/buildroot/package/lapack/lapack.mk | 21 + .../package/latencytop/0001-makefile.patch | 28 + .../buildroot/package/latencytop/Config.in | 26 + .../package/latencytop/latencytop.hash | 2 + .../package/latencytop/latencytop.mk | 23 + .../0001-retro-compatible-with-Lua-5.1.patch | 20 + features/buildroot/package/lbase64/Config.in | 6 + .../buildroot/package/lbase64/lbase64.hash | 2 + features/buildroot/package/lbase64/lbase64.mk | 24 + .../buildroot/package/lbreakout2/Config.in | 30 + .../package/lbreakout2/lbreakout2.hash | 5 + .../package/lbreakout2/lbreakout2.mk | 33 + features/buildroot/package/lcdapi/Config.in | 12 + features/buildroot/package/lcdapi/lcdapi.hash | 2 + features/buildroot/package/lcdapi/lcdapi.mk | 20 + .../0001-Add-missing-ioctl-header.patch | 50 + .../package/lcdproc/0001-LCDd.conf.patch | 18 + features/buildroot/package/lcdproc/Config.in | 29 + .../buildroot/package/lcdproc/lcdproc.hash | 3 + features/buildroot/package/lcdproc/lcdproc.mk | 33 + ...0001-Upgrade-Visual-studio-2017-15.8.patch | 174 + features/buildroot/package/lcms2/Config.in | 11 + features/buildroot/package/lcms2/lcms2.hash | 5 + features/buildroot/package/lcms2/lcms2.mk | 35 + .../leafnode2/0001-cross_makefile.patch | 39 + .../buildroot/package/leafnode2/Config.in | 17 + .../package/leafnode2/leafnode2.hash | 2 + .../buildroot/package/leafnode2/leafnode2.mk | 43 + features/buildroot/package/leafpad/Config.in | 7 + .../buildroot/package/leafpad/leafpad.hash | 2 + features/buildroot/package/leafpad/leafpad.mk | 13 + features/buildroot/package/lensfun/Config.in | 29 + .../buildroot/package/lensfun/lensfun.hash | 5 + features/buildroot/package/lensfun/lensfun.mk | 47 + .../buildroot/package/leptonica/Config.in | 6 + .../package/leptonica/leptonica.hash | 3 + .../buildroot/package/leptonica/leptonica.mk | 65 + features/buildroot/package/less/Config.in | 8 + features/buildroot/package/less/less.hash | 2 + features/buildroot/package/less/less.mk | 17 + features/buildroot/package/lesstif/Config.in | 11 + .../buildroot/package/lesstif/lesstif.hash | 2 + features/buildroot/package/lesstif/lesstif.mk | 42 + .../0001-fix-build-with-musl-C-library.patch | 38 + .../buildroot/package/let-me-create/Config.in | 27 + .../package/let-me-create/let-me-create.hash | 2 + .../package/let-me-create/let-me-create.mk | 26 + .../0001-Fix-compilation-with-g-4.8.2.patch | 31 + .../leveldb/0002-Add-install-recipe.patch | 42 + ...n-independant-code-for-static-librar.patch | 52 + features/buildroot/package/leveldb/Config.in | 14 + .../buildroot/package/leveldb/leveldb.hash | 2 + features/buildroot/package/leveldb/leveldb.mk | 38 + features/buildroot/package/lft/Config.in | 10 + features/buildroot/package/lft/lft.hash | 4 + features/buildroot/package/lft/lft.mk | 19 + .../0001-fix-static-link-with-readline.patch | 40 + .../0002-fix-gcc-6-conflicts-signbit.patch | 57 + features/buildroot/package/lftp/Config.in | 67 + features/buildroot/package/lftp/lftp.hash | 7 + features/buildroot/package/lftp/lftp.mk | 75 + features/buildroot/package/libaacs/Config.in | 15 + .../buildroot/package/libaacs/libaacs.hash | 5 + features/buildroot/package/libaacs/libaacs.mk | 24 + ...-ENABLE_SHARED-boolean-to-allow-stat.patch | 56 + ...ile-add-missing-DESTDIR-variable-use.patch | 32 + ...t-libgcc-to-avoid-unresolved-symbols.patch | 57 + features/buildroot/package/libaio/Config.in | 6 + features/buildroot/package/libaio/libaio.hash | 5 + features/buildroot/package/libaio/libaio.mk | 40 + .../buildroot/package/libamcodec/Config.in | 14 + .../package/libamcodec/libamcodec.hash | 2 + .../package/libamcodec/libamcodec.mk | 36 + features/buildroot/package/libao/Config.in | 8 + features/buildroot/package/libao/libao.hash | 5 + features/buildroot/package/libao/libao.mk | 34 + ...001-Unbreak-compilation-without-zlib.patch | 167 + .../buildroot/package/libarchive/Config.in | 33 + .../package/libarchive/libarchive.hash | 4 + .../package/libarchive/libarchive.mk | 131 + .../buildroot/package/libargtable2/Config.in | 7 + .../package/libargtable2/libargtable2.hash | 3 + .../package/libargtable2/libargtable2.mk | 19 + .../libart/0001-art-config-cross.patch | 34 + features/buildroot/package/libart/Config.in | 14 + features/buildroot/package/libart/libart.hash | 5 + features/buildroot/package/libart/libart.mk | 17 + ...asplib_CPUTimer.h-Fix-time.h-include.patch | 39 + .../buildroot/package/libasplib/Config.in | 11 + .../package/libasplib/libasplib.hash | 3 + .../buildroot/package/libasplib/libasplib.mk | 21 + features/buildroot/package/libass/Config.in | 9 + features/buildroot/package/libass/libass.hash | 3 + features/buildroot/package/libass/libass.mk | 41 + .../buildroot/package/libassuan/Config.in | 14 + .../package/libassuan/libassuan.hash | 8 + .../buildroot/package/libassuan/libassuan.mk | 18 + .../0001-strpool-cross-flags.patch | 42 + .../buildroot/package/libatasmart/Config.in | 11 + .../package/libatasmart/libatasmart.hash | 3 + .../package/libatasmart/libatasmart.mk | 19 + .../buildroot/package/libatomic_ops/Config.in | 13 + .../package/libatomic_ops/libatomic_ops.hash | 4 + .../package/libatomic_ops/libatomic_ops.mk | 27 + .../libb64/0001-Integer-overflows.patch | 73 + .../libb64/0002-Initialize-C++-objects.patch | 38 + features/buildroot/package/libb64/Config.in | 14 + features/buildroot/package/libb64/libb64.hash | 6 + features/buildroot/package/libb64/libb64.mk | 30 + .../buildroot/package/libbdplus/Config.in | 20 + .../package/libbdplus/libbdplus.hash | 5 + .../buildroot/package/libbdplus/libbdplus.mk | 31 + .../buildroot/package/libbluray/Config.in | 11 + .../package/libbluray/libbluray.hash | 4 + .../buildroot/package/libbluray/libbluray.mk | 42 + .../buildroot/package/libbroadvoice/Config.in | 10 + .../package/libbroadvoice/libbroadvoice.hash | 3 + .../package/libbroadvoice/libbroadvoice.mk | 19 + ...0001-flopen-fix-build-with-musl-libc.patch | 40 + features/buildroot/package/libbsd/Config.in | 28 + features/buildroot/package/libbsd/libbsd.hash | 3 + features/buildroot/package/libbsd/libbsd.mk | 15 + features/buildroot/package/libbson/Config.in | 9 + .../buildroot/package/libbson/libbson.hash | 4 + features/buildroot/package/libbson/libbson.mk | 21 + .../buildroot/package/libcamera/Config.in | 17 + .../package/libcamera/libcamera.hash | 3 + .../buildroot/package/libcamera/libcamera.mk | 18 + ...01-Fix-compilation-without-pthread.h.patch | 47 + .../buildroot/package/libcap-ng/Config.in | 10 + .../package/libcap-ng/libcap-ng.hash | 4 + .../buildroot/package/libcap-ng/libcap-ng.mk | 18 + ...d-system-fixes-for-cross-compilation.patch | 53 + ...tall-into-install-shared-install-sta.patch | 48 + ....c-fix-build-with-old-kernel-headers.patch | 51 + features/buildroot/package/libcap/Config.in | 24 + features/buildroot/package/libcap/libcap.hash | 5 + features/buildroot/package/libcap/libcap.mk | 74 + .../0001-libcdaudio-enable-autoreconf.patch | 43 + .../buildroot/package/libcdaudio/Config.in | 10 + .../package/libcdaudio/libcdaudio.hash | 3 + .../package/libcdaudio/libcdaudio.mk | 17 + features/buildroot/package/libcddb/Config.in | 20 + .../buildroot/package/libcddb/libcddb.hash | 3 + features/buildroot/package/libcddb/libcddb.mk | 26 + .../package/libcdio-paranoia/Config.in | 8 + .../libcdio-paranoia/libcdio-paranoia.hash | 3 + .../libcdio-paranoia/libcdio-paranoia.mk | 20 + features/buildroot/package/libcdio/Config.in | 8 + .../buildroot/package/libcdio/libcdio.hash | 5 + features/buildroot/package/libcdio/libcdio.mk | 29 + features/buildroot/package/libcec/Config.in | 19 + features/buildroot/package/libcec/libcec.hash | 3 + features/buildroot/package/libcec/libcec.mk | 47 + .../0001-CMakeLists.txt-libcgi-is-in-C.patch | 32 + ...on-t-force-the-build-of-a-shared-lib.patch | 44 + features/buildroot/package/libcgi/Config.in | 11 + features/buildroot/package/libcgi/libcgi.hash | 5 + features/buildroot/package/libcgi/libcgi.mk | 14 + .../0001-disable-documentation-option.patch | 50 + features/buildroot/package/libcgicc/Config.in | 11 + .../buildroot/package/libcgicc/libcgicc.hash | 6 + .../buildroot/package/libcgicc/libcgicc.mk | 19 + .../buildroot/package/libcgroup/Config.in | 22 + .../package/libcgroup/libcgroup.hash | 3 + .../buildroot/package/libcgroup/libcgroup.mk | 39 + features/buildroot/package/libclc/Config.in | 10 + features/buildroot/package/libclc/libclc.hash | 3 + features/buildroot/package/libclc/libclc.mk | 47 + features/buildroot/package/libcli/Config.in | 10 + features/buildroot/package/libcli/libcli.hash | 3 + features/buildroot/package/libcli/libcli.mk | 44 + features/buildroot/package/libcoap/Config.in | 11 + .../buildroot/package/libcoap/libcoap.hash | 5 + features/buildroot/package/libcoap/libcoap.mk | 16 + .../libcodec2/0001-fix-codec2-pc-in.patch | 20 + .../buildroot/package/libcodec2/Config.in | 16 + .../package/libcodec2/libcodec2.hash | 3 + .../buildroot/package/libcodec2/libcodec2.mk | 20 + features/buildroot/package/libcofi/Config.in | 15 + .../buildroot/package/libcofi/libcofi.hash | 2 + features/buildroot/package/libcofi/libcofi.mk | 20 + .../0001-Add-disable-doc-option.patch | 54 + .../buildroot/package/libconfig/Config.in | 9 + .../package/libconfig/libconfig.hash | 3 + .../buildroot/package/libconfig/libconfig.mk | 20 + .../buildroot/package/libconfuse/Config.in | 11 + .../package/libconfuse/libconfuse.hash | 5 + .../package/libconfuse/libconfuse.mk | 17 + ...ists.txt-conditionally-use-Wpedantic.patch | 42 + ...-conditionally-use-fsanitize-address.patch | 35 + .../buildroot/package/libcorrect/Config.in | 12 + .../package/libcorrect/libcorrect.hash | 3 + .../package/libcorrect/libcorrect.mk | 13 + ...sdk-fix-building-as-a-static-library.patch | 38 + .../buildroot/package/libcpprestsdk/Config.in | 31 + .../package/libcpprestsdk/libcpprestsdk.hash | 3 + .../package/libcpprestsdk/libcpprestsdk.mk | 47 + ...k-end-of-input-before-reading-a-byte.patch | 62 + ...nzr-support-only-max-long-rgb-values.patch | 46 + features/buildroot/package/libcroco/Config.in | 20 + .../buildroot/package/libcroco/libcroco.hash | 5 + .../buildroot/package/libcroco/libcroco.mk | 21 + .../buildroot/package/libcrossguid/Config.in | 13 + .../package/libcrossguid/libcrossguid.hash | 2 + .../package/libcrossguid/libcrossguid.mk | 28 + features/buildroot/package/libcsv/Config.in | 10 + features/buildroot/package/libcsv/libcsv.hash | 3 + features/buildroot/package/libcsv/libcsv.mk | 13 + features/buildroot/package/libcue/Config.in | 7 + features/buildroot/package/libcue/libcue.hash | 3 + features/buildroot/package/libcue/libcue.mk | 14 + .../libcuefile/0001-fix-static-link.patch | 25 + .../buildroot/package/libcuefile/Config.in | 6 + .../package/libcuefile/libcuefile.hash | 7 + .../package/libcuefile/libcuefile.mk | 25 + features/buildroot/package/libcurl/Config.in | 54 + .../buildroot/package/libcurl/libcurl.hash | 5 + features/buildroot/package/libcurl/libcurl.mk | 137 + ...use-unistd-h-instead-of-sys-unistd-h.patch | 16 + .../buildroot/package/libdaemon/Config.in | 9 + .../package/libdaemon/libdaemon.hash | 3 + .../buildroot/package/libdaemon/libdaemon.mk | 16 + .../buildroot/package/libdcadec/Config.in | 7 + .../package/libdcadec/libdcadec.hash | 3 + .../buildroot/package/libdcadec/libdcadec.mk | 33 + features/buildroot/package/libdmtx/Config.in | 7 + .../buildroot/package/libdmtx/libdmtx.hash | 3 + features/buildroot/package/libdmtx/libdmtx.mk | 13 + .../package/libdnet/0001-python-gcc.patch | 20 + .../libdnet/0002-python-makefile.patch | 16 + features/buildroot/package/libdnet/Config.in | 20 + .../buildroot/package/libdnet/libdnet.hash | 3 + features/buildroot/package/libdnet/libdnet.mk | 38 + features/buildroot/package/libdri2/Config.in | 15 + .../buildroot/package/libdri2/libdri2.hash | 3 + features/buildroot/package/libdri2/libdri2.mk | 17 + .../0001-Add-ARM-support-into-xf86drm.h.patch | 56 + ...require-CAS-support-in-libatomic_ops.patch | 32 + ...le.am-use-pkg-config-to-discover-lib.patch | 162 + features/buildroot/package/libdrm/Config.in | 109 + features/buildroot/package/libdrm/libdrm.hash | 5 + features/buildroot/package/libdrm/libdrm.mk | 123 + .../libdvbcsa/0001-altivec-powerpc64.patch | 33 + .../buildroot/package/libdvbcsa/Config.in | 11 + .../package/libdvbcsa/libdvbcsa.hash | 7 + .../buildroot/package/libdvbcsa/libdvbcsa.mk | 32 + .../buildroot/package/libdvbpsi/Config.in | 12 + .../package/libdvbpsi/libdvbpsi.hash | 7 + .../buildroot/package/libdvbpsi/libdvbpsi.mk | 14 + features/buildroot/package/libdvbsi/Config.in | 15 + .../buildroot/package/libdvbsi/libdvbsi.hash | 5 + .../buildroot/package/libdvbsi/libdvbsi.mk | 14 + .../buildroot/package/libdvdcss/Config.in | 7 + .../package/libdvdcss/libdvdcss.hash | 5 + .../buildroot/package/libdvdcss/libdvdcss.mk | 14 + .../0001-do-not-match-nios2-as-os2.patch | 16 + .../buildroot/package/libdvdnav/Config.in | 13 + .../package/libdvdnav/libdvdnav.hash | 5 + .../buildroot/package/libdvdnav/libdvdnav.mk | 17 + .../buildroot/package/libdvdread/Config.in | 8 + .../package/libdvdread/libdvdread.hash | 5 + .../package/libdvdread/libdvdread.mk | 16 + ...001-use-pkg-config-to-detect-openssl.patch | 62 + .../buildroot/package/libeXosip2/Config.in | 14 + .../package/libeXosip2/libeXosip2.hash | 3 + .../package/libeXosip2/libeXosip2.mk | 37 + features/buildroot/package/libeastl/Config.in | 27 + .../buildroot/package/libeastl/libeastl.hash | 2 + .../buildroot/package/libeastl/libeastl.mk | 13 + features/buildroot/package/libebml/Config.in | 12 + .../buildroot/package/libebml/libebml.hash | 3 + features/buildroot/package/libebml/libebml.mk | 14 + .../buildroot/package/libebur128/Config.in | 13 + .../package/libebur128/libebur128.hash | 3 + .../package/libebur128/libebur128.mk | 13 + .../0001-check-bsd-functions-in-libbsd.patch | 22 + features/buildroot/package/libedit/Config.in | 21 + .../buildroot/package/libedit/libedit.hash | 3 + features/buildroot/package/libedit/libedit.mk | 30 + features/buildroot/package/libee/Config.in | 19 + features/buildroot/package/libee/libee.hash | 5 + features/buildroot/package/libee/libee.mk | 16 + features/buildroot/package/libenca/Config.in | 6 + .../buildroot/package/libenca/libenca.hash | 3 + features/buildroot/package/libenca/libenca.mk | 27 + features/buildroot/package/libepoxy/Config.in | 12 + .../buildroot/package/libepoxy/libepoxy.hash | 5 + .../buildroot/package/libepoxy/libepoxy.mk | 31 + .../buildroot/package/liberation/Config.in | 22 + .../package/liberation/liberation.hash | 3 + .../package/liberation/liberation.mk | 39 + features/buildroot/package/libesmtp/Config.in | 10 + .../buildroot/package/libesmtp/libesmtp.hash | 4 + .../buildroot/package/libesmtp/libesmtp.mk | 16 + features/buildroot/package/libestr/Config.in | 6 + .../buildroot/package/libestr/libestr.hash | 5 + features/buildroot/package/libestr/libestr.mk | 13 + features/buildroot/package/libev/Config.in | 6 + features/buildroot/package/libev/libev.hash | 3 + features/buildroot/package/libev/libev.mk | 20 + ...ure-add-disable-runtime-tests-option.patch | 44 + features/buildroot/package/libevdev/Config.in | 6 + .../buildroot/package/libevdev/libevdev.hash | 8 + .../buildroot/package/libevdev/libevdev.mk | 23 + .../0001-Disable-building-test-programs.patch | 31 + ..._openssl.m4-fix-detection-of-openssl.patch | 36 + features/buildroot/package/libevent/Config.in | 6 + .../buildroot/package/libevent/libevent.hash | 4 + .../buildroot/package/libevent/libevent.mk | 36 + features/buildroot/package/libexif/Config.in | 9 + .../buildroot/package/libexif/libexif.hash | 3 + features/buildroot/package/libexif/libexif.mk | 15 + .../buildroot/package/libfastjson/Config.in | 17 + .../package/libfastjson/libfastjson.hash | 3 + .../package/libfastjson/libfastjson.mk | 16 + .../buildroot/package/libfcgi/0001-eof.patch | 24 + .../0002-link-against-libfcgi-la.patch | 20 + .../libfcgi/0003-link-against-math.patch | 16 + .../libfcgi/0004-make-autoreconfable.patch | 67 + .../libfcgi/0005-disable-examples.patch | 21 + .../libfcgi/0006-fix-CVE-2012-6687.patch | 104 + features/buildroot/package/libfcgi/Config.in | 7 + .../buildroot/package/libfcgi/libfcgi.hash | 3 + features/buildroot/package/libfcgi/libfcgi.mk | 15 + ...-Fix-installation-location-of-libffi.patch | 55 + ...Fix-use-of-compact-eh-frames-on-MIPS.patch | 45 + ...-hardfloat-in-the-MIPS-assembly-code.patch | 44 + features/buildroot/package/libffi/Config.in | 13 + features/buildroot/package/libffi/libffi.hash | 4 + features/buildroot/package/libffi/libffi.mk | 15 + .../buildroot/package/libfm-extra/Config.in | 15 + .../package/libfm-extra/libfm-extra.hash | 7 + .../package/libfm-extra/libfm-extra.mk | 16 + .../0001-modules-fix-cross-compilation.patch | 27 + features/buildroot/package/libfm/Config.in | 28 + features/buildroot/package/libfm/libfm.hash | 7 + features/buildroot/package/libfm/libfm.mk | 32 + .../buildroot/package/libfreefare/Config.in | 12 + .../package/libfreefare/libfreefare.hash | 5 + .../package/libfreefare/libfreefare.mk | 17 + .../buildroot/package/libfreeglut/Config.in | 20 + .../package/libfreeglut/libfreeglut.hash | 5 + .../package/libfreeglut/libfreeglut.mk | 33 + .../libfreeimage/0001-no-root-install.patch | 20 + .../libfreeimage/0002-fix-cpuid-x86.patch | 67 + ...-compilation-issue-with-GCC-5.x-C-11.patch | 1172 +++ .../package/libfreeimage/0004-fix-gcc-6.patch | 31 + .../0005-Manage-powf64-with-glibc.patch | 725 ++ .../buildroot/package/libfreeimage/Config.in | 18 + .../package/libfreeimage/libfreeimage.hash | 5 + .../package/libfreeimage/libfreeimage.mk | 32 + .../buildroot/package/libfribidi/Config.in | 7 + .../package/libfribidi/libfribidi.hash | 3 + .../package/libfribidi/libfribidi.mk | 15 + .../libftdi/0001_pkgconfig_libusb.patch | 47 + ....pc-requires-libusb-fix-static-build.patch | 27 + features/buildroot/package/libftdi/Config.in | 27 + .../buildroot/package/libftdi/libftdi.hash | 2 + features/buildroot/package/libftdi/libftdi.mk | 26 + ...andard-CMake-flag-to-drive-the-share.patch | 96 + .../0002-cmake-fix-FindUSB1.cmake.patch | 34 + ...-check-for-g-when-FTDIPP-is-disabled.patch | 46 + .../libftdi1/0004-cmake-find-swig.patch | 29 + features/buildroot/package/libftdi1/Config.in | 37 + .../buildroot/package/libftdi1/libftdi1.hash | 8 + .../buildroot/package/libftdi1/libftdi1.mk | 39 + .../libfuse/0001-fix-aarch64-build.patch | 22 + features/buildroot/package/libfuse/Config.in | 14 + .../buildroot/package/libfuse/libfuse.hash | 6 + features/buildroot/package/libfuse/libfuse.mk | 42 + features/buildroot/package/libg7221/Config.in | 7 + .../buildroot/package/libg7221/libg7221.hash | 3 + .../buildroot/package/libg7221/libg7221.mk | 16 + ...ult-to-underscore-yes-for-cross-buil.patch | 48 + ...-libgcrypt.pc-generated-by-configure.patch | 93 + .../0003-build-Fix-libgcrypt.pc.patch | 31 + ...re.ac-add-an-option-to-disable-tests.patch | 66 + .../buildroot/package/libgcrypt/Config.in | 8 + .../package/libgcrypt/libgcrypt.hash | 7 + .../buildroot/package/libgcrypt/libgcrypt.mk | 40 + ...e-texts-in-LICENSE-like-on-Mono-repo.patch | 1863 ++++ ...o-match-the-headers-of-the-source-fi.patch | 1018 +++ .../buildroot/package/libgdiplus/Config.in | 19 + .../package/libgdiplus/libgdiplus.hash | 3 + .../package/libgdiplus/libgdiplus.mk | 55 + features/buildroot/package/libgee/Config.in | 15 + features/buildroot/package/libgee/libgee.hash | 5 + features/buildroot/package/libgee/libgee.mk | 16 + .../libgeotiff/0001-use-pkg-config.patch | 79 + ...GEO_NORMALIZE_DISABLE_TOWGS84-define.patch | 20 + ...tiff-configure.ac-do-not-check-for-C.patch | 65 + .../buildroot/package/libgeotiff/Config.in | 8 + .../package/libgeotiff/libgeotiff.hash | 3 + .../package/libgeotiff/libgeotiff.mk | 36 + features/buildroot/package/libgit2/Config.in | 9 + .../buildroot/package/libgit2/libgit2.hash | 3 + features/buildroot/package/libgit2/libgit2.mk | 51 + features/buildroot/package/libglade/Config.in | 20 + .../buildroot/package/libglade/libglade.hash | 5 + .../buildroot/package/libglade/libglade.mk | 23 + features/buildroot/package/libglew/Config.in | 20 + .../buildroot/package/libglew/libglew.hash | 6 + features/buildroot/package/libglew/libglew.mk | 36 + features/buildroot/package/libglfw/Config.in | 16 + .../buildroot/package/libglfw/libglfw.hash | 3 + features/buildroot/package/libglfw/libglfw.mk | 28 + ...01-fix-compile-time-atomic-detection.patch | 32 + .../0002-add-option-to-build-tests.patch | 103 + .../0003-remove-cpp-requirement.patch | 96 + ...mat-nonliteral-to-compiler-arguments.patch | 28 + features/buildroot/package/libglib2/Config.in | 20 + .../buildroot/package/libglib2/libglib2.hash | 4 + .../buildroot/package/libglib2/libglib2.mk | 125 + features/buildroot/package/libglob/Config.in | 4 + .../buildroot/package/libglob/libglob.hash | 3 + features/buildroot/package/libglob/libglob.mk | 48 + features/buildroot/package/libglu/Config.in | 10 + features/buildroot/package/libglu/libglu.hash | 7 + features/buildroot/package/libglu/libglu.mk | 15 + .../buildroot/package/libgpg-error/Config.in | 54 + .../package/libgpg-error/libgpg-error.hash | 7 + .../package/libgpg-error/libgpg-error.mk | 18 + features/buildroot/package/libgpgme/Config.in | 13 + .../buildroot/package/libgpgme/libgpgme.hash | 6 + .../buildroot/package/libgpgme/libgpgme.mk | 44 + .../buildroot/package/libgphoto2/Config.in | 14 + .../package/libgphoto2/libgphoto2.hash | 7 + .../package/libgphoto2/libgphoto2.mk | 55 + features/buildroot/package/libgpiod/Config.in | 20 + .../buildroot/package/libgpiod/libgpiod.hash | 4 + .../buildroot/package/libgpiod/libgpiod.mk | 38 + features/buildroot/package/libgsasl/Config.in | 15 + .../buildroot/package/libgsasl/libgsasl.hash | 7 + .../buildroot/package/libgsasl/libgsasl.mk | 22 + .../0001-misc-fixes-from-archlinux.patch | 218 + features/buildroot/package/libgsm/Config.in | 10 + features/buildroot/package/libgsm/libgsm.hash | 3 + features/buildroot/package/libgsm/libgsm.mk | 45 + features/buildroot/package/libgta/Config.in | 10 + features/buildroot/package/libgta/libgta.hash | 3 + features/buildroot/package/libgta/libgta.mk | 29 + .../libgtk2/0001-reduce-dependencies.patch | 117 + features/buildroot/package/libgtk2/Config.in | 41 + .../buildroot/package/libgtk2/libgtk2.hash | 5 + features/buildroot/package/libgtk2/libgtk2.mk | 130 + .../package/libgtk3/0001-no-gtk-doc.patch | 25 + .../0002-fix-introspection-check.patch | 28 + .../libgtk3/0003-disable-atk-bridge.patch | 45 + ...endency-from-gtk-encode-symbolic-svg.patch | 105 + features/buildroot/package/libgtk3/Config.in | 106 + .../buildroot/package/libgtk3/libgtk3.hash | 5 + features/buildroot/package/libgtk3/libgtk3.mk | 192 + features/buildroot/package/libgudev/Config.in | 19 + .../buildroot/package/libgudev/libgudev.hash | 5 + .../buildroot/package/libgudev/libgudev.mk | 16 + .../libhdhomerun/0001-dont-strip.patch | 18 + .../buildroot/package/libhdhomerun/Config.in | 12 + .../package/libhdhomerun/libhdhomerun.hash | 3 + .../package/libhdhomerun/libhdhomerun.mk | 32 + .../0001-dont-fiddle-with-debug-flags.patch | 19 + .../libhid/0002-no-newline-in-ldflags.patch | 22 + .../package/libhid/0003-uclinux.patch | 27 + features/buildroot/package/libhid/Config.in | 12 + features/buildroot/package/libhid/libhid.hash | 3 + features/buildroot/package/libhid/libhid.mk | 23 + .../0001-fix-build-without-GNU-libiconv.patch | 60 + ...002-htp.pc.in-add-lz-to-Libs.private.patch | 29 + features/buildroot/package/libhtp/Config.in | 9 + features/buildroot/package/libhtp/libhtp.hash | 3 + features/buildroot/package/libhtp/libhtp.mk | 21 + ...tion-when-calling-ln-at-install-time.patch | 39 + .../buildroot/package/libhttpparser/Config.in | 17 + .../package/libhttpparser/libhttpparser.hash | 3 + .../package/libhttpparser/libhttpparser.mk | 35 + .../package/libical/0001-no-tests.patch | 19 + features/buildroot/package/libical/Config.in | 15 + .../buildroot/package/libical/libical.hash | 3 + features/buildroot/package/libical/libical.mk | 19 + features/buildroot/package/libiconv/Config.in | 7 + .../buildroot/package/libiconv/libiconv.hash | 6 + .../buildroot/package/libiconv/libiconv.mk | 28 + .../0001-configure-automake-foreign.patch | 16 + .../buildroot/package/libid3tag/Config.in | 7 + .../buildroot/package/libid3tag/id3tag.pc | 12 + .../package/libid3tag/libid3tag.hash | 4 + .../buildroot/package/libid3tag/libid3tag.mk | 25 + features/buildroot/package/libidn/Config.in | 16 + features/buildroot/package/libidn/libidn.hash | 7 + features/buildroot/package/libidn/libidn.mk | 30 + features/buildroot/package/libidn2/Config.in | 17 + .../buildroot/package/libidn2/libidn2.hash | 8 + features/buildroot/package/libidn2/libidn2.mk | 30 + ...-binaries-with-a-static-only-library.patch | 44 + features/buildroot/package/libiio/Config.in | 96 + features/buildroot/package/libiio/S99iiod | 30 + features/buildroot/package/libiio/libiio.hash | 3 + features/buildroot/package/libiio/libiio.mk | 98 + features/buildroot/package/libilbc/Config.in | 7 + .../buildroot/package/libilbc/libilbc.hash | 3 + features/buildroot/package/libilbc/libilbc.mk | 15 + .../buildroot/package/libimxvpuapi/Config.in | 16 + .../package/libimxvpuapi/libimxvpuapi.hash | 3 + .../package/libimxvpuapi/libimxvpuapi.mk | 14 + features/buildroot/package/libinput/Config.in | 18 + .../buildroot/package/libinput/libinput.hash | 8 + .../buildroot/package/libinput/libinput.mk | 24 + ...tic-library-and-find-required-thread.patch | 45 + .../libiqrf/0002-use-only-c-language.patch | 29 + features/buildroot/package/libiqrf/Config.in | 14 + .../buildroot/package/libiqrf/libiqrf.hash | 2 + features/buildroot/package/libiqrf/libiqrf.mk | 13 + features/buildroot/package/libiscsi/Config.in | 16 + .../buildroot/package/libiscsi/libiscsi.hash | 5 + .../buildroot/package/libiscsi/libiscsi.mk | 23 + features/buildroot/package/libite/Config.in | 17 + features/buildroot/package/libite/libite.hash | 5 + features/buildroot/package/libite/libite.mk | 14 + .../buildroot/package/libjpeg/libjpeg.hash | 3 + features/buildroot/package/libjpeg/libjpeg.mk | 31 + .../buildroot/package/libjpeg/libjpeg.pc.in | 10 + .../libjson/0001-fix-broken-makefile.patch | 16 + features/buildroot/package/libjson/Config.in | 11 + .../buildroot/package/libjson/libjson.hash | 3 + features/buildroot/package/libjson/libjson.mk | 49 + ...pi-hasher.c-fix-build-with-gcc-8.2.x.patch | 54 + features/buildroot/package/libkcapi/Config.in | 28 + .../buildroot/package/libkcapi/libkcapi.hash | 5 + .../buildroot/package/libkcapi/libkcapi.mk | 43 + features/buildroot/package/libkrb5/Config.in | 18 + .../buildroot/package/libkrb5/libkrb5.hash | 5 + features/buildroot/package/libkrb5/libkrb5.mk | 60 + features/buildroot/package/libksba/Config.in | 8 + .../buildroot/package/libksba/libksba.hash | 9 + features/buildroot/package/libksba/libksba.mk | 16 + features/buildroot/package/libldns/Config.in | 10 + .../buildroot/package/libldns/libldns.hash | 7 + features/buildroot/package/libldns/libldns.mk | 37 + ...0001-blas-don-t-overwrite-ar-options.patch | 36 + .../liblinear/0002-build-static-lib.patch | 18 + .../buildroot/package/liblinear/Config.in | 11 + .../package/liblinear/liblinear.hash | 3 + .../buildroot/package/liblinear/liblinear.mk | 46 + features/buildroot/package/libllcp/Config.in | 9 + .../buildroot/package/libllcp/libllcp.hash | 3 + features/buildroot/package/libllcp/libllcp.mk | 18 + features/buildroot/package/liblo/Config.in | 11 + features/buildroot/package/liblo/liblo.hash | 7 + features/buildroot/package/liblo/liblo.mk | 23 + .../package/liblockfile/0001-install.patch | 16 + .../buildroot/package/liblockfile/Config.in | 4 + .../package/liblockfile/liblockfile.hash | 3 + .../package/liblockfile/liblockfile.mk | 29 + ...erquoted-definition-of-AM_PATH_LOG4C.patch | 34 + ...02-Fix-linking-error-without-pthread.patch | 38 + ...003-Fix-debug-mode-build-with-uClibc.patch | 69 + ...-AC_CONFIG_MACRO_DIR-to-configure.in.patch | 30 + .../0005-Fix-C-support.patch | 61 + .../package/liblog4c-localtime/Config.in | 11 + .../liblog4c-localtime.hash | 3 + .../liblog4c-localtime/liblog4c-localtime.mk | 23 + .../buildroot/package/liblogging/Config.in | 8 + .../package/liblogging/liblogging.hash | 5 + .../package/liblogging/liblogging.mk | 21 + ...-to-a-specific-location-using-DESTDI.patch | 65 + .../package/libloki/0002-use-ln-snf.patch | 31 + features/buildroot/package/libloki/Config.in | 12 + .../buildroot/package/libloki/libloki.hash | 5 + features/buildroot/package/libloki/libloki.mk | 38 + .../0001-mips-h-constraint-removal.patch | 72 + .../0003-remove-deprecated-cflags.patch | 33 + .../libmad/0004-thumb2-fixed-arm.patch | 40 + .../libmad/0005-thumb2-imdct-arm.patch | 20 + .../0006-configure-ac-automake-foreign.patch | 16 + features/buildroot/package/libmad/Config.in | 51 + features/buildroot/package/libmad/libmad.hash | 4 + features/buildroot/package/libmad/libmad.mk | 34 + features/buildroot/package/libmad/mad.pc | 11 + .../buildroot/package/libmatroska/Config.in | 13 + .../package/libmatroska/libmatroska.hash | 3 + .../package/libmatroska/libmatroska.mk | 15 + .../0001-Add-disable-binaries.patch | 53 + .../buildroot/package/libmaxminddb/Config.in | 18 + .../package/libmaxminddb/libmaxminddb.hash | 3 + .../package/libmaxminddb/libmaxminddb.mk | 23 + features/buildroot/package/libmbim/Config.in | 16 + .../buildroot/package/libmbim/libmbim.hash | 4 + features/buildroot/package/libmbim/libmbim.mk | 27 + features/buildroot/package/libmbus/Config.in | 8 + .../buildroot/package/libmbus/libmbus.hash | 3 + features/buildroot/package/libmbus/libmbus.mk | 13 + .../package/libmcrypt/0001-nocxx.patch | 15 + .../buildroot/package/libmcrypt/Config.in | 7 + .../package/libmcrypt/libmcrypt.hash | 3 + .../buildroot/package/libmcrypt/libmcrypt.mk | 15 + .../buildroot/package/libmediaart/Config.in | 43 + .../package/libmediaart/libmediaart.hash | 5 + .../package/libmediaart/libmediaart.mk | 38 + .../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 + .../buildroot/package/libmemcached/Config.in | 14 + .../package/libmemcached/libmemcached.hash | 5 + .../package/libmemcached/libmemcached.mk | 29 + features/buildroot/package/libmhash/Config.in | 9 + .../buildroot/package/libmhash/libmhash.hash | 3 + .../buildroot/package/libmhash/libmhash.mk | 14 + .../buildroot/package/libmicrohttpd/Config.in | 26 + .../package/libmicrohttpd/libmicrohttpd.hash | 3 + .../package/libmicrohttpd/libmicrohttpd.mk | 25 + .../buildroot/package/libminiupnpc/Config.in | 20 + .../package/libminiupnpc/libminiupnpc.hash | 3 + .../package/libminiupnpc/libminiupnpc.mk | 14 + features/buildroot/package/libmms/Config.in | 18 + features/buildroot/package/libmms/libmms.hash | 3 + features/buildroot/package/libmms/libmms.mk | 14 + .../package/libmng/0001-jpeg-9a.patch | 22 + features/buildroot/package/libmng/Config.in | 9 + features/buildroot/package/libmng/libmng.hash | 6 + features/buildroot/package/libmng/libmng.mk | 22 + features/buildroot/package/libmnl/Config.in | 7 + features/buildroot/package/libmnl/libmnl.hash | 6 + features/buildroot/package/libmnl/libmnl.mk | 14 + .../buildroot/package/libmodbus/Config.in | 8 + .../package/libmodbus/libmodbus.hash | 3 + .../buildroot/package/libmodbus/libmodbus.mk | 14 + .../buildroot/package/libmodplug/Config.in | 10 + .../package/libmodplug/libmodplug.hash | 3 + .../package/libmodplug/libmodplug.mk | 13 + ...x-build-on-archlinux-missing-include.patch | 24 + features/buildroot/package/libmpd/Config.in | 17 + features/buildroot/package/libmpd/libmpd.hash | 3 + features/buildroot/package/libmpd/libmpd.mk | 15 + .../buildroot/package/libmpdclient/Config.in | 7 + .../package/libmpdclient/libmpdclient.hash | 3 + .../package/libmpdclient/libmpdclient.mk | 15 + .../package/libmpeg2/0001-altivec.patch | 23 + .../package/libmpeg2/0002-armv4l.patch | 24 + .../libmpeg2/0003-fix-arm-detection.patch | 39 + .../package/libmpeg2/0004-fix-sparc.patch | 16 + features/buildroot/package/libmpeg2/Config.in | 16 + .../buildroot/package/libmpeg2/libmpeg2.hash | 3 + .../buildroot/package/libmpeg2/libmpeg2.mk | 32 + .../buildroot/package/libnatpmp/Config.in | 16 + .../package/libnatpmp/libnatpmp.hash | 3 + .../buildroot/package/libnatpmp/libnatpmp.mk | 31 + .../0001-ndptool.c-Fix-musl-build.patch | 30 + features/buildroot/package/libndp/Config.in | 8 + features/buildroot/package/libndp/libndp.hash | 3 + features/buildroot/package/libndp/libndp.mk | 14 + .../libnet/0001-support-musl-libc.patch | 50 + features/buildroot/package/libnet/Config.in | 7 + features/buildroot/package/libnet/libnet.hash | 3 + features/buildroot/package/libnet/libnet.mk | 15 + .../package/libnetfilter_acct/Config.in | 8 + .../libnetfilter_acct/libnetfilter_acct.hash | 6 + .../libnetfilter_acct/libnetfilter_acct.mk | 15 + .../package/libnetfilter_conntrack/Config.in | 10 + .../libnetfilter_conntrack.hash | 5 + .../libnetfilter_conntrack.mk | 15 + .../libnetfilter_cthelper/0001-uclinux.patch | 26 + .../package/libnetfilter_cthelper/Config.in | 9 + .../libnetfilter_cthelper.hash | 6 + .../libnetfilter_cthelper.mk | 16 + .../libnetfilter_cttimeout/0001-uclinux.patch | 26 + .../package/libnetfilter_cttimeout/Config.in | 9 + .../libnetfilter_cttimeout.hash | 6 + .../libnetfilter_cttimeout.mk | 16 + .../libnetfilter_log/0001-uclinux.patch | 26 + .../package/libnetfilter_log/Config.in | 8 + .../libnetfilter_log/libnetfilter_log.hash | 6 + .../libnetfilter_log/libnetfilter_log.mk | 16 + .../package/libnetfilter_queue/Config.in | 10 + .../libnetfilter_queue.hash | 6 + .../libnetfilter_queue/libnetfilter_queue.mk | 16 + ...-systems-make-example-build-optional.patch | 82 + features/buildroot/package/libnfc/Config.in | 21 + features/buildroot/package/libnfc/libnfc.hash | 3 + features/buildroot/package/libnfc/libnfc.mk | 27 + .../package/libnfnetlink/0001-uclinux.patch | 26 + .../package/libnfnetlink/0002-musl.patch | 32 + .../buildroot/package/libnfnetlink/Config.in | 11 + .../package/libnfnetlink/libnfnetlink.hash | 6 + .../package/libnfnetlink/libnfnetlink.mk | 15 + .../libnfs/0001-Fix-include-sys-time.h.patch | 41 + features/buildroot/package/libnfs/Config.in | 11 + features/buildroot/package/libnfs/libnfs.hash | 6 + features/buildroot/package/libnfs/libnfs.mk | 19 + ...dd-Libs.private-field-to-libnftnl.pc.patch | 49 + features/buildroot/package/libnftnl/Config.in | 25 + .../buildroot/package/libnftnl/libnftnl.hash | 3 + .../buildroot/package/libnftnl/libnftnl.mk | 22 + features/buildroot/package/libnice/Config.in | 23 + .../buildroot/package/libnice/libnice.hash | 7 + features/buildroot/package/libnice/libnice.mk | 28 + ...rivate-field-in-libnl-pkg-config-fil.patch | 30 + ...workaround-to-the-libc-compat.h-copy.patch | 37 + features/buildroot/package/libnl/Config.in | 23 + features/buildroot/package/libnl/libnl.hash | 4 + features/buildroot/package/libnl/libnl.mk | 27 + features/buildroot/package/libnpth/Config.in | 13 + .../buildroot/package/libnpth/libnpth.hash | 7 + features/buildroot/package/libnpth/libnpth.mk | 14 + .../package/libnspr/0001-nios2.patch | 76 + .../package/libnspr/0002-microblaze.patch | 81 + .../package/libnspr/0003-nds32.patch | 74 + features/buildroot/package/libnspr/Config.in | 22 + .../buildroot/package/libnspr/libnspr.hash | 4 + features/buildroot/package/libnspr/libnspr.mk | 55 + .../libnss/0001-fix-uclibc-build.patch | 22 + .../0002-add-zlib-include-dir-variable.patch | 49 + features/buildroot/package/libnss/Config.in | 24 + features/buildroot/package/libnss/libnss.hash | 4 + features/buildroot/package/libnss/libnss.mk | 157 + features/buildroot/package/libnss/nss.pc.in | 11 + ...Fixes-build-issue-with-OpenSSL-1.1.0.patch | 156 + features/buildroot/package/liboauth/Config.in | 11 + .../buildroot/package/liboauth/liboauth.hash | 3 + .../buildroot/package/liboauth/liboauth.mk | 20 + features/buildroot/package/libogg/Config.in | 9 + features/buildroot/package/libogg/libogg.hash | 5 + features/buildroot/package/libogg/libogg.mk | 16 + .../buildroot/package/libopenh264/Config.in | 22 + .../package/libopenh264/libopenh264.hash | 3 + .../package/libopenh264/libopenh264.mk | 52 + ...building-manpages-if-we-re-not-going.patch | 31 + ...ible-build-do-not-leak-compiler-path.patch | 29 + ...ENSSL_NO_MADVISE-to-disable-call-to-.patch | 27 + .../package/libopenssl/libopenssl.hash | 5 + .../package/libopenssl/libopenssl.mk | 170 + ...to-make-GCC-s-truncation-check-happy.patch | 31 + features/buildroot/package/liboping/Config.in | 7 + .../buildroot/package/liboping/liboping.hash | 5 + .../buildroot/package/liboping/liboping.mk | 22 + .../buildroot/package/libopusenc/Config.in | 8 + .../package/libopusenc/libopusenc.hash | 3 + .../package/libopusenc/libopusenc.mk | 16 + ...r-109133-Heap-buffer-overflow-in-uti.patch | 30 + features/buildroot/package/libosip2/Config.in | 10 + .../buildroot/package/libosip2/libosip2.hash | 5 + .../buildroot/package/libosip2/libosip2.mk | 21 + .../buildroot/package/libostree/Config.in | 26 + .../package/libostree/libostree.hash | 3 + .../buildroot/package/libostree/libostree.mk | 81 + features/buildroot/package/libp11/Config.in | 12 + .../buildroot/package/libp11/Config.in.host | 7 + features/buildroot/package/libp11/libp11.hash | 3 + features/buildroot/package/libp11/libp11.mk | 26 + ...01-configure.ac-fix-handling-of-with.patch | 76 + ...-use-AS_HELP_STRING-for-with-openssl.patch | 28 + ...figure.ac-use-pkg-config-for-openssl.patch | 137 + .../buildroot/package/libpagekite/Config.in | 24 + .../package/libpagekite/libpagekite.hash | 7 + .../package/libpagekite/libpagekite.mk | 29 + .../package/libpam-radius-auth/Config.in | 9 + .../libpam-radius-auth.hash | 5 + .../libpam-radius-auth/libpam-radius-auth.mk | 28 + .../0001-Fix-getrandom-call-in-magic.c.patch | 30 + ...Fix-compilation-of-tacc.c-with-GCC-8.patch | 39 + .../package/libpam-tacplus/Config.in | 9 + .../libpam-tacplus/libpam-tacplus.hash | 3 + .../package/libpam-tacplus/libpam-tacplus.mk | 20 + ...dd-missing-limits.h-for-musl-systems.patch | 26 + features/buildroot/package/libpcap/Config.in | 9 + .../buildroot/package/libpcap/libpcap.hash | 5 + features/buildroot/package/libpcap/libpcap.mk | 48 + .../buildroot/package/libpciaccess/Config.in | 4 + .../package/libpciaccess/libpciaccess.hash | 7 + .../package/libpciaccess/libpciaccess.mk | 21 + features/buildroot/package/libpfm4/Config.in | 11 + .../buildroot/package/libpfm4/libpfm4.hash | 6 + features/buildroot/package/libpfm4/libpfm4.mk | 31 + .../buildroot/package/libphidget/Config.in | 28 + .../package/libphidget/libphidget.hash | 3 + .../package/libphidget/libphidget.mk | 16 + ...1-Fixed-possible-function-name-clash.patch | 26 + features/buildroot/package/libpjsip/Config.in | 14 + .../buildroot/package/libpjsip/libpjsip.hash | 6 + .../buildroot/package/libpjsip/libpjsip.mk | 92 + .../buildroot/package/libplatform/Config.in | 7 + .../package/libplatform/libplatform.hash | 3 + .../package/libplatform/libplatform.mk | 13 + .../package/libplayer/0001-add-fpic.patch | 18 + .../libplayer/0002-fix-configure-cflags.patch | 41 + .../buildroot/package/libplayer/Config.in | 28 + .../package/libplayer/libplayer.hash | 2 + .../buildroot/package/libplayer/libplayer.mk | 36 + features/buildroot/package/libplist/Config.in | 12 + .../buildroot/package/libplist/libplist.hash | 2 + .../buildroot/package/libplist/libplist.mk | 18 + ...0001-Disable-pngfix-and-png-fix-itxt.patch | 47 + features/buildroot/package/libpng/Config.in | 8 + features/buildroot/package/libpng/libpng.hash | 6 + features/buildroot/package/libpng/libpng.mk | 31 + features/buildroot/package/libpqxx/Config.in | 17 + .../buildroot/package/libpqxx/libpqxx.hash | 3 + features/buildroot/package/libpqxx/libpqxx.mk | 16 + features/buildroot/package/libpri/Config.in | 21 + features/buildroot/package/libpri/libpri.hash | 7 + features/buildroot/package/libpri/libpri.mk | 52 + .../package/libpthread-stubs/Config.in | 11 + .../libpthread-stubs/libpthread-stubs.hash | 3 + .../libpthread-stubs/libpthread-stubs.mk | 20 + .../0001-fix-build-on-linux-3.x-host.patch | 28 + .../buildroot/package/libpthsem/Config.in | 18 + .../package/libpthsem/libpthsem.hash | 2 + .../buildroot/package/libpthsem/libpthsem.mk | 37 + .../buildroot/package/libpwquality/Config.in | 20 + .../package/libpwquality/libpwquality.hash | 3 + .../package/libpwquality/libpwquality.mk | 44 + ...1-musl-compat-canonicalize_file_name.patch | 61 + features/buildroot/package/libqmi/Config.in | 15 + features/buildroot/package/libqmi/libqmi.hash | 4 + features/buildroot/package/libqmi/libqmi.mk | 47 + .../buildroot/package/libqrencode/Config.in | 20 + .../package/libqrencode/libqrencode.hash | 5 + .../package/libqrencode/libqrencode.mk | 34 + features/buildroot/package/libraw/Config.in | 10 + features/buildroot/package/libraw/libraw.hash | 5 + features/buildroot/package/libraw/libraw.mk | 46 + .../buildroot/package/libraw1394/Config.in | 7 + .../package/libraw1394/libraw1394.hash | 4 + .../package/libraw1394/libraw1394.mk | 14 + .../buildroot/package/libreplaygain/Config.in | 6 + .../package/libreplaygain/libreplaygain.hash | 4 + .../package/libreplaygain/libreplaygain.mk | 16 + .../buildroot/package/libressl/libressl.hash | 4 + .../buildroot/package/libressl/libressl.mk | 20 + features/buildroot/package/libroxml/Config.in | 12 + .../buildroot/package/libroxml/libroxml.hash | 3 + .../buildroot/package/libroxml/libroxml.mk | 19 + features/buildroot/package/librsvg/Config.in | 24 + .../buildroot/package/librsvg/librsvg.hash | 2 + features/buildroot/package/librsvg/librsvg.mk | 21 + features/buildroot/package/librsync/Config.in | 15 + .../buildroot/package/librsync/librsync.hash | 3 + .../buildroot/package/librsync/librsync.mk | 14 + features/buildroot/package/librtas/Config.in | 15 + .../buildroot/package/librtas/librtas.hash | 3 + features/buildroot/package/librtas/librtas.mk | 15 + ...sable_shared_library_target_in_build.patch | 105 + .../buildroot/package/librtlsdr/Config.in | 24 + .../package/librtlsdr/librtlsdr.hash | 4 + .../buildroot/package/librtlsdr/librtlsdr.mk | 42 + .../buildroot/package/libsamplerate/Config.in | 9 + .../package/libsamplerate/libsamplerate.hash | 4 + .../package/libsamplerate/libsamplerate.mk | 23 + ...ions-to-CFLAGS-and-LDFLAGS-variables.patch | 34 + .../buildroot/package/libscrypt/Config.in | 12 + .../package/libscrypt/libscrypt.hash | 2 + .../buildroot/package/libscrypt/libscrypt.mk | 27 + .../libseccomp/0001-remove-static.patch | 40 + .../buildroot/package/libseccomp/Config.in | 28 + .../package/libseccomp/libseccomp.hash | 3 + .../package/libseccomp/libseccomp.mk | 14 + ...add-Libs.private-field-for-libgcrypt.patch | 38 + .../buildroot/package/libsecret/Config.in | 17 + .../package/libsecret/libsecret.hash | 5 + .../buildroot/package/libsecret/libsecret.mk | 31 + .../libselinux/0001-fix-musl-build.patch | 30 + .../libselinux/0002-revert-ln-relative.patch | 26 + .../buildroot/package/libselinux/Config.in | 25 + .../package/libselinux/libselinux.hash | 5 + .../package/libselinux/libselinux.mk | 117 + .../buildroot/package/libsemanage/Config.in | 30 + .../package/libsemanage/libsemanage.hash | 5 + .../package/libsemanage/libsemanage.mk | 62 + .../libsepol/0001-support-static-only.patch | 47 + .../libsepol/0002-revert-ln-relative.patch | 29 + features/buildroot/package/libsepol/Config.in | 11 + .../buildroot/package/libsepol/libsepol.hash | 5 + .../buildroot/package/libsepol/libsepol.mk | 52 + ...ix-build-when-size_t-is-an-unsigned-.patch | 39 + ...on-t-use-high-baudrates-when-not-ava.patch | 53 + .../buildroot/package/libserial/Config.in | 17 + .../package/libserial/libserial.hash | 3 + .../buildroot/package/libserial/libserial.mk | 21 + .../0001-uclinux-detection.patch | 26 + .../buildroot/package/libserialport/Config.in | 9 + .../package/libserialport/libserialport.hash | 2 + .../package/libserialport/libserialport.mk | 15 + features/buildroot/package/libsexy/Config.in | 11 + .../buildroot/package/libsexy/libsexy.hash | 2 + features/buildroot/package/libsexy/libsexy.mk | 14 + features/buildroot/package/libsha1/Config.in | 9 + .../buildroot/package/libsha1/libsha1.hash | 3 + features/buildroot/package/libsha1/libsha1.mk | 18 + .../buildroot/package/libshairplay/Config.in | 17 + .../package/libshairplay/libshairplay.hash | 2 + .../package/libshairplay/libshairplay.mk | 15 + features/buildroot/package/libshout/Config.in | 11 + .../buildroot/package/libshout/libshout.hash | 5 + .../buildroot/package/libshout/libshout.mk | 39 + .../0001-sidplay2-libs-2.1.1.patch | 227 + .../package/libsidplay2/0002-pkg-config.patch | 25 + .../package/libsidplay2/0003-gcc6.patch | 44 + .../buildroot/package/libsidplay2/Config.in | 14 + .../package/libsidplay2/libsidplay2.hash | 2 + .../package/libsidplay2/libsidplay2.mk | 14 + features/buildroot/package/libsigc/Config.in | 14 + .../buildroot/package/libsigc/libsigc.hash | 5 + features/buildroot/package/libsigc/libsigc.mk | 22 + .../buildroot/package/libsigrok/Config.in | 43 + .../package/libsigrok/libsigrok.hash | 2 + .../buildroot/package/libsigrok/libsigrok.mk | 52 + .../package/libsigrokdecode/Config.in | 27 + .../libsigrokdecode/libsigrokdecode.hash | 3 + .../libsigrokdecode/libsigrokdecode.mk | 14 + ...001-Improve-support-for-Linux-RISC-V.patch | 79 + ...irection-RISC-V-stack-grows-downward.patch | 35 + .../buildroot/package/libsigsegv/Config.in | 11 + .../package/libsigsegv/libsigsegv.hash | 5 + .../package/libsigsegv/libsigsegv.mk | 17 + features/buildroot/package/libsilk/Config.in | 6 + .../buildroot/package/libsilk/libsilk.hash | 2 + features/buildroot/package/libsilk/libsilk.mk | 16 + ...eck-psf-sf.channels-against-upper-bo.patch | 39 + ...MAX_CHANNELS-in-sndfile-deinterleave.patch | 36 + ...aw-fix-multiple-buffer-overflows-432.patch | 96 + .../buildroot/package/libsndfile/Config.in | 8 + .../package/libsndfile/libsndfile.hash | 4 + .../package/libsndfile/libsndfile.mk | 19 + features/buildroot/package/libsoc/Config.in | 11 + features/buildroot/package/libsoc/libsoc.hash | 2 + features/buildroot/package/libsoc/libsoc.mk | 27 + .../buildroot/package/libsocketcan/Config.in | 6 + .../package/libsocketcan/libsocketcan.hash | 3 + .../package/libsocketcan/libsocketcan.mk | 14 + .../buildroot/package/libsodium/Config.in | 6 + .../package/libsodium/libsodium.hash | 4 + .../buildroot/package/libsodium/libsodium.mk | 18 + .../package/libsoil/0001-fix-makefile.patch | 40 + features/buildroot/package/libsoil/Config.in | 12 + .../buildroot/package/libsoil/libsoil.hash | 2 + features/buildroot/package/libsoil/libsoil.mk | 50 + .../buildroot/package/libsoundtouch/Config.in | 12 + .../package/libsoundtouch/libsoundtouch.hash | 2 + .../package/libsoundtouch/libsoundtouch.mk | 20 + .../0001-Revert-tld-parser-use-Python-3.patch | 27 + features/buildroot/package/libsoup/Config.in | 38 + .../buildroot/package/libsoup/libsoup.hash | 4 + features/buildroot/package/libsoup/libsoup.mk | 31 + ...-Add-Libs.private-for-static-linking.patch | 43 + features/buildroot/package/libsoxr/Config.in | 15 + .../buildroot/package/libsoxr/libsoxr.hash | 7 + features/buildroot/package/libsoxr/libsoxr.mk | 25 + .../0001-configure.ac-do-not-force-O2.patch | 30 + .../package/libspatialindex/Config.in | 30 + .../libspatialindex/libspatialindex.hash | 4 + .../libspatialindex/libspatialindex.mk | 24 + ...ption-for-ln-to-remove-existing-dest.patch | 32 + .../buildroot/package/libsquish/Config.in | 12 + .../package/libsquish/libsquish.hash | 5 + .../buildroot/package/libsquish/libsquish.mk | 40 + features/buildroot/package/libsrtp/Config.in | 8 + .../buildroot/package/libsrtp/libsrtp.hash | 3 + features/buildroot/package/libsrtp/libsrtp.mk | 35 + features/buildroot/package/libss7/Config.in | 19 + features/buildroot/package/libss7/libss7.hash | 6 + features/buildroot/package/libss7/libss7.mk | 55 + features/buildroot/package/libssh/Config.in | 18 + features/buildroot/package/libssh/libssh.hash | 5 + features/buildroot/package/libssh/libssh.mk | 40 + .../0001-drop-custom-buildconf-script.patch | 121 + ...002-acinclude.m4-add-mbedtls-to-LIBS.patch | 35 + features/buildroot/package/libssh2/Config.in | 32 + .../buildroot/package/libssh2/libssh2.hash | 3 + features/buildroot/package/libssh2/libssh2.mk | 52 + .../libstrophe/0001-make-autoreconfable.patch | 20 + .../buildroot/package/libstrophe/Config.in | 15 + .../package/libstrophe/libstrophe.hash | 4 + .../package/libstrophe/libstrophe.mk | 24 + .../buildroot/package/libsvg-cairo/Config.in | 11 + .../package/libsvg-cairo/libsvg-cairo.hash | 5 + .../package/libsvg-cairo/libsvg-cairo.mk | 16 + .../0001-fix-expat-static-declaration.patch | 33 + ...fined-symbol-png_set_gray_1_2_4_to_8.patch | 32 + features/buildroot/package/libsvg/Config.in | 12 + features/buildroot/package/libsvg/libsvg.hash | 5 + features/buildroot/package/libsvg/libsvg.mk | 23 + .../0001-disable-debug-printfs.patch | 125 + .../libsvgtiny/0002-create-builddir.patch | 15 + .../libsvgtiny/0003-Remove-Werror.patch | 44 + .../buildroot/package/libsvgtiny/Config.in | 9 + .../package/libsvgtiny/libsvgtiny.hash | 3 + .../package/libsvgtiny/libsvgtiny.mk | 46 + features/buildroot/package/libsysfs/Config.in | 7 + .../buildroot/package/libsysfs/libsysfs.hash | 4 + .../buildroot/package/libsysfs/libsysfs.mk | 14 + features/buildroot/package/libtasn1/Config.in | 6 + .../buildroot/package/libtasn1/libtasn1.hash | 6 + .../buildroot/package/libtasn1/libtasn1.mk | 16 + .../libtheora/0001-link-libtheoradec.patch | 21 + .../libtheora/0002-fix-autoreconf.patch | 46 + .../buildroot/package/libtheora/Config.in | 9 + .../package/libtheora/libtheora.hash | 6 + .../buildroot/package/libtheora/libtheora.mk | 25 + ...parts-of-TIRPC-requiring-NIS-support.patch | 48 + ...t-and-musl-does-not-install-rpcent.h.patch | 35 + ...nerate-XDR-header-files-from-.x-sour.patch | 1001 ++ ...es-needed-to-build-rpcbind-on-top-of.patch | 1653 ++++ ...Disable-DES-authentification-support.patch | 142 + .../0006-rpc-types.h-fix-musl-build.patch | 31 + features/buildroot/package/libtirpc/Config.in | 11 + .../buildroot/package/libtirpc/libtirpc.hash | 5 + .../buildroot/package/libtirpc/libtirpc.mk | 29 + .../buildroot/package/libtomcrypt/Config.in | 11 + .../package/libtomcrypt/libtomcrypt.hash | 5 + .../package/libtomcrypt/libtomcrypt.mk | 28 + .../buildroot/package/libtommath/Config.in | 7 + .../package/libtommath/libtommath.hash | 5 + .../package/libtommath/libtommath.mk | 23 + features/buildroot/package/libtool/Config.in | 8 + .../buildroot/package/libtool/libtool.hash | 5 + features/buildroot/package/libtool/libtool.mk | 55 + .../package/libtorrent-rasterbar/Config.in | 27 + .../libtorrent-rasterbar.hash | 3 + .../libtorrent-rasterbar.mk | 37 + .../buildroot/package/libtorrent/Config.in | 14 + .../package/libtorrent/libtorrent.hash | 3 + .../package/libtorrent/libtorrent.mk | 24 + features/buildroot/package/libtpl/Config.in | 6 + features/buildroot/package/libtpl/libtpl.hash | 2 + features/buildroot/package/libtpl/libtpl.mk | 20 + ...ntenv-remove-declaration-in-for-loop.patch | 53 + ...xt-do-not-force-the-build-of-a-share.patch | 46 + ...3-uboot_env-fix-build-with-musl-libc.patch | 31 + ...x-compilation-for-glibc-version-2.28.patch | 40 + ...oot_env-remove-pthread.h-header-file.patch | 29 + .../buildroot/package/libubootenv/Config.in | 11 + .../package/libubootenv/libubootenv.hash | 2 + .../package/libubootenv/libubootenv.mk | 13 + features/buildroot/package/libubox/Config.in | 13 + features/buildroot/package/libubox/libubox.mk | 22 + features/buildroot/package/libuci/Config.in | 16 + features/buildroot/package/libuci/libuci.hash | 2 + features/buildroot/package/libuci/libuci.mk | 23 + features/buildroot/package/libucl/Config.in | 15 + features/buildroot/package/libucl/libucl.hash | 3 + features/buildroot/package/libucl/libucl.mk | 22 + features/buildroot/package/libuecc/Config.in | 10 + .../buildroot/package/libuecc/libuecc.hash | 4 + features/buildroot/package/libuecc/libuecc.mk | 14 + ...0001-configure-remove-po-Makefile.in.patch | 26 + .../libuio/0002-fix-build-with-musl.patch | 57 + features/buildroot/package/libuio/Config.in | 8 + features/buildroot/package/libuio/libuio.hash | 2 + features/buildroot/package/libuio/libuio.mk | 31 + .../buildroot/package/libunistring/Config.in | 12 + .../package/libunistring/libunistring.hash | 6 + .../package/libunistring/libunistring.mk | 15 + ...O_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch | 56 + .../buildroot/package/libunwind/Config.in | 35 + .../package/libunwind/libunwind.hash | 5 + .../buildroot/package/libunwind/libunwind.mk | 20 + features/buildroot/package/libupnp/Config.in | 14 + .../buildroot/package/libupnp/libupnp.hash | 3 + features/buildroot/package/libupnp/libupnp.mk | 15 + ...-configure.ac-fix-build-with-openssl.patch | 51 + ...tach-detached-thread-the-result-is-u.patch | 39 + .../buildroot/package/libupnp18/Config.in | 16 + .../package/libupnp18/libupnp18.hash | 5 + .../buildroot/package/libupnp18/libupnp18.mk | 25 + features/buildroot/package/libupnpp/Config.in | 16 + .../buildroot/package/libupnpp/libupnpp.hash | 5 + .../buildroot/package/libupnpp/libupnpp.mk | 23 + ...ly-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch | 40 + features/buildroot/package/liburcu/Config.in | 27 + .../buildroot/package/liburcu/liburcu.hash | 4 + features/buildroot/package/liburcu/liburcu.mk | 15 + ...1-CMakeLists.txt-fix-build-without-C.patch | 33 + .../buildroot/package/liburiparser/Config.in | 7 + .../package/liburiparser/liburiparser.hash | 3 + .../package/liburiparser/liburiparser.mk | 25 + ...d-fixed-width-integer-types-in-usb.h.patch | 237 + .../0002-fix-a-build-issue-on-linux.patch | 32 + .../buildroot/package/libusb-compat/Config.in | 7 + .../package/libusb-compat/libusb-compat.hash | 3 + .../package/libusb-compat/libusb-compat.mk | 19 + ...x-detection-of-clock_gettime-library.patch | 36 + features/buildroot/package/libusb/Config.in | 17 + features/buildroot/package/libusb/libusb.hash | 3 + features/buildroot/package/libusb/libusb.mk | 39 + .../0001-Add-include-of-sys-sysmacro.h.patch | 98 + features/buildroot/package/libusbgx/Config.in | 12 + .../buildroot/package/libusbgx/libusbgx.hash | 4 + .../buildroot/package/libusbgx/libusbgx.mk | 15 + features/buildroot/package/libuv/Config.in | 16 + features/buildroot/package/libuv/libuv.hash | 3 + features/buildroot/package/libuv/libuv.mk | 27 + ...up-lfs-mismatch-in-preload-libraries.patch | 44 + ...VIOCSCLOCKID-related-compile-failure.patch | 35 + ...Build-sdlcam-only-if-jpeg-is-enabled.patch | 31 + .../0004-v4l2-compliance-needs-fork.patch | 76 + features/buildroot/package/libv4l/Config.in | 42 + features/buildroot/package/libv4l/libv4l.hash | 7 + features/buildroot/package/libv4l/libv4l.mk | 89 + ...Check-the-interface-from-libva-first.patch | 71 + .../package/libva-intel-driver/Config.in | 19 + .../libva-intel-driver.hash | 5 + .../libva-intel-driver/libva-intel-driver.mk | 29 + .../buildroot/package/libva-utils/Config.in | 15 + .../package/libva-utils/libva-utils.hash | 5 + .../package/libva-utils/libva-utils.mk | 20 + features/buildroot/package/libva/Config.in | 19 + features/buildroot/package/libva/libva.hash | 5 + features/buildroot/package/libva/libva.mk | 39 + .../libvdpau/0002-link-with-libx11.patch | 33 + .../0003-vdpau-module-searchpath.patch | 48 + features/buildroot/package/libvdpau/Config.in | 17 + .../buildroot/package/libvdpau/libvdpau.hash | 5 + .../buildroot/package/libvdpau/libvdpau.mk | 28 + .../package/libvips/0001-fix-no-gtk-doc.patch | 35 + features/buildroot/package/libvips/Config.in | 21 + .../buildroot/package/libvips/libvips.hash | 2 + features/buildroot/package/libvips/libvips.mk | 86 + ...1-CMakeLists.txt-fix-build-without-C.patch | 33 + .../buildroot/package/libvncserver/Config.in | 30 + .../package/libvncserver/libvncserver.hash | 3 + .../package/libvncserver/libvncserver.mk | 77 + ...ounds-check-on-very-low-sample-rates.patch | 28 + .../buildroot/package/libvorbis/Config.in | 15 + .../package/libvorbis/libvorbis.hash | 4 + .../buildroot/package/libvorbis/libvorbis.mk | 16 + ...px_mem.h-Fix-compilation-with-uClibc.patch | 30 + features/buildroot/package/libvpx/Config.in | 11 + features/buildroot/package/libvpx/libvpx.hash | 4 + features/buildroot/package/libvpx/libvpx.mk | 50 + ...g-config-to-detect-libevent-and-open.patch | 81 + .../package/libwebsock/0002-fix-ssl.patch | 21 + .../0003-fix-incorrect-inline.patch | 66 + .../buildroot/package/libwebsock/Config.in | 16 + .../package/libwebsock/libwebsock.hash | 3 + .../package/libwebsock/libwebsock.mk | 22 + .../buildroot/package/libwebsockets/Config.in | 10 + .../package/libwebsockets/libwebsockets.hash | 3 + .../package/libwebsockets/libwebsockets.mk | 60 + features/buildroot/package/libwpe/Config.in | 13 + features/buildroot/package/libwpe/libwpe.hash | 7 + features/buildroot/package/libwpe/libwpe.mk | 22 + .../buildroot/package/libxkbcommon/Config.in | 9 + .../package/libxkbcommon/libxkbcommon.hash | 5 + .../package/libxkbcommon/libxkbcommon.mk | 25 + .../libxml-parser-perl.hash | 3 + .../libxml-parser-perl/libxml-parser-perl.mk | 35 + features/buildroot/package/libxml2/Config.in | 6 + .../buildroot/package/libxml2/libxml2.hash | 4 + features/buildroot/package/libxml2/libxml2.mk | 52 + features/buildroot/package/libxmlpp/Config.in | 18 + .../buildroot/package/libxmlpp/libxmlpp.hash | 5 + .../buildroot/package/libxmlpp/libxmlpp.mk | 16 + .../0001-use-correct-curl-config.patch | 70 + .../buildroot/package/libxmlrpc/Config.in | 14 + .../package/libxmlrpc/libxmlrpc.hash | 3 + .../buildroot/package/libxmlrpc/libxmlrpc.mk | 48 + .../0001-Fix-security-framework-bypass.patch | 122 + features/buildroot/package/libxslt/Config.in | 16 + .../buildroot/package/libxslt/libxslt.hash | 5 + features/buildroot/package/libxslt/libxslt.mk | 34 + features/buildroot/package/libyaml/Config.in | 6 + .../buildroot/package/libyaml/libyaml.hash | 3 + features/buildroot/package/libyaml/libyaml.mk | 15 + .../package/libyuv/0001-i386-sse2.patch | 16 + features/buildroot/package/libyuv/Config.in | 12 + features/buildroot/package/libyuv/libyuv.hash | 3 + features/buildroot/package/libyuv/libyuv.mk | 15 + features/buildroot/package/libzip/Config.in | 13 + features/buildroot/package/libzip/libzip.hash | 3 + features/buildroot/package/libzip/libzip.mk | 37 + .../buildroot/package/libzlib/libzlib.hash | 4 + features/buildroot/package/libzlib/libzlib.mk | 78 + .../buildroot/package/lightning/Config.in | 32 + .../package/lightning/lightning.hash | 3 + .../buildroot/package/lightning/lightning.mk | 18 + .../0001-Fix-default-config-file.patch | 100 + features/buildroot/package/lighttpd/Config.in | 67 + .../buildroot/package/lighttpd/S50lighttpd | 43 + .../buildroot/package/lighttpd/lighttpd.hash | 4 + .../buildroot/package/lighttpd/lighttpd.mk | 112 + .../package/lighttpd/lighttpd_tmpfiles.conf | 2 + .../buildroot/package/linenoise/Config.in | 6 + .../package/linenoise/linenoise.hash | 2 + .../buildroot/package/linenoise/linenoise.mk | 27 + .../0001-Link-with-libiconv-if-needed.patch | 30 + ...2-configure.ac-always-define-CPPUNIT.patch | 34 + ...Makefile.am-fix-linking-with-log4cpp.patch | 39 + features/buildroot/package/linknx/Config.in | 18 + features/buildroot/package/linknx/linknx.hash | 3 + features/buildroot/package/linknx/linknx.mk | 52 + features/buildroot/package/links/Config.in | 20 + features/buildroot/package/links/links.hash | 2 + features/buildroot/package/links/links.mk | 100 + features/buildroot/package/linphone/Config.in | 29 + .../buildroot/package/linphone/linphone.hash | 2 + .../buildroot/package/linphone/linphone.mk | 55 + .../package/linux-backports/Config.in | 54 + .../linux-backports/linux-backports.hash | 2 + .../linux-backports/linux-backports.mk | 99 + .../package/linux-firmware/Config.in | 439 + .../linux-firmware/linux-firmware.hash | 32 + .../package/linux-firmware/linux-firmware.mk | 586 ++ .../0001-fix-for-linux-4-and-above.patch | 25 + ...-conversion-spec-and-value-in-printk.patch | 29 + ...n-Unknown-symbol-tasklist_lock-err-0.patch | 38 + ...0004-Port-one-one_udp.c-to-Linux-4.1.patch | 118 + .../package/linux-fusion/40-fusion.rules | 1 + .../buildroot/package/linux-fusion/Config.in | 10 + .../package/linux-fusion/linux-fusion.hash | 2 + .../package/linux-fusion/linux-fusion.mk | 43 + .../buildroot/package/linux-headers/Config.in | 2 + .../package/linux-headers/Config.in.host | 317 + .../package/linux-headers/linux-headers.hash | 1 + .../package/linux-headers/linux-headers.mk | 141 + .../linux-pam/0001-doc-makefile-am.patch | 34 + ...lly-compile-per-ruserok-availability.patch | 49 + .../buildroot/package/linux-pam/Config.in | 16 + .../package/linux-pam/linux-pam.hash | 4 + .../buildroot/package/linux-pam/linux-pam.mk | 62 + .../buildroot/package/linux-pam/login.pam | 12 + .../buildroot/package/linux-pam/other.pam | 7 + .../package/linux-syscall-support/Config.in | 8 + .../linux-syscall-support.hash | 2 + .../linux-syscall-support.mk | 29 + .../buildroot/package/linux-tools/Config.in | 118 + .../linux-tools/linux-tool-cpupower.mk.in | 41 + .../package/linux-tools/linux-tool-gpio.mk.in | 28 + .../package/linux-tools/linux-tool-iio.mk.in | 29 + .../package/linux-tools/linux-tool-pci.mk.in | 27 + .../package/linux-tools/linux-tool-perf.mk.in | 148 + .../linux-tools/linux-tool-selftests.mk.in | 46 + .../package/linux-tools/linux-tool-tmon.mk.in | 37 + .../package/linux-tools/linux-tools.mk | 45 + .../0001-test-serial-Remove-test-serial.patch | 54 + ...fig-parse.y-add-missing-time.h-inclu.patch | 43 + .../buildroot/package/linux-zigbee/Config.in | 55 + .../package/linux-zigbee/linux-zigbee.mk | 31 + .../0001-conditional-build.patch | 58 + .../linuxconsoletools/0002-sdl-config.patch | 20 + .../package/linuxconsoletools/Config.in | 36 + .../linuxconsoletools/linuxconsoletools.hash | 2 + .../linuxconsoletools/linuxconsoletools.mk | 41 + ...g.h-drop-clock_nanosleep-replacement.patch | 49 + ...fix-building-with-new-kernel-headers.patch | 55 + features/buildroot/package/linuxptp/Config.in | 13 + .../buildroot/package/linuxptp/S65linuxptp | 46 + .../linuxptp/linuxptp-system-clock.service | 11 + .../buildroot/package/linuxptp/linuxptp.cfg | 19 + .../buildroot/package/linuxptp/linuxptp.hash | 9 + .../buildroot/package/linuxptp/linuxptp.mk | 50 + .../package/linuxptp/linuxptp.service | 13 + .../buildroot/package/liquid-dsp/Config.in | 24 + .../package/liquid-dsp/liquid-dsp.hash | 2 + .../package/liquid-dsp/liquid-dsp.mk | 47 + .../0001-Fix-build-without-Python.patch | 63 + ...0002-Fix-python-client-cross-compile.patch | 47 + ...irc-version-detection-when-cross-com.patch | 51 + .../buildroot/package/lirc-tools/Config.in | 24 + .../buildroot/package/lirc-tools/S25lircd | 38 + .../package/lirc-tools/lirc-tools.hash | 5 + .../package/lirc-tools/lirc-tools.mk | 58 + .../package/lite/0001-dfbspy-stat.patch | 53 + .../package/lite/0002-no-tests.patch | 11 + .../package/lite/0003-pkg-config.patch | 22 + features/buildroot/package/lite/Config.in | 11 + features/buildroot/package/lite/lite.hash | 2 + features/buildroot/package/lite/lite.mk | 27 + ...config-file-for-the-shared-libraries.patch | 66 + features/buildroot/package/live555/Config.in | 12 + .../buildroot/package/live555/live555.hash | 3 + features/buildroot/package/live555/live555.mk | 55 + .../buildroot/package/ljlinenoise/Config.in | 13 + .../package/ljlinenoise/ljlinenoise.hash | 3 + .../package/ljlinenoise/ljlinenoise.mk | 11 + .../buildroot/package/ljsyscall/Config.in | 12 + .../package/ljsyscall/ljsyscall.hash | 2 + .../buildroot/package/ljsyscall/ljsyscall.mk | 42 + .../buildroot/package/lksctp-tools/Config.in | 17 + .../package/lksctp-tools/lksctp-tools.hash | 3 + .../package/lksctp-tools/lksctp-tools.mk | 22 + ...lation-with--enable-fdp--disable-cdp.patch | 36 + features/buildroot/package/lldpd/Config.in | 73 + features/buildroot/package/lldpd/S60lldpd | 25 + features/buildroot/package/lldpd/lldpd.hash | 3 + features/buildroot/package/lldpd/lldpd.mk | 74 + features/buildroot/package/llvm/Config.in | 48 + features/buildroot/package/llvm/llvm.hash | 3 + features/buildroot/package/llvm/llvm.mk | 288 + .../lm-sensors/0001-static-build.patch | 81 + .../lm-sensors/0002-no-host-ldconfig.patch | 29 + .../buildroot/package/lm-sensors/Config.in | 57 + .../package/lm-sensors/lm-sensors.hash | 4 + .../package/lm-sensors/lm-sensors.mk | 52 + ...-scripts-build-use-bin-bash-as-shell.patch | 28 + ...e-add-lmbench-to-list-of-executables.patch | 29 + features/buildroot/package/lmbench/Config.in | 14 + .../buildroot/package/lmbench/lmbench.hash | 2 + features/buildroot/package/lmbench/lmbench.mk | 42 + ...ACK-only-build-and-install-localedef.patch | 65 + .../localedef.hash | 7 + .../package/localedef/localedef.hash | 2 + .../buildroot/package/localedef/localedef.mk | 51 + ...-static-library-and-headers-separate.patch | 44 + features/buildroot/package/lockdev/Config.in | 6 + .../buildroot/package/lockdev/lockdev.hash | 3 + features/buildroot/package/lockdev/lockdev.mk | 58 + .../lockfile-progs/0001-sus3v-legacy.patch | 11 + .../package/lockfile-progs/Config.in | 5 + .../lockfile-progs/lockfile-progs.hash | 2 + .../package/lockfile-progs/lockfile-progs.mk | 28 + .../buildroot/package/log4cplus/Config.in | 21 + .../package/log4cplus/log4cplus.hash | 3 + .../buildroot/package/log4cplus/log4cplus.mk | 27 + features/buildroot/package/log4cpp/Config.in | 14 + .../buildroot/package/log4cpp/log4cpp.hash | 6 + features/buildroot/package/log4cpp/log4cpp.mk | 35 + .../package/log4cxx/0001-charset-fixes.patch | 43 + .../log4cxx/0002-missing-includes.patch | 44 + .../log4cxx/0003-missing-includes.patch | 21 + ...r-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch | 180 + ...fix-narrowing-conversion-compile-err.patch | 36 + features/buildroot/package/log4cxx/Config.in | 19 + .../buildroot/package/log4cxx/log4cxx.hash | 2 + features/buildroot/package/log4cxx/log4cxx.mk | 23 + .../buildroot/package/logrotate/Config.in | 13 + .../package/logrotate/logrotate.conf | 14 + .../package/logrotate/logrotate.hash | 3 + .../buildroot/package/logrotate/logrotate.mk | 36 + .../buildroot/package/logsurfer/Config.in | 8 + .../package/logsurfer/logsurfer.hash | 3 + .../buildroot/package/logsurfer/logsurfer.mk | 15 + .../package/lpc3250loader/Config.in.host | 7 + .../package/lpc3250loader/lpc3250loader.hash | 2 + .../package/lpc3250loader/lpc3250loader.mk | 17 + features/buildroot/package/lpeg/Config.in | 7 + features/buildroot/package/lpeg/lpeg.hash | 2 + features/buildroot/package/lpeg/lpeg.mk | 10 + features/buildroot/package/lpty/Config.in | 7 + features/buildroot/package/lpty/lpty.hash | 3 + features/buildroot/package/lpty/lpty.mk | 12 + features/buildroot/package/lrandom/Config.in | 7 + .../buildroot/package/lrandom/lrandom.hash | 2 + features/buildroot/package/lrandom/lrandom.mk | 11 + features/buildroot/package/lrzsz/Config.in | 16 + features/buildroot/package/lrzsz/lrzsz.hash | 2 + features/buildroot/package/lrzsz/lrzsz.mk | 35 + ...kefile-allow-to-pass-additional-LIBS.patch | 44 + ...x-musl-build-basename-is-in-libgen.h.patch | 78 + .../lshw/0003-Fix-use-of-LONG_BIT.patch | 36 + features/buildroot/package/lshw/Config.in | 16 + features/buildroot/package/lshw/lshw.hash | 2 + features/buildroot/package/lshw/lshw.mk | 30 + .../package/lsof/0001-makefile.patch | 14 + .../package/lsof/0002-noportmap.patch | 18 + .../package/lsof/0003-override-cflags.patch | 13 + .../lsof/0004-remove-susvlegacy-funcs.patch | 12 + features/buildroot/package/lsof/Config.in | 10 + features/buildroot/package/lsof/lsof.hash | 7 + features/buildroot/package/lsof/lsof.mk | 54 + features/buildroot/package/lsqlite3/Config.in | 7 + .../buildroot/package/lsqlite3/lsqlite3.hash | 2 + .../buildroot/package/lsqlite3/lsqlite3.mk | 12 + features/buildroot/package/lsscsi/Config.in | 6 + features/buildroot/package/lsscsi/lsscsi.hash | 3 + features/buildroot/package/lsscsi/lsscsi.mk | 13 + features/buildroot/package/lsuio/Config.in | 6 + features/buildroot/package/lsuio/lsuio.hash | 2 + features/buildroot/package/lsuio/lsuio.mk | 12 + ...ble-tirpc_auth_authdes_-create-tests.patch | 36 + .../buildroot/package/ltp-testsuite/Config.in | 26 + .../package/ltp-testsuite/ltp-testsuite.hash | 2 + .../package/ltp-testsuite/ltp-testsuite.mk | 77 + .../package/ltrace/0001-arm-plt.patch | 30 + ...-sparc-add-missing-library.h-include.patch | 36 + features/buildroot/package/ltrace/Config.in | 31 + features/buildroot/package/ltrace/ltrace.hash | 2 + features/buildroot/package/ltrace/ltrace.mk | 34 + .../package/ltris/0001-fix-gcc5-build.patch | 308 + features/buildroot/package/ltris/Config.in | 21 + features/buildroot/package/ltris/ltris.hash | 3 + features/buildroot/package/ltris/ltris.mk | 29 + ...efile.am-remove-unneeded-static-flag.patch | 36 + ...x_lib_elfutils.m4-add-cache-variable.patch | 77 + .../package/lttng-babeltrace/Config.in | 35 + .../package/lttng-babeltrace/Config.in.host | 14 + .../lttng-babeltrace/lttng-babeltrace.hash | 3 + .../lttng-babeltrace/lttng-babeltrace.mk | 32 + ...-disable-examples-option-to-not-buil.patch | 68 + .../buildroot/package/lttng-libust/Config.in | 21 + .../package/lttng-libust/lttng-libust.hash | 3 + .../package/lttng-libust/lttng-libust.mk | 29 + .../buildroot/package/lttng-modules/Config.in | 37 + .../package/lttng-modules/lttng-modules.hash | 3 + .../package/lttng-modules/lttng-modules.mk | 15 + .../buildroot/package/lttng-tools/Config.in | 32 + .../package/lttng-tools/lttng-tools.hash | 8 + .../package/lttng-tools/lttng-tools.mk | 23 + .../buildroot/package/lua-basexx/Config.in | 8 + .../package/lua-basexx/lua-basexx.hash | 3 + .../package/lua-basexx/lua-basexx.mk | 12 + .../package/lua-binaryheap/Config.in | 6 + .../lua-binaryheap/lua-binaryheap.hash | 2 + .../package/lua-binaryheap/lua-binaryheap.mk | 12 + .../buildroot/package/lua-bit32/Config.in | 8 + .../package/lua-bit32/lua-bit32.hash | 3 + .../buildroot/package/lua-bit32/lua-bit32.mk | 13 + .../buildroot/package/lua-cjson/Config.in | 15 + .../package/lua-cjson/lua-cjson.hash | 3 + .../buildroot/package/lua-cjson/lua-cjson.mk | 12 + features/buildroot/package/lua-coat/Config.in | 6 + .../buildroot/package/lua-coat/lua-coat.hash | 3 + .../buildroot/package/lua-coat/lua-coat.mk | 12 + .../package/lua-coatpersistent/Config.in | 12 + .../lua-coatpersistent.hash | 4 + .../lua-coatpersistent/lua-coatpersistent.mk | 17 + .../buildroot/package/lua-compat53/Config.in | 8 + .../package/lua-compat53/lua-compat53.hash | 3 + .../package/lua-compat53/lua-compat53.mk | 14 + .../buildroot/package/lua-cqueues/Config.in | 12 + .../package/lua-cqueues/lua-cqueues.hash | 2 + .../package/lua-cqueues/lua-cqueues.mk | 30 + .../buildroot/package/lua-csnappy/Config.in | 7 + .../package/lua-csnappy/lua-csnappy.hash | 3 + .../package/lua-csnappy/lua-csnappy.mk | 11 + features/buildroot/package/lua-curl/Config.in | 7 + .../buildroot/package/lua-curl/lua-curl.hash | 3 + .../buildroot/package/lua-curl/lua-curl.mk | 14 + .../buildroot/package/lua-datafile/Config.in | 7 + .../package/lua-datafile/lua-datafile.hash | 3 + .../package/lua-datafile/lua-datafile.mk | 13 + features/buildroot/package/lua-ev/Config.in | 7 + features/buildroot/package/lua-ev/lua-ev.hash | 2 + features/buildroot/package/lua-ev/lua-ev.mk | 14 + features/buildroot/package/lua-fifo/Config.in | 6 + .../buildroot/package/lua-fifo/lua-fifo.hash | 3 + .../buildroot/package/lua-fifo/lua-fifo.mk | 14 + features/buildroot/package/lua-flu/Config.in | 18 + .../buildroot/package/lua-flu/lua-flu.hash | 3 + features/buildroot/package/lua-flu/lua-flu.mk | 14 + ...ion-of-LgdImageCreateFromPng-with-GD.patch | 34 + features/buildroot/package/lua-gd/Config.in | 7 + features/buildroot/package/lua-gd/lua-gd.hash | 3 + features/buildroot/package/lua-gd/lua-gd.mk | 27 + features/buildroot/package/lua-http/Config.in | 19 + .../buildroot/package/lua-http/lua-http.hash | 3 + .../buildroot/package/lua-http/lua-http.mk | 14 + .../buildroot/package/lua-iconv/Config.in | 7 + .../package/lua-iconv/lua-iconv.hash | 3 + .../buildroot/package/lua-iconv/lua-iconv.mk | 12 + .../package/lua-lpeg-patterns/Config.in | 7 + .../lua-lpeg-patterns/lua-lpeg-patterns.hash | 3 + .../lua-lpeg-patterns/lua-lpeg-patterns.mk | 14 + .../buildroot/package/lua-lunitx/Config.in | 6 + .../package/lua-lunitx/lua-lunitx.hash | 3 + .../package/lua-lunitx/lua-lunitx.mk | 13 + .../buildroot/package/lua-markdown/Config.in | 7 + .../package/lua-markdown/lua-markdown.hash | 3 + .../package/lua-markdown/lua-markdown.mk | 13 + .../package/lua-messagepack/Config.in | 7 + .../lua-messagepack/lua-messagepack.hash | 4 + .../lua-messagepack/lua-messagepack.mk | 18 + .../package/lua-msgpack-native/Config.in | 12 + .../lua-msgpack-native.hash | 2 + .../lua-msgpack-native/lua-msgpack-native.mk | 22 + .../buildroot/package/lua-periphery/Config.in | 7 + .../package/lua-periphery/lua-periphery.hash | 3 + .../package/lua-periphery/lua-periphery.mk | 12 + .../package/lua-resty-http/Config.in | 6 + .../lua-resty-http/lua-resty-http.hash | 3 + .../package/lua-resty-http/lua-resty-http.mk | 12 + .../buildroot/package/lua-sailor/Config.in | 14 + .../package/lua-sailor/lua-sailor.hash | 3 + .../package/lua-sailor/lua-sailor.mk | 13 + ...reference-host-directory-for-headers.patch | 29 + .../0002-CMakeLists-do-not-require-C.patch | 58 + features/buildroot/package/lua-sdl2/Config.in | 12 + .../buildroot/package/lua-sdl2/lua-sdl2.hash | 2 + .../buildroot/package/lua-sdl2/lua-sdl2.mk | 39 + .../buildroot/package/lua-std-debug/Config.in | 7 + .../package/lua-std-debug/lua-std-debug.hash | 3 + .../package/lua-std-debug/lua-std-debug.mk | 16 + .../package/lua-std-normalize/Config.in | 12 + .../lua-std-normalize/lua-std-normalize.hash | 3 + .../lua-std-normalize/lua-std-normalize.mk | 14 + .../buildroot/package/lua-stdlib/Config.in | 9 + .../package/lua-stdlib/lua-stdlib.hash | 3 + .../package/lua-stdlib/lua-stdlib.mk | 14 + .../buildroot/package/lua-testmore/Config.in | 6 + .../package/lua-testmore/lua-testmore.hash | 3 + .../package/lua-testmore/lua-testmore.mk | 12 + features/buildroot/package/lua-utf8/Config.in | 7 + .../buildroot/package/lua-utf8/lua-utf8.hash | 2 + .../buildroot/package/lua-utf8/lua-utf8.mk | 12 + .../buildroot/package/lua-valua/Config.in | 9 + .../package/lua-valua/lua-valua.hash | 3 + .../buildroot/package/lua-valua/lua-valua.mk | 13 + .../package/lua/5.1.5/0001-root-path.patch | 30 + .../lua/5.1.5/0002-shared-libs-for-lua.patch | 78 + .../package/lua/5.1.5/0011-linenoise.patch | 24 + .../lua/5.1.5/0012-fix-reader-at-eoz.patch | 46 + .../package/lua/5.3.5/0001-root-path.patch | 17 + .../lua/5.3.5/0002-shared-libs-for-lua.patch | 78 + .../lua/5.3.5/0003-fix-revision-number.patch | 31 + .../package/lua/5.3.5/0011-linenoise.patch | 24 + features/buildroot/package/lua/Config.in | 68 + features/buildroot/package/lua/lua.hash | 6 + features/buildroot/package/lua/lua.mk | 100 + features/buildroot/package/lua/lua.pc.in | 26 + features/buildroot/package/luabitop/Config.in | 11 + .../buildroot/package/luabitop/luabitop.hash | 2 + .../buildroot/package/luabitop/luabitop.mk | 12 + .../package/luadbi-sqlite3/Config.in | 9 + .../luadbi-sqlite3/luadbi-sqlite3.hash | 3 + .../package/luadbi-sqlite3/luadbi-sqlite3.mk | 13 + features/buildroot/package/luadbi/Config.in | 10 + features/buildroot/package/luadbi/luadbi.hash | 3 + features/buildroot/package/luadbi/luadbi.mk | 12 + .../0001-restore-getcurrentbytecount.patch | 40 + features/buildroot/package/luaexpat/Config.in | 7 + .../buildroot/package/luaexpat/luaexpat.hash | 3 + .../buildroot/package/luaexpat/luaexpat.mk | 12 + .../buildroot/package/luaexpatutils/Config.in | 9 + .../package/luaexpatutils/luaexpatutils.hash | 2 + .../package/luaexpatutils/luaexpatutils.mk | 17 + .../buildroot/package/luafilesystem/Config.in | 7 + .../package/luafilesystem/luafilesystem.hash | 3 + .../package/luafilesystem/luafilesystem.mk | 12 + .../package/luainterpreter/Config.in | 13 + .../package/luainterpreter/luainterpreter.mk | 23 + .../package/luajit/0001-no-bin-symlink.patch | 26 + .../package/luajit/0002-install-inc.patch | 17 + features/buildroot/package/luajit/Config.in | 47 + features/buildroot/package/luajit/luajit.hash | 5 + features/buildroot/package/luajit/luajit.mk | 85 + features/buildroot/package/luajson/Config.in | 8 + .../buildroot/package/luajson/luajson.hash | 3 + features/buildroot/package/luajson/luajson.mk | 12 + .../buildroot/package/lualogging/Config.in | 9 + .../package/lualogging/lualogging.hash | 3 + .../package/lualogging/lualogging.mk | 12 + features/buildroot/package/luaossl/Config.in | 18 + .../buildroot/package/luaossl/luaossl.hash | 3 + features/buildroot/package/luaossl/luaossl.mk | 14 + features/buildroot/package/luaposix/Config.in | 14 + .../buildroot/package/luaposix/luaposix.hash | 2 + .../buildroot/package/luaposix/luaposix.mk | 30 + .../0001-allow-libluajit-detection.patch | 34 + .../buildroot/package/luarocks/buildroot.lua | 411 + .../package/luarocks/luarocks-br-config.lua | 13 + .../buildroot/package/luarocks/luarocks.hash | 3 + .../buildroot/package/luarocks/luarocks.mk | 58 + features/buildroot/package/luasec/Config.in | 9 + features/buildroot/package/luasec/luasec.hash | 3 + features/buildroot/package/luasec/luasec.mk | 14 + .../buildroot/package/luasocket/Config.in | 9 + .../package/luasocket/luasocket.hash | 3 + .../buildroot/package/luasocket/luasocket.mk | 12 + .../package/luasql-sqlite3/Config.in | 7 + .../luasql-sqlite3/luasql-sqlite3.hash | 3 + .../package/luasql-sqlite3/luasql-sqlite3.mk | 13 + .../luasyslog/0001-compat-Lua-5.3.patch | 52 + .../buildroot/package/luasyslog/Config.in | 7 + .../package/luasyslog/luasyslog.hash | 3 + .../buildroot/package/luasyslog/luasyslog.mk | 11 + .../0001-ImageIO-fix-invalid-conversion.patch | 35 + ...matched-usage-length-build-fail-on-g.patch | 58 + features/buildroot/package/lugaru/Config.in | 38 + features/buildroot/package/lugaru/lugaru.hash | 2 + features/buildroot/package/lugaru/lugaru.mk | 30 + features/buildroot/package/luksmeta/Config.in | 17 + .../buildroot/package/luksmeta/luksmeta.hash | 3 + .../buildroot/package/luksmeta/luksmeta.mk | 15 + features/buildroot/package/lutok/Config.in | 11 + features/buildroot/package/lutok/lutok.hash | 2 + features/buildroot/package/lutok/lutok.mk | 16 + features/buildroot/package/luv/Config.in | 16 + features/buildroot/package/luv/luv.hash | 3 + features/buildroot/package/luv/luv.mk | 29 + features/buildroot/package/luvi/Config.in | 33 + features/buildroot/package/luvi/luvi.hash | 3 + features/buildroot/package/luvi/luvi.mk | 62 + ...gure-Introduce-enable-symvers-option.patch | 278 + features/buildroot/package/lvm2/Config.in | 54 + features/buildroot/package/lvm2/lvm2.hash | 5 + features/buildroot/package/lvm2/lvm2.mk | 76 + features/buildroot/package/lxc/Config.in | 22 + features/buildroot/package/lxc/lxc.hash | 3 + features/buildroot/package/lxc/lxc.mk | 50 + features/buildroot/package/lynx/Config.in | 9 + features/buildroot/package/lynx/lynx.hash | 3 + features/buildroot/package/lynx/lynx.mk | 46 + features/buildroot/package/lz4/Config.in | 10 + features/buildroot/package/lz4/lz4.hash | 4 + features/buildroot/package/lz4/lz4.mk | 47 + features/buildroot/package/lzip/Config.in | 15 + features/buildroot/package/lzip/lzip.hash | 4 + features/buildroot/package/lzip/lzip.mk | 40 + features/buildroot/package/lzlib/Config.in | 10 + features/buildroot/package/lzlib/lzlib.hash | 2 + features/buildroot/package/lzlib/lzlib.mk | 14 + .../0001-Remove-static-from-LDFLAGS.patch | 68 + features/buildroot/package/lzma/lzma.hash | 2 + features/buildroot/package/lzma/lzma.mk | 13 + features/buildroot/package/lzo/Config.in | 6 + features/buildroot/package/lzo/lzo.hash | 4 + features/buildroot/package/lzo/lzo.mk | 29 + .../package/lzop/0001-build-with-gcc6.patch | 37 + ...es-as-the-external-inline-definition.patch | 102 + features/buildroot/package/lzop/Config.in | 9 + features/buildroot/package/lzop/lzop.hash | 2 + features/buildroot/package/lzop/lzop.mk | 17 + ...adjust-to-glibc-2.28-libio.h-removal.patch | 166 + ...e-more-paranoid-about-libio.h-change.patch | 151 + features/buildroot/package/m4/m4.hash | 4 + features/buildroot/package/m4/m4.mk | 14 + ...0001-Fix-missing-include-for-caddr_t.patch | 35 + .../buildroot/package/macchanger/Config.in | 7 + .../package/macchanger/macchanger.hash | 2 + .../package/macchanger/macchanger.mk | 12 + .../madplay/0001-switch-to-new-alsa-api.patch | 173 + .../0002-configure-ac-automake-foreign.patch | 16 + ...ure-ac-use-pkg-config-to-find-id3tag.patch | 23 + ...4-configure-ac-call-AM_MKINSTALLDIRS.patch | 23 + features/buildroot/package/madplay/Config.in | 21 + .../buildroot/package/madplay/madplay.hash | 4 + features/buildroot/package/madplay/madplay.mk | 26 + ...pport-GLIBC-glob-interface-version-2.patch | 31 + ...b-Do-not-assume-glibc-glob-internals.patch | 70 + features/buildroot/package/make/Config.in | 12 + features/buildroot/package/make/make.hash | 4 + features/buildroot/package/make/make.mk | 31 + features/buildroot/package/makedevs/README | 35 + .../buildroot/package/makedevs/makedevs.c | 647 ++ .../buildroot/package/makedevs/makedevs.mk | 27 + .../buildroot/package/mali-t76x/Config.in | 28 + features/buildroot/package/mali-t76x/egl.pc | 11 + .../buildroot/package/mali-t76x/glesv2.pc | 11 + .../package/mali-t76x/mali-t76x.hash | 2 + .../buildroot/package/mali-t76x/mali-t76x.mk | 27 + .../0001-add-extra-check-for-librt.patch | 27 + features/buildroot/package/mariadb/S97mysqld | 77 + .../buildroot/package/mariadb/mariadb.hash | 9 + features/buildroot/package/mariadb/mariadb.mk | 137 + .../buildroot/package/mariadb/mysqld.service | 13 + .../package/matchbox-common/Config.in | 10 + .../matchbox-common/matchbox-common.hash | 2 + .../matchbox-common/matchbox-common.mk | 21 + .../package/matchbox-desktop/Config.in | 6 + .../matchbox-desktop/matchbox-desktop.hash | 2 + .../matchbox-desktop/matchbox-desktop.mk | 28 + .../package/matchbox-fakekey/Config.in | 6 + .../matchbox-fakekey/matchbox-fakekey.hash | 2 + .../matchbox-fakekey/matchbox-fakekey.mk | 23 + .../package/matchbox-keyboard/Config.in | 8 + .../matchbox-keyboard/matchbox-keyboard.hash | 2 + .../matchbox-keyboard/matchbox-keyboard.mk | 32 + .../mb-applet-kbd-wrapper.sh | 8 + .../matchbox-lib/0001-index-is-legacy.patch | 35 + .../package/matchbox-lib/0002-libpng15.patch | 26 + .../matchbox-lib/0003-include-setjmp-h.patch | 17 + .../buildroot/package/matchbox-lib/Config.in | 5 + .../package/matchbox-lib/matchbox-lib.hash | 2 + .../package/matchbox-lib/matchbox-lib.mk | 59 + .../matchbox-panel/0001-index-is-legacy.patch | 20 + .../0002-mb-applet-wireless.patch | 34 + .../0003-mb-applet-battery.patch | 21 + .../package/matchbox-panel/Config.in | 6 + .../matchbox-panel/matchbox-panel.hash | 2 + .../package/matchbox-panel/matchbox-panel.mk | 35 + .../0001-true-false.patch | 21 + .../matchbox-startup-monitor/Config.in | 6 + .../matchbox-startup-monitor.hash | 2 + .../matchbox-startup-monitor.mk | 14 + .../package/matchbox/0001-defaulttheme.patch | 47 + features/buildroot/package/matchbox/Config.in | 35 + .../buildroot/package/matchbox/matchbox.hash | 2 + .../buildroot/package/matchbox/matchbox.mk | 46 + ...-PIC-inline-ASM-compilation-with-GCC.patch | 74 + ...-at-least-ARMv6-to-enable-the-ARM-DS.patch | 38 + features/buildroot/package/mbedtls/Config.in | 32 + .../buildroot/package/mbedtls/mbedtls.hash | 5 + features/buildroot/package/mbedtls/mbedtls.mk | 72 + features/buildroot/package/mc/Config.in | 19 + features/buildroot/package/mc/mc.hash | 4 + features/buildroot/package/mc/mc.mk | 39 + features/buildroot/package/mcelog/Config.in | 9 + features/buildroot/package/mcelog/mcelog.hash | 2 + features/buildroot/package/mcelog/mcelog.mk | 21 + .../package/mcrypt/0001-CVE-2012-4409.patch | 25 + .../package/mcrypt/0002-CVE-2012-4426.patch | 35 + .../package/mcrypt/0003-CVE-2012-4527.patch | 99 + .../package/mcrypt/0004-no-rpath.patch | 17 + features/buildroot/package/mcrypt/Config.in | 12 + features/buildroot/package/mcrypt/mcrypt.hash | 2 + features/buildroot/package/mcrypt/mcrypt.mk | 17 + ...-install-targets-for-mdadm-and-mdmon.patch | 32 + features/buildroot/package/mdadm/Config.in | 12 + features/buildroot/package/mdadm/mdadm.hash | 4 + features/buildroot/package/mdadm/mdadm.mk | 32 + ...mpilation-issue-with-latest-bctoobox.patch | 38 + ...FER_PADDING_SIZE-to-determine-paddin.patch | 64 + ...ffmpeg-and-avcodec-function-conflict.patch | 42 + .../buildroot/package/mediastreamer/Config.in | 17 + .../package/mediastreamer/mediastreamer.hash | 3 + .../package/mediastreamer/mediastreamer.mk | 113 + .../buildroot/package/memcached/Config.in | 15 + .../package/memcached/memcached.hash | 6 + .../buildroot/package/memcached/memcached.mk | 21 + .../package/memstat/0001-PATH_MAX.patch | 14 + features/buildroot/package/memstat/Config.in | 9 + .../buildroot/package/memstat/memstat.hash | 2 + features/buildroot/package/memstat/memstat.mk | 24 + .../buildroot/package/memtest86/Config.in | 29 + .../package/memtest86/memtest86.hash | 2 + .../buildroot/package/memtest86/memtest86.mk | 18 + .../package/memtester/0001-makefile-fix.patch | 23 + .../buildroot/package/memtester/Config.in | 7 + .../package/memtester/memtester.hash | 2 + .../buildroot/package/memtester/memtester.mk | 23 + features/buildroot/package/memtool/Config.in | 13 + .../buildroot/package/memtool/memtool.hash | 2 + features/buildroot/package/memtool/memtool.mk | 13 + .../package/mender-artifact/Config.in.host | 18 + .../mender-artifact/mender-artifact.hash | 29 + .../mender-artifact/mender-artifact.mk | 34 + .../package/mender-grubenv/Config.in | 43 + .../mender-grubenv/mender-grubenv.hash | 3 + .../package/mender-grubenv/mender-grubenv.mk | 53 + features/buildroot/package/mender/Config.in | 20 + features/buildroot/package/mender/S42mender | 56 + .../buildroot/package/mender/artifact_info | 1 + features/buildroot/package/mender/device_type | 1 + features/buildroot/package/mender/mender.conf | 10 + features/buildroot/package/mender/mender.hash | 43 + features/buildroot/package/mender/mender.mk | 83 + .../buildroot/package/mender/mender.service | 24 + features/buildroot/package/mender/readme.txt | 154 + features/buildroot/package/mender/server.crt | 22 + .../buildroot/package/menu-cache/Config.in | 16 + .../package/menu-cache/menu-cache.hash | 6 + .../package/menu-cache/menu-cache.mk | 16 + ...s-makes-opengl-an-optional-component.patch | 88 + .../buildroot/package/mesa3d-demos/Config.in | 12 + .../package/mesa3d-demos/mesa3d-demos.hash | 5 + .../package/mesa3d-demos/mesa3d-demos.mk | 80 + .../package/mesa3d-headers/Config.in | 9 + .../mesa3d-headers/mesa3d-headers.hash | 1 + .../package/mesa3d-headers/mesa3d-headers.mk | 80 + .../buildroot/package/mesa3d/0001-musl.patch | 38 + ...vert-order-for-wayland-scanner-check.patch | 51 + .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch | 37 + features/buildroot/package/mesa3d/Config.in | 312 + features/buildroot/package/mesa3d/mesa3d.hash | 7 + features/buildroot/package/mesa3d/mesa3d.mk | 251 + ...-RPATH-if-install_rpath-is-not-empty.patch | 36 + .../package/meson/cross-compilation.conf.in | 24 + features/buildroot/package/meson/meson.hash | 4 + features/buildroot/package/meson/meson.mk | 76 + .../metacity/0001-add-libm-reference.patch | 51 + .../package/metacity/0002-gconf.patch | 30 + .../0003-mag-add-libm-reference.patch | 45 + features/buildroot/package/metacity/Config.in | 16 + features/buildroot/package/metacity/Xsession | 6 + .../buildroot/package/metacity/metacity.hash | 2 + .../buildroot/package/metacity/metacity.mk | 41 + .../buildroot/package/mfgtools/Config.in.host | 14 + .../buildroot/package/mfgtools/mfgtools.hash | 4 + .../buildroot/package/mfgtools/mfgtools.mk | 34 + .../buildroot/package/mfgtools/readme.txt | 69 + .../package/micropython-lib/Config.in | 8 + .../micropython-lib/micropython-lib.hash | 2 + .../micropython-lib/micropython-lib.mk | 18 + .../micropython/0001-fix-version.patch | 22 + .../buildroot/package/micropython/Config.in | 14 + .../package/micropython/micropython.hash | 2 + .../package/micropython/micropython.mk | 42 + .../package/midori/0001-fix-bug-1492932.patch | 44 + .../midori/0002-gcr-for-x11-only.patch | 32 + features/buildroot/package/midori/Config.in | 28 + features/buildroot/package/midori/midori.hash | 2 + features/buildroot/package/midori/midori.mk | 34 + .../package/mii-diag/0001-strchr.patch | 23 + features/buildroot/package/mii-diag/Config.in | 5 + .../buildroot/package/mii-diag/mii-diag.hash | 3 + .../buildroot/package/mii-diag/mii-diag.mk | 32 + features/buildroot/package/mimic/Config.in | 41 + features/buildroot/package/mimic/mimic.hash | 2 + features/buildroot/package/mimic/mimic.mk | 29 + .../buildroot/package/minetest-game/Config.in | 7 + .../package/minetest-game/minetest-game.hash | 32 + .../package/minetest-game/minetest-game.mk | 46 + features/buildroot/package/minetest/Config.in | 66 + .../buildroot/package/minetest/minetest.hash | 4 + .../buildroot/package/minetest/minetest.mk | 92 + ...d-zero-byte-before-unsigned-integers.patch | 31 + ...igned-integers-to-have-an-extra-byte.patch | 28 + .../buildroot/package/mini-snmpd/Config.in | 7 + .../package/mini-snmpd/mini-snmpd.hash | 3 + .../package/mini-snmpd/mini-snmpd.mk | 21 + .../package/mini-snmpd/mini-snmpd.service | 12 + features/buildroot/package/minicom/Config.in | 16 + .../buildroot/package/minicom/minicom.hash | 3 + features/buildroot/package/minicom/minicom.mk | 25 + features/buildroot/package/minidlna/Config.in | 26 + .../buildroot/package/minidlna/S60minidlnad | 43 + .../buildroot/package/minidlna/minidlna.hash | 5 + .../buildroot/package/minidlna/minidlna.mk | 41 + .../package/minidlna/minidlnad.service | 11 + .../buildroot/package/minissdpd/Config.in | 9 + .../buildroot/package/minissdpd/S50minissdpd | 47 + .../package/minissdpd/minissdpd.hash | 3 + .../buildroot/package/minissdpd/minissdpd.mk | 40 + .../package/minissdpd/minissdpd.service | 12 + features/buildroot/package/minizip/Config.in | 18 + .../buildroot/package/minizip/minizip.hash | 3 + features/buildroot/package/minizip/minizip.mk | 41 + .../buildroot/package/miraclecast/Config.in | 22 + .../package/miraclecast/miraclecast.hash | 2 + .../package/miraclecast/miraclecast.mk | 23 + .../buildroot/package/mjpegtools/Config.in | 22 + .../package/mjpegtools/mjpegtools.hash | 3 + .../package/mjpegtools/mjpegtools.mk | 63 + .../buildroot/package/mjpg-streamer/Config.in | 18 + .../package/mjpg-streamer/mjpg-streamer.hash | 3 + .../package/mjpg-streamer/mjpg-streamer.mk | 46 + .../buildroot/package/mkpasswd/Config.in.host | 2 + features/buildroot/package/mkpasswd/config.h | 95 + .../buildroot/package/mkpasswd/mkpasswd.c | 461 + .../buildroot/package/mkpasswd/mkpasswd.mk | 24 + features/buildroot/package/mkpasswd/utils.c | 96 + features/buildroot/package/mkpasswd/utils.h | 56 + .../buildroot/package/mkpimage/mkpimage.c | 376 + .../buildroot/package/mkpimage/mkpimage.mk | 21 + features/buildroot/package/mksh/Config.in | 25 + features/buildroot/package/mksh/mksh.hash | 4 + features/buildroot/package/mksh/mksh.mk | 32 + .../mmc-utils/0001-fix-mmc-h-includes.patch | 41 + .../0002-fix-overlapping-with-strncpy.patch | 44 + .../buildroot/package/mmc-utils/Config.in | 10 + .../package/mmc-utils/mmc-utils.hash | 2 + .../buildroot/package/mmc-utils/mmc-utils.mk | 19 + features/buildroot/package/moarvm/Config.in | 29 + features/buildroot/package/moarvm/moarvm.hash | 3 + features/buildroot/package/moarvm/moarvm.mk | 52 + .../mobile-broadband-provider-info/Config.in | 6 + .../mobile-broadband-provider-info.hash | 4 + .../mobile-broadband-provider-info.mk | 15 + .../buildroot/package/modem-manager/Config.in | 32 + .../package/modem-manager/S44modem-manager | 43 + .../package/modem-manager/modem-manager.hash | 4 + .../package/modem-manager/modem-manager.mk | 42 + .../buildroot/package/modplugtools/Config.in | 14 + .../package/modplugtools/modplugtools.hash | 2 + .../package/modplugtools/modplugtools.mk | 20 + ...fix-build-with-gcc-7-and-fpermissive.patch | 55 + features/buildroot/package/mongodb/Config.in | 43 + .../buildroot/package/mongodb/mongodb.hash | 4 + features/buildroot/package/mongodb/mongodb.mk | 92 + features/buildroot/package/mongoose/Config.in | 13 + .../buildroot/package/mongoose/mongoose.hash | 3 + .../buildroot/package/mongoose/mongoose.mk | 34 + .../mongrel2/0002-Do-not-run-tests.patch | 43 + ...-Fix-Makefiles-for-cross-compilation.patch | 75 + ...04-Rename-symbol-to-prevent-conflict.patch | 45 + features/buildroot/package/mongrel2/Config.in | 32 + .../buildroot/package/mongrel2/mongrel2.hash | 2 + .../buildroot/package/mongrel2/mongrel2.mk | 41 + .../package/monit/0001-no-force-static.patch | 20 + features/buildroot/package/monit/Config.in | 16 + features/buildroot/package/monit/monit.hash | 4 + features/buildroot/package/monit/monit.mk | 37 + features/buildroot/package/monkey/Config.in | 24 + features/buildroot/package/monkey/monkey.hash | 4 + features/buildroot/package/monkey/monkey.mk | 39 + ...-MONO_PROFILE_ENTER_LEAVE-undeclared.patch | 28 + .../package/mono-gtksharp3/Config.in | 8 + .../mono-gtksharp3/mono-gtksharp3.hash | 2 + .../package/mono-gtksharp3/mono-gtksharp3.mk | 17 + ...le-backtrace-on-not-supported-uclibc.patch | 27 + ...ath-depending-on-C-library-being-use.patch | 34 + features/buildroot/package/mono/Config.in | 27 + features/buildroot/package/mono/mono.hash | 5 + features/buildroot/package/mono/mono.mk | 62 + .../buildroot/package/monolite/monolite.hash | 2 + .../buildroot/package/monolite/monolite.mk | 17 + features/buildroot/package/mosh/Config.in | 35 + features/buildroot/package/mosh/mosh.hash | 5 + features/buildroot/package/mosh/mosh.mk | 33 + .../buildroot/package/mosquitto/Config.in | 27 + .../buildroot/package/mosquitto/S50mosquitto | 35 + .../package/mosquitto/mosquitto.hash | 7 + .../buildroot/package/mosquitto/mosquitto.mk | 105 + .../package/mosquitto/mosquitto.service | 10 + features/buildroot/package/most/Config.in | 12 + features/buildroot/package/most/most.hash | 6 + features/buildroot/package/most/most.mk | 25 + features/buildroot/package/motion/Config.in | 18 + features/buildroot/package/motion/S99motion | 37 + features/buildroot/package/motion/motion.hash | 3 + features/buildroot/package/motion/motion.mk | 79 + .../buildroot/package/motion/motion.service | 10 + .../package/mp4v2/0001-Fix-GCC7-build.patch | 32 + features/buildroot/package/mp4v2/Config.in | 22 + features/buildroot/package/mp4v2/mp4v2.hash | 2 + features/buildroot/package/mp4v2/mp4v2.mk | 25 + features/buildroot/package/mpc/Config.in | 10 + features/buildroot/package/mpc/mpc.hash | 3 + features/buildroot/package/mpc/mpc.mk | 16 + features/buildroot/package/mpd-mpc/Config.in | 7 + .../buildroot/package/mpd-mpc/mpd-mpc.hash | 3 + features/buildroot/package/mpd-mpc/mpd-mpc.mk | 15 + features/buildroot/package/mpd/Config.in | 365 + features/buildroot/package/mpd/S95mpd | 33 + features/buildroot/package/mpd/mpd.conf | 32 + features/buildroot/package/mpd/mpd.hash | 3 + features/buildroot/package/mpd/mpd.mk | 303 + ...ort-for-enable-disable-shared-static.patch | 101 + .../buildroot/package/mpdecimal/Config.in | 10 + .../package/mpdecimal/mpdecimal.hash | 2 + .../buildroot/package/mpdecimal/mpdecimal.mk | 25 + features/buildroot/package/mpfr/Config.in | 8 + features/buildroot/package/mpfr/mpfr.hash | 5 + features/buildroot/package/mpfr/mpfr.mk | 18 + features/buildroot/package/mpg123/Config.in | 8 + features/buildroot/package/mpg123/mpg123.hash | 7 + features/buildroot/package/mpg123/mpg123.mk | 84 + ...iv.asm-workaround-binutils-bug-14887.patch | 40 + features/buildroot/package/mpir/Config.in | 8 + features/buildroot/package/mpir/mpir.hash | 2 + features/buildroot/package/mpir/mpir.mk | 39 + ...don-t-check-for-fork-on-POSIX-checks.patch | 31 + .../mpv/0002-fix-powerpc64-altivec.patch | 32 + .../mpv/0003-rpi-fix-linking-errors.patch | 90 + .../buildroot/package/mpv/0004-libva20.patch | 93 + features/buildroot/package/mpv/Config.in | 29 + features/buildroot/package/mpv/mpv.hash | 2 + features/buildroot/package/mpv/mpv.mk | 226 + features/buildroot/package/mraa/Config.in | 14 + features/buildroot/package/mraa/mraa.hash | 2 + features/buildroot/package/mraa/mraa.mk | 25 + features/buildroot/package/mrouted/Config.in | 7 + .../buildroot/package/mrouted/mrouted.hash | 3 + features/buildroot/package/mrouted/mrouted.mk | 27 + features/buildroot/package/msgpack/Config.in | 15 + .../buildroot/package/msgpack/msgpack.hash | 4 + features/buildroot/package/msgpack/msgpack.mk | 18 + features/buildroot/package/msmtp/Config.in | 8 + features/buildroot/package/msmtp/msmtp.hash | 6 + features/buildroot/package/msmtp/msmtp.mk | 53 + .../buildroot/package/msr-tools/Config.in | 14 + .../package/msr-tools/msr-tools.hash | 2 + .../buildroot/package/msr-tools/msr-tools.mk | 21 + features/buildroot/package/mtd/Config.in | 211 + features/buildroot/package/mtd/Config.in.host | 6 + features/buildroot/package/mtd/mtd.hash | 4 + features/buildroot/package/mtd/mtd.mk | 126 + features/buildroot/package/mtdev/Config.in | 7 + features/buildroot/package/mtdev/mtdev.hash | 2 + features/buildroot/package/mtdev/mtdev.mk | 15 + .../0001-Fix-build-with-musl-libc.patch | 30 + .../buildroot/package/mtdev2tuio/Config.in | 13 + .../package/mtdev2tuio/mtdev2tuio.hash | 2 + .../package/mtdev2tuio/mtdev2tuio.mk | 27 + features/buildroot/package/mtools/Config.in | 15 + .../buildroot/package/mtools/Config.in.host | 9 + features/buildroot/package/mtools/mtools.hash | 5 + features/buildroot/package/mtools/mtools.mk | 35 + features/buildroot/package/mtr/Config.in | 8 + features/buildroot/package/mtr/mtr.hash | 2 + features/buildroot/package/mtr/mtr.mk | 15 + features/buildroot/package/multicat/Config.in | 12 + .../buildroot/package/multicat/multicat.hash | 6 + .../buildroot/package/multicat/multicat.mk | 27 + .../buildroot/package/murata-cyw-fw/Config.in | 97 + .../package/murata-cyw-fw/murata-cyw-fw.hash | 5 + .../package/murata-cyw-fw/murata-cyw-fw.mk | 98 + .../package/musepack/0001-shared.patch | 24 + ...andard-CMake-flag-to-drive-the-share.patch | 43 + ...-include-fpu-control-with-glibc-only.patch | 26 + .../musepack/0004-missing-sys-select.patch | 21 + features/buildroot/package/musepack/Config.in | 12 + .../buildroot/package/musepack/musepack.hash | 4 + .../buildroot/package/musepack/musepack.mk | 16 + .../package/musl-compat-headers/Config.in | 2 + .../package/musl-compat-headers/cdefs.h | 51 + .../musl-compat-headers.hash | 2 + .../musl-compat-headers.mk | 34 + .../musl/0001-avoid-kernel-if_ether.h.patch | 30 + features/buildroot/package/musl/Config.in | 10 + features/buildroot/package/musl/musl.hash | 4 + features/buildroot/package/musl/musl.mk | 64 + ...-static-build-with-idn2-and-unistrin.patch | 37 + ...Fix-unistring-library-configure-test.patch | 49 + features/buildroot/package/mutt/Config.in | 27 + features/buildroot/package/mutt/mutt.hash | 3 + features/buildroot/package/mutt/mutt.mk | 80 + features/buildroot/package/mxml/Config.in | 6 + features/buildroot/package/mxml/mxml.hash | 4 + features/buildroot/package/mxml/mxml.mk | 16 + .../buildroot/package/mxsldr/Config.in.host | 9 + features/buildroot/package/mxsldr/mxsldr.mk | 21 + features/buildroot/package/mysql/Config.in | 86 + features/buildroot/package/mysql/mysql.mk | 7 + features/buildroot/package/nano/Config.in | 24 + features/buildroot/package/nano/nano.hash | 5 + features/buildroot/package/nano/nano.mk | 39 + features/buildroot/package/nanocom/Config.in | 12 + .../buildroot/package/nanocom/nanocom.hash | 2 + features/buildroot/package/nanocom/nanocom.mk | 22 + features/buildroot/package/nanomsg/Config.in | 23 + .../buildroot/package/nanomsg/nanomsg.hash | 5 + features/buildroot/package/nanomsg/nanomsg.mk | 24 + features/buildroot/package/nasm/nasm.hash | 3 + features/buildroot/package/nasm/nasm.mk | 13 + .../nbd/0001-avoid-name-clashing.patch | 28 + features/buildroot/package/nbd/Config.in | 35 + features/buildroot/package/nbd/nbd.hash | 7 + features/buildroot/package/nbd/nbd.mk | 37 + features/buildroot/package/ncdu/Config.in | 8 + features/buildroot/package/ncdu/ncdu.hash | 6 + features/buildroot/package/ncdu/ncdu.mk | 15 + features/buildroot/package/ncftp/Config.in | 34 + features/buildroot/package/ncftp/ncftp.hash | 2 + features/buildroot/package/ncftp/ncftp.mk | 56 + ...uild-add-atomic-dependency-for-sparc.patch | 43 + ...eson.build-link-with-lintl-if-needed.patch | 38 + features/buildroot/package/ncmpc/Config.in | 22 + features/buildroot/package/ncmpc/ncmpc.hash | 5 + features/buildroot/package/ncmpc/ncmpc.mk | 39 + .../ncurses/0001-gcc-5.x-MKlib_gen.patch | 44 + features/buildroot/package/ncurses/Config.in | 34 + .../buildroot/package/ncurses/ncurses.hash | 2 + features/buildroot/package/ncurses/ncurses.mk | 161 + features/buildroot/package/ndisc6/Config.in | 47 + features/buildroot/package/ndisc6/ndisc6.hash | 2 + features/buildroot/package/ndisc6/ndisc6.mk | 35 + ...on-t-hard-code-thumb-code-generation.patch | 29 + features/buildroot/package/ne10/Config.in | 17 + features/buildroot/package/ne10/ne10.hash | 2 + features/buildroot/package/ne10/ne10.mk | 39 + features/buildroot/package/neard/Config.in | 32 + features/buildroot/package/neard/S53neard | 29 + features/buildroot/package/neard/neard.hash | 2 + features/buildroot/package/neard/neard.mk | 32 + features/buildroot/package/neardal/Config.in | 26 + .../buildroot/package/neardal/neardal.hash | 3 + features/buildroot/package/neardal/neardal.mk | 32 + features/buildroot/package/neon/Config.in | 41 + features/buildroot/package/neon/neon.hash | 2 + features/buildroot/package/neon/neon.mk | 51 + .../buildroot/package/net-tools/Config.in | 10 + .../package/net-tools/net-tools.hash | 2 + .../buildroot/package/net-tools/net-tools.mk | 46 + ...ng-of-LD_LIBRARY_FLAGS-shlibpath_var.patch | 48 + features/buildroot/package/netatalk/Config.in | 21 + .../buildroot/package/netatalk/S50netatalk | 33 + .../buildroot/package/netatalk/netatalk.hash | 3 + .../buildroot/package/netatalk/netatalk.mk | 60 + .../package/netcat-openbsd/Config.in | 28 + .../netcat-openbsd/netcat-openbsd.hash | 3 + .../package/netcat-openbsd/netcat-openbsd.mk | 30 + .../netcat/0001-signed-bit-counting.patch | 30 + features/buildroot/package/netcat/Config.in | 15 + features/buildroot/package/netcat/netcat.hash | 2 + features/buildroot/package/netcat/netcat.mk | 12 + features/buildroot/package/netperf/Config.in | 6 + .../buildroot/package/netperf/netperf.hash | 2 + features/buildroot/package/netperf/netperf.mk | 25 + .../package/netplug/0001-makefile-flags.patch | 21 + .../0002-add-missing-time-include.patch | 20 + .../netplug/0003-remove-assert-fail.patch | 51 + features/buildroot/package/netplug/Config.in | 8 + features/buildroot/package/netplug/S29netplug | 70 + .../buildroot/package/netplug/netplug-script | 57 + .../buildroot/package/netplug/netplug.hash | 2 + features/buildroot/package/netplug/netplug.mk | 34 + .../buildroot/package/netplug/netplug.service | 10 + .../buildroot/package/netsniff-ng/Config.in | 35 + .../package/netsniff-ng/netsniff-ng.hash | 2 + .../package/netsniff-ng/netsniff-ng.mk | 61 + ...figure-static-linking-Fix-SSL-checks.patch | 142 + .../0002-configure-Fix-lcrypto-lz-test.patch | 41 + ..._CHECK_FUNCS-EVP_sha224-EVP_sha384-..patch | 39 + ..._CHECK_FUNCS-TLS_method-TLSv1_method.patch | 39 + features/buildroot/package/netsnmp/Config.in | 60 + features/buildroot/package/netsnmp/S59snmpd | 104 + .../buildroot/package/netsnmp/netsnmp.hash | 6 + features/buildroot/package/netsnmp/netsnmp.mk | 106 + .../buildroot/package/netstat-nat/Config.in | 6 + .../package/netstat-nat/netstat-nat.hash | 2 + .../package/netstat-nat/netstat-nat.mk | 12 + .../netsurf-buildsystem.hash | 2 + .../netsurf-buildsystem.mk | 20 + .../0001-avoid-system-perl-dependencies.patch | 29 + .../0003-do-not-cross-compile-nsgenbind.patch | 30 + .../0004-fix-compilation-without-curl.patch | 27 + features/buildroot/package/netsurf/Config.in | 56 + .../buildroot/package/netsurf/netsurf.hash | 3 + features/buildroot/package/netsurf/netsurf.mk | 114 + .../0001-disable-testsuite-examples.patch | 20 + features/buildroot/package/nettle/Config.in | 10 + features/buildroot/package/nettle/nettle.hash | 6 + features/buildroot/package/nettle/nettle.mk | 28 + .../package/network-manager/Config.in | 70 + .../network-manager/S45network-manager | 41 + .../network-manager/network-manager.hash | 5 + .../network-manager/network-manager.mk | 100 + features/buildroot/package/newt/Config.in | 16 + features/buildroot/package/newt/newt.hash | 2 + features/buildroot/package/newt/newt.mk | 19 + features/buildroot/package/nfacct/Config.in | 8 + features/buildroot/package/nfacct/nfacct.hash | 3 + features/buildroot/package/nfacct/nfacct.mk | 15 + .../0001-Patch-taken-from-Gentoo.patch | 60 + ...tch-legacy-index-in-favour-of-strchr.patch | 72 + ...e-script-find-getrpcbynumber-in-libt.patch | 46 + ...ntd-Add-check-for-struct-file_handle.patch | 46 + ...tils-add-missing-include-of-stdint.h.patch | 33 + ...de-sys-sysmacros.h-where-appropriate.patch | 50 + .../buildroot/package/nfs-utils/Config.in | 39 + features/buildroot/package/nfs-utils/S60nfs | 83 + .../package/nfs-utils/nfs-utils.hash | 2 + .../buildroot/package/nfs-utils/nfs-utils.mk | 124 + .../package/nfs-utils/nfs-utils_env.sh | 3 + .../package/nfs-utils/nfs-utils_tmpfiles.conf | 4 + features/buildroot/package/nftables/Config.in | 18 + .../buildroot/package/nftables/nftables.hash | 3 + .../buildroot/package/nftables/nftables.mk | 36 + features/buildroot/package/nghttp2/Config.in | 7 + .../buildroot/package/nghttp2/nghttp2.hash | 3 + features/buildroot/package/nghttp2/nghttp2.mk | 22 + .../buildroot/package/nginx-dav-ext/Config.in | 8 + .../package/nginx-dav-ext/nginx-dav-ext.hash | 3 + .../package/nginx-dav-ext/nginx-dav-ext.mk | 13 + .../buildroot/package/nginx-naxsi/Config.in | 29 + .../package/nginx-naxsi/nginx-naxsi.hash | 3 + .../package/nginx-naxsi/nginx-naxsi.mk | 12 + ...ad-module-add-openssl-lib-dependency.patch | 56 + .../buildroot/package/nginx-upload/Config.in | 9 + .../package/nginx-upload/nginx-upload.hash | 2 + .../package/nginx-upload/nginx-upload.mk | 13 + ...-rework-autotest-to-be-cross-compila.patch | 89 + ...-mechanism-allowing-to-force-feature.patch | 135 + ...ture_run_force_result-for-each-featu.patch | 213 + ...auto-lib-libxslt-conf-use-pkg-config.patch | 34 + ...ake-sys_nerr-guessing-cross-friendly.patch | 138 + ...auto-lib-openssl-conf-use-pkg-config.patch | 251 + ...7-auto-lib-libgd-conf-use-pkg-config.patch | 33 + ...linux_config.h-only-include-dlfcn.h-.patch | 33 + features/buildroot/package/nginx/Config.in | 383 + features/buildroot/package/nginx/S50nginx | 31 + features/buildroot/package/nginx/nginx.hash | 4 + .../buildroot/package/nginx/nginx.logrotate | 9 + features/buildroot/package/nginx/nginx.mk | 296 + .../buildroot/package/nginx/nginx.service | 16 + features/buildroot/package/ngircd/Config.in | 7 + features/buildroot/package/ngircd/ngircd.hash | 3 + features/buildroot/package/ngircd/ngircd.mk | 40 + ...nfigure-in-when-testing-for-use_pcre.patch | 25 + ...heck-for-libnet_init-in-configure-in.patch | 28 + .../ngrep/0003-fix-disable-tcpkill.patch | 39 + features/buildroot/package/ngrep/Config.in | 8 + features/buildroot/package/ngrep/ngrep.hash | 3 + features/buildroot/package/ngrep/ngrep.mk | 34 + ...001-nilfs-utils-use-_POSIX_MAX_INPUT.patch | 32 + ...0002-nilfs_cleanerd-link-dynamically.patch | 32 + ...mount.nilfs-drop-include-rpc-types.h.patch | 32 + ..._CHECK_MODULES-for-libmount-and-libb.patch | 141 + .../buildroot/package/nilfs-utils/Config.in | 16 + .../package/nilfs-utils/nilfs-utils.hash | 3 + .../package/nilfs-utils/nilfs-utils.mk | 25 + features/buildroot/package/ninja/ninja.hash | 3 + features/buildroot/package/ninja/ninja.mk | 27 + features/buildroot/package/nload/Config.in | 15 + features/buildroot/package/nload/nload.hash | 3 + features/buildroot/package/nload/nload.mk | 13 + .../nmap/0001-libdnet-wrapper-configure.patch | 11 + features/buildroot/package/nmap/Config.in | 60 + features/buildroot/package/nmap/nmap.hash | 4 + features/buildroot/package/nmap/nmap.mk | 87 + features/buildroot/package/nmon/Config.in | 11 + features/buildroot/package/nmon/nmon.hash | 5 + features/buildroot/package/nmon/nmon.mk | 28 + ...heck-if-uclibc-has-backtrace-support.patch | 26 + features/buildroot/package/nodejs/Config.in | 82 + features/buildroot/package/nodejs/nodejs.hash | 5 + features/buildroot/package/nodejs/nodejs.mk | 203 + features/buildroot/package/nodm/Config.in | 24 + features/buildroot/package/nodm/S90nodm | 49 + features/buildroot/package/nodm/nodm.hash | 2 + features/buildroot/package/nodm/nodm.mk | 34 + features/buildroot/package/nodm/nodm.pam | 14 + features/buildroot/package/noip/Config.in | 7 + features/buildroot/package/noip/noip.hash | 2 + features/buildroot/package/noip/noip.mk | 23 + ...01-protolib-drop-linux-version-check.patch | 38 + features/buildroot/package/norm/Config.in | 15 + features/buildroot/package/norm/norm.hash | 3 + features/buildroot/package/norm/norm.mk | 24 + features/buildroot/package/nss-mdns/Config.in | 19 + .../buildroot/package/nss-mdns/nss-mdns.hash | 2 + .../buildroot/package/nss-mdns/nss-mdns.mk | 20 + .../package/nss-myhostname/Config.in | 12 + .../nss-myhostname/nss-myhostname.hash | 3 + .../package/nss-myhostname/nss-myhostname.mk | 20 + .../buildroot/package/nss-pam-ldapd/Config.in | 25 + .../buildroot/package/nss-pam-ldapd/S45nslcd | 25 + .../package/nss-pam-ldapd/nslcd.service | 11 + .../package/nss-pam-ldapd/nss-pam-ldapd.hash | 4 + .../package/nss-pam-ldapd/nss-pam-ldapd.mk | 46 + features/buildroot/package/ntfs-3g/Config.in | 36 + .../buildroot/package/ntfs-3g/ntfs-3g.hash | 2 + features/buildroot/package/ntfs-3g/ntfs-3g.mk | 35 + .../buildroot/package/ntp/0001-nano.patch | 28 + .../ntp/0002-ntp-syscalls-fallback.patch | 27 + features/buildroot/package/ntp/Config.in | 101 + features/buildroot/package/ntp/S48sntp | 55 + features/buildroot/package/ntp/S49ntp | 34 + features/buildroot/package/ntp/ntp.hash | 5 + features/buildroot/package/ntp/ntp.mk | 122 + features/buildroot/package/ntp/ntpd.etc.conf | 10 + features/buildroot/package/ntp/ntpd.service | 11 + features/buildroot/package/numactl/Config.in | 12 + .../buildroot/package/numactl/numactl.hash | 3 + features/buildroot/package/numactl/numactl.mk | 14 + ...ze-path-to-gdlib-config-and-net-snmp.patch | 153 + .../0002-client-ups-add-missing-include.patch | 29 + ...Add-compatibility-with-openssl-1.1.0.patch | 76 + features/buildroot/package/nut/Config.in | 27 + features/buildroot/package/nut/nut.hash | 2 + features/buildroot/package/nut/nut.mk | 95 + .../package/nuttcp/0001-susv3-legacy.patch | 264 + features/buildroot/package/nuttcp/Config.in | 7 + features/buildroot/package/nuttcp/nuttcp.hash | 2 + features/buildroot/package/nuttcp/nuttcp.mk | 23 + .../nvidia-driver/0001-use-LDFLAGS.patch | 48 + .../buildroot/package/nvidia-driver/Config.in | 93 + .../buildroot/package/nvidia-driver/egl.pc | 10 + .../buildroot/package/nvidia-driver/gl.pc | 11 + .../package/nvidia-driver/nvidia-driver.hash | 4 + .../package/nvidia-driver/nvidia-driver.mk | 198 + .../package/nvidia-tegra23/Config.in | 38 + .../nvidia-tegra23-binaries/Config.in | 42 + .../nvidia-tegra23-binaries/egl.pc | 10 + .../nvidia-tegra23-binaries/gles.pc | 10 + .../nvidia-tegra23-binaries/glesv2.pc | 10 + .../nvidia-tegra23-binaries.hash | 3 + .../nvidia-tegra23-binaries.mk | 95 + .../nvidia-tegra23-codecs/Config.in | 7 + .../nvidia-tegra23-codecs.hash | 3 + .../nvidia-tegra23-codecs.mk | 32 + .../package/nvidia-tegra23/nvidia-tegra23.mk | 18 + .../nvme/0001-Fix-CFLAGS-parameter.patch | 39 + features/buildroot/package/nvme/Config.in | 7 + features/buildroot/package/nvme/nvme.hash | 3 + features/buildroot/package/nvme/nvme.mk | 31 + .../package/obsidian-cursors/Config.in | 6 + .../obsidian-cursors/obsidian-cursors.hash | 2 + .../obsidian-cursors/obsidian-cursors.mk | 18 + .../package/ocf-linux/ocf-linux.hash | 2 + .../buildroot/package/ocf-linux/ocf-linux.mk | 26 + features/buildroot/package/ocrad/Config.in | 14 + features/buildroot/package/ocrad/ocrad.hash | 3 + features/buildroot/package/ocrad/ocrad.mk | 32 + features/buildroot/package/odhcp6c/Config.in | 8 + .../buildroot/package/odhcp6c/odhcp6c.hash | 3 + features/buildroot/package/odhcp6c/odhcp6c.mk | 26 + features/buildroot/package/odhcploc/Config.in | 8 + .../buildroot/package/odhcploc/odhcploc.hash | 2 + .../buildroot/package/odhcploc/odhcploc.mk | 20 + .../buildroot/package/odroid-mali/Config.in | 34 + .../package/odroid-mali/odroid-mali.hash | 2 + .../package/odroid-mali/odroid-mali.mk | 52 + .../package/odroid-scripts/Config.in | 9 + .../package/odroid-scripts/S02odroidc2_fb | 20 + .../odroid-scripts/odroid-scripts.hash | 2 + .../package/odroid-scripts/odroid-scripts.mk | 36 + .../package/ofono/0001-uclibc-backtrace.patch | 49 + .../package/ofono/0002-fix-musl-compile.patch | 37 + ...Add-check-for-explicit_bzero-support.patch | 28 + features/buildroot/package/ofono/Config.in | 22 + features/buildroot/package/ofono/S46ofono | 22 + features/buildroot/package/ofono/ofono.hash | 4 + features/buildroot/package/ofono/ofono.mk | 55 + .../olsr/0001-configurable-ldconfig.patch | 33 + features/buildroot/package/olsr/Config.in | 22 + features/buildroot/package/olsr/S50olsr | 23 + features/buildroot/package/olsr/olsr.hash | 2 + features/buildroot/package/olsr/olsr.mk | 51 + features/buildroot/package/olsr/olsr.service | 10 + .../package/omap-u-boot-utils/Config.in.host | 9 + .../omap-u-boot-utils/omap-u-boot-utils.hash | 2 + .../omap-u-boot-utils/omap-u-boot-utils.mk | 22 + features/buildroot/package/omniorb/Config.in | 28 + .../buildroot/package/omniorb/omniorb.hash | 3 + features/buildroot/package/omniorb/omniorb.mk | 75 + ...file-to-be-compatible-with-buildroot.patch | 39 + .../buildroot/package/omxplayer/Config.in | 34 + .../package/omxplayer/omxplayer.hash | 6 + .../buildroot/package/omxplayer/omxplayer.mk | 39 + .../buildroot/package/on2-8170-libs/Config.in | 15 + .../package/on2-8170-libs/on2-8170-libs.hash | 2 + .../package/on2-8170-libs/on2-8170-libs.mk | 26 + .../package/on2-8170-modules/Config.in | 13 + .../on2-8170-modules/on2-8170-modules.hash | 2 + .../on2-8170-modules/on2-8170-modules.mk | 14 + .../buildroot/package/oniguruma/Config.in | 9 + .../package/oniguruma/oniguruma.hash | 3 + .../buildroot/package/oniguruma/oniguruma.mk | 15 + ...tool-fixed-compile-error-for-getline.patch | 27 + ...tions-work-with-both-gnu11-and-gnu89.patch | 73 + .../0003-Makefile.am-disable-Werror.patch | 38 + .../0004-fixed-unknown-type-pid_t.patch | 41 + .../buildroot/package/open-lldp/Config.in | 16 + .../package/open-lldp/open-lldp.hash | 3 + .../buildroot/package/open-lldp/open-lldp.mk | 24 + ...NER-and-GROUPS-parameters-to-install.patch | 298 + .../package/open-plc-utils/Config.in | 7 + .../open-plc-utils/open-plc-utils.hash | 2 + .../package/open-plc-utils/open-plc-utils.mk | 32 + .../package/open2300/0001-fix-makefile.patch | 52 + features/buildroot/package/open2300/Config.in | 7 + .../buildroot/package/open2300/open2300.mk | 42 + features/buildroot/package/openal/Config.in | 32 + features/buildroot/package/openal/openal.hash | 2 + features/buildroot/package/openal/openal.mk | 53 + ...0001-Makefile.arm-remove-march-flags.patch | 55 + ...-argument-of-CPU_ISSET-for-glibc-2-5.patch | 36 + features/buildroot/package/openblas/Config.in | 76 + .../buildroot/package/openblas/openblas.hash | 3 + .../buildroot/package/openblas/openblas.mk | 72 + features/buildroot/package/openbox/Config.in | 27 + .../buildroot/package/openbox/openbox.hash | 2 + features/buildroot/package/openbox/openbox.mk | 61 + .../buildroot/package/opencore-amr/Config.in | 12 + .../package/opencore-amr/opencore-amr.hash | 6 + .../package/opencore-amr/opencore-amr.mk | 13 + .../package/opencv/0001-atomic.patch | 259 + ...o-not-add-libdl-to-LINKER_LIBS-for-s.patch | 39 + features/buildroot/package/opencv/Config.in | 297 + features/buildroot/package/opencv/opencv.hash | 3 + features/buildroot/package/opencv/opencv.mk | 261 + features/buildroot/package/opencv3/Config.in | 338 + .../buildroot/package/opencv3/opencv3.hash | 3 + features/buildroot/package/opencv3/opencv3.mk | 370 + features/buildroot/package/opengl/Config.in | 6 + .../buildroot/package/opengl/libegl/Config.in | 10 + .../buildroot/package/opengl/libegl/libegl.mk | 7 + .../buildroot/package/opengl/libgl/Config.in | 6 + .../buildroot/package/opengl/libgl/libgl.mk | 7 + .../package/opengl/libgles/Config.in | 6 + .../package/opengl/libgles/libgles.mk | 7 + .../package/opengl/libopencl/Config.in | 6 + .../package/opengl/libopencl/libopencl.mk | 7 + .../package/opengl/libopenmax/Config.in | 6 + .../package/opengl/libopenmax/libopenmax.mk | 7 + .../package/opengl/libopenvg/Config.in | 6 + .../package/opengl/libopenvg/libopenvg.mk | 7 + features/buildroot/package/opengl/opengl.mk | 1 + ...01-Avoid-searching-host-library-path.patch | 52 + features/buildroot/package/openipmi/Config.in | 18 + .../buildroot/package/openipmi/openipmi.hash | 4 + .../buildroot/package/openipmi/openipmi.mk | 41 + .../package/openjdk-bin/openjdk-bin.hash | 6 + .../package/openjdk-bin/openjdk-bin.mk | 26 + features/buildroot/package/openjdk/Config.in | 98 + .../buildroot/package/openjdk/openjdk.hash | 3 + features/buildroot/package/openjdk/openjdk.mk | 122 + ...append-flags-found-by-pkg-config-if-.patch | 72 + ...-append-flags-found-by-pkg-config-if.patch | 49 + ...Lists.txt-Don-t-require-a-C-compiler.patch | 34 + features/buildroot/package/openjpeg/Config.in | 7 + .../buildroot/package/openjpeg/openjpeg.hash | 3 + .../buildroot/package/openjpeg/openjpeg.mk | 24 + .../openldap/0001-fix_cross_strip.patch | 74 + .../package/openldap/0002-fix-bignum.patch | 38 + .../package/openldap/0003-disable-docs.patch | 23 + ...fix-libtool-static-behavior-to-match.patch | 56 + features/buildroot/package/openldap/Config.in | 27 + .../buildroot/package/openldap/openldap.hash | 7 + .../buildroot/package/openldap/openldap.mk | 72 + features/buildroot/package/openmpi/Config.in | 20 + .../openmpi/openmpi-mips32-fortran.cache | 51 + .../openmpi/openmpi-mips64-fortran.cache | 60 + .../buildroot/package/openmpi/openmpi.hash | 6 + features/buildroot/package/openmpi/openmpi.mk | 49 + .../package/openntpd/0001-fix-musl.patch | 38 + features/buildroot/package/openntpd/Config.in | 20 + features/buildroot/package/openntpd/S49ntp | 24 + .../buildroot/package/openntpd/ntpd.service | 11 + .../buildroot/package/openntpd/openntpd.hash | 5 + .../buildroot/package/openntpd/openntpd.mk | 41 + features/buildroot/package/openobex/Config.in | 7 + .../buildroot/package/openobex/openobex.hash | 6 + .../buildroot/package/openobex/openobex.mk | 34 + ...configuration-to-force-static-librar.patch | 27 + ...02-configure-enable-build-on-uclinux.patch | 26 + ...event-some-forms-of-Cross-Protocol-S.patch | 50 + features/buildroot/package/openocd/Config.in | 217 + .../buildroot/package/openocd/Config.in.host | 6 + .../buildroot/package/openocd/openocd.hash | 4 + features/buildroot/package/openocd/openocd.mk | 126 + ...nerator.py-make-it-python3-compliant.patch | 42 + .../package/openpgm/0002-cross-compile.patch | 38 + ...includes-to-fix-build-with-musl-libc.patch | 55 + features/buildroot/package/openpgm/Config.in | 20 + .../buildroot/package/openpgm/openpgm.hash | 2 + features/buildroot/package/openpgm/openpgm.mk | 28 + ...-stack-libraries-to-lib-subdirectory.patch | 167 + ...002-cmake-install-oplk-headers-files.patch | 32 + .../0003-Add-top-level-CMakeLists.txt.patch | 201 + .../buildroot/package/openpowerlink/Config.in | 128 + .../package/openpowerlink/openpowerlink.hash | 5 + .../package/openpowerlink/openpowerlink.mk | 153 + ...tl.in-add-support-for-busybox-sysctl.patch | 66 + ....in-change-run-lock-from-root-uucp-t.patch | 34 + features/buildroot/package/openrc/Config.in | 26 + features/buildroot/package/openrc/openrc.hash | 3 + features/buildroot/package/openrc/openrc.mk | 45 + .../buildroot/package/openresolv/Config.in | 8 + .../package/openresolv/openresolv.hash | 3 + .../package/openresolv/openresolv.mk | 24 + features/buildroot/package/openssh/Config.in | 11 + features/buildroot/package/openssh/S50sshd | 47 + .../buildroot/package/openssh/openssh.hash | 4 + features/buildroot/package/openssh/openssh.mk | 94 + .../package/openssh/sshd-sysusers.conf | 1 + .../buildroot/package/openssh/sshd.service | 11 + features/buildroot/package/openssl/Config.in | 86 + features/buildroot/package/openssl/openssl.mk | 8 + features/buildroot/package/openswan/Config.in | 16 + .../buildroot/package/openswan/openswan.hash | 4 + .../buildroot/package/openswan/openswan.mk | 41 + .../package/opentracing-cpp/Config.in | 18 + .../opentracing-cpp/opentracing-cpp.hash | 3 + .../opentracing-cpp/opentracing-cpp.mk | 25 + .../package/opentyrian-data/Config.in | 9 + .../opentyrian-data/opentyrian-data.hash | 2 + .../opentyrian-data/opentyrian-data.mk | 23 + .../buildroot/package/opentyrian/Config.in | 24 + .../package/opentyrian/opentyrian.mk | 36 + .../openvmtools/0001-no_cflags_werror.patch | 18 + .../0002-dont-force-cppflags.patch | 21 + .../buildroot/package/openvmtools/Config.in | 69 + .../buildroot/package/openvmtools/S10vmtoolsd | 33 + .../package/openvmtools/openvmtools.hash | 3 + .../package/openvmtools/openvmtools.mk | 87 + .../buildroot/package/openvmtools/shutdown | 7 + .../package/openvmtools/vmtoolsd.service | 14 + features/buildroot/package/openvpn/Config.in | 38 + features/buildroot/package/openvpn/S60openvpn | 99 + .../buildroot/package/openvpn/openvpn.hash | 3 + features/buildroot/package/openvpn/openvpn.mk | 51 + ...ilers-Get-it-Some-need-a-little-help.patch | 26 + .../openzwave/0002-update-spec-files.patch | 445 + .../buildroot/package/openzwave/Config.in | 18 + .../package/openzwave/openzwave.hash | 6 + .../buildroot/package/openzwave/openzwave.mk | 59 + .../package/opkg-utils/Config.in.host | 6 + .../package/opkg-utils/opkg-utils.hash | 2 + .../package/opkg-utils/opkg-utils.mk | 21 + features/buildroot/package/opkg/Config.in | 33 + features/buildroot/package/opkg/opkg.hash | 4 + features/buildroot/package/opkg/opkg.mk | 32 + .../package/oprofile/0001-musl.patch | 48 + features/buildroot/package/oprofile/Config.in | 49 + .../buildroot/package/oprofile/oprofile.hash | 6 + .../buildroot/package/oprofile/oprofile.mk | 63 + .../package/optee-benchmark/Config.in | 17 + .../optee-benchmark/optee-benchmark.hash | 4 + .../optee-benchmark/optee-benchmark.mk | 14 + .../buildroot/package/optee-client/Config.in | 17 + .../buildroot/package/optee-client/S30optee | 49 + .../package/optee-client/optee-client.hash | 4 + .../package/optee-client/optee-client.mk | 18 + .../package/optee-examples/Config.in | 23 + .../optee-examples/optee-examples.hash | 4 + .../package/optee-examples/optee-examples.mk | 31 + ...prevent-unsafe-loop-optimizations-bu.patch | 63 + .../buildroot/package/optee-test/Config.in | 27 + .../package/optee-test/optee-test.hash | 4 + .../package/optee-test/optee-test.mk | 33 + .../buildroot/package/opus-tools/Config.in | 12 + .../package/opus-tools/opus-tools.hash | 5 + .../package/opus-tools/opus-tools.mk | 30 + features/buildroot/package/opus/Config.in | 26 + features/buildroot/package/opus/opus.hash | 5 + features/buildroot/package/opus/opus.mk | 31 + features/buildroot/package/opusfile/Config.in | 9 + .../buildroot/package/opusfile/opusfile.hash | 5 + .../buildroot/package/opusfile/opusfile.mk | 25 + .../oracle-mysql/0000-ac_cache_check.patch | 156 + .../0001-configure-ps-cache-check.patch | 39 + .../0002-use-new-readline-iface.patch | 21 + .../0003-ac_stack_direction-is-unset.patch | 15 + .../0004-Fix-gen_lex_hash-execution.patch | 32 + ...05-bison_3_breaks_mysql_server_build.patch | 3310 +++++++ .../0006-no-force-static-build.patch | 18 + ...0007-dont-install-in-mysql-directory.patch | 182 + .../0008-fix-type-conversion.patch | 22 + .../package/oracle-mysql/0008-gcc7.patch | 45 + .../buildroot/package/oracle-mysql/S97mysqld | 39 + .../package/oracle-mysql/mysqld.service | 13 + .../package/oracle-mysql/oracle-mysql.hash | 4 + .../package/oracle-mysql/oracle-mysql.mk | 136 + features/buildroot/package/orbit/Config.in | 15 + features/buildroot/package/orbit/orbit.hash | 4 + features/buildroot/package/orbit/orbit.mk | 14 + features/buildroot/package/orc/Config.in | 13 + features/buildroot/package/orc/orc.hash | 5 + features/buildroot/package/orc/orc.mk | 27 + features/buildroot/package/ortp/Config.in | 12 + features/buildroot/package/ortp/ortp.hash | 2 + features/buildroot/package/ortp/ortp.mk | 16 + ...01-include-sys-sysmacros.h-for-major.patch | 50 + features/buildroot/package/owfs/Config.in | 16 + features/buildroot/package/owfs/S55owserver | 31 + features/buildroot/package/owfs/S60owfs | 33 + features/buildroot/package/owfs/owfs.hash | 7 + features/buildroot/package/owfs/owfs.mk | 110 + .../owl-linux/0001-fix-for-linux-3.3.x.patch | 21 + .../buildroot/package/owl-linux/Config.in | 20 + .../package/owl-linux/owl-linux.hash | 2 + .../buildroot/package/owl-linux/owl-linux.mk | 14 + ...ainst-older-pthreads-implementations.patch | 64 + features/buildroot/package/p11-kit/Config.in | 17 + .../buildroot/package/p11-kit/p11-kit.hash | 4 + features/buildroot/package/p11-kit/p11-kit.mk | 23 + features/buildroot/package/p7zip/Config.in | 15 + features/buildroot/package/p7zip/p7zip.hash | 5 + features/buildroot/package/p7zip/p7zip.mk | 27 + features/buildroot/package/p910nd/Config.in | 9 + features/buildroot/package/p910nd/p910nd.hash | 2 + features/buildroot/package/p910nd/p910nd.mk | 21 + .../buildroot/package/paho-mqtt-c/Config.in | 11 + .../package/paho-mqtt-c/paho-mqtt-c.hash | 4 + .../package/paho-mqtt-c/paho-mqtt-c.mk | 20 + .../buildroot/package/paho-mqtt-cpp/Config.in | 19 + .../package/paho-mqtt-cpp/paho-mqtt-cpp.hash | 4 + .../package/paho-mqtt-cpp/paho-mqtt-cpp.mk | 25 + .../buildroot/package/pamtester/Config.in | 15 + .../package/pamtester/pamtester.hash | 3 + .../buildroot/package/pamtester/pamtester.mk | 13 + ...01-build-disable-tests-from-building.patch | 41 + ...rtion-with-invalid-Unicode-sequences.patch | 38 + .../package/pango/0002-no-gtk-doc.patch | 25 + features/buildroot/package/pango/Config.in | 29 + features/buildroot/package/pango/pango.hash | 3 + features/buildroot/package/pango/pango.mk | 48 + features/buildroot/package/pangomm/Config.in | 22 + .../buildroot/package/pangomm/pangomm.hash | 2 + features/buildroot/package/pangomm/pangomm.mk | 16 + ...inux.c-Compile-without-ENABLE_DEVICE.patch | 79 + ...2-configure.ac-uclinux-is-also-linux.patch | 33 + ...ude-fcntl.h-to-get-loff_t-definition.patch | 29 + ...-labels-link-with-libiconv-if-needed.patch | 54 + ...lude-sys-sysmacros.h-for-major-macro.patch | 27 + features/buildroot/package/parted/Config.in | 12 + .../buildroot/package/parted/Config.in.host | 6 + features/buildroot/package/parted/parted.hash | 5 + features/buildroot/package/parted/parted.mk | 47 + ...x-segfault-with-mangled-rename-patch.patch | 33 + ...s-to-be-missing-for-ed-style-patches.patch | 37 + ...mmand-execution-in-ed-style-patches-.patch | 157 + features/buildroot/package/patch/Config.in | 15 + features/buildroot/package/patch/patch.hash | 4 + features/buildroot/package/patch/patch.mk | 20 + ...apparently-incorrect-usage-of-static.patch | 56 + ...on-for-splitting-a-colon-separated-s.patch | 63 + ...ke-the-rpath-relative-under-a-specif.patch | 332 + ...LF-endianness-before-writing-new-run.patch | 40 + .../buildroot/package/patchelf/Config.in.host | 8 + .../buildroot/package/patchelf/patchelf.hash | 4 + .../buildroot/package/patchelf/patchelf.mk | 13 + .../buildroot/package/pax-utils/Config.in | 7 + .../package/pax-utils/pax-utils.hash | 2 + .../buildroot/package/pax-utils/pax-utils.mk | 39 + .../0001-genpaxtest-move-log-location.patch | 30 + ...st-page-alignment-ARM-and-NIOS2-arch.patch | 49 + features/buildroot/package/paxtest/Config.in | 11 + .../buildroot/package/paxtest/paxtest.hash | 2 + features/buildroot/package/paxtest/paxtest.mk | 30 + features/buildroot/package/pciutils/Config.in | 7 + .../buildroot/package/pciutils/pciutils.hash | 3 + .../buildroot/package/pciutils/pciutils.mk | 74 + ...ook-for-pcm-core-at-the-default-path.patch | 46 + .../buildroot/package/pcm-tools/Config.in | 33 + .../package/pcm-tools/pcm-tools.hash | 3 + .../buildroot/package/pcm-tools/pcm-tools.mk | 36 + features/buildroot/package/pcmanfm/Config.in | 25 + .../buildroot/package/pcmanfm/pcmanfm.hash | 6 + features/buildroot/package/pcmanfm/pcmanfm.mk | 22 + .../pcre/0001-Kill-compatibility-bits.patch | 43 + .../pcre/0002-Disable-C-unit-tests.patch | 42 + features/buildroot/package/pcre/Config.in | 34 + features/buildroot/package/pcre/pcre.hash | 4 + features/buildroot/package/pcre/pcre.mk | 30 + features/buildroot/package/pcre2/Config.in | 46 + features/buildroot/package/pcre2/pcre2.hash | 4 + features/buildroot/package/pcre2/pcre2.mk | 31 + ...001-Add-disable-documentation-option.patch | 63 + .../buildroot/package/pcsc-lite/Config.in | 34 + .../package/pcsc-lite/pcsc-lite.hash | 4 + .../buildroot/package/pcsc-lite/pcsc-lite.mk | 53 + features/buildroot/package/pdbg/Config.in | 11 + features/buildroot/package/pdbg/pdbg.hash | 3 + features/buildroot/package/pdbg/pdbg.mk | 21 + ...info.in-link-with-INTLLIBS-if-needed.patch | 27 + ...f-makeinfo.in-support-build-install-.patch | 76 + features/buildroot/package/pdmenu/Config.in | 15 + features/buildroot/package/pdmenu/pdmenu.hash | 5 + features/buildroot/package/pdmenu/pdmenu.mk | 15 + .../perl-apache-logformat-compiler/Config.in | 7 + .../perl-apache-logformat-compiler.hash | 6 + .../perl-apache-logformat-compiler.mk | 15 + .../package/perl-appconfig/Config.in | 8 + .../perl-appconfig/perl-appconfig.hash | 6 + .../package/perl-appconfig/perl-appconfig.mk | 14 + .../package/perl-astro-suntime/Config.in | 6 + .../perl-astro-suntime.hash | 6 + .../perl-astro-suntime/perl-astro-suntime.mk | 15 + .../package/perl-class-inspector/Config.in | 6 + .../perl-class-inspector.hash | 6 + .../perl-class-inspector.mk | 14 + .../package/perl-class-load/Config.in | 15 + .../perl-class-load/perl-class-load.hash | 6 + .../perl-class-load/perl-class-load.mk | 14 + .../perl-class-method-modifiers/Config.in | 6 + .../perl-class-method-modifiers.hash | 6 + .../perl-class-method-modifiers.mk | 14 + .../package/perl-class-std-fast/Config.in | 7 + .../perl-class-std-fast.hash | 6 + .../perl-class-std-fast.mk | 15 + .../package/perl-class-std/Config.in | 6 + .../perl-class-std/perl-class-std.hash | 6 + .../package/perl-class-std/perl-class-std.mk | 15 + .../package/perl-convert-asn1/Config.in | 7 + .../perl-convert-asn1/perl-convert-asn1.hash | 6 + .../perl-convert-asn1/perl-convert-asn1.mk | 14 + .../package/perl-cookie-baker/Config.in | 7 + .../perl-cookie-baker/perl-cookie-baker.hash | 6 + .../perl-cookie-baker/perl-cookie-baker.mk | 15 + .../package/perl-crypt-blowfish/Config.in | 10 + .../perl-crypt-blowfish.hash | 6 + .../perl-crypt-blowfish.mk | 14 + .../package/perl-crypt-cbc/Config.in | 6 + .../perl-crypt-cbc/perl-crypt-cbc.hash | 6 + .../package/perl-crypt-cbc/perl-crypt-cbc.mk | 14 + .../perl-crypt-openssl-guess.hash | 6 + .../perl-crypt-openssl-guess.mk | 14 + .../perl-crypt-openssl-random/Config.in | 11 + .../perl-crypt-openssl-random.hash | 6 + .../perl-crypt-openssl-random.mk | 21 + .../package/perl-crypt-openssl-rsa/Config.in | 11 + .../perl-crypt-openssl-rsa.hash | 6 + .../perl-crypt-openssl-rsa.mk | 21 + .../package/perl-data-dump/Config.in | 6 + .../perl-data-dump/perl-data-dump.hash | 6 + .../package/perl-data-dump/perl-data-dump.mk | 14 + .../package/perl-data-optlist/Config.in | 12 + .../perl-data-optlist/perl-data-optlist.hash | 6 + .../perl-data-optlist/perl-data-optlist.mk | 14 + .../package/perl-data-uuid/Config.in | 10 + .../perl-data-uuid/perl-data-uuid.hash | 6 + .../package/perl-data-uuid/perl-data-uuid.mk | 19 + .../package/perl-date-manip/Config.in | 6 + .../perl-date-manip/perl-date-manip.hash | 6 + .../perl-date-manip/perl-date-manip.mk | 14 + .../package/perl-datetime-tiny/Config.in | 6 + .../perl-datetime-tiny.hash | 6 + .../perl-datetime-tiny/perl-datetime-tiny.mk | 14 + .../package/perl-dbd-mysql/Config.in | 17 + .../perl-dbd-mysql/perl-dbd-mysql.hash | 6 + .../package/perl-dbd-mysql/perl-dbd-mysql.mk | 19 + features/buildroot/package/perl-dbi/Config.in | 10 + .../buildroot/package/perl-dbi/perl-dbi.hash | 6 + .../buildroot/package/perl-dbi/perl-dbi.mk | 15 + .../perl-devel-globaldestruction/Config.in | 8 + .../perl-devel-globaldestruction.hash | 6 + .../perl-devel-globaldestruction.mk | 14 + .../perl-devel-stacktrace-ashtml/Config.in | 7 + .../perl-devel-stacktrace-ashtml.hash | 6 + .../perl-devel-stacktrace-ashtml.mk | 14 + .../package/perl-devel-stacktrace/Config.in | 6 + .../perl-devel-stacktrace.hash | 6 + .../perl-devel-stacktrace.mk | 14 + .../package/perl-device-serialport/Config.in | 10 + .../perl-device-serialport.hash | 6 + .../perl-device-serialport.mk | 14 + .../package/perl-digest-hmac/Config.in | 6 + .../perl-digest-hmac/perl-digest-hmac.hash | 6 + .../perl-digest-hmac/perl-digest-hmac.mk | 14 + .../package/perl-digest-md5/Config.in | 10 + .../perl-digest-md5/perl-digest-md5.hash | 6 + .../perl-digest-md5/perl-digest-md5.mk | 14 + .../package/perl-digest-sha1/Config.in | 10 + .../perl-digest-sha1/perl-digest-sha1.hash | 6 + .../perl-digest-sha1/perl-digest-sha1.mk | 14 + .../perl-dist-checkconflicts/Config.in | 7 + .../perl-dist-checkconflicts.hash | 6 + .../perl-dist-checkconflicts.mk | 14 + .../package/perl-encode-detect/Config.in | 12 + .../perl-encode-detect.hash | 6 + .../perl-encode-detect/perl-encode-detect.mk | 15 + .../package/perl-encode-locale/Config.in | 6 + .../perl-encode-locale.hash | 6 + .../perl-encode-locale/perl-encode-locale.mk | 14 + .../package/perl-exporter-tiny/Config.in | 7 + .../perl-exporter-tiny.hash | 7 + .../perl-exporter-tiny/perl-exporter-tiny.mk | 14 + .../perl-extutils-config.hash | 6 + .../perl-extutils-config.mk | 14 + .../perl-extutils-helpers.hash | 6 + .../perl-extutils-helpers.mk | 14 + .../perl-extutils-installpaths.hash | 6 + .../perl-extutils-installpaths.mk | 15 + .../package/perl-file-listing/Config.in | 7 + .../perl-file-listing/perl-file-listing.hash | 6 + .../perl-file-listing/perl-file-listing.mk | 14 + .../perl-file-sharedir-install.hash | 6 + .../perl-file-sharedir-install.mk | 14 + .../package/perl-file-sharedir/Config.in | 7 + .../perl-file-sharedir.hash | 6 + .../perl-file-sharedir/perl-file-sharedir.mk | 15 + .../package/perl-file-slurp/Config.in | 7 + .../perl-file-slurp/perl-file-slurp.hash | 6 + .../perl-file-slurp/perl-file-slurp.mk | 14 + .../package/perl-file-util/Config.in | 6 + .../perl-file-util/perl-file-util.hash | 7 + .../package/perl-file-util/perl-file-util.mk | 17 + .../perl-filesys-notify-simple/Config.in | 6 + .../perl-filesys-notify-simple.hash | 6 + .../perl-filesys-notify-simple.mk | 14 + features/buildroot/package/perl-gd/Config.in | 14 + .../buildroot/package/perl-gd/perl-gd.hash | 6 + features/buildroot/package/perl-gd/perl-gd.mk | 22 + .../buildroot/package/perl-gdgraph/Config.in | 12 + .../package/perl-gdgraph/perl-gdgraph.hash | 6 + .../package/perl-gdgraph/perl-gdgraph.mk | 14 + .../package/perl-gdtextutil/Config.in | 6 + .../perl-gdtextutil/perl-gdtextutil.hash | 6 + .../perl-gdtextutil/perl-gdtextutil.mk | 13 + .../package/perl-hash-multivalue/Config.in | 6 + .../perl-hash-multivalue.hash | 6 + .../perl-hash-multivalue.mk | 14 + .../package/perl-html-parser/Config.in | 11 + .../perl-html-parser/perl-html-parser.hash | 6 + .../perl-html-parser/perl-html-parser.mk | 14 + .../package/perl-html-tagset/Config.in | 6 + .../perl-html-tagset/perl-html-tagset.hash | 6 + .../perl-html-tagset/perl-html-tagset.mk | 14 + .../package/perl-http-cookies/Config.in | 8 + .../perl-http-cookies/perl-http-cookies.hash | 6 + .../perl-http-cookies/perl-http-cookies.mk | 14 + .../package/perl-http-daemon/Config.in | 9 + .../perl-http-daemon/perl-http-daemon.hash | 6 + .../perl-http-daemon/perl-http-daemon.mk | 14 + .../package/perl-http-date/Config.in | 6 + .../perl-http-date/perl-http-date.hash | 6 + .../package/perl-http-date/perl-http-date.mk | 14 + .../package/perl-http-entity-parser/Config.in | 11 + .../perl-http-entity-parser.hash | 6 + .../perl-http-entity-parser.mk | 15 + .../package/perl-http-headers-fast/Config.in | 7 + .../perl-http-headers-fast.hash | 6 + .../perl-http-headers-fast.mk | 15 + .../package/perl-http-message/Config.in | 11 + .../perl-http-message/perl-http-message.hash | 6 + .../perl-http-message/perl-http-message.mk | 14 + .../perl-http-multipartparser/Config.in | 6 + .../perl-http-multipartparser.hash | 6 + .../perl-http-multipartparser.mk | 14 + .../package/perl-http-negotiate/Config.in | 7 + .../perl-http-negotiate.hash | 6 + .../perl-http-negotiate.mk | 14 + .../buildroot/package/perl-io-html/Config.in | 6 + .../package/perl-io-html/perl-io-html.hash | 6 + .../package/perl-io-html/perl-io-html.mk | 14 + .../package/perl-io-interface/Config.in | 10 + .../perl-io-interface/perl-io-interface.hash | 6 + .../perl-io-interface/perl-io-interface.mk | 15 + .../perl-io-socket-multicast/Config.in | 11 + .../perl-io-socket-multicast.hash | 6 + .../perl-io-socket-multicast.mk | 14 + .../package/perl-io-socket-ssl/Config.in | 11 + .../perl-io-socket-ssl.hash | 6 + .../perl-io-socket-ssl/perl-io-socket-ssl.mk | 14 + .../package/perl-json-maybexs/Config.in | 7 + .../perl-json-maybexs/perl-json-maybexs.hash | 6 + .../perl-json-maybexs/perl-json-maybexs.mk | 14 + .../package/perl-json-tiny/Config.in | 6 + .../perl-json-tiny/perl-json-tiny.hash | 6 + .../package/perl-json-tiny/perl-json-tiny.mk | 14 + .../package/perl-libwww-perl/Config.in | 23 + .../perl-libwww-perl/perl-libwww-perl.hash | 6 + .../perl-libwww-perl/perl-libwww-perl.mk | 14 + .../package/perl-lwp-mediatypes/Config.in | 6 + .../perl-lwp-mediatypes.hash | 6 + .../perl-lwp-mediatypes.mk | 14 + .../package/perl-mail-dkim/Config.in | 13 + .../perl-mail-dkim/perl-mail-dkim.hash | 3 + .../package/perl-mail-dkim/perl-mail-dkim.mk | 12 + .../package/perl-mailtools/Config.in | 7 + .../perl-mailtools/perl-mailtools.hash | 6 + .../package/perl-mailtools/perl-mailtools.mk | 14 + .../perl-mime-base64-urlsafe/Config.in | 6 + .../perl-mime-base64-urlsafe.hash | 6 + .../perl-mime-base64-urlsafe.mk | 14 + .../package/perl-mime-base64/Config.in | 10 + .../perl-mime-base64/perl-mime-base64.hash | 6 + .../perl-mime-base64/perl-mime-base64.mk | 14 + .../package/perl-mime-tools/Config.in | 7 + .../perl-mime-tools/perl-mime-tools.hash | 6 + .../perl-mime-tools/perl-mime-tools.mk | 14 + .../perl-module-build-tiny.hash | 6 + .../perl-module-build-tiny.mk | 18 + .../perl-module-build/perl-module-build.hash | 6 + .../perl-module-build/perl-module-build.mk | 14 + .../perl-module-implementation/Config.in | 9 + .../perl-module-implementation.hash | 6 + .../perl-module-implementation.mk | 14 + .../package/perl-module-runtime/Config.in | 6 + .../perl-module-runtime.hash | 6 + .../perl-module-runtime.mk | 15 + .../Config.in | 7 + ...erl-mojolicious-plugin-authentication.hash | 6 + .../perl-mojolicious-plugin-authentication.mk | 14 + .../package/perl-mojolicious/Config.in | 6 + .../perl-mojolicious/perl-mojolicious.hash | 6 + .../perl-mojolicious/perl-mojolicious.mk | 14 + features/buildroot/package/perl-moo/Config.in | 11 + .../buildroot/package/perl-moo/perl-moo.hash | 6 + .../buildroot/package/perl-moo/perl-moo.mk | 14 + .../buildroot/package/perl-net-dns/Config.in | 7 + .../package/perl-net-dns/perl-net-dns.hash | 6 + .../package/perl-net-dns/perl-net-dns.mk | 14 + .../buildroot/package/perl-net-http/Config.in | 7 + .../package/perl-net-http/perl-net-http.hash | 6 + .../package/perl-net-http/perl-net-http.mk | 14 + .../buildroot/package/perl-net-ping/Config.in | 6 + .../package/perl-net-ping/perl-net-ping.hash | 6 + .../package/perl-net-ping/perl-net-ping.mk | 14 + .../buildroot/package/perl-net-snmp/Config.in | 6 + .../package/perl-net-snmp/perl-net-snmp.hash | 6 + .../package/perl-net-snmp/perl-net-snmp.mk | 15 + .../buildroot/package/perl-net-ssh2/Config.in | 18 + .../package/perl-net-ssh2/perl-net-ssh2.hash | 6 + .../package/perl-net-ssh2/perl-net-ssh2.mk | 24 + .../0001-fix-build-system.patch | 36 + .../package/perl-net-ssleay/Config.in | 11 + .../perl-net-ssleay/perl-net-ssleay.hash | 6 + .../perl-net-ssleay/perl-net-ssleay.mk | 27 + .../package/perl-net-telnet/Config.in | 6 + .../perl-net-telnet/perl-net-telnet.hash | 6 + .../perl-net-telnet/perl-net-telnet.mk | 14 + .../package/perl-netaddr-ip/Config.in | 6 + .../perl-netaddr-ip/perl-netaddr-ip.hash | 7 + .../perl-netaddr-ip/perl-netaddr-ip.mk | 18 + .../package/perl-number-bytes-human/Config.in | 6 + .../perl-number-bytes-human.hash | 6 + .../perl-number-bytes-human.mk | 14 + .../package/perl-package-stash/Config.in | 8 + .../perl-package-stash.hash | 6 + .../perl-package-stash/perl-package-stash.mk | 14 + .../package/perl-params-util/Config.in | 10 + .../perl-params-util/perl-params-util.hash | 6 + .../perl-params-util/perl-params-util.mk | 14 + .../package/perl-path-tiny/Config.in | 6 + .../perl-path-tiny/perl-path-tiny.hash | 6 + .../package/perl-path-tiny/perl-path-tiny.mk | 14 + .../buildroot/package/perl-plack/Config.in | 21 + .../package/perl-plack/perl-plack.hash | 6 + .../package/perl-plack/perl-plack.mk | 15 + .../perl-posix-strftime-compiler/Config.in | 6 + .../perl-posix-strftime-compiler.hash | 6 + .../perl-posix-strftime-compiler.mk | 15 + .../package/perl-role-tiny/Config.in | 6 + .../perl-role-tiny/perl-role-tiny.hash | 6 + .../package/perl-role-tiny/perl-role-tiny.mk | 14 + .../package/perl-stream-buffered/Config.in | 6 + .../perl-stream-buffered.hash | 6 + .../perl-stream-buffered.mk | 14 + .../perl-sub-exporter-progressive/Config.in | 6 + .../perl-sub-exporter-progressive.hash | 6 + .../perl-sub-exporter-progressive.mk | 14 + .../package/perl-sub-install/Config.in | 6 + .../perl-sub-install/perl-sub-install.hash | 6 + .../perl-sub-install/perl-sub-install.mk | 14 + .../package/perl-sub-quote/Config.in | 6 + .../perl-sub-quote/perl-sub-quote.hash | 4 + .../package/perl-sub-quote/perl-sub-quote.mk | 14 + .../0001-remove-extraneous-include.patch | 20 + .../buildroot/package/perl-sys-cpu/Config.in | 9 + .../package/perl-sys-cpu/perl-sys-cpu.hash | 2 + .../package/perl-sys-cpu/perl-sys-cpu.mk | 13 + .../package/perl-sys-meminfo/Config.in | 10 + .../perl-sys-meminfo/perl-sys-meminfo.hash | 6 + .../perl-sys-meminfo/perl-sys-meminfo.mk | 14 + .../buildroot/package/perl-sys-mmap/Config.in | 10 + .../package/perl-sys-mmap/perl-sys-mmap.hash | 7 + .../package/perl-sys-mmap/perl-sys-mmap.mk | 14 + .../package/perl-time-parsedate/Config.in | 6 + .../perl-time-parsedate.hash | 7 + .../perl-time-parsedate.mk | 14 + .../buildroot/package/perl-timedate/Config.in | 6 + .../package/perl-timedate/perl-timedate.hash | 6 + .../package/perl-timedate/perl-timedate.mk | 14 + .../buildroot/package/perl-try-tiny/Config.in | 6 + .../package/perl-try-tiny/perl-try-tiny.hash | 6 + .../package/perl-try-tiny/perl-try-tiny.mk | 14 + .../package/perl-type-tiny/Config.in | 7 + .../perl-type-tiny/perl-type-tiny.hash | 7 + .../package/perl-type-tiny/perl-type-tiny.mk | 14 + features/buildroot/package/perl-uri/Config.in | 6 + .../buildroot/package/perl-uri/perl-uri.hash | 6 + .../buildroot/package/perl-uri/perl-uri.mk | 14 + .../perl-www-form-urlencoded/Config.in | 6 + .../perl-www-form-urlencoded.hash | 6 + .../perl-www-form-urlencoded.mk | 15 + .../package/perl-www-robotrules/Config.in | 7 + .../perl-www-robotrules.hash | 6 + .../perl-www-robotrules.mk | 14 + features/buildroot/package/perl-x10/Config.in | 13 + .../buildroot/package/perl-x10/perl-x10.hash | 6 + .../buildroot/package/perl-x10/perl-x10.mk | 14 + .../perl-xml-libxml/0001-Makefile-PL.patch | 18 + .../package/perl-xml-libxml/Config.in | 15 + .../perl-xml-libxml/perl-xml-libxml.hash | 6 + .../perl-xml-libxml/perl-xml-libxml.mk | 20 + .../perl-xml-namespacesupport/Config.in | 6 + .../perl-xml-namespacesupport.hash | 6 + .../perl-xml-namespacesupport.mk | 14 + .../package/perl-xml-sax-base/Config.in | 6 + .../perl-xml-sax-base/perl-xml-sax-base.hash | 6 + .../perl-xml-sax-base/perl-xml-sax-base.mk | 14 + .../buildroot/package/perl-xml-sax/Config.in | 8 + .../package/perl-xml-sax/perl-xml-sax.hash | 6 + .../package/perl-xml-sax/perl-xml-sax.mk | 14 + ...the-generated-subdirectory-Makefiles.patch | 30 + features/buildroot/package/perl/Config.in | 27 + features/buildroot/package/perl/perl.hash | 7 + features/buildroot/package/perl/perl.mk | 120 + .../package/phidgetwebservice/Config.in | 22 + .../phidgetwebservice/phidgetwebservice.hash | 3 + .../phidgetwebservice/phidgetwebservice.mk | 14 + features/buildroot/package/php-amqp/Config.in | 13 + .../buildroot/package/php-amqp/php-amqp.hash | 3 + .../buildroot/package/php-amqp/php-amqp.mk | 26 + .../buildroot/package/php-geoip/Config.in | 8 + .../package/php-geoip/php-geoip.hash | 2 + .../buildroot/package/php-geoip/php-geoip.mk | 26 + .../buildroot/package/php-gnupg/Config.in | 10 + .../package/php-gnupg/php-gnupg.hash | 2 + .../buildroot/package/php-gnupg/php-gnupg.mk | 26 + .../buildroot/package/php-imagick/Config.in | 15 + .../package/php-imagick/php-imagick.hash | 2 + .../package/php-imagick/php-imagick.mk | 26 + .../buildroot/package/php-memcached/Config.in | 15 + .../package/php-memcached/php-memcached.hash | 5 + .../package/php-memcached/php-memcached.mk | 28 + ...fix-php_url-fields-usage-for-PHP-7-3.patch | 302 + ...estored-commented-reference-counting.patch | 746 ++ features/buildroot/package/php-ssh2/Config.in | 8 + .../buildroot/package/php-ssh2/php-ssh2.hash | 2 + .../buildroot/package/php-ssh2/php-ssh2.mk | 26 + features/buildroot/package/php-yaml/Config.in | 8 + .../buildroot/package/php-yaml/php-yaml.hash | 3 + .../buildroot/package/php-yaml/php-yaml.mk | 26 + ...1-PHP-7.3-compatibility-and-bugfixes.patch | 271 + features/buildroot/package/php-zmq/Config.in | 13 + .../buildroot/package/php-zmq/php-zmq.hash | 2 + features/buildroot/package/php-zmq/php-zmq.mk | 25 + ...1-acinclude.m4-don-t-unset-variables.patch | 40 + .../0002-iconv-tweak-iconv-detection.patch | 71 + ...0003-configure-disable-the-phar-tool.patch | 41 + .../0004-Call-apxs-with-correct-prefix.patch | 51 + ....m4-add-ac_cv_have_pcre2_jit-variabl.patch | 91 + features/buildroot/package/php/Config.ext | 410 + features/buildroot/package/php/Config.in | 50 + features/buildroot/package/php/php-fpm.conf | 11 + features/buildroot/package/php/php.hash | 5 + features/buildroot/package/php/php.mk | 371 + features/buildroot/package/physfs/Config.in | 11 + features/buildroot/package/physfs/physfs.hash | 3 + features/buildroot/package/physfs/physfs.mk | 30 + features/buildroot/package/phytool/Config.in | 10 + .../buildroot/package/phytool/phytool.hash | 4 + features/buildroot/package/phytool/phytool.mk | 24 + ...-with-libc-s-without-cispeed-cospeed.patch | 49 + features/buildroot/package/picocom/Config.in | 9 + .../buildroot/package/picocom/picocom.hash | 3 + features/buildroot/package/picocom/picocom.mk | 20 + ...0001-Makefile-cross-compile-friendly.patch | 37 + .../pifmrds/0002-Makefile-use-LDFLAGS.patch | 20 + .../0003-Makefile-fix-static-link.patch | 23 + features/buildroot/package/pifmrds/Config.in | 8 + .../buildroot/package/pifmrds/pifmrds.hash | 2 + features/buildroot/package/pifmrds/pifmrds.mk | 24 + features/buildroot/package/pigpio/Config.in | 14 + features/buildroot/package/pigpio/pigpio.hash | 3 + features/buildroot/package/pigpio/pigpio.mk | 25 + features/buildroot/package/pigz/Config.in | 14 + features/buildroot/package/pigz/pigz.hash | 3 + features/buildroot/package/pigz/pigz.mk | 21 + features/buildroot/package/pimd/Config.in | 8 + features/buildroot/package/pimd/pimd.hash | 6 + features/buildroot/package/pimd/pimd.mk | 37 + features/buildroot/package/pinentry/Config.in | 60 + .../buildroot/package/pinentry/pinentry.hash | 4 + .../buildroot/package/pinentry/pinentry.mk | 63 + features/buildroot/package/pixiewps/Config.in | 11 + .../buildroot/package/pixiewps/pixiewps.hash | 3 + .../buildroot/package/pixiewps/pixiewps.mk | 21 + .../package/pixman/0001-Disable-tests.patch | 29 + features/buildroot/package/pixman/Config.in | 6 + features/buildroot/package/pixman/pixman.hash | 6 + features/buildroot/package/pixman/pixman.mk | 54 + features/buildroot/package/pixz/Config.in | 13 + features/buildroot/package/pixz/pixz.hash | 2 + features/buildroot/package/pixz/pixz.mk | 19 + features/buildroot/package/pkg-autotools.mk | 332 + features/buildroot/package/pkg-cmake.mk | 275 + features/buildroot/package/pkg-conan.mk | 208 + features/buildroot/package/pkg-download.mk | 116 + features/buildroot/package/pkg-generic.mk | 1132 +++ features/buildroot/package/pkg-golang.mk | 168 + features/buildroot/package/pkg-kconfig.mk | 273 + .../buildroot/package/pkg-kernel-module.mk | 101 + features/buildroot/package/pkg-luarocks.mk | 88 + features/buildroot/package/pkg-meson.mk | 177 + features/buildroot/package/pkg-perl.mk | 215 + features/buildroot/package/pkg-python.mk | 302 + features/buildroot/package/pkg-rebar.mk | 256 + features/buildroot/package/pkg-utils.mk | 168 + features/buildroot/package/pkg-virtual.mk | 77 + features/buildroot/package/pkg-waf.mk | 125 + ...th-the-sysroot-a-subset-of-variables.patch | 142 + ...me-modversion-insted-of-version-if-o.patch | 45 + features/buildroot/package/pkgconf/Config.in | 10 + .../buildroot/package/pkgconf/Config.in.host | 10 + .../buildroot/package/pkgconf/pkg-config.in | 5 + .../buildroot/package/pkgconf/pkgconf.hash | 3 + features/buildroot/package/pkgconf/pkgconf.mk | 44 + features/buildroot/package/pngquant/Config.in | 9 + .../buildroot/package/pngquant/pngquant.hash | 5 + .../buildroot/package/pngquant/pngquant.mk | 55 + ...-add-the-staging-path-to-search-path.patch | 38 + .../0002-Add-support-for-m68000-1856.patch | 30 + ...tils.h-backport-double-conversion-ch.patch | 32 + features/buildroot/package/poco/Config.in | 86 + features/buildroot/package/poco/poco.hash | 3 + features/buildroot/package/poco/poco.mk | 87 + ...-all-paths-that-use-an-absolute-path.patch | 37 + .../0002-Add-PREFIX-to-host-paths.patch | 56 + .../package/policycoreutils/Config.in | 38 + .../policycoreutils/policycoreutils.hash | 3 + .../policycoreutils/policycoreutils.mk | 111 + features/buildroot/package/polkit/Config.in | 18 + features/buildroot/package/polkit/polkit.hash | 5 + features/buildroot/package/polkit/polkit.mk | 23 + features/buildroot/package/poppler/Config.in | 36 + .../buildroot/package/poppler/poppler.hash | 2 + features/buildroot/package/poppler/poppler.mk | 116 + .../package/popt/0001-no-wchar.patch | 12 + .../package/popt/0002-fix-autoreconf.patch | 38 + .../package/popt/0003-glob-detection.patch | 41 + .../popt/0004-add-libiconv-to-popt.pc.patch | 19 + features/buildroot/package/popt/Config.in | 6 + features/buildroot/package/popt/popt.hash | 3 + features/buildroot/package/popt/popt.mk | 25 + .../buildroot/package/portaudio/Config.in | 33 + .../package/portaudio/portaudio.hash | 2 + .../buildroot/package/portaudio/portaudio.mk | 23 + .../buildroot/package/postgresql/Config.in | 24 + .../package/postgresql/S50postgresql | 44 + .../buildroot/package/postgresql/pg_config | 22 + .../package/postgresql/postgresql.hash | 7 + .../package/postgresql/postgresql.mk | 136 + .../package/postgresql/postgresql.service | 28 + .../pound/0001-fix-openssl-1.0.2.patch | 127 + .../pound/0002-fix-openssl-1.1.0.patch | 334 + ...bressl-coexisting-with-openssl-1.1.x.patch | 140 + features/buildroot/package/pound/Config.in | 18 + features/buildroot/package/pound/pound.hash | 3 + features/buildroot/package/pound/pound.mk | 24 + .../buildroot/package/powerpc-utils/Config.in | 34 + .../package/powerpc-utils/powerpc-utils.hash | 3 + .../package/powerpc-utils/powerpc-utils.mk | 24 + ...dont-force-stack-smashing-protection.patch | 18 + .../0002-wakeup_xxx.h-include-limits.h.patch | 54 + features/buildroot/package/powertop/Config.in | 17 + .../buildroot/package/powertop/powertop.hash | 3 + .../buildroot/package/powertop/powertop.mk | 26 + features/buildroot/package/powervr/Config.in | 6 + features/buildroot/package/powervr/powervr.mk | 7 + ...net-in.h-above-linux-header-includes.patch | 22 + ...he-DES-instead-of-the-libcrypt-glibc.patch | 113 + .../pppd/0003-Add-OPENSSL_INCLUDE_DIR.patch | 38 + features/buildroot/package/pppd/Config.in | 43 + features/buildroot/package/pppd/pppd.hash | 2 + features/buildroot/package/pppd/pppd.mk | 115 + .../buildroot/package/pps-tools/Config.in | 7 + .../package/pps-tools/pps-tools.hash | 2 + .../buildroot/package/pps-tools/pps-tools.mk | 29 + .../pptp-linux/0001-susv3-legacy.patch | 29 + .../pptp-linux/0002-fix-parallel-build.patch | 23 + .../buildroot/package/pptp-linux/Config.in | 7 + .../package/pptp-linux/pptp-linux.hash | 7 + .../package/pptp-linux/pptp-linux.mk | 26 + .../package/prboom/0001-libpng-1.4.patch | 32 + features/buildroot/package/prboom/Config.in | 12 + features/buildroot/package/prboom/prboom.hash | 2 + features/buildroot/package/prboom/prboom.mk | 48 + features/buildroot/package/privoxy/Config.in | 17 + .../buildroot/package/privoxy/privoxy.hash | 3 + features/buildroot/package/privoxy/privoxy.mk | 16 + .../buildroot/package/procps-ng/Config.in | 10 + .../package/procps-ng/procps-ng.hash | 8 + .../buildroot/package/procps-ng/procps-ng.mk | 47 + .../package/procrank_linux/Config.in | 7 + .../procrank_linux/procrank_linux.hash | 2 + .../package/procrank_linux/procrank_linux.mk | 21 + ...fix-kernel-header-capability-version.patch | 12 + .../proftpd/0002-fix-CVE-2019-12815.patch | 382 + features/buildroot/package/proftpd/Config.in | 91 + features/buildroot/package/proftpd/S50proftpd | 45 + .../buildroot/package/proftpd/proftpd.hash | 5 + features/buildroot/package/proftpd/proftpd.mk | 135 + .../buildroot/package/proftpd/proftpd.service | 10 + features/buildroot/package/proj/Config.in | 14 + features/buildroot/package/proj/proj.hash | 5 + features/buildroot/package/proj/proj.mk | 21 + .../package/prosody/0001-enable-syslog.patch | 25 + .../package/prosody/0002-add-pidfile.patch | 26 + features/buildroot/package/prosody/Config.in | 26 + features/buildroot/package/prosody/S50prosody | 40 + .../buildroot/package/prosody/prosody.hash | 8 + features/buildroot/package/prosody/prosody.mk | 62 + .../0001-Add-std-to-some-types.patch | 110 + .../0002-Fix-build-with-protobuf-3.6.x.patch | 160 + .../buildroot/package/protobuf-c/Config.in | 17 + .../package/protobuf-c/protobuf-c.hash | 2 + .../package/protobuf-c/protobuf-c.mk | 23 + ...ompilation-under-mips-big-endian-wit.patch | 38 + features/buildroot/package/protobuf/Config.in | 47 + .../buildroot/package/protobuf/protobuf.hash | 3 + .../buildroot/package/protobuf/protobuf.mk | 31 + .../package/proxychains-ng/Config.in | 12 + .../proxychains-ng/proxychains-ng.hash | 5 + .../package/proxychains-ng/proxychains-ng.mk | 26 + .../package/pru-software-support/Config.in | 9 + .../pru-software-support/Config.in.host | 11 + .../pru-software-support.hash | 2 + .../pru-software-support.mk | 37 + .../package/pru-software-support/readme.txt | 21 + features/buildroot/package/psmisc/Config.in | 9 + features/buildroot/package/psmisc/psmisc.hash | 6 + features/buildroot/package/psmisc/psmisc.mk | 19 + features/buildroot/package/psplash/Config.in | 31 + .../package/psplash/psplash-quit.service | 11 + .../package/psplash/psplash-start.service | 11 + .../buildroot/package/psplash/psplash.hash | 3 + features/buildroot/package/psplash/psplash.mk | 27 + features/buildroot/package/ptpd/Config.in | 7 + features/buildroot/package/ptpd/S65ptpd | 29 + features/buildroot/package/ptpd/ptpd.hash | 2 + features/buildroot/package/ptpd/ptpd.mk | 33 + features/buildroot/package/ptpd/ptpd.service | 10 + .../buildroot/package/ptpd2/0001-musl.patch | 15 + ...name-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch | 46 + ...emoving-type-U64-from-net-snmp-relat.patch | 28 + features/buildroot/package/ptpd2/Config.in | 8 + features/buildroot/package/ptpd2/S65ptpd2 | 29 + features/buildroot/package/ptpd2/ptpd2.hash | 2 + features/buildroot/package/ptpd2/ptpd2.mk | 40 + .../buildroot/package/ptpd2/ptpd2.service | 10 + features/buildroot/package/pugixml/Config.in | 54 + .../buildroot/package/pugixml/pugixml.hash | 3 + features/buildroot/package/pugixml/pugixml.mk | 39 + .../buildroot/package/pulseaudio/Config.in | 46 + .../package/pulseaudio/S50pulseaudio | 46 + .../package/pulseaudio/pulseaudio.hash | 6 + .../package/pulseaudio/pulseaudio.mk | 183 + .../package/pulseaudio/pulseaudio.service | 11 + ...ar-fix-build-without-libsigrokdecode.patch | 37 + .../buildroot/package/pulseview/Config.in | 34 + .../package/pulseview/pulseview.hash | 2 + .../buildroot/package/pulseview/pulseview.mk | 27 + .../buildroot/package/pure-ftpd/Config.in | 39 + .../package/pure-ftpd/pure-ftpd.hash | 3 + .../buildroot/package/pure-ftpd/pure-ftpd.mk | 85 + features/buildroot/package/putty/Config.in | 15 + features/buildroot/package/putty/putty.hash | 6 + features/buildroot/package/putty/putty.mk | 21 + .../0001-configure.in-tighten-AIX-test.patch | 57 + features/buildroot/package/pv/Config.in | 8 + features/buildroot/package/pv/pv.hash | 2 + features/buildroot/package/pv/pv.mk | 31 + features/buildroot/package/pwgen/Config.in | 7 + .../buildroot/package/pwgen/Config.in.host | 7 + features/buildroot/package/pwgen/pwgen.hash | 5 + features/buildroot/package/pwgen/pwgen.mk | 13 + .../package/python-aioblescan/Config.in | 7 + .../python-aioblescan/python-aioblescan.hash | 5 + .../python-aioblescan/python-aioblescan.mk | 14 + .../package/python-aiocoap/Config.in | 7 + .../python-aiocoap/python-aiocoap.hash | 4 + .../package/python-aiocoap/python-aiocoap.mk | 14 + .../package/python-aioconsole/Config.in | 7 + .../python-aioconsole/python-aioconsole.hash | 3 + .../python-aioconsole/python-aioconsole.mk | 13 + .../buildroot/package/python-aiodns/Config.in | 8 + .../package/python-aiodns/python-aiodns.hash | 5 + .../package/python-aiodns/python-aiodns.mk | 14 + .../package/python-aiohttp-cors/Config.in | 8 + .../python-aiohttp-cors.hash | 5 + .../python-aiohttp-cors.mk | 14 + .../package/python-aiohttp-jinja2/Config.in | 10 + .../python-aiohttp-jinja2.hash | 5 + .../python-aiohttp-jinja2.mk | 14 + .../package/python-aiohttp-remotes/Config.in | 8 + .../python-aiohttp-remotes.hash | 5 + .../python-aiohttp-remotes.mk | 14 + .../package/python-aiohttp-security/Config.in | 8 + .../python-aiohttp-security.hash | 5 + .../python-aiohttp-security.mk | 14 + .../package/python-aiohttp-session/Config.in | 8 + .../python-aiohttp-session.hash | 5 + .../python-aiohttp-session.mk | 14 + .../package/python-aiohttp-sse/Config.in | 8 + .../python-aiohttp-sse.hash | 5 + .../python-aiohttp-sse/python-aiohttp-sse.mk | 14 + .../package/python-aiohttp/Config.in | 15 + .../python-aiohttp/python-aiohttp.hash | 5 + .../package/python-aiohttp/python-aiohttp.mk | 14 + .../package/python-aiojobs/Config.in | 7 + .../python-aiojobs/python-aiojobs.hash | 5 + .../package/python-aiojobs/python-aiojobs.mk | 14 + .../package/python-aiomonitor/Config.in | 10 + .../python-aiomonitor/python-aiomonitor.hash | 5 + .../python-aiomonitor/python-aiomonitor.mk | 14 + .../package/python-aiorwlock/Config.in | 7 + .../python-aiorwlock/python-aiorwlock.hash | 5 + .../python-aiorwlock/python-aiorwlock.mk | 14 + .../package/python-alsaaudio/Config.in | 14 + .../python-alsaaudio/python-alsaaudio.hash | 4 + .../python-alsaaudio/python-alsaaudio.mk | 15 + .../buildroot/package/python-argh/Config.in | 6 + .../package/python-argh/python-argh.hash | 3 + .../package/python-argh/python-argh.mk | 14 + .../buildroot/package/python-arrow/Config.in | 7 + .../package/python-arrow/python-arrow.hash | 3 + .../package/python-arrow/python-arrow.mk | 14 + .../package/python-asn1crypto/Config.in | 8 + .../python-asn1crypto/python-asn1crypto.hash | 5 + .../python-asn1crypto/python-asn1crypto.mk | 14 + .../package/python-async-timeout/Config.in | 7 + .../python-async-timeout.hash | 5 + .../python-async-timeout.mk | 14 + .../buildroot/package/python-attrs/Config.in | 8 + .../package/python-attrs/python-attrs.hash | 5 + .../package/python-attrs/python-attrs.mk | 14 + .../package/python-autobahn/Config.in | 9 + .../python-autobahn/python-autobahn.hash | 5 + .../python-autobahn/python-autobahn.mk | 14 + .../package/python-automat/Config.in | 9 + .../python-automat/python-automat.hash | 5 + .../package/python-automat/python-automat.mk | 15 + .../buildroot/package/python-babel/Config.in | 8 + .../package/python-babel/python-babel.hash | 5 + .../package/python-babel/python-babel.mk | 14 + .../package/python-backcall/Config.in | 6 + .../python-backcall/python-backcall.hash | 3 + .../python-backcall/python-backcall.mk | 14 + .../package/python-backports-abc/Config.in | 8 + .../python-backports-abc.hash | 3 + .../python-backports-abc.mk | 14 + .../Config.in | 8 + ...on-backports-shutil-get-terminal-size.hash | 3 + ...thon-backports-shutil-get-terminal-size.mk | 14 + .../Config.in | 7 + .../python-backports-ssl-match-hostname.hash | 4 + .../python-backports-ssl-match-hostname.mk | 14 + .../buildroot/package/python-bcrypt/Config.in | 8 + .../package/python-bcrypt/python-bcrypt.hash | 5 + .../package/python-bcrypt/python-bcrypt.mk | 15 + .../package/python-beautifulsoup4/Config.in | 10 + .../python-beautifulsoup4.hash | 3 + .../python-beautifulsoup4.mk | 14 + .../package/python-bitstring/Config.in | 6 + .../python-bitstring/python-bitstring.hash | 2 + .../python-bitstring/python-bitstring.mk | 14 + .../buildroot/package/python-bottle/Config.in | 9 + .../package/python-bottle/python-bottle.hash | 3 + .../package/python-bottle/python-bottle.mk | 14 + .../package/python-cached-property/Config.in | 6 + .../python-cached-property.hash | 4 + .../python-cached-property.mk | 14 + .../buildroot/package/python-can/Config.in | 14 + .../package/python-can/python-can.hash | 4 + .../package/python-can/python-can.mk | 13 + .../buildroot/package/python-cbor/Config.in | 6 + .../package/python-cbor/python-cbor.hash | 3 + .../package/python-cbor/python-cbor.mk | 13 + .../package/python-cchardet/Config.in | 11 + .../python-cchardet/python-cchardet.hash | 5 + .../python-cchardet/python-cchardet.mk | 14 + .../package/python-certifi/Config.in | 6 + .../python-certifi/python-certifi.hash | 5 + .../package/python-certifi/python-certifi.mk | 14 + .../buildroot/package/python-cffi/Config.in | 10 + .../package/python-cffi/python-cffi.hash | 4 + .../package/python-cffi/python-cffi.mk | 27 + .../package/python-characteristic/Config.in | 6 + .../python-characteristic.hash | 3 + .../python-characteristic.mk | 14 + .../package/python-chardet/Config.in | 7 + .../python-chardet/python-chardet.hash | 3 + .../package/python-chardet/python-chardet.mk | 14 + .../package/python-cheetah/Config.in | 13 + .../python-cheetah/python-cheetah.hash | 4 + .../package/python-cheetah/python-cheetah.mk | 20 + .../package/python-cheroot/Config.in | 8 + .../python-cheroot/python-cheroot.hash | 4 + .../package/python-cheroot/python-cheroot.mk | 15 + .../package/python-cherrypy/Config.in | 14 + .../python-cherrypy/python-cherrypy.hash | 4 + .../python-cherrypy/python-cherrypy.mk | 15 + .../buildroot/package/python-click/Config.in | 7 + .../package/python-click/python-click.hash | 5 + .../package/python-click/python-click.mk | 14 + .../0001-Fix-twisted-detection.patch | 29 + .../package/python-coherence/Config.in | 15 + .../python-coherence/python-coherence.hash | 2 + .../python-coherence/python-coherence.mk | 13 + .../package/python-colorama/Config.in | 6 + .../python-colorama/python-colorama.hash | 5 + .../python-colorama/python-colorama.mk | 14 + .../package/python-conan/Config.in.host | 7 + .../package/python-conan/python-conan.hash | 3 + .../package/python-conan/python-conan.mk | 15 + .../package/python-configobj/Config.in | 10 + .../python-configobj/python-configobj.hash | 3 + .../python-configobj/python-configobj.mk | 14 + .../package/python-configshell-fb/Config.in | 12 + .../python-configshell-fb.hash | 2 + .../python-configshell-fb.mk | 16 + .../package/python-constantly/Config.in | 8 + .../python-constantly/python-constantly.hash | 3 + .../python-constantly/python-constantly.mk | 14 + .../package/python-couchdb/Config.in | 8 + .../python-couchdb/python-couchdb.hash | 3 + .../package/python-couchdb/python-couchdb.mk | 14 + .../buildroot/package/python-crc16/Config.in | 11 + .../package/python-crc16/python-crc16.hash | 2 + .../package/python-crc16/python-crc16.mk | 13 + .../buildroot/package/python-crcmod/Config.in | 8 + .../package/python-crcmod/python-crcmod.hash | 3 + .../package/python-crcmod/python-crcmod.mk | 14 + .../0001-Avoid-intentional-syntax-error.patch | 29 + .../0002-Remove-idna-requirement.patch | 29 + .../package/python-crossbar/Config.in | 52 + .../python-crossbar/python-crossbar.hash | 5 + .../python-crossbar/python-crossbar.mk | 14 + .../package/python-cryptography/Config.in | 24 + .../python-cryptography.hash | 7 + .../python-cryptography.mk | 16 + .../package/python-cssselect/Config.in | 7 + .../python-cssselect/python-cssselect.hash | 4 + .../python-cssselect/python-cssselect.mk | 14 + .../package/python-cssutils/Config.in | 8 + .../python-cssutils/python-cssutils.hash | 3 + .../python-cssutils/python-cssutils.mk | 14 + .../buildroot/package/python-cycler/Config.in | 8 + .../package/python-cycler/python-cycler.hash | 4 + .../package/python-cycler/python-cycler.mk | 14 + .../package/python-cython/Config.in.host | 7 + .../package/python-cython/python-cython.hash | 6 + .../package/python-cython/python-cython.mk | 14 + .../buildroot/package/python-daemon/Config.in | 7 + .../package/python-daemon/python-daemon.hash | 6 + .../package/python-daemon/python-daemon.mk | 14 + .../package/python-daemonize/Config.in | 8 + .../python-daemonize/python-daemonize.hash | 3 + .../python-daemonize/python-daemonize.mk | 14 + .../package/python-dataproperty/Config.in | 8 + .../python-dataproperty.hash | 4 + .../python-dataproperty.mk | 14 + .../package/python-dateutil/Config.in | 7 + .../python-dateutil/python-dateutil.hash | 5 + .../python-dateutil/python-dateutil.mk | 14 + .../package/python-decorator/Config.in | 6 + .../python-decorator/python-decorator.hash | 5 + .../python-decorator/python-decorator.mk | 15 + .../buildroot/package/python-dialog/Config.in | 10 + .../package/python-dialog/python-dialog.hash | 2 + .../package/python-dialog/python-dialog.mk | 15 + .../package/python-dialog3/Config.in | 10 + .../python-dialog3/python-dialog3.hash | 3 + .../package/python-dialog3/python-dialog3.mk | 15 + .../package/python-dicttoxml/Config.in | 9 + .../python-dicttoxml/python-dicttoxml.hash | 3 + .../python-dicttoxml/python-dicttoxml.mk | 14 + .../buildroot/package/python-django/Config.in | 17 + .../package/python-django/python-django.hash | 5 + .../package/python-django/python-django.mk | 15 + .../package/python-docker-pycreds/Config.in | 7 + .../python-docker-pycreds.hash | 4 + .../python-docker-pycreds.mk | 14 + .../buildroot/package/python-docker/Config.in | 15 + .../package/python-docker/python-docker.hash | 4 + .../package/python-docker/python-docker.mk | 14 + .../package/python-dockerpty/Config.in | 7 + .../python-dockerpty/python-dockerpty.hash | 4 + .../python-dockerpty/python-dockerpty.mk | 14 + .../buildroot/package/python-docopt/Config.in | 11 + .../package/python-docopt/python-docopt.hash | 2 + .../package/python-docopt/python-docopt.mk | 13 + .../package/python-docutils/Config.in | 9 + .../python-docutils/python-docutils.hash | 4 + .../python-docutils/python-docutils.mk | 15 + .../package/python-dominate/Config.in | 7 + .../python-dominate/python-dominate.hash | 3 + .../python-dominate/python-dominate.mk | 14 + .../buildroot/package/python-dpkt/Config.in | 9 + .../package/python-dpkt/python-dpkt.hash | 2 + .../package/python-dpkt/python-dpkt.mk | 13 + .../buildroot/package/python-ecdsa/Config.in | 6 + .../package/python-ecdsa/python-ecdsa.hash | 4 + .../package/python-ecdsa/python-ecdsa.mk | 14 + .../package/python-engineio/Config.in | 9 + .../python-engineio/python-engineio.hash | 5 + .../python-engineio/python-engineio.mk | 13 + .../buildroot/package/python-enum/Config.in | 12 + .../package/python-enum/python-enum.hash | 3 + .../package/python-enum/python-enum.mk | 14 + .../buildroot/package/python-enum34/Config.in | 12 + .../package/python-enum34/python-enum34.hash | 3 + .../package/python-enum34/python-enum34.mk | 15 + .../buildroot/package/python-falcon/Config.in | 7 + .../package/python-falcon/python-falcon.hash | 5 + .../package/python-falcon/python-falcon.mk | 18 + .../python-fastentrypoints/Config.in.host | 6 + .../python-fastentrypoints.hash | 4 + .../python-fastentrypoints.mk | 14 + .../buildroot/package/python-fire/Config.in | 10 + .../package/python-fire/python-fire.hash | 5 + .../package/python-fire/python-fire.mk | 14 + .../package/python-flask-babel/Config.in | 12 + .../python-flask-babel.hash | 3 + .../python-flask-babel/python-flask-babel.mk | 14 + .../package/python-flask-cors/Config.in | 8 + .../python-flask-cors/python-flask-cors.hash | 4 + .../python-flask-cors/python-flask-cors.mk | 14 + .../package/python-flask-jsonrpc/Config.in | 8 + .../python-flask-jsonrpc.hash | 3 + .../python-flask-jsonrpc.mk | 14 + .../package/python-flask-login/Config.in | 8 + .../python-flask-login.hash | 3 + .../python-flask-login/python-flask-login.mk | 14 + .../package/python-flask-sqlalchemy/Config.in | 9 + .../python-flask-sqlalchemy.hash | 4 + .../python-flask-sqlalchemy.mk | 14 + .../buildroot/package/python-flask/Config.in | 13 + .../package/python-flask/python-flask.hash | 4 + .../package/python-flask/python-flask.mk | 14 + .../buildroot/package/python-flup/Config.in | 9 + .../package/python-flup/python-flup.hash | 3 + .../package/python-flup/python-flup.mk | 15 + .../package/python-functools32/Config.in | 8 + .../python-functools32.hash | 4 + .../python-functools32/python-functools32.mk | 14 + .../package/python-futures/Config.in | 7 + .../python-futures/python-futures.hash | 5 + .../package/python-futures/python-futures.mk | 14 + .../0001-add-PYTHON_INCLUDES-override.patch | 32 + .../package/python-gobject/Config.in | 14 + .../python-gobject/python-gobject.hash | 2 + .../package/python-gobject/python-gobject.mk | 39 + .../package/python-gunicorn/Config.in | 12 + .../python-gunicorn/python-gunicorn.hash | 5 + .../python-gunicorn/python-gunicorn.mk | 26 + .../buildroot/package/python-h2/Config.in | 8 + .../package/python-h2/python-h2.hash | 3 + .../buildroot/package/python-h2/python-h2.mk | 14 + ...STORY.rst-from-UTF-8-format-to-ASCII.patch | 40 + .../buildroot/package/python-hpack/Config.in | 6 + .../package/python-hpack/python-hpack.hash | 3 + .../package/python-hpack/python-hpack.mk | 14 + .../package/python-html5lib/Config.in | 6 + .../python-html5lib/python-html5lib.hash | 3 + .../python-html5lib/python-html5lib.mk | 14 + .../package/python-httplib2/Config.in | 11 + .../python-httplib2/python-httplib2.hash | 3 + .../python-httplib2/python-httplib2.mk | 14 + .../package/python-humanize/Config.in | 9 + .../python-humanize/python-humanize.hash | 3 + .../python-humanize/python-humanize.mk | 14 + .../package/python-hyperframe/Config.in | 6 + .../python-hyperframe/python-hyperframe.hash | 3 + .../python-hyperframe/python-hyperframe.mk | 14 + .../package/python-hyperlink/Config.in | 7 + .../python-hyperlink/python-hyperlink.hash | 5 + .../python-hyperlink/python-hyperlink.mk | 14 + .../package/python-ibmiotf/Config.in | 15 + .../python-ibmiotf/python-ibmiotf.hash | 3 + .../package/python-ibmiotf/python-ibmiotf.mk | 13 + .../buildroot/package/python-id3/Config.in | 9 + .../package/python-id3/python-id3.hash | 2 + .../package/python-id3/python-id3.mk | 14 + .../buildroot/package/python-idna/Config.in | 12 + .../package/python-idna/python-idna.hash | 5 + .../package/python-idna/python-idna.mk | 14 + .../package/python-incremental/Config.in | 6 + .../python-incremental.hash | 5 + .../python-incremental/python-incremental.mk | 15 + .../package/python-inflection/Config.in | 12 + .../python-inflection/python-inflection.hash | 5 + .../python-inflection/python-inflection.mk | 15 + .../package/python-influxdb/Config.in | 10 + .../python-influxdb/python-influxdb.hash | 5 + .../python-influxdb/python-influxdb.mk | 14 + .../package/python-iniparse/Config.in | 11 + .../python-iniparse/python-iniparse.hash | 3 + .../python-iniparse/python-iniparse.mk | 14 + .../buildroot/package/python-iowait/Config.in | 6 + .../package/python-iowait/python-iowait.hash | 4 + .../package/python-iowait/python-iowait.mk | 14 + .../buildroot/package/python-ipaddr/Config.in | 9 + .../package/python-ipaddr/python-ipaddr.hash | 3 + .../package/python-ipaddr/python-ipaddr.mk | 14 + .../package/python-ipaddress/Config.in | 7 + .../python-ipaddress/python-ipaddress.hash | 5 + .../python-ipaddress/python-ipaddress.mk | 14 + .../package/python-iptables/Config.in | 7 + .../python-iptables/python-iptables.hash | 5 + .../python-iptables/python-iptables.mk | 13 + .../buildroot/package/python-ipy/Config.in | 8 + .../package/python-ipy/python-ipy.hash | 3 + .../package/python-ipy/python-ipy.mk | 14 + .../package/python-ipython-genutils/Config.in | 6 + .../python-ipython-genutils.hash | 3 + .../python-ipython-genutils.mk | 14 + ...1-set-correct-python-executable-path.patch | 15 + .../package/python-ipython/Config.in | 19 + .../python-ipython/python-ipython.hash | 6 + .../package/python-ipython/python-ipython.mk | 14 + .../package/python-iso8601/Config.in | 6 + .../python-iso8601/python-iso8601.hash | 4 + .../package/python-iso8601/python-iso8601.mk | 14 + .../package/python-itsdangerous/Config.in | 9 + .../python-itsdangerous.hash | 4 + .../python-itsdangerous.mk | 14 + .../package/python-jaraco-classes/Config.in | 7 + .../python-jaraco-classes.hash | 4 + .../python-jaraco-classes.mk | 15 + .../buildroot/package/python-jedi/Config.in | 8 + .../package/python-jedi/python-jedi.hash | 6 + .../package/python-jedi/python-jedi.mk | 14 + .../buildroot/package/python-jinja2/Config.in | 9 + .../package/python-jinja2/python-jinja2.hash | 5 + .../package/python-jinja2/python-jinja2.mk | 30 + .../python-json-schema-validator/Config.in | 6 + .../python-json-schema-validator.hash | 3 + .../python-json-schema-validator.mk | 14 + .../package/python-jsonmodels/Config.in | 9 + .../python-jsonmodels/python-jsonmodels.hash | 5 + .../python-jsonmodels/python-jsonmodels.mk | 14 + .../package/python-jsonschema/Config.in | 7 + .../python-jsonschema/python-jsonschema.hash | 3 + .../python-jsonschema/python-jsonschema.mk | 15 + .../package/python-keyring/Config.in | 12 + .../python-keyring/python-keyring.hash | 4 + .../package/python-keyring/python-keyring.mk | 15 + ...python-name-depending-on-current-Pyt.patch | 44 + .../package/python-libconfig/Config.in | 23 + .../python-libconfig/python-libconfig.hash | 2 + .../python-libconfig/python-libconfig.mk | 17 + .../package/python-libusb1/Config.in | 11 + .../python-libusb1/python-libusb1.hash | 4 + .../package/python-libusb1/python-libusb1.mk | 15 + .../buildroot/package/python-lmdb/Config.in | 7 + .../package/python-lmdb/python-lmdb.hash | 5 + .../package/python-lmdb/python-lmdb.mk | 15 + .../package/python-logbook/Config.in | 8 + .../python-logbook/python-logbook.hash | 5 + .../package/python-logbook/python-logbook.mk | 14 + .../buildroot/package/python-lxml/Config.in | 11 + .../package/python-lxml/Config.in.host | 7 + .../package/python-lxml/python-lxml.hash | 6 + .../package/python-lxml/python-lxml.mk | 36 + .../buildroot/package/python-m2r/Config.in | 8 + .../package/python-m2r/python-m2r.hash | 4 + .../package/python-m2r/python-m2r.mk | 16 + .../buildroot/package/python-mad/Config.in | 9 + .../package/python-mad/python-mad.hash | 2 + .../package/python-mad/python-mad.mk | 29 + .../buildroot/package/python-mako/Config.in | 8 + .../package/python-mako/python-mako.hash | 3 + .../package/python-mako/python-mako.mk | 18 + .../package/python-markdown/Config.in | 9 + .../python-markdown/python-markdown.hash | 5 + .../python-markdown/python-markdown.mk | 15 + .../package/python-markdown2/Config.in | 6 + .../python-markdown2/python-markdown2.hash | 3 + .../python-markdown2/python-markdown2.mk | 13 + .../package/python-markupsafe/Config.in | 7 + .../python-markupsafe/python-markupsafe.hash | 4 + .../python-markupsafe/python-markupsafe.mk | 15 + .../0001-Fix-invalid-inclusion-headers.patch | 29 + .../package/python-matplotlib/Config.in | 21 + .../python-matplotlib/python-matplotlib.hash | 4 + .../python-matplotlib/python-matplotlib.mk | 16 + .../package/python-mbstrdecoder/Config.in | 6 + .../python-mbstrdecoder.hash | 3 + .../python-mbstrdecoder.mk | 14 + .../buildroot/package/python-meld3/Config.in | 8 + .../package/python-meld3/python-meld3.hash | 3 + .../package/python-meld3/python-meld3.mk | 14 + .../package/python-mimeparse/Config.in | 7 + .../python-mimeparse/python-mimeparse.hash | 5 + .../python-mimeparse/python-mimeparse.mk | 13 + .../package/python-mistune/Config.in | 7 + .../python-mistune/python-mistune.hash | 4 + .../package/python-mistune/python-mistune.mk | 15 + .../package/python-more-itertools/Config.in | 7 + .../python-more-itertools.hash | 4 + .../python-more-itertools.mk | 14 + .../package/python-msgpack/Config.in | 9 + .../python-msgpack/python-msgpack.hash | 5 + .../package/python-msgpack/python-msgpack.mk | 14 + .../package/python-multidict/Config.in | 8 + .../python-multidict/python-multidict.hash | 5 + .../python-multidict/python-multidict.mk | 14 + .../package/python-mutagen/Config.in | 20 + .../python-mutagen/python-mutagen.hash | 4 + .../package/python-mutagen/python-mutagen.mk | 14 + .../package/python-mwclient/Config.in | 8 + .../python-mwclient/python-mwclient.hash | 5 + .../python-mwclient/python-mwclient.mk | 14 + .../package/python-mwscrape/Config.in | 11 + .../python-mwscrape/python-mwscrape.hash | 2 + .../python-mwscrape/python-mwscrape.mk | 13 + .../package/python-mwscrape2slob/Config.in | 23 + .../python-mwscrape2slob.hash | 2 + .../python-mwscrape2slob.mk | 12 + .../package/python-netaddr/Config.in | 6 + .../python-netaddr/python-netaddr.hash | 3 + .../package/python-netaddr/python-netaddr.mk | 14 + .../package/python-netifaces/Config.in | 6 + .../python-netifaces/python-netifaces.hash | 3 + .../python-netifaces/python-netifaces.mk | 14 + .../package/python-networkmanager/Config.in | 16 + .../python-networkmanager.hash | 3 + .../python-networkmanager.mk | 13 + .../package/python-networkx/Config.in | 9 + .../python-networkx/python-networkx.hash | 4 + .../python-networkx/python-networkx.mk | 17 + .../buildroot/package/python-nfc/Config.in | 14 + .../package/python-nfc/python-nfc.hash | 3 + .../package/python-nfc/python-nfc.mk | 14 + .../0001-Don-t-use-fenv.h-on-uClibc.patch | 30 + ...-no-FPU-exceptions-bits-on-ARC-glibc.patch | 31 + .../buildroot/package/python-numpy/Config.in | 26 + .../package/python-numpy/python-numpy.hash | 9 + .../package/python-numpy/python-numpy.mk | 40 + .../package/python-oauthlib/Config.in | 7 + .../python-oauthlib/python-oauthlib.hash | 5 + .../python-oauthlib/python-oauthlib.mk | 14 + .../package/python-paho-mqtt/Config.in | 9 + .../python-paho-mqtt/python-paho-mqtt.hash | 6 + .../python-paho-mqtt/python-paho-mqtt.mk | 14 + .../package/python-pam/0001-dealloc.patch | 25 + .../package/python-pam/0002-nofree.patch | 68 + .../0003-memory-errors-CVE2012-1502.patch | 136 + .../buildroot/package/python-pam/Config.in | 18 + .../package/python-pam/python-pam.hash | 2 + .../package/python-pam/python-pam.mk | 16 + .../package/python-paramiko/Config.in | 16 + .../python-paramiko/python-paramiko.hash | 5 + .../python-paramiko/python-paramiko.mk | 14 + .../buildroot/package/python-parso/Config.in | 6 + .../package/python-parso/python-parso.hash | 7 + .../package/python-parso/python-parso.mk | 14 + .../package/python-passlib/Config.in | 7 + .../python-passlib/python-passlib.hash | 5 + .../package/python-passlib/python-passlib.mk | 14 + .../buildroot/package/python-patch/Config.in | 6 + .../package/python-patch/python-patch.hash | 2 + .../package/python-patch/python-patch.mk | 17 + .../package/python-pathlib2/Config.in | 14 + .../python-pathlib2/python-pathlib2.hash | 5 + .../python-pathlib2/python-pathlib2.mk | 14 + .../buildroot/package/python-pathpy/Config.in | 8 + .../package/python-pathpy/python-pathpy.hash | 3 + .../package/python-pathpy/python-pathpy.mk | 14 + .../package/python-pathtools/Config.in | 6 + .../python-pathtools/python-pathtools.hash | 4 + .../python-pathtools/python-pathtools.mk | 14 + .../package/python-pathvalidate/Config.in | 7 + .../python-pathvalidate.hash | 3 + .../python-pathvalidate.mk | 14 + .../package/python-periphery/Config.in | 7 + .../python-periphery/python-periphery.hash | 3 + .../python-periphery/python-periphery.mk | 13 + .../package/python-pexpect/Config.in | 12 + .../python-pexpect/python-pexpect.hash | 5 + .../package/python-pexpect/python-pexpect.mk | 24 + .../package/python-pickleshare/Config.in | 7 + .../python-pickleshare.hash | 3 + .../python-pickleshare/python-pickleshare.mk | 14 + .../buildroot/package/python-pigpio/Config.in | 8 + .../package/python-pigpio/python-pigpio.hash | 3 + .../package/python-pigpio/python-pigpio.mk | 13 + .../buildroot/package/python-pillow/Config.in | 13 + .../package/python-pillow/python-pillow.hash | 4 + .../package/python-pillow/python-pillow.mk | 73 + .../buildroot/package/python-pip/Config.in | 7 + .../package/python-pip/python-pip.hash | 5 + .../package/python-pip/python-pip.mk | 14 + .../package/python-pluginbase/Config.in | 8 + .../package/python-pluginbase/Config.in.host | 8 + .../python-pluginbase/python-pluginbase.hash | 2 + .../python-pluginbase/python-pluginbase.mk | 15 + .../buildroot/package/python-ply/Config.in | 6 + .../package/python-ply/python-ply.hash | 5 + .../package/python-ply/python-ply.mk | 15 + .../package/python-portend/Config.in | 7 + .../python-portend/python-portend.hash | 3 + .../package/python-portend/python-portend.mk | 14 + .../package/python-posix-ipc/Config.in | 13 + .../python-posix-ipc/python-posix-ipc.hash | 5 + .../python-posix-ipc/python-posix-ipc.mk | 14 + .../package/python-priority/Config.in | 6 + .../python-priority/python-priority.hash | 3 + .../python-priority/python-priority.mk | 14 + .../package/python-prompt-toolkit/Config.in | 11 + .../python-prompt-toolkit.hash | 5 + .../python-prompt-toolkit.mk | 14 + .../package/python-protobuf/Config.in | 14 + .../python-protobuf/python-protobuf.hash | 3 + .../python-protobuf/python-protobuf.mk | 16 + .../buildroot/package/python-psutil/Config.in | 8 + .../package/python-psutil/python-psutil.hash | 5 + .../package/python-psutil/python-psutil.mk | 14 + .../package/python-psycopg2/Config.in | 25 + .../python-psycopg2/python-psycopg2.hash | 5 + .../python-psycopg2/python-psycopg2.mk | 19 + .../package/python-ptyprocess/Config.in | 7 + .../python-ptyprocess/python-ptyprocess.hash | 3 + .../python-ptyprocess/python-ptyprocess.mk | 14 + .../buildroot/package/python-pudb/Config.in | 11 + .../package/python-pudb/python-pudb.hash | 3 + .../package/python-pudb/python-pudb.mk | 14 + .../buildroot/package/python-py/Config.in | 7 + .../package/python-py/python-py.hash | 5 + .../buildroot/package/python-py/python-py.mk | 15 + .../package/python-pyasn-modules/Config.in | 11 + .../python-pyasn-modules.hash | 3 + .../python-pyasn-modules.mk | 14 + .../buildroot/package/python-pyasn/Config.in | 14 + .../package/python-pyasn/python-pyasn.hash | 3 + .../package/python-pyasn/python-pyasn.mk | 14 + .../package/python-pyasn1-modules/Config.in | 7 + .../python-pyasn1-modules.hash | 5 + .../python-pyasn1-modules.mk | 14 + .../buildroot/package/python-pyasn1/Config.in | 6 + .../package/python-pyasn1/python-pyasn1.hash | 5 + .../package/python-pyasn1/python-pyasn1.mk | 14 + .../package/python-pycairo/Config.in | 7 + .../python-pycairo/python-pycairo.hash | 7 + .../package/python-pycairo/python-pycairo.mk | 15 + .../package/python-pycares/Config.in | 8 + .../python-pycares/python-pycares.hash | 5 + .../package/python-pycares/python-pycares.mk | 15 + .../buildroot/package/python-pycli/Config.in | 7 + .../package/python-pycli/python-pycli.hash | 3 + .../package/python-pycli/python-pycli.mk | 14 + .../package/python-pycparser/Config.in | 6 + .../python-pycparser/python-pycparser.hash | 5 + .../python-pycparser/python-pycparser.mk | 15 + .../0001-remove-incorrect-header-path.patch | 21 + .../package/python-pycrypto/Config.in | 8 + .../python-pycrypto/python-pycrypto.hash | 2 + .../python-pycrypto/python-pycrypto.mk | 49 + .../package/python-pycryptodomex/Config.in | 6 + .../python-pycryptodomex.hash | 6 + .../python-pycryptodomex.mk | 17 + .../buildroot/package/python-pydal/Config.in | 15 + .../package/python-pydal/python-pydal.hash | 3 + .../package/python-pydal/python-pydal.mk | 14 + .../package/python-pyelftools/Config.in | 7 + .../python-pyelftools/python-pyelftools.hash | 4 + .../python-pyelftools/python-pyelftools.mk | 15 + .../package/python-pyftpdlib/Config.in | 6 + .../python-pyftpdlib/python-pyftpdlib.hash | 4 + .../python-pyftpdlib/python-pyftpdlib.mk | 14 + .../buildroot/package/python-pygame/Config.in | 56 + .../package/python-pygame/python-pygame.mk | 111 + .../package/python-pygments/Config.in | 6 + .../python-pygments/python-pygments.hash | 3 + .../python-pygments/python-pygments.mk | 14 + .../package/python-pyhamcrest/Config.in | 8 + .../python-pyhamcrest/python-pyhamcrest.hash | 5 + .../python-pyhamcrest/python-pyhamcrest.mk | 14 + .../buildroot/package/python-pyicu/Config.in | 17 + .../package/python-pyicu/python-pyicu.hash | 3 + .../package/python-pyicu/python-pyicu.mk | 15 + .../package/python-pyinotify/Config.in | 6 + .../python-pyinotify/python-pyinotify.hash | 2 + .../python-pyinotify/python-pyinotify.mk | 13 + .../buildroot/package/python-pyjwt/Config.in | 6 + .../package/python-pyjwt/python-pyjwt.hash | 5 + .../package/python-pyjwt/python-pyjwt.mk | 14 + .../0001-do-not-use-find-library.patch | 31 + .../package/python-pylibftdi/Config.in | 11 + .../python-pylibftdi/python-pylibftdi.hash | 6 + .../python-pylibftdi/python-pylibftdi.mk | 15 + .../buildroot/package/python-pylru/Config.in | 6 + .../package/python-pylru/python-pylru.hash | 3 + .../package/python-pylru/python-pylru.mk | 14 + .../package/python-pymodbus/Config.in | 7 + .../python-pymodbus/python-pymodbus.hash | 3 + .../python-pymodbus/python-pymodbus.mk | 13 + .../package/python-pymysql/Config.in | 7 + .../python-pymysql/python-pymysql.hash | 3 + .../package/python-pymysql/python-pymysql.mk | 14 + .../buildroot/package/python-pynacl/Config.in | 10 + .../package/python-pynacl/python-pynacl.hash | 5 + .../package/python-pynacl/python-pynacl.mk | 16 + .../package/python-pyopenssl/Config.in | 12 + .../python-pyopenssl/python-pyopenssl.hash | 5 + .../python-pyopenssl/python-pyopenssl.mk | 14 + .../package/python-pyparsing/Config.in | 10 + .../python-pyparsing/python-pyparsing.hash | 3 + .../python-pyparsing/python-pyparsing.mk | 14 + .../package/python-pyparted/Config.in | 11 + .../python-pyparted/python-pyparted.hash | 2 + .../python-pyparted/python-pyparted.mk | 14 + .../buildroot/package/python-pypcap/Config.in | 9 + .../package/python-pypcap/python-pypcap.hash | 2 + .../package/python-pypcap/python-pypcap.mk | 21 + .../package/python-pyqrcode/Config.in | 11 + .../python-pyqrcode/python-pyqrcode.hash | 3 + .../python-pyqrcode/python-pyqrcode.mk | 14 + .../0001-configure-skip-qtdetail.patch | 29 + .../python-pyqt5/0002-fix-qt-5.6.2.patch | 28 + ...uttonHint-and-WindowCancelButtonHint.patch | 27 + ...drop-qttest-qtestmouse-waitforevents.patch | 32 + .../buildroot/package/python-pyqt5/Config.in | 11 + .../package/python-pyqt5/python-pyqt5.hash | 3 + .../package/python-pyqt5/python-pyqt5.mk | 79 + .../package/python-pyratemp/Config.in | 8 + .../python-pyratemp/python-pyratemp.hash | 4 + .../python-pyratemp/python-pyratemp.mk | 14 + .../package/python-pyrex/python-pyrex.hash | 2 + .../package/python-pyrex/python-pyrex.mk | 15 + .../buildroot/package/python-pyro/Config.in | 10 + .../package/python-pyro/python-pyro.hash | 3 + .../package/python-pyro/python-pyro.mk | 14 + .../package/python-pyroute2/Config.in | 9 + .../python-pyroute2/python-pyroute2.hash | 7 + .../python-pyroute2/python-pyroute2.mk | 14 + .../package/python-pysendfile/Config.in | 6 + .../python-pysendfile/python-pysendfile.hash | 2 + .../python-pysendfile/python-pysendfile.mk | 13 + .../buildroot/package/python-pysmb/Config.in | 15 + .../package/python-pysmb/python-pysmb.hash | 3 + .../package/python-pysmb/python-pysmb.mk | 14 + .../buildroot/package/python-pysmi/Config.in | 7 + .../package/python-pysmi/python-pysmi.hash | 5 + .../package/python-pysmi/python-pysmi.mk | 14 + .../package/python-pysnmp-apps/Config.in | 12 + .../python-pysnmp-apps.hash | 3 + .../python-pysnmp-apps/python-pysnmp-apps.mk | 16 + .../package/python-pysnmp-mibs/Config.in | 12 + .../python-pysnmp-mibs.hash | 3 + .../python-pysnmp-mibs/python-pysnmp-mibs.mk | 16 + .../buildroot/package/python-pysnmp/Config.in | 10 + .../package/python-pysnmp/python-pysnmp.hash | 5 + .../package/python-pysnmp/python-pysnmp.mk | 15 + .../package/python-pysocks/Config.in | 6 + .../python-pysocks/python-pysocks.hash | 3 + .../package/python-pysocks/python-pysocks.mk | 14 + .../package/python-pytablereader/Config.in | 23 + .../python-pytablereader.hash | 4 + .../python-pytablereader.mk | 14 + .../package/python-pytablewriter/Config.in | 21 + .../python-pytablewriter.hash | 4 + .../python-pytablewriter.mk | 14 + .../buildroot/package/python-pytrie/Config.in | 7 + .../package/python-pytrie/python-pytrie.hash | 5 + .../package/python-pytrie/python-pytrie.mk | 14 + .../buildroot/package/python-pytz/Config.in | 6 + .../package/python-pytz/python-pytz.hash | 5 + .../package/python-pytz/python-pytz.mk | 14 + ...ng-libudev-on-systems-without-ldconf.patch | 47 + .../buildroot/package/python-pyudev/Config.in | 15 + .../package/python-pyudev/python-pyudev.hash | 3 + .../package/python-pyudev/python-pyudev.mk | 14 + .../buildroot/package/python-pyusb/Config.in | 12 + .../package/python-pyusb/python-pyusb.hash | 3 + .../package/python-pyusb/python-pyusb.mk | 15 + .../buildroot/package/python-pyxb/Config.in | 8 + .../package/python-pyxb/python-pyxb.hash | 4 + .../package/python-pyxb/python-pyxb.mk | 14 + .../buildroot/package/python-pyyaml/Config.in | 7 + .../package/python-pyyaml/python-pyyaml.hash | 3 + .../package/python-pyyaml/python-pyyaml.mk | 17 + ...ldroot-zmq-version-instead-of-detect.patch | 54 + .../buildroot/package/python-pyzmq/Config.in | 13 + .../package/python-pyzmq/python-pyzmq.hash | 3 + .../package/python-pyzmq/python-pyzmq.mk | 29 + .../buildroot/package/python-raven/Config.in | 12 + .../package/python-raven/python-raven.hash | 5 + .../package/python-raven/python-raven.mk | 14 + .../package/python-reentry/Config.in | 10 + .../python-reentry/python-reentry.hash | 5 + .../package/python-reentry/python-reentry.mk | 14 + .../buildroot/package/python-remi/Config.in | 9 + .../package/python-remi/python-remi.hash | 3 + .../package/python-remi/python-remi.mk | 13 + .../package/python-request-id/Config.in | 7 + .../python-request-id/python-request-id.hash | 5 + .../python-request-id/python-request-id.mk | 14 + .../python-requests-oauthlib/Config.in | 8 + .../python-requests-oauthlib.hash | 5 + .../python-requests-oauthlib.mk | 14 + .../python-requests-toolbelt/Config.in | 7 + .../python-requests-toolbelt.hash | 3 + .../python-requests-toolbelt.mk | 14 + .../package/python-requests/Config.in | 16 + .../python-requests/python-requests.hash | 5 + .../python-requests/python-requests.mk | 14 + .../package/python-rpi-gpio/Config.in | 7 + .../python-rpi-gpio/python-rpi-gpio.hash | 3 + .../python-rpi-gpio/python-rpi-gpio.mk | 14 + .../package/python-rtslib-fb/Config.in | 9 + .../python-rtslib-fb/python-rtslib-fb.hash | 2 + .../python-rtslib-fb/python-rtslib-fb.mk | 17 + .../package/python-scandir/Config.in | 6 + .../python-scandir/python-scandir.hash | 5 + .../package/python-scandir/python-scandir.mk | 14 + .../buildroot/package/python-scapy/Config.in | 8 + .../package/python-scapy/python-scapy.hash | 5 + .../package/python-scapy/python-scapy.mk | 14 + .../package/python-scapy3k/Config.in | 9 + .../python-scapy3k/python-scapy3k.hash | 2 + .../package/python-scapy3k/python-scapy3k.mk | 12 + .../package/python-schedule/Config.in | 6 + .../python-schedule/python-schedule.hash | 5 + .../python-schedule/python-schedule.mk | 14 + .../package/python-sdnotify/Config.in | 7 + .../python-sdnotify/python-sdnotify.hash | 5 + .../python-sdnotify/python-sdnotify.mk | 14 + .../package/python-secretstorage/Config.in | 11 + .../python-secretstorage.hash | 4 + .../python-secretstorage.mk | 14 + .../buildroot/package/python-see/Config.in | 6 + .../package/python-see/python-see.hash | 4 + .../package/python-see/python-see.mk | 14 + .../buildroot/package/python-semver/Config.in | 6 + .../package/python-semver/python-semver.hash | 3 + .../package/python-semver/python-semver.mk | 14 + .../package/python-sentry-sdk/Config.in | 8 + .../python-sentry-sdk/python-sentry-sdk.hash | 5 + .../python-sentry-sdk/python-sentry-sdk.mk | 14 + .../package/python-serial-asyncio/Config.in | 8 + .../python-serial-asyncio.hash | 5 + .../python-serial-asyncio.mk | 14 + .../buildroot/package/python-serial/Config.in | 6 + .../package/python-serial/python-serial.hash | 5 + .../package/python-serial/python-serial.mk | 14 + .../package/python-service-identity/Config.in | 15 + .../python-service-identity.hash | 3 + .../python-service-identity.mk | 14 + .../package/python-setproctitle/Config.in | 6 + .../python-setproctitle.hash | 3 + .../python-setproctitle.mk | 14 + .../python-setuptools-scm.hash | 5 + .../python-setuptools-scm.mk | 14 + .../0001-add-executable.patch | 72 + .../package/python-setuptools/Config.in | 11 + .../python-setuptools/python-setuptools.hash | 4 + .../python-setuptools/python-setuptools.mk | 30 + .../buildroot/package/python-sh/Config.in | 7 + .../package/python-sh/python-sh.hash | 3 + .../buildroot/package/python-sh/python-sh.mk | 14 + .../package/python-shutilwhich/Config.in | 6 + .../python-shutilwhich.hash | 3 + .../python-shutilwhich/python-shutilwhich.mk | 13 + .../package/python-simpleaudio/Config.in | 14 + .../python-simpleaudio.hash | 3 + .../python-simpleaudio/python-simpleaudio.mk | 15 + .../package/python-simplegeneric/Config.in | 7 + .../python-simplegeneric.hash | 3 + .../python-simplegeneric.mk | 24 + .../package/python-simplejson/Config.in | 6 + .../python-simplejson/python-simplejson.hash | 3 + .../python-simplejson/python-simplejson.mk | 14 + .../package/python-simplesqlite/Config.in | 18 + .../python-simplesqlite.hash | 3 + .../python-simplesqlite.mk | 14 + .../package/python-singledispatch/Config.in | 9 + .../python-singledispatch.hash | 3 + .../python-singledispatch.mk | 14 + .../buildroot/package/python-sip/Config.in | 17 + .../package/python-sip/python-sip.hash | 4 + .../package/python-sip/python-sip.mk | 61 + .../buildroot/package/python-six/Config.in | 9 + .../package/python-six/Config.in.host | 9 + .../package/python-six/python-six.hash | 5 + .../package/python-six/python-six.mk | 15 + .../buildroot/package/python-slob/Config.in | 21 + .../package/python-slob/python-slob.hash | 2 + .../package/python-slob/python-slob.mk | 13 + .../package/python-smbus-cffi/Config.in | 10 + .../python-smbus-cffi/python-smbus-cffi.hash | 3 + .../python-smbus-cffi/python-smbus-cffi.mk | 15 + .../package/python-socketio/Config.in | 8 + .../python-socketio/python-socketio.hash | 5 + .../python-socketio/python-socketio.mk | 13 + .../package/python-sortedcontainers/Config.in | 7 + .../python-sortedcontainers.hash | 5 + .../python-sortedcontainers.mk | 14 + .../buildroot/package/python-spidev/Config.in | 7 + .../package/python-spidev/python-spidev.hash | 3 + .../package/python-spidev/python-spidev.mk | 14 + .../package/python-sqlalchemy/Config.in | 13 + .../python-sqlalchemy/python-sqlalchemy.hash | 4 + .../python-sqlalchemy/python-sqlalchemy.mk | 14 + .../package/python-subprocess32/Config.in | 13 + .../python-subprocess32.hash | 5 + .../python-subprocess32.mk | 14 + .../package/python-systemd/Config.in | 10 + .../python-systemd/python-systemd.hash | 3 + .../package/python-systemd/python-systemd.mk | 15 + .../package/python-tabledata/Config.in | 12 + .../python-tabledata/python-tabledata.hash | 4 + .../python-tabledata/python-tabledata.mk | 21 + .../package/python-tempora/Config.in | 8 + .../python-tempora/python-tempora.hash | 3 + .../package/python-tempora/python-tempora.mk | 14 + .../package/python-termcolor/Config.in | 6 + .../python-termcolor/python-termcolor.hash | 5 + .../python-termcolor/python-termcolor.mk | 14 + .../package/python-terminaltables/Config.in | 7 + .../python-terminaltables.hash | 3 + .../python-terminaltables.mk | 13 + .../package/python-texttable/Config.in | 6 + .../python-texttable/python-texttable.hash | 4 + .../python-texttable/python-texttable.mk | 14 + .../buildroot/package/python-thrift/Config.in | 8 + .../package/python-thrift/python-thrift.hash | 3 + .../package/python-thrift/python-thrift.mk | 14 + .../package/python-tinyrpc/Config.in | 9 + .../python-tinyrpc/python-tinyrpc.hash | 5 + .../package/python-tinyrpc/python-tinyrpc.mk | 14 + .../buildroot/package/python-tomako/Config.in | 9 + .../package/python-tomako/python-tomako.hash | 3 + .../package/python-tomako/python-tomako.mk | 14 + .../buildroot/package/python-toml/Config.in | 6 + .../package/python-toml/python-toml.hash | 2 + .../package/python-toml/python-toml.mk | 13 + .../package/python-tornado/Config.in | 14 + .../python-tornado/python-tornado.hash | 5 + .../package/python-tornado/python-tornado.mk | 14 + .../package/python-traitlets/Config.in | 10 + .../python-traitlets/python-traitlets.hash | 3 + .../python-traitlets/python-traitlets.mk | 14 + .../buildroot/package/python-treq/Config.in | 19 + .../package/python-treq/python-treq.hash | 4 + .../package/python-treq/python-treq.mk | 15 + .../package/python-twisted/Config.in | 14 + .../python-twisted/python-twisted.hash | 5 + .../package/python-twisted/python-twisted.mk | 15 + .../buildroot/package/python-txaio/Config.in | 7 + .../package/python-txaio/python-txaio.hash | 5 + .../package/python-txaio/python-txaio.mk | 14 + .../buildroot/package/python-txdbus/Config.in | 9 + .../package/python-txdbus/python-txdbus.hash | 3 + .../package/python-txdbus/python-txdbus.mk | 13 + .../package/python-txtorcon/Config.in | 19 + .../python-txtorcon/python-txtorcon.hash | 5 + .../python-txtorcon/python-txtorcon.mk | 14 + .../buildroot/package/python-typepy/Config.in | 13 + .../package/python-typepy/python-typepy.hash | 3 + .../package/python-typepy/python-typepy.mk | 14 + .../buildroot/package/python-typing/Config.in | 8 + .../package/python-typing/python-typing.hash | 5 + .../package/python-typing/python-typing.mk | 15 + .../package/python-u-msgpack/Config.in | 7 + .../python-u-msgpack/python-u-msgpack.hash | 5 + .../python-u-msgpack/python-u-msgpack.mk | 14 + .../buildroot/package/python-ubjson/Config.in | 7 + .../package/python-ubjson/python-ubjson.hash | 5 + .../package/python-ubjson/python-ubjson.mk | 14 + .../buildroot/package/python-ujson/Config.in | 7 + .../package/python-ujson/python-ujson.hash | 3 + .../package/python-ujson/python-ujson.mk | 13 + .../package/python-urllib3/Config.in | 9 + .../python-urllib3/python-urllib3.hash | 5 + .../package/python-urllib3/python-urllib3.mk | 14 + .../buildroot/package/python-urwid/Config.in | 6 + .../package/python-urwid/python-urwid.hash | 3 + .../package/python-urwid/python-urwid.mk | 14 + .../buildroot/package/python-uvloop/Config.in | 18 + .../package/python-uvloop/python-uvloop.hash | 6 + .../package/python-uvloop/python-uvloop.mk | 17 + .../package/python-validators/Config.in | 8 + .../python-validators/python-validators.hash | 5 + .../python-validators/python-validators.mk | 14 + .../python-vcversioner.hash | 3 + .../python-vcversioner/python-vcversioner.mk | 13 + .../package/python-versiontools/Config.in | 6 + .../python-versiontools.hash | 2 + .../python-versiontools.mk | 14 + .../package/python-visitor/Config.in | 6 + .../python-visitor/python-visitor.hash | 4 + .../package/python-visitor/python-visitor.mk | 14 + .../package/python-watchdog/Config.in | 10 + .../python-watchdog/python-watchdog.hash | 7 + .../python-watchdog/python-watchdog.mk | 14 + .../package/python-wcwidth/Config.in | 7 + .../python-wcwidth/python-wcwidth.hash | 3 + .../package/python-wcwidth/python-wcwidth.mk | 14 + .../buildroot/package/python-web2py/Config.in | 36 + .../buildroot/package/python-web2py/S51web2py | 25 + .../package/python-web2py/python-web2py.hash | 3 + .../package/python-web2py/python-web2py.mk | 77 + .../package/python-web2py/web2py.service | 11 + .../buildroot/package/python-webob/Config.in | 9 + .../package/python-webob/python-webob.hash | 5 + .../package/python-webob/python-webob.mk | 14 + .../buildroot/package/python-webpy/Config.in | 9 + .../package/python-webpy/python-webpy.hash | 4 + .../package/python-webpy/python-webpy.mk | 13 + .../package/python-websocket-client/Config.in | 9 + .../python-websocket-client.hash | 4 + .../python-websocket-client.mk | 14 + .../package/python-websockets/Config.in | 10 + .../python-websockets/python-websockets.hash | 5 + .../python-websockets/python-websockets.mk | 14 + .../package/python-werkzeug/Config.in | 9 + .../python-werkzeug/python-werkzeug.hash | 4 + .../python-werkzeug/python-werkzeug.mk | 14 + .../buildroot/package/python-whoosh/Config.in | 9 + .../package/python-whoosh/python-whoosh.hash | 3 + .../package/python-whoosh/python-whoosh.mk | 14 + .../buildroot/package/python-wrapt/Config.in | 6 + .../package/python-wrapt/python-wrapt.hash | 5 + .../package/python-wrapt/python-wrapt.mk | 14 + .../buildroot/package/python-ws4py/Config.in | 7 + .../package/python-ws4py/python-ws4py.hash | 3 + .../package/python-ws4py/python-ws4py.mk | 14 + .../package/python-wsaccel/Config.in | 6 + .../python-wsaccel/python-wsaccel.hash | 3 + .../package/python-wsaccel/python-wsaccel.mk | 13 + .../package/python-wtforms/Config.in | 7 + .../python-wtforms/python-wtforms.hash | 5 + .../package/python-wtforms/python-wtforms.mk | 14 + .../buildroot/package/python-xlib/Config.in | 7 + .../package/python-xlib/python-xlib.hash | 5 + .../package/python-xlib/python-xlib.mk | 15 + .../buildroot/package/python-xlrd/Config.in | 11 + .../package/python-xlrd/Config.in.host | 7 + .../package/python-xlrd/python-xlrd.hash | 4 + .../package/python-xlrd/python-xlrd.mk | 15 + .../package/python-xlsxwriter/Config.in | 8 + .../python-xlsxwriter/python-xlsxwriter.hash | 3 + .../python-xlsxwriter/python-xlsxwriter.mk | 14 + .../package/python-xlutils/Config.in | 9 + .../python-xlutils/python-xlutils.hash | 4 + .../package/python-xlutils/python-xlutils.mk | 14 + .../buildroot/package/python-xlwt/Config.in | 8 + .../package/python-xlwt/python-xlwt.hash | 3 + .../package/python-xlwt/python-xlwt.mk | 14 + .../package/python-xmltodict/Config.in | 8 + .../python-xmltodict/python-xmltodict.hash | 4 + .../python-xmltodict/python-xmltodict.mk | 14 + .../buildroot/package/python-yarl/Config.in | 9 + .../package/python-yarl/python-yarl.hash | 5 + .../package/python-yarl/python-yarl.mk | 14 + .../package/python-yieldfrom/Config.in | 8 + .../python-yieldfrom/python-yieldfrom.hash | 4 + .../python-yieldfrom/python-yieldfrom.mk | 15 + .../package/python-zeroconf/Config.in | 9 + .../python-zeroconf/python-zeroconf.hash | 5 + .../python-zeroconf/python-zeroconf.mk | 14 + .../package/python-zope-interface/Config.in | 12 + .../python-zope-interface.hash | 5 + .../python-zope-interface.mk | 14 + ...-do-not-add-invalid-header-locations.patch | 42 + ...get_python_inc-for-cross-compilation.patch | 46 + ...nstall-location-of-_sysconfigdata.py.patch | 88 + ...ilation-of-.pyc-and-.pyo-conditional.patch | 78 + ...taddrinfo-test-for-cross-compilation.patch | 31 + ...astructure-to-be-able-to-disable-ext.patch | 81 + ...y-header-paths-for-cross-compilation.patch | 64 + ...ook-in-usr-lib-termcap-for-libraries.patch | 31 + ...9-Fix-python-config-for-cross-builds.patch | 229 + ...ove-the-python-symlink-install-rules.patch | 43 + .../0011-Don-t-add-multiarch-paths.patch | 36 + .../0012-Abort-on-failed-module-build.patch | 30 + ...d-when-threads-are-not-used-availabl.patch | 58 + .../python/0014-Serial-ioctl-workaround.patch | 33 + ...e-shebang-of-Python-scripts-for-cros.patch | 35 + ...-disable-installation-of-test-module.patch | 105 + .../0017-Add-an-option-to-disable-pydoc.patch | 89 + ...018-Add-an-option-to-disable-lib2to3.patch | 92 + ...option-to-disable-the-sqlite3-module.patch | 69 + ...d-an-option-to-disable-the-tk-module.patch | 73 + ...-option-to-disable-the-curses-module.patch | 61 + .../0022-Add-an-option-to-disable-expat.patch | 92 + ...-Add-an-option-to-disable-CJK-codecs.patch | 32 + .../0024-Add-an-option-to-disable-NIS.patch | 35 + ...Add-an-option-to-disable-unicodedata.patch | 32 + .../0026-Add-an-option-to-disable-bsddb.patch | 87 + ...-an-option-to-disable-the-ssl-module.patch | 32 + ...-an-option-to-disable-the-bz2-module.patch | 32 + ...an-option-to-disable-the-zlib-module.patch | 32 + .../0030-Do-not-install-the-idle-editor.patch | 55 + ...on-to-disable-the-ossaudiodev-module.patch | 32 + ...option-to-disable-the-hashlib-module.patch | 32 + ...an-option-to-disable-readline-module.patch | 32 + ...locale-and-set-to-default-when-addin.patch | 37 + ...19-9948-urllib-rejects-local_file-sc.patch | 59 + ...eck-for-characters-in-netloc-that-no.patch | 159 + ...ly-print-test-messages-when-verbose-.patch | 28 + ...handling-of-pre-normalization-charac.patch | 66 + ...ts-fix-to-handle-decomposition-in-us.patch | 67 + ...x-urlparse.urlsplit-error-message-fo.patch | 67 + features/buildroot/package/python/Config.in | 134 + features/buildroot/package/python/python.hash | 5 + features/buildroot/package/python/python.mk | 286 + .../0001-add-executable.patch | 1 + .../python3-setuptools.hash | 1 + .../python3-setuptools/python3-setuptools.mk | 24 + ...e-the-build-of-pyc-files-conditional.patch | 56 + ...taddrinfo-configure-test-when-cross-.patch | 27 + ...re-to-disable-the-build-of-certain-e.patch | 109 + ...y-header-paths-for-cross-compilation.patch | 67 + ...ook-in-usr-lib-termcap-for-libraries.patch | 31 + .../0006-Don-t-add-multiarch-paths.patch | 37 + .../0007-Abort-on-failed-module-build.patch | 30 + .../0008-Serial-ioctl-workaround.patch | 33 + ...e-shebang-of-Python-scripts-for-cros.patch | 35 + ...ig.sh.in-ensure-sed-invocations-only.patch | 67 + ...locale-and-set-to-default-when-addin.patch | 37 + ...Add-importlib-fix-for-PEP-3147-issue.patch | 99 + ...-disable-installation-of-test-module.patch | 116 + .../0014-Add-an-option-to-disable-pydoc.patch | 99 + ...015-Add-an-option-to-disable-lib2to3.patch | 116 + ...option-to-disable-the-sqlite3-module.patch | 69 + ...d-an-option-to-disable-the-tk-module.patch | 73 + ...-option-to-disable-the-curses-module.patch | 62 + .../0019-Add-an-option-to-disable-expat.patch | 92 + ...-Add-an-option-to-disable-CJK-codecs.patch | 30 + .../0021-Add-an-option-to-disable-NIS.patch | 33 + ...Add-an-option-to-disable-unicodedata.patch | 30 + .../0023-Add-an-option-to-disable-IDLE.patch | 89 + ...024-Add-an-option-to-disable-decimal.patch | 64 + ...on-to-disable-the-ossaudiodev-module.patch | 30 + ...an-option-to-disable-openssl-support.patch | 30 + ...ption-to-disable-the-readline-module.patch | 30 + ...to-disable-zlib-bzip2-and-xz-modules.patch | 42 + ...thon-config.sh-don-t-reassign-prefix.patch | 53 + ...-Fix-cross-compiling-the-uuid-module.patch | 38 + ...Add-an-option-to-disable-uuid-module.patch | 33 + ...-fix-building-on-older-distributions.patch | 38 + features/buildroot/package/python3/Config.in | 118 + .../buildroot/package/python3/python3.hash | 5 + features/buildroot/package/python3/python3.mk | 306 + features/buildroot/package/qdecoder/Config.in | 8 + .../buildroot/package/qdecoder/qdecoder.hash | 3 + .../buildroot/package/qdecoder/qdecoder.mk | 15 + ...age-of-mcontext-structure-on-ARM-uCl.patch | 35 + .../0002-configure-improve-usbfs-check.patch | 60 + features/buildroot/package/qemu/Config.in | 151 + .../buildroot/package/qemu/Config.in.host | 78 + features/buildroot/package/qemu/qemu.hash | 7 + features/buildroot/package/qemu/qemu.mk | 307 + ...e-a-main-include-file-QExtSerialPort.patch | 40 + ...d-a-pkgconfig-file-to-ease-usage-wit.patch | 28 + .../package/qextserialport/Config.in | 7 + .../qextserialport/qextserialport.hash | 2 + .../package/qextserialport/qextserialport.mk | 39 + features/buildroot/package/qhull/Config.in | 19 + features/buildroot/package/qhull/qhull.hash | 4 + features/buildroot/package/qhull/qhull.mk | 14 + features/buildroot/package/qjson/Config.in | 8 + features/buildroot/package/qjson/qjson.hash | 2 + features/buildroot/package/qjson/qjson.mk | 14 + features/buildroot/package/qlibc/Config.in | 17 + features/buildroot/package/qlibc/qlibc.hash | 3 + features/buildroot/package/qlibc/qlibc.mk | 21 + features/buildroot/package/qpdf/Config.in | 18 + features/buildroot/package/qpdf/qpdf.hash | 4 + features/buildroot/package/qpdf/qpdf.mk | 16 + ...ON-1326-Modify-openssl-DH-code-to-wo.patch | 78 + ...ore-anonymous-cyphers-by-lowering-Op.patch | 62 + ...openssl-error-handling-causing-spuri.patch | 58 + ...l-openssl-add-libressl-compatibility.patch | 53 + .../buildroot/package/qpid-proton/Config.in | 17 + .../package/qpid-proton/qpid-proton.hash | 2 + .../package/qpid-proton/qpid-proton.mk | 37 + .../package/qt-webkit-kiosk/Config.in | 32 + .../qt-webkit-kiosk/qt-webkit-kiosk.hash | 2 + .../qt-webkit-kiosk/qt-webkit-kiosk.mk | 32 + features/buildroot/package/qt5/Config.in | 88 + features/buildroot/package/qt5/qt5.mk | 21 + .../buildroot/package/qt5/qt53d/Config.in | 25 + .../buildroot/package/qt5/qt53d/qt53d.hash | 10 + features/buildroot/package/qt5/qt53d/qt53d.mk | 56 + ...tbase-Fix-build-error-when-using-EGL.patch | 37 + ...ble-conversion-enable-for-microblaze.patch | 29 + .../package/qt5/qt5base/5.12.4/qt5base.hash | 11 + .../0001-eglfs-rasp-pi-header-inclusion.patch | 45 + ...tbase-Fix-build-error-when-using-EGL.patch | 37 + ...rmissive-gcc-flag-to-allow-compilati.patch | 29 + .../package/qt5/qt5base/5.6.3/qt5base.hash | 10 + .../buildroot/package/qt5/qt5base/Config.in | 301 + .../package/qt5/qt5base/qmake.conf.in | 30 + .../package/qt5/qt5base/qplatformdefs.h | 1 + .../buildroot/package/qt5/qt5base/qt.conf.in | 7 + .../package/qt5/qt5base/qt5base.hash | 2 + .../buildroot/package/qt5/qt5base/qt5base.mk | 427 + .../package/qt5/qt5canvas3d/Config.in | 18 + .../package/qt5/qt5canvas3d/qt5canvas3d.hash | 14 + .../package/qt5/qt5canvas3d/qt5canvas3d.mk | 44 + .../buildroot/package/qt5/qt5charts/Config.in | 13 + .../package/qt5/qt5charts/qt5charts.hash | 8 + .../package/qt5/qt5charts/qt5charts.mk | 65 + .../5.12.4/qt5connectivity.hash | 9 + .../5.6.3/qt5connectivity.hash | 10 + .../package/qt5/qt5connectivity/Config.in | 19 + .../qt5/qt5connectivity/qt5connectivity.hash | 2 + .../qt5/qt5connectivity/qt5connectivity.mk | 86 + ...gtexture-fix-debug-build-with-uclibc.patch | 45 + ...es-photoviewer-needs-widgets-support.patch | 32 + ...iewcomparison-and-quickwidget-needs-.patch | 64 + .../package/qt5/qt5declarative/Config.in | 27 + .../qt5/qt5declarative/qt5declarative.hash | 16 + .../qt5/qt5declarative/qt5declarative.mk | 66 + .../package/qt5/qt5enginio/Config.in | 23 + .../package/qt5/qt5enginio/qt5enginio.hash | 9 + .../package/qt5/qt5enginio/qt5enginio.mk | 61 + .../package/qt5/qt5graphicaleffects/Config.in | 19 + .../qt5graphicaleffects.hash | 17 + .../qt5graphicaleffects.mk | 37 + .../package/qt5/qt5imageformats/Config.in | 12 + .../qt5/qt5imageformats/qt5imageformats.hash | 14 + .../qt5/qt5imageformats/qt5imageformats.mk | 39 + .../package/qt5/qt5location/Config.in | 13 + .../package/qt5/qt5location/qt5location.hash | 17 + .../package/qt5/qt5location/qt5location.mk | 72 + .../package/qt5/qt5multimedia/Config.in | 16 + .../qt5/qt5multimedia/qt5multimedia.hash | 17 + .../qt5/qt5multimedia/qt5multimedia.mk | 90 + .../package/qt5/qt5quickcontrols/Config.in | 18 + .../qt5quickcontrols/qt5quickcontrols.hash | 14 + .../qt5/qt5quickcontrols/qt5quickcontrols.mk | 60 + .../5.12.4/qt5quickcontrols2.hash | 7 + .../5.6.3/qt5quickcontrols2.hash | 7 + .../package/qt5/qt5quickcontrols2/Config.in | 20 + .../qt5quickcontrols2/qt5quickcontrols2.hash | 2 + .../qt5quickcontrols2/qt5quickcontrols2.mk | 54 + ...-Detect-32-bits-armv8-a-architecture.patch | 49 + .../buildroot/package/qt5/qt5script/Config.in | 16 + .../package/qt5/qt5script/qt5script.hash | 16 + .../package/qt5/qt5script/qt5script.mk | 59 + .../buildroot/package/qt5/qt5scxml/Config.in | 18 + .../package/qt5/qt5scxml/qt5scxml.hash | 8 + .../package/qt5/qt5scxml/qt5scxml.mk | 53 + .../package/qt5/qt5sensors/Config.in | 11 + .../package/qt5/qt5sensors/qt5sensors.hash | 17 + .../package/qt5/qt5sensors/qt5sensors.mk | 62 + .../qt5/qt5serialbus/5.12.4/qt5serialbus.hash | 8 + .../qt5/qt5serialbus/5.6.3/qt5serialbus.hash | 8 + .../package/qt5/qt5serialbus/Config.in | 18 + .../qt5/qt5serialbus/qt5serialbus.hash | 2 + .../package/qt5/qt5serialbus/qt5serialbus.mk | 51 + .../qt5serialport/5.12.4/qt5serialport.hash | 9 + .../qt5serialport/5.6.3/qt5serialport.hash | 10 + .../package/qt5/qt5serialport/Config.in | 12 + .../qt5/qt5serialport/qt5serialport.hash | 2 + .../qt5/qt5serialport/qt5serialport.mk | 50 + .../buildroot/package/qt5/qt5svg/Config.in | 12 + .../buildroot/package/qt5/qt5svg/qt5svg.hash | 13 + .../buildroot/package/qt5/qt5svg/qt5svg.mk | 58 + .../buildroot/package/qt5/qt5tools/Config.in | 44 + .../package/qt5/qt5tools/qt5tools.hash | 16 + .../package/qt5/qt5tools/qt5tools.mk | 66 + ...emove-weird-install-path-for-example.patch | 38 + .../2.0/qt5virtualkeyboard.hash | 8 + .../5.12.4/qt5virtualkeyboard.hash | 9 + .../package/qt5/qt5virtualkeyboard/Config.in | 62 + .../qt5virtualkeyboard.hash | 2 + .../qt5virtualkeyboard/qt5virtualkeyboard.mk | 124 + .../package/qt5/qt5wayland/Config.in | 24 + .../package/qt5/qt5wayland/qt5wayland.hash | 16 + .../package/qt5/qt5wayland/qt5wayland.mk | 85 + .../package/qt5/qt5webchannel/Config.in | 13 + .../qt5/qt5webchannel/qt5webchannel.hash | 17 + .../qt5/qt5webchannel/qt5webchannel.mk | 77 + .../qt5/qt5webengine/5.12.4/qt5webengine.hash | 457 + .../0001-Change-default-SSL-directory.patch | 35 + ...bEGL-and-libGLES2-symbols-implicitly.patch | 93 + .../qt5/qt5webengine/5.6.3/qt5webengine.hash | 258 + .../package/qt5/qt5webengine/Config.in | 101 + .../qt5/qt5webengine/chromium-latest.inc | 449 + .../package/qt5/qt5webengine/chromium-lts.inc | 253 + .../qt5/qt5webengine/host-pkg-config.in | 6 + .../package/qt5/qt5webengine/qt5webengine.mk | 104 + .../0001-Build-examples.patch | 52 + .../0002-Fix-QWebView-path.patch | 73 + .../package/qt5/qt5webkit-examples/Config.in | 10 + .../qt5webkit-examples.hash | 5 + .../qt5webkit-examples/qt5webkit-examples.mk | 54 + ...0001-qtwebkit-fix-QA-issue-bad-RPATH.patch | 36 + .../0002-Remove-TEXTREL-tag-in-x86.patch | 85 + ...acktrace-API-for-non-glibc-libraries.patch | 44 + .../0004-Fix-compilation-with-ICU-59.patch | 93 + ...-Detect-32-bits-armv8-a-architecture.patch | 48 + ...0001-qtwebkit-fix-QA-issue-bad-RPATH.patch | 36 + ...acktrace-API-for-non-glibc-libraries.patch | 44 + ...-Detect-32-bits-armv8-a-architecture.patch | 48 + ...05-Fix-installation-of-class-headers.patch | 31 + .../buildroot/package/qt5/qt5webkit/Config.in | 40 + .../package/qt5/qt5webkit/qt5webkit.hash | 10 + .../package/qt5/qt5webkit/qt5webkit.mk | 71 + .../package/qt5/qt5websockets/Config.in | 14 + .../qt5/qt5websockets/qt5websockets.hash | 15 + .../qt5/qt5websockets/qt5websockets.mk | 65 + .../qt5/qt5x11extras/5.12.4/qt5x11extras.hash | 9 + .../qt5/qt5x11extras/5.6.3/qt5x11extras.hash | 10 + .../package/qt5/qt5x11extras/Config.in | 12 + .../package/qt5/qt5x11extras/qt5x11extras.mk | 39 + .../package/qt5/qt5xmlpatterns/Config.in | 11 + .../qt5/qt5xmlpatterns/qt5xmlpatterns.hash | 16 + .../qt5/qt5xmlpatterns/qt5xmlpatterns.mk | 53 + ...001-Fix-execution-problem-with-Qt5.3.patch | 64 + .../package/qt5cinex/CinematicExperience-demo | 2 + features/buildroot/package/qt5cinex/Config.in | 34 + .../buildroot/package/qt5cinex/qt5cinex.hash | 3 + .../buildroot/package/qt5cinex/qt5cinex.mk | 42 + .../quagga/0001-fix-ipctl-forwarding.patch | 27 + features/buildroot/package/quagga/Config.in | 94 + features/buildroot/package/quagga/quagga.hash | 5 + features/buildroot/package/quagga/quagga.mk | 92 + .../buildroot/package/quagga/quagga@.service | 17 + .../package/quagga/quagga_tmpfiles.conf | 1 + features/buildroot/package/quazip/Config.in | 10 + features/buildroot/package/quazip/quazip.hash | 2 + features/buildroot/package/quazip/quazip.mk | 32 + ...-configure.ac-add-disable-pie-option.patch | 55 + features/buildroot/package/quota/Config.in | 15 + features/buildroot/package/quota/quota.hash | 7 + features/buildroot/package/quota/quota.mk | 42 + ...sing-__P-definition-for-musl-compile.patch | 36 + .../buildroot/package/quotatool/Config.in | 7 + .../package/quotatool/quotatool.hash | 5 + .../buildroot/package/quotatool/quotatool.mk | 17 + features/buildroot/package/qwt/Config.in | 29 + features/buildroot/package/qwt/qwt.hash | 3 + features/buildroot/package/qwt/qwt.mk | 67 + .../buildroot/package/rabbitmq-c/Config.in | 12 + .../package/rabbitmq-c/rabbitmq-c.hash | 3 + .../package/rabbitmq-c/rabbitmq-c.mk | 42 + .../package/rabbitmq-server/Config.in | 14 + .../rabbitmq-server/S50rabbitmq-server | 28 + .../rabbitmq-server/rabbitmq-server.hash | 2 + .../rabbitmq-server/rabbitmq-server.mk | 55 + .../rabbitmq-server/rabbitmq-server.service | 15 + ...ll-path-lib-instead-of-usr-lib-prefi.patch | 26 + .../buildroot/package/racehound/Config.in | 35 + .../package/racehound/racehound.hash | 2 + .../buildroot/package/racehound/racehound.mk | 27 + ...ck-protector-the-toolchain-might-lac.patch | 27 + features/buildroot/package/radvd/Config.in | 8 + features/buildroot/package/radvd/S50radvd | 59 + features/buildroot/package/radvd/radvd.hash | 3 + features/buildroot/package/radvd/radvd.mk | 24 + features/buildroot/package/ramsmp/Config.in | 9 + features/buildroot/package/ramsmp/Makefile | 14 + features/buildroot/package/ramsmp/ramsmp.hash | 2 + features/buildroot/package/ramsmp/ramsmp.mk | 22 + features/buildroot/package/ramspeed/Config.in | 7 + features/buildroot/package/ramspeed/Makefile | 14 + .../buildroot/package/ramspeed/ramspeed.hash | 2 + .../buildroot/package/ramspeed/ramspeed.mk | 22 + ...heme-check-for-compiled-python-files.patch | 31 + features/buildroot/package/ranger/Config.in | 21 + features/buildroot/package/ranger/ranger.hash | 2 + features/buildroot/package/ranger/ranger.mk | 26 + .../buildroot/package/rapidjson/Config.in | 11 + .../package/rapidjson/rapidjson.hash | 3 + .../buildroot/package/rapidjson/rapidjson.mk | 21 + ...print-operations-are-declared-before.patch | 38 + features/buildroot/package/rapidxml/Config.in | 11 + .../buildroot/package/rapidxml/rapidxml.hash | 6 + .../buildroot/package/rapidxml/rapidxml.mk | 28 + ....ac-remove-conditional-lib-inclusion.patch | 21 + features/buildroot/package/raptor/Config.in | 11 + features/buildroot/package/raptor/raptor.hash | 2 + features/buildroot/package/raptor/raptor.mk | 44 + ...akefile-allow-passing-CFLAGS-LDFLAGS.patch | 28 + .../0002-Makefile-add-DESTDIR-support.patch | 51 + ...gic-to-find-def1-def2-and-def3-files.patch | 127 + .../raspberrypi-usbboot/Config.in.host | 12 + .../raspberrypi-usbboot.hash | 2 + .../raspberrypi-usbboot.mk | 21 + .../buildroot/package/ratpoison/Config.in | 17 + .../package/ratpoison/ratpoison.hash | 2 + .../buildroot/package/ratpoison/ratpoison.mk | 28 + features/buildroot/package/rauc/Config.in | 38 + .../buildroot/package/rauc/Config.in.host | 10 + features/buildroot/package/rauc/rauc.hash | 4 + features/buildroot/package/rauc/rauc.mk | 42 + features/buildroot/package/rcw/Config.in.host | 12 + features/buildroot/package/rcw/rcw.hash | 3 + features/buildroot/package/rcw/rcw.mk | 20 + .../package/rdesktop/0001-8bit-colors.patch | 21 + features/buildroot/package/rdesktop/Config.in | 14 + .../buildroot/package/rdesktop/rdesktop.hash | 3 + .../buildroot/package/rdesktop/rdesktop.mk | 25 + .../0001-Fix-install-file-list.patch | 29 + .../read-edid/0002-Fix-compiler-check.patch | 19 + .../buildroot/package/read-edid/Config.in | 13 + .../package/read-edid/read-edid.hash | 2 + .../buildroot/package/read-edid/read-edid.mk | 15 + .../package/readline/0000-curses-link.patch | 16 + features/buildroot/package/readline/Config.in | 9 + features/buildroot/package/readline/inputrc | 44 + .../buildroot/package/readline/readline.hash | 5 + .../buildroot/package/readline/readline.mk | 24 + .../package/reaver/0001-fix-271.patch | 32 + features/buildroot/package/reaver/Config.in | 9 + features/buildroot/package/reaver/reaver.hash | 3 + features/buildroot/package/reaver/reaver.mk | 23 + .../buildroot/package/redis/0001-uclibc.patch | 26 + .../0002-largefile-conditional-define.patch | 32 + ...is.conf-adjust-defauts-for-buildroot.patch | 29 + features/buildroot/package/redis/Config.in | 17 + features/buildroot/package/redis/S50redis | 38 + features/buildroot/package/redis/redis.hash | 5 + features/buildroot/package/redis/redis.mk | 57 + .../buildroot/package/redis/redis.service | 22 + .../buildroot/package/refpolicy/Config.in | 69 + features/buildroot/package/refpolicy/config | 8 + .../package/refpolicy/refpolicy.hash | 5 + .../buildroot/package/refpolicy/refpolicy.mk | 63 + .../buildroot/package/restorecond/Config.in | 24 + .../package/restorecond/restorecond.hash | 5 + .../package/restorecond/restorecond.mk | 52 + features/buildroot/package/rhash/Config.in | 23 + features/buildroot/package/rhash/rhash.hash | 6 + features/buildroot/package/rhash/rhash.mk | 63 + .../package/riemann-c-client/Config.in | 19 + .../riemann-c-client/riemann-c-client.hash | 2 + .../riemann-c-client/riemann-c-client.mk | 19 + features/buildroot/package/rings/Config.in | 6 + features/buildroot/package/rings/rings.hash | 3 + features/buildroot/package/rings/rings.mk | 13 + .../rng-tools/0001-rngd-exit-code.patch | 22 + .../buildroot/package/rng-tools/Config.in | 10 + features/buildroot/package/rng-tools/S21rngd | 48 + .../package/rng-tools/rng-tools.hash | 3 + .../buildroot/package/rng-tools/rng-tools.mk | 38 + .../buildroot/package/rng-tools/rngd.service | 10 + .../package/rp-pppoe/0002-krn-plugin.patch | 25 + features/buildroot/package/rp-pppoe/Config.in | 19 + .../buildroot/package/rp-pppoe/rp-pppoe.hash | 2 + .../buildroot/package/rp-pppoe/rp-pppoe.mk | 41 + .../0001-Remove-yellow-pages-support.patch | 56 + ...n-t-use-the-xp_auth-pointer-directly.patch | 42 + ...0003-src-remove-use-of-the-__P-macro.patch | 243 + ...-svc_getargs-calls-with-svc_freeargs.patch | 231 + ...it_com-Stop-freeing-a-static-pointer.patch | 98 + ...dump-Fixed-typo-in-memory-leak-patch.patch | 31 + features/buildroot/package/rpcbind/Config.in | 14 + features/buildroot/package/rpcbind/S30rpcbind | 38 + .../buildroot/package/rpcbind/rpcbind.hash | 2 + features/buildroot/package/rpcbind/rpcbind.mk | 39 + .../buildroot/package/rpcbind/rpcbind.service | 10 + .../buildroot/package/rpcbind/rpcbind.socket | 8 + .../package/rpi-bt-firmware/Config.in | 9 + .../rpi-bt-firmware/rpi-bt-firmware.hash | 3 + .../rpi-bt-firmware/rpi-bt-firmware.mk | 17 + .../buildroot/package/rpi-firmware/Config.in | 86 + .../package/rpi-firmware/cmdline.txt | 1 + .../buildroot/package/rpi-firmware/config.txt | 20 + .../package/rpi-firmware/rpi-firmware.hash | 3 + .../package/rpi-firmware/rpi-firmware.mk | 54 + ...r-the-OpenGLESv2-EGL-and-bcm_host-li.patch | 107 + ...-faulty-assert-to-make-weston-happy-.patch | 35 + .../0003-Disable-Werror-everywhere.patch | 174 + ...cations-disable-missing-applications.patch | 34 + ...erge-add-missing-include-for-va_list.patch | 34 + .../buildroot/package/rpi-userland/Config.in | 52 + .../buildroot/package/rpi-userland/S94vcfiled | 47 + .../package/rpi-userland/rpi-userland.hash | 3 + .../package/rpi-userland/rpi-userland.mk | 64 + .../package/rpi-userland/vcfiled.service | 9 + .../package/rpi-wifi-firmware/Config.in | 13 + .../rpi-wifi-firmware/rpi-wifi-firmware.hash | 3 + .../rpi-wifi-firmware/rpi-wifi-firmware.mk | 17 + ...for-unused-MD2-and-RIPEMD160-digests.patch | 82 + ...rpmio-digest_nss.c-fix-build-on-musl.patch | 32 + features/buildroot/package/rpm/Config.in | 20 + features/buildroot/package/rpm/rpm.hash | 5 + features/buildroot/package/rpm/rpm.mk | 99 + features/buildroot/package/rrdtool/Config.in | 37 + .../buildroot/package/rrdtool/rrdtool.hash | 4 + features/buildroot/package/rrdtool/rrdtool.mk | 40 + .../buildroot/package/rs485conf/Config.in | 9 + .../package/rs485conf/rs485conf.hash | 2 + .../buildroot/package/rs485conf/rs485conf.mk | 20 + .../buildroot/package/rsh-redone/Config.in | 43 + .../package/rsh-redone/rsh-redone.hash | 2 + .../package/rsh-redone/rsh-redone.mk | 38 + features/buildroot/package/rsync/Config.in | 10 + features/buildroot/package/rsync/rsync.hash | 5 + features/buildroot/package/rsync/rsync.mk | 22 + features/buildroot/package/rsyslog/Config.in | 25 + .../buildroot/package/rsyslog/S01rsyslogd | 53 + .../buildroot/package/rsyslog/rsyslog.hash | 2 + features/buildroot/package/rsyslog/rsyslog.mk | 101 + ...or-issues-with-rt-tests-build-system.patch | 55 + ...002-Fix-a-build-issue-with-uClibc-ng.patch | 33 + ...-number-for-sched_-gs-etattr-for-SH4.patch | 34 + features/buildroot/package/rt-tests/Config.in | 34 + .../buildroot/package/rt-tests/rt-tests.hash | 2 + .../buildroot/package/rt-tests/rt-tests.mk | 32 + features/buildroot/package/rtai/Config.in | 8 + features/buildroot/package/rtai/rtai.hash | 2 + features/buildroot/package/rtai/rtai.mk | 32 + .../buildroot/package/rtc-tools/Config.in | 7 + .../package/rtc-tools/rtc-tools.hash | 3 + .../buildroot/package/rtc-tools/rtc-tools.mk | 30 + .../buildroot/package/rtl8188eu/Config.in | 19 + .../package/rtl8188eu/rtl8188eu.hash | 2 + .../buildroot/package/rtl8188eu/rtl8188eu.mk | 20 + .../buildroot/package/rtl8189fs/Config.in | 10 + .../package/rtl8189fs/rtl8189fs.hash | 2 + .../buildroot/package/rtl8189fs/rtl8189fs.mk | 17 + ...1-rtl8723bs-add-debug-level-modparam.patch | 41 + .../buildroot/package/rtl8723bs/Config.in | 10 + .../buildroot/package/rtl8723bs/rtl8723bs.mk | 27 + .../buildroot/package/rtl8723bu/Config.in | 10 + .../package/rtl8723bu/rtl8723bu.hash | 2 + .../buildroot/package/rtl8723bu/rtl8723bu.mk | 20 + .../buildroot/package/rtl8821au/Config.in | 10 + .../package/rtl8821au/rtl8821au.hash | 2 + .../buildroot/package/rtl8821au/rtl8821au.mk | 19 + .../rtmpdump/0001-include-limits.h.patch | 39 + features/buildroot/package/rtmpdump/Config.in | 8 + .../buildroot/package/rtmpdump/rtmpdump.hash | 3 + .../buildroot/package/rtmpdump/rtmpdump.mk | 53 + features/buildroot/package/rtorrent/Config.in | 23 + .../buildroot/package/rtorrent/rtorrent.hash | 3 + .../buildroot/package/rtorrent/rtorrent.mk | 13 + features/buildroot/package/rtptools/Config.in | 7 + .../buildroot/package/rtptools/rtptools.hash | 3 + .../buildroot/package/rtptools/rtptools.mk | 13 + .../0001-dont-use-legacy-functions.patch | 18 + .../package/rubix/0002-misc-fixes.patch | 135 + features/buildroot/package/rubix/Config.in | 8 + features/buildroot/package/rubix/rubix.hash | 3 + features/buildroot/package/rubix/rubix.mk | 30 + features/buildroot/package/ruby/Config.in | 13 + features/buildroot/package/ruby/ruby.hash | 6 + features/buildroot/package/ruby/ruby.mk | 95 + features/buildroot/package/runc/Config.in | 16 + features/buildroot/package/runc/runc.hash | 3 + features/buildroot/package/runc/runc.mk | 23 + .../buildroot/package/rust-bin/rust-bin.hash | 48 + .../buildroot/package/rust-bin/rust-bin.mk | 65 + ...esence-of-LLVM-library-in-stage0-lib.patch | 264 + features/buildroot/package/rust/rust.hash | 6 + features/buildroot/package/rust/rust.mk | 72 + .../buildroot/package/rustc/Config.in.host | 82 + features/buildroot/package/rustc/rustc.mk | 22 + features/buildroot/package/rygel/Config.in | 51 + features/buildroot/package/rygel/S99rygel | 37 + features/buildroot/package/rygel/rygel.hash | 6 + features/buildroot/package/rygel/rygel.mk | 74 + .../buildroot/package/rygel/rygel.service | 10 + features/buildroot/package/s6-dns/Config.in | 10 + features/buildroot/package/s6-dns/s6-dns.hash | 3 + features/buildroot/package/s6-dns/s6-dns.mk | 45 + .../buildroot/package/s6-linux-init/Config.in | 12 + .../package/s6-linux-init/s6-linux-init.hash | 3 + .../package/s6-linux-init/s6-linux-init.mk | 36 + .../package/s6-linux-utils/Config.in | 9 + .../s6-linux-utils/s6-linux-utils.hash | 3 + .../package/s6-linux-utils/s6-linux-utils.mk | 34 + .../buildroot/package/s6-networking/Config.in | 13 + .../package/s6-networking/s6-networking.hash | 3 + .../package/s6-networking/s6-networking.mk | 53 + .../package/s6-portable-utils/Config.in | 12 + .../s6-portable-utils/s6-portable-utils.hash | 3 + .../s6-portable-utils/s6-portable-utils.mk | 34 + features/buildroot/package/s6-rc/Config.in | 11 + .../buildroot/package/s6-rc/Config.in.host | 8 + features/buildroot/package/s6-rc/s6-rc.hash | 3 + features/buildroot/package/s6-rc/s6-rc.mk | 73 + features/buildroot/package/s6/Config.in | 11 + features/buildroot/package/s6/s6.hash | 3 + features/buildroot/package/s6/s6.mk | 70 + .../0001-Add-disable-doc-option.patch | 59 + ...flag-to-RETPOLINE-cflags-and-ldflags.patch | 62 + features/buildroot/package/safeclib/Config.in | 9 + .../buildroot/package/safeclib/safeclib.hash | 3 + .../buildroot/package/safeclib/safeclib.mk | 15 + .../buildroot/package/sam-ba/Config.in.host | 10 + features/buildroot/package/sam-ba/sam-ba.hash | 5 + features/buildroot/package/sam-ba/sam-ba.mk | 39 + ...01-libreplace-disable-libbsd-support.patch | 46 + ...-on-64bit-platforms-by-including-std.patch | 111 + ...io.c-include-stdint.h-before-cmoka.h.patch | 38 + .../samba4/0004-cross_compile-fix.patch | 94 + .../0005-disable_gnutls_build_fix.patch | 37 + .../package/samba4/0006-fix_unistd_incl.patch | 27 + ...cript_build-do-not-add-host-include-.patch | 31 + features/buildroot/package/samba4/Config.in | 51 + features/buildroot/package/samba4/S91smb | 56 + .../buildroot/package/samba4/samba4-cache.txt | 42 + features/buildroot/package/samba4/samba4.hash | 4 + features/buildroot/package/samba4/samba4.mk | 195 + ...01-sane_backend-add-missing-config.h.patch | 49 + .../buildroot/package/sane-backends/Config.in | 16 + .../package/sane-backends/sane-backends.hash | 5 + .../package/sane-backends/sane-backends.mk | 79 + .../package/sane-backends/saned.socket | 10 + .../package/sane-backends/saned@.service | 18 + features/buildroot/package/sbc/Config.in | 8 + features/buildroot/package/sbc/sbc.hash | 2 + features/buildroot/package/sbc/sbc.mk | 15 + .../buildroot/package/sconeserver/Config.in | 110 + .../package/sconeserver/sconeserver.hash | 3 + .../package/sconeserver/sconeserver.mk | 111 + features/buildroot/package/scons/scons.hash | 3 + features/buildroot/package/scons/scons.mk | 19 + .../screen/0001-compiler-sanity-checks.patch | 62 + .../screen/0002-no-memcpy-fallback.patch | 124 + .../0003-cross-compilation-AC_TRY_RUN.patch | 125 + ...004-cross-compilation-ignore-host-fs.patch | 132 + .../0005-avoid-identifying-as-SVR4.patch | 54 + .../0006-install-no-backup-binary.patch | 41 + .../screen/0007-install-always-chmod.patch | 29 + .../0008-install-nonversioned-binary.patch | 31 + .../package/screen/0009-rename-sched_h.patch | 142 + .../0010-comm-h-now-depends-on-term-h.patch | 28 + ...-needed-for-list_-display-generic-.o.patch | 35 + features/buildroot/package/screen/Config.in | 14 + features/buildroot/package/screen/screen.hash | 5 + features/buildroot/package/screen/screen.mk | 30 + ...-m4-macros-are-included-in-the-build.patch | 45 + features/buildroot/package/scrub/Config.in | 7 + features/buildroot/package/scrub/scrub.hash | 5 + features/buildroot/package/scrub/scrub.mk | 16 + features/buildroot/package/scrypt/Config.in | 9 + features/buildroot/package/scrypt/scrypt.hash | 2 + features/buildroot/package/scrypt/scrypt.mk | 15 + .../0001-use-correct-directfb-config.patch | 25 + .../0002-fix-compilation-with-libx11.patch | 60 + features/buildroot/package/sdl/Config.in | 26 + features/buildroot/package/sdl/sdl.hash | 4 + features/buildroot/package/sdl/sdl.mk | 96 + .../0001-fix-build-with-disable-threads.patch | 63 + features/buildroot/package/sdl2/Config.in | 60 + features/buildroot/package/sdl2/sdl2.hash | 4 + features/buildroot/package/sdl2/sdl2.mk | 142 + features/buildroot/package/sdl2_gfx/Config.in | 10 + .../buildroot/package/sdl2_gfx/sdl2_gfx.hash | 2 + .../buildroot/package/sdl2_gfx/sdl2_gfx.mk | 27 + .../buildroot/package/sdl2_image/Config.in | 9 + .../package/sdl2_image/sdl2_image.hash | 3 + .../package/sdl2_image/sdl2_image.mk | 58 + .../buildroot/package/sdl2_mixer/Config.in | 11 + .../package/sdl2_mixer/sdl2_mixer.hash | 2 + .../package/sdl2_mixer/sdl2_mixer.mk | 40 + features/buildroot/package/sdl2_net/Config.in | 9 + .../buildroot/package/sdl2_net/sdl2_net.hash | 2 + .../buildroot/package/sdl2_net/sdl2_net.mk | 15 + .../sdl2_ttf/0001-fix-opengl-detection.patch | 37 + .../sdl2_ttf/0002-fix-autoreconf.patch | 30 + features/buildroot/package/sdl2_ttf/Config.in | 9 + .../buildroot/package/sdl2_ttf/sdl2_ttf.hash | 2 + .../buildroot/package/sdl2_ttf/sdl2_ttf.mk | 34 + features/buildroot/package/sdl_gfx/Config.in | 10 + .../buildroot/package/sdl_gfx/sdl_gfx.hash | 3 + features/buildroot/package/sdl_gfx/sdl_gfx.mk | 28 + .../buildroot/package/sdl_image/Config.in | 57 + .../package/sdl_image/sdl_image.hash | 2 + .../buildroot/package/sdl_image/sdl_image.mk | 51 + ...ibs.private-field-to-pkg-config-file.patch | 64 + .../0002-add-LDFLAGS-while-linking.patch | 29 + .../buildroot/package/sdl_mixer/Config.in | 11 + .../package/sdl_mixer/sdl_mixer.hash | 2 + .../buildroot/package/sdl_mixer/sdl_mixer.mk | 42 + features/buildroot/package/sdl_net/Config.in | 9 + .../buildroot/package/sdl_net/sdl_net.hash | 2 + features/buildroot/package/sdl_net/sdl_net.mk | 21 + .../sdl_sound/0001-fix-constness.patch | 16 + .../sdl_sound/0002-remove-werror.patch | 29 + .../0003-renamed-physfs-export.patch | 32 + .../buildroot/package/sdl_sound/Config.in | 23 + .../package/sdl_sound/sdl_sound.hash | 2 + .../buildroot/package/sdl_sound/sdl_sound.mk | 74 + features/buildroot/package/sdl_ttf/Config.in | 9 + .../buildroot/package/sdl_ttf/sdl_ttf.hash | 2 + features/buildroot/package/sdl_ttf/sdl_ttf.mk | 21 + features/buildroot/package/sdparm/Config.in | 6 + features/buildroot/package/sdparm/sdparm.hash | 2 + features/buildroot/package/sdparm/sdparm.mk | 19 + features/buildroot/package/sed/Config.in | 13 + features/buildroot/package/sed/sed.hash | 6 + features/buildroot/package/sed/sed.mk | 23 + ...001-Common-log.h-time-2-needs-time.h.patch | 37 + features/buildroot/package/sedutil/Config.in | 29 + .../buildroot/package/sedutil/sedutil.hash | 3 + features/buildroot/package/sedutil/sedutil.mk | 20 + .../package/selinux-python/Config.in | 63 + .../selinux-python/selinux-python.hash | 5 + .../package/selinux-python/selinux-python.mk | 50 + .../package/semodule-utils/Config.in | 19 + .../semodule-utils/semodule-utils.hash | 5 + .../package/semodule-utils/semodule-utils.mk | 27 + features/buildroot/package/ser2net/Config.in | 8 + features/buildroot/package/ser2net/S50ser2net | 43 + .../buildroot/package/ser2net/ser2net.hash | 6 + features/buildroot/package/ser2net/ser2net.mk | 23 + .../0001-remove-werror-flag-from-setup.patch | 29 + ...e-setools.InfoFlowAnalysis-and-setoo.patch | 142 + ...py-drop-path-prefix-from-man-install.patch | 42 + features/buildroot/package/setools/Config.in | 29 + .../buildroot/package/setools/setools.hash | 7 + features/buildroot/package/setools/setools.mk | 58 + .../setserial/0001-build-system-fix.patch | 28 + .../0002-tiocghayesesp-build-fix.patch | 28 + .../buildroot/package/setserial/Config.in | 6 + .../package/setserial/setserial.hash | 3 + .../buildroot/package/setserial/setserial.mk | 27 + .../0001-support-uclinux-as-a-linux.patch | 16 + ...le.am-add-missing-RT_LIB-for-sg_turs.patch | 29 + .../buildroot/package/sg3_utils/Config.in | 18 + .../package/sg3_utils/sg3_utils.hash | 6 + .../buildroot/package/sg3_utils/sg3_utils.mk | 54 + .../package/shadowsocks-libev/Config.in | 34 + .../shadowsocks-libev/shadowsocks-libev.hash | 7 + .../shadowsocks-libev/shadowsocks-libev.mk | 24 + .../package/shairport-sync/Config.in | 41 + .../package/shairport-sync/S99shairport-sync | 27 + .../shairport-sync/shairport-sync.hash | 3 + .../package/shairport-sync/shairport-sync.mk | 66 + features/buildroot/package/shapelib/Config.in | 14 + .../buildroot/package/shapelib/shapelib.hash | 4 + .../buildroot/package/shapelib/shapelib.mk | 13 + ...ct-dependency-from-install-data-hook.patch | 47 + .../package/shared-mime-info/Config.in | 17 + .../shared-mime-info/shared-mime-info.hash | 3 + .../shared-mime-info/shared-mime-info.mk | 37 + ...e-disable-always-building-statically.patch | 26 + .../buildroot/package/shellinabox/Config.in | 18 + .../package/shellinabox/shellinabox.hash | 4 + .../package/shellinabox/shellinabox.mk | 29 + .../buildroot/package/sigrok-cli/Config.in | 23 + .../package/sigrok-cli/sigrok-cli.hash | 2 + .../package/sigrok-cli/sigrok-cli.mk | 20 + ...001-configure-add-pkg-config-support.patch | 70 + features/buildroot/package/sispmctl/Config.in | 18 + .../buildroot/package/sispmctl/sispmctl.hash | 2 + .../buildroot/package/sispmctl/sispmctl.mk | 18 + ...0001-No-runtime-tests-for-endianness.patch | 96 + ...0002-No-runtime-tests-for-type-sizes.patch | 115 + ...ker-use-dummy-file-when-testing-libs.patch | 44 + features/buildroot/package/skalibs/Config.in | 9 + .../buildroot/package/skalibs/skalibs.hash | 3 + features/buildroot/package/skalibs/skalibs.mk | 54 + .../package/skeleton-custom/Config.in | 6 + .../skeleton-custom/skeleton-custom.mk | 61 + .../package/skeleton-init-common/Config.in | 2 + .../skeleton-init-common.mk | 103 + .../package/skeleton-init-none/Config.in | 7 + .../skeleton-init-none/skeleton-init-none.mk | 18 + .../package/skeleton-init-openrc/Config.in | 7 + .../skeleton-init-openrc.mk | 22 + .../skeleton-init-openrc/skeleton/dev/log | 1 + .../skeleton-init-openrc/skeleton/etc/fstab | 3 + .../skeleton-init-openrc/skeleton/var/cache | 1 + .../skeleton/var/lib/misc | 1 + .../skeleton-init-openrc/skeleton/var/lock | 1 + .../skeleton-init-openrc/skeleton/var/log | 1 + .../skeleton-init-openrc/skeleton/var/run | 1 + .../skeleton-init-openrc/skeleton/var/spool | 1 + .../skeleton-init-openrc/skeleton/var/tmp | 1 + .../package/skeleton-init-systemd/Config.in | 7 + .../skeleton-init-systemd.mk | 68 + .../package/skeleton-init-sysv/Config.in | 7 + .../skeleton-init-sysv/skeleton-init-sysv.mk | 22 + .../skeleton-init-sysv/skeleton/dev/log | 1 + .../skeleton/dev/pts/.empty | 0 .../skeleton/dev/shm/.empty | 0 .../skeleton-init-sysv/skeleton/etc/fstab | 8 + .../skeleton-init-sysv/skeleton/var/cache | 1 + .../skeleton-init-sysv/skeleton/var/lib/misc | 1 + .../skeleton-init-sysv/skeleton/var/lock | 1 + .../skeleton-init-sysv/skeleton/var/log | 1 + .../skeleton-init-sysv/skeleton/var/run | 1 + .../skeleton-init-sysv/skeleton/var/spool | 1 + .../skeleton-init-sysv/skeleton/var/tmp | 1 + features/buildroot/package/skeleton/Config.in | 9 + .../buildroot/package/skeleton/skeleton.mk | 27 + features/buildroot/package/sl/Config.in | 9 + features/buildroot/package/sl/sl.hash | 2 + features/buildroot/package/sl/sl.mk | 21 + .../package/slang/0001-slsh-libs.patch | 19 + features/buildroot/package/slang/Config.in | 7 + features/buildroot/package/slang/slang.hash | 6 + features/buildroot/package/slang/slang.mk | 63 + features/buildroot/package/slirp/Config.in | 25 + features/buildroot/package/slirp/slirp.mk | 21 + features/buildroot/package/smack/Config.in | 35 + features/buildroot/package/smack/smack.hash | 2 + features/buildroot/package/smack/smack.mk | 17 + .../buildroot/package/smartmontools/Config.in | 12 + .../package/smartmontools/smartmontools.hash | 3 + .../package/smartmontools/smartmontools.mk | 12 + features/buildroot/package/smcroute/Config.in | 12 + .../buildroot/package/smcroute/smcroute.hash | 5 + .../buildroot/package/smcroute/smcroute.mk | 24 + .../package/smstools3/0001-fix-Makefile.patch | 29 + .../buildroot/package/smstools3/Config.in | 27 + features/buildroot/package/smstools3/S50smsd | 43 + .../package/smstools3/smstools3.hash | 2 + .../buildroot/package/smstools3/smstools3.mk | 34 + features/buildroot/package/snappy/Config.in | 13 + features/buildroot/package/snappy/snappy.hash | 3 + features/buildroot/package/snappy/snappy.mk | 14 + ...0001-capture-fix-typo-in-FILE-object.patch | 43 + features/buildroot/package/sngrep/Config.in | 14 + features/buildroot/package/sngrep/sngrep.hash | 6 + features/buildroot/package/sngrep/sngrep.mk | 39 + features/buildroot/package/snmppp/Config.in | 32 + features/buildroot/package/snmppp/snmppp.hash | 3 + features/buildroot/package/snmppp/snmppp.mk | 23 + ...in-Avoid-path-poisoning-with-libpcap.patch | 35 + ...ow-to-override-the-INADDR_NONE-check.patch | 44 + ...vert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch | 239 + ...vert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch | 48 + .../package/snort/0005-fix-sparc.patch | 28 + ...r-when-building-against-uclibc-or-mu.patch | 34 + features/buildroot/package/snort/Config.in | 26 + features/buildroot/package/snort/snort.hash | 6 + features/buildroot/package/snort/snort.mk | 47 + .../package/socat/0001-no-documentation.patch | 37 + ...002-ptrdiff_t-is-defined-in-stddef.h.patch | 28 + .../0003-compat-set-NETDB_INTERNAL.patch | 35 + ...io-tun-remove-if_tun.h-kernel-header.patch | 91 + features/buildroot/package/socat/Config.in | 7 + features/buildroot/package/socat/socat.hash | 8 + features/buildroot/package/socat/socat.mk | 51 + ...o-find-SIOCGSTAMP-with-latest-kernel.patch | 54 + .../buildroot/package/socketcand/Config.in | 13 + .../package/socketcand/socketcand.hash | 2 + .../package/socketcand/socketcand.mk | 19 + ...reintroduce-soatag_local_sdp_str_ref.patch | 26 + .../buildroot/package/sofia-sip/Config.in | 14 + .../package/sofia-sip/sofia-sip.hash | 2 + .../buildroot/package/sofia-sip/sofia-sip.mk | 33 + ...ate-autotools-plumbing-for-SoftEther.patch | 2105 +++++ ...libsoftether.so-and-dynamically-link.patch | 133 + .../0003-use-fhs-install-directories.patch | 307 + ...g-softetherd-for-upstart-and-systemd.patch | 218 + ...-to-GetStateDir-in-Cedar-and-Mayaqua.patch | 90 + .../softether/0006-cross-compile.patch | 30 + .../package/softether/0007-iconv.patch | 28 + .../package/softether/0008-librt.patch | 33 + .../softether/0009-uclibc-ai-addrconfig.patch | 27 + ...ult-RSA-key-size-to-1024-everywhere-.patch | 78 + .../buildroot/package/softether/Config.in | 30 + .../package/softether/softether.hash | 3 + .../buildroot/package/softether/softether.mk | 37 + .../solarus/0001-cmake-remove-Werror.patch | 26 + features/buildroot/package/solarus/Config.in | 33 + .../buildroot/package/solarus/solarus.hash | 4 + features/buildroot/package/solarus/solarus.mk | 24 + .../package/sound-theme-borealis/Config.in | 6 + .../sound-theme-borealis.hash | 2 + .../sound-theme-borealis.mk | 18 + .../package/sound-theme-freedesktop/Config.in | 6 + .../sound-theme-freedesktop.hash | 2 + .../sound-theme-freedesktop.mk | 14 + .../buildroot/package/sox/0001-uclibc.patch | 26 + features/buildroot/package/sox/Config.in | 12 + features/buildroot/package/sox/sox.hash | 3 + features/buildroot/package/sox/sox.mk | 112 + ...akefile-more-cross-compiler-friendly.patch | 22 + .../sp-oops-extract/0002-stdint-cleanup.patch | 33 + .../package/sp-oops-extract/Config.in | 6 + .../sp-oops-extract/sp-oops-extract.hash | 2 + .../sp-oops-extract/sp-oops-extract.mk | 22 + features/buildroot/package/spandsp/Config.in | 9 + .../buildroot/package/spandsp/spandsp.hash | 3 + features/buildroot/package/spandsp/spandsp.mk | 27 + .../buildroot/package/spawn-fcgi/Config.in | 8 + .../package/spawn-fcgi/spawn-fcgi.hash | 2 + .../package/spawn-fcgi/spawn-fcgi.mk | 13 + .../package/speex/0001-thumb2-support.patch | 222 + features/buildroot/package/speex/Config.in | 23 + features/buildroot/package/speex/speex.hash | 6 + features/buildroot/package/speex/speex.mk | 35 + features/buildroot/package/speexdsp/Config.in | 6 + .../buildroot/package/speexdsp/speexdsp.hash | 3 + .../buildroot/package/speexdsp/speexdsp.mk | 22 + .../buildroot/package/sphinxbase/Config.in | 13 + .../package/sphinxbase/sphinxbase.hash | 2 + .../package/sphinxbase/sphinxbase.mk | 19 + .../buildroot/package/spi-tools/Config.in | 7 + .../package/spi-tools/spi-tools.hash | 3 + .../buildroot/package/spi-tools/spi-tools.mk | 14 + .../package/spice-protocol/Config.in | 12 + .../spice-protocol/spice-protocol.hash | 2 + .../package/spice-protocol/spice-protocol.mk | 14 + features/buildroot/package/spice/Config.in | 24 + features/buildroot/package/spice/spice.hash | 2 + features/buildroot/package/spice/spice.mk | 82 + .../buildroot/package/spidev_test/Config.in | 17 + .../package/spidev_test/spidev_test.hash | 3 + .../package/spidev_test/spidev_test.mk | 48 + .../buildroot/package/sqlcipher/Config.in | 38 + .../package/sqlcipher/sqlcipher.hash | 3 + .../buildroot/package/sqlcipher/sqlcipher.mk | 42 + features/buildroot/package/sqlite/Config.in | 73 + features/buildroot/package/sqlite/sqlite.hash | 6 + features/buildroot/package/sqlite/sqlite.mk | 77 + .../squashfs/0001-include-sysmacros.patch | 47 + features/buildroot/package/squashfs/Config.in | 60 + .../buildroot/package/squashfs/Config.in.host | 6 + .../buildroot/package/squashfs/squashfs.hash | 5 + .../buildroot/package/squashfs/squashfs.mk | 96 + .../buildroot/package/squeezelite/Config.in | 49 + .../package/squeezelite/squeezelite.hash | 3 + .../package/squeezelite/squeezelite.mk | 58 + features/buildroot/package/squid/Config.in | 21 + features/buildroot/package/squid/S97squid | 39 + features/buildroot/package/squid/squid.hash | 6 + features/buildroot/package/squid/squid.mk | 91 + .../package/sredird/0001-termio.patch | 20 + features/buildroot/package/sredird/Config.in | 8 + .../buildroot/package/sredird/sredird.hash | 2 + features/buildroot/package/sredird/sredird.mk | 20 + features/buildroot/package/sshfs/Config.in | 19 + features/buildroot/package/sshfs/sshfs.hash | 2 + features/buildroot/package/sshfs/sshfs.mk | 16 + features/buildroot/package/sshpass/Config.in | 9 + .../buildroot/package/sshpass/sshpass.hash | 2 + features/buildroot/package/sshpass/sshpass.mk | 12 + ...hile-building-sslh-in-a-larger-git-t.patch | 45 + features/buildroot/package/sslh/Config.in | 14 + features/buildroot/package/sslh/S35sslh | 48 + features/buildroot/package/sslh/sslh.hash | 3 + features/buildroot/package/sslh/sslh.mk | 50 + .../0001-add-uclibc-alias-and-musl.patch | 30 + .../0002-just-warn-on-missing-arch.patch | 19 + .../package/start-stop-daemon/Config.in | 9 + .../start-stop-daemon/start-stop-daemon.hash | 2 + .../start-stop-daemon/start-stop-daemon.mk | 38 + .../package/startup-notification/Config.in | 10 + .../startup-notification.hash | 2 + .../startup-notification.mk | 18 + .../statserial/0001-ncurses-link.patch | 16 + .../buildroot/package/statserial/Config.in | 11 + .../package/statserial/statserial.hash | 2 + .../package/statserial/statserial.mk | 21 + .../0001-Add-cross-compilation-support.patch | 29 + .../0002-Do-not-strip-when-installing.patch | 26 + .../package/stella/0003-undef-PAGE_SIZE.patch | 53 + features/buildroot/package/stella/Config.in | 18 + features/buildroot/package/stella/stella.hash | 4 + features/buildroot/package/stella/stella.mk | 38 + .../buildroot/package/stm32flash/Config.in | 8 + .../package/stm32flash/stm32flash.hash | 2 + .../package/stm32flash/stm32flash.mk | 21 + features/buildroot/package/strace/Config.in | 18 + features/buildroot/package/strace/strace.hash | 5 + features/buildroot/package/strace/strace.mk | 51 + .../buildroot/package/stress-ng/Config.in | 26 + .../package/stress-ng/stress-ng.hash | 3 + .../buildroot/package/stress-ng/stress-ng.mk | 30 + features/buildroot/package/stress/Config.in | 9 + features/buildroot/package/stress/stress.hash | 2 + features/buildroot/package/stress/stress.mk | 25 + .../buildroot/package/strongswan/Config.in | 133 + .../package/strongswan/strongswan.hash | 9 + .../package/strongswan/strongswan.mk | 92 + features/buildroot/package/stunnel/Config.in | 9 + features/buildroot/package/stunnel/S50stunnel | 35 + .../buildroot/package/stunnel/stunnel.hash | 5 + features/buildroot/package/stunnel/stunnel.mk | 37 + .../subversion/0001-dont-mangle-cflags.patch | 24 + ...0002-disable-macos-specific-features.patch | 23 + .../buildroot/package/subversion/Config.in | 18 + .../package/subversion/subversion.hash | 5 + .../package/subversion/subversion.mk | 34 + features/buildroot/package/sudo/Config.in | 11 + features/buildroot/package/sudo/sudo.hash | 4 + features/buildroot/package/sudo/sudo.mk | 67 + features/buildroot/package/sudo/sudo.pam | 12 + .../buildroot/package/sunxi-boards/Config.in | 25 + .../package/sunxi-boards/sunxi-boards.hash | 2 + .../package/sunxi-boards/sunxi-boards.mk | 26 + .../buildroot/package/sunxi-cedarx/Config.in | 16 + .../package/sunxi-cedarx/sunxi-cedarx.hash | 2 + .../package/sunxi-cedarx/sunxi-cedarx.mk | 60 + .../sunxi-mali-mainline-driver/Config.in | 25 + .../sunxi-mali-mainline-driver.hash | 3 + .../sunxi-mali-mainline-driver.mk | 35 + .../package/sunxi-mali-mainline/Config.in | 42 + .../package/sunxi-mali-mainline/egl.pc | 12 + .../package/sunxi-mali-mainline/glesv2.pc | 12 + .../sunxi-mali-mainline.hash | 3 + .../sunxi-mali-mainline.mk | 49 + ...nfo-Access-to-io-memory-via-pointers.patch | 59 + .../buildroot/package/sunxi-tools/Config.in | 69 + .../package/sunxi-tools/Config.in.host | 12 + .../package/sunxi-tools/sunxi-tools.hash | 2 + .../package/sunxi-tools/sunxi-tools.mk | 63 + .../supertux/0001-Fix-build-on-PowerPC.patch | 81 + features/buildroot/package/supertux/Config.in | 42 + .../buildroot/package/supertux/supertux.hash | 2 + .../buildroot/package/supertux/supertux.mk | 72 + .../buildroot/package/supertuxkart/Config.in | 43 + .../package/supertuxkart/supertuxkart.hash | 5 + .../package/supertuxkart/supertuxkart.mk | 58 + .../buildroot/package/supervisor/Config.in | 13 + .../package/supervisor/S99supervisord | 29 + .../package/supervisor/supervisor.hash | 4 + .../package/supervisor/supervisor.mk | 34 + .../package/supervisor/supervisord.conf | 18 + .../package/supervisor/supervisord.service | 10 + ...figure.ac-fix-static-build-with-pcap.patch | 29 + ...et-fix-build-on-recent-Linux-kernels.patch | 28 + features/buildroot/package/suricata/Config.in | 22 + .../buildroot/package/suricata/S99suricata | 64 + .../buildroot/package/suricata/suricata.hash | 6 + .../buildroot/package/suricata/suricata.mk | 128 + .../package/suricata/suricata.service | 14 + ...0001-Add-Node-7.x-aka-V8-5.2-support.patch | 328 + ...nings-on-Node-6.x-aka-V8-5.0-and-5.1.patch | 222 + .../buildroot/package/swig/Config.in.host | 8 + features/buildroot/package/swig/swig.hash | 5 + features/buildroot/package/swig/swig.mk | 36 + ...ve-handler-set-locale-for-libarchive.patch | 65 + ...-segfault-in-image-property-handling.patch | 42 + ...ript-format-when-CONFIG_UBOOT_NEWAPI.patch | 44 + features/buildroot/package/swupdate/Config.in | 68 + .../package/swupdate/swupdate.config | 123 + .../buildroot/package/swupdate/swupdate.hash | 6 + .../buildroot/package/swupdate/swupdate.mk | 152 + features/buildroot/package/sylpheed/Config.in | 7 + .../buildroot/package/sylpheed/sylpheed.hash | 4 + .../buildroot/package/sylpheed/sylpheed.mk | 33 + features/buildroot/package/synergy/Config.in | 22 + .../buildroot/package/synergy/synergy.hash | 3 + features/buildroot/package/synergy/synergy.mk | 38 + features/buildroot/package/sysdig/Config.in | 32 + features/buildroot/package/sysdig/sysdig.hash | 3 + features/buildroot/package/sysdig/sysdig.mk | 39 + features/buildroot/package/sysklogd/Config.in | 8 + .../buildroot/package/sysklogd/S01syslogd | 62 + features/buildroot/package/sysklogd/S02klogd | 65 + .../buildroot/package/sysklogd/klogd.service | 11 + .../buildroot/package/sysklogd/sysklogd.hash | 3 + .../buildroot/package/sysklogd/sysklogd.mk | 40 + .../buildroot/package/sysklogd/syslog.conf | 7 + .../package/sysklogd/syslogd.service | 13 + .../syslog-ng/0001-fix-build-on-uclibc.patch | 51 + .../0002-build-make-dlsym-optional.patch | 160 + ...thread-atfork-also-in-libc-nonshared.patch | 49 + .../buildroot/package/syslog-ng/Config.in | 21 + .../buildroot/package/syslog-ng/S01syslog-ng | 62 + .../package/syslog-ng/syslog-ng.conf | 16 + .../package/syslog-ng/syslog-ng.hash | 5 + .../buildroot/package/syslog-ng/syslog-ng.mk | 128 + .../package/syslog-ng/syslog-ng@default | 8 + .../sysprof/0001-define-NT_GNU_BUILD_ID.patch | 22 + features/buildroot/package/sysprof/Config.in | 31 + .../buildroot/package/sysprof/sysprof.hash | 2 + features/buildroot/package/sysprof/sysprof.mk | 23 + features/buildroot/package/sysstat/Config.in | 39 + .../buildroot/package/sysstat/sysstat.hash | 5 + features/buildroot/package/sysstat/sysstat.mk | 16 + .../package/systemd-bootchart/Config.in | 40 + .../systemd-bootchart/systemd-bootchart.hash | 2 + .../systemd-bootchart/systemd-bootchart.mk | 19 + .../0001-install-don-t-use-ln-relative.patch | 80 + ...age-paths-longer-than-BUS_PATH_SIZE_.patch | 53 + ...ry-strings-to-hold-dbus-paths-on-the.patch | 194 + ...drop-misplaced-Wl-undefined-argument.patch | 51 + features/buildroot/package/systemd/Config.in | 384 + .../package/systemd/boot-files/buildroot.conf | 3 + .../package/systemd/boot-files/loader.conf | 2 + .../buildroot/package/systemd/dhcp.network | 4 + .../buildroot/package/systemd/systemd.hash | 5 + features/buildroot/package/systemd/systemd.mk | 471 + features/buildroot/package/sysvinit/Config.in | 10 + features/buildroot/package/sysvinit/inittab | 31 + .../buildroot/package/sysvinit/sysvinit.hash | 5 + .../buildroot/package/sysvinit/sysvinit.mk | 44 + features/buildroot/package/szip/Config.in | 16 + features/buildroot/package/szip/szip.hash | 3 + features/buildroot/package/szip/szip.mk | 13 + ...-config-file-for-cross-compiling-906.patch | 66 + features/buildroot/package/taglib/Config.in | 25 + features/buildroot/package/taglib/taglib.hash | 4 + features/buildroot/package/taglib/taglib.mk | 31 + features/buildroot/package/tar/Config.in | 16 + features/buildroot/package/tar/tar.hash | 4 + features/buildroot/package/tar/tar.mk | 50 + .../buildroot/package/targetcli-fb/Config.in | 15 + .../buildroot/package/targetcli-fb/S50target | 46 + .../package/targetcli-fb/target.service | 14 + .../package/targetcli-fb/targetcli-fb.hash | 2 + .../package/targetcli-fb/targetcli-fb.mk | 34 + ...makedefine-HAVE_GET_CURRENT_DIR_NAME.patch | 28 + ...rrect-variables-for-GnuTLS-detection.patch | 32 + ...eLists-use-pkg-config-uuid-detection.patch | 40 + features/buildroot/package/taskd/Config.in | 18 + features/buildroot/package/taskd/taskd.hash | 4 + features/buildroot/package/taskd/taskd.mk | 13 + .../buildroot/package/tcf-agent/Config.in | 41 + .../buildroot/package/tcf-agent/S55tcf-agent | 40 + .../package/tcf-agent/tcf-agent.hash | 5 + .../buildroot/package/tcf-agent/tcf-agent.mk | 37 + .../package/tcf-agent/tcf-agent.service | 9 + .../package/tcl/0001-dont-build-compat.patch | 25 + features/buildroot/package/tcl/Config.in | 39 + features/buildroot/package/tcl/tcl.hash | 3 + features/buildroot/package/tcl/tcl.mk | 80 + features/buildroot/package/tclap/Config.in | 18 + features/buildroot/package/tclap/tclap.hash | 2 + features/buildroot/package/tclap/tclap.mk | 16 + features/buildroot/package/tcllib/Config.in | 11 + features/buildroot/package/tcllib/tcllib.hash | 3 + features/buildroot/package/tcllib/tcllib.mk | 15 + features/buildroot/package/tcpdump/Config.in | 16 + .../buildroot/package/tcpdump/tcpdump.hash | 3 + features/buildroot/package/tcpdump/tcpdump.mk | 32 + features/buildroot/package/tcping/Config.in | 14 + features/buildroot/package/tcping/tcping.hash | 2 + features/buildroot/package/tcping/tcping.mk | 21 + .../buildroot/package/tcpreplay/Config.in | 9 + .../package/tcpreplay/tcpreplay.hash | 5 + .../buildroot/package/tcpreplay/tcpreplay.mk | 29 + .../buildroot/package/tegrarcm/Config.in.host | 8 + .../buildroot/package/tegrarcm/tegrarcm.hash | 3 + .../buildroot/package/tegrarcm/tegrarcm.mk | 14 + features/buildroot/package/tekui/Config.in | 22 + features/buildroot/package/tekui/tekui.hash | 2 + features/buildroot/package/tekui/tekui.mk | 69 + .../buildroot/package/terminology/Config.in | 8 + .../package/terminology/terminology.hash | 3 + .../package/terminology/terminology.mk | 22 + ...-Fix-timeval-structure-build-failure.patch | 27 + ...stead-of-off_t-for-result-from-ftell.patch | 26 + .../buildroot/package/tesseract-ocr/Config.in | 44 + .../package/tesseract-ocr/tesseract-ocr.hash | 9 + .../package/tesseract-ocr/tesseract-ocr.mk | 73 + features/buildroot/package/tftpd/Config.in | 8 + features/buildroot/package/tftpd/S80tftpd-hpa | 81 + features/buildroot/package/tftpd/tftpd.hash | 2 + features/buildroot/package/tftpd/tftpd.mk | 21 + ...ipedTransport-peek-to-avoid-linker-e.patch | 31 + features/buildroot/package/thrift/Config.in | 22 + features/buildroot/package/thrift/thrift.hash | 4 + features/buildroot/package/thrift/thrift.mk | 68 + features/buildroot/package/thttpd/Config.in | 8 + features/buildroot/package/thttpd/thttpd.hash | 3 + features/buildroot/package/thttpd/thttpd.mk | 43 + .../buildroot/package/thttpd/thttpd.service | 10 + .../package/ti-cgt-pru/Config.in.host | 17 + .../package/ti-cgt-pru/ti-cgt-pru.hash | 4 + .../package/ti-cgt-pru/ti-cgt-pru.mk | 33 + .../package/ti-gfx/0001-newclkapi.patch | 118 + .../ti-gfx/0002-fix-build-omaplfb-linux.patch | 21 + .../ti-gfx/0003-km_install_modules.patch | 19 + features/buildroot/package/ti-gfx/Config.in | 84 + features/buildroot/package/ti-gfx/S80ti-gfx | 53 + features/buildroot/package/ti-gfx/egl.pc | 11 + features/buildroot/package/ti-gfx/esrev.sh | 59 + features/buildroot/package/ti-gfx/glesv2.pc | 11 + features/buildroot/package/ti-gfx/powervr.ini | 2 + features/buildroot/package/ti-gfx/ti-gfx.hash | 3 + features/buildroot/package/ti-gfx/ti-gfx.mk | 212 + .../buildroot/package/ti-gfx/ti-gfx.service | 11 + .../buildroot/package/ti-sgx-demos/Config.in | 9 + .../package/ti-sgx-demos/ti-sgx-demos.hash | 2 + .../package/ti-sgx-demos/ti-sgx-demos.mk | 18 + .../buildroot/package/ti-sgx-km/Config.in | 53 + .../package/ti-sgx-km/ti-sgx-km.hash | 2 + .../buildroot/package/ti-sgx-km/ti-sgx-km.mk | 43 + .../buildroot/package/ti-sgx-um/Config.in | 36 + .../buildroot/package/ti-sgx-um/S80ti-sgx | 14 + .../buildroot/package/ti-sgx-um/powervr.ini | 6 + .../package/ti-sgx-um/ti-sgx-um.hash | 2 + .../buildroot/package/ti-sgx-um/ti-sgx-um.mk | 38 + features/buildroot/package/ti-uim/Config.in | 8 + features/buildroot/package/ti-uim/ti-uim.hash | 2 + features/buildroot/package/ti-uim/ti-uim.mk | 21 + features/buildroot/package/ti-utils/Config.in | 12 + .../buildroot/package/ti-utils/ti-utils.hash | 2 + .../buildroot/package/ti-utils/ti-utils.mk | 31 + ...leak-that-was-assigned-CVE-2019-6128.patch | 53 + features/buildroot/package/tiff/Config.in | 70 + features/buildroot/package/tiff/tiff.hash | 3 + features/buildroot/package/tiff/tiff.mk | 92 + features/buildroot/package/time/Config.in | 14 + features/buildroot/package/time/time.hash | 3 + features/buildroot/package/time/time.mk | 13 + features/buildroot/package/tinc/Config.in | 16 + features/buildroot/package/tinc/tinc.hash | 4 + features/buildroot/package/tinc/tinc.mk | 25 + features/buildroot/package/tini/Config.in | 17 + features/buildroot/package/tini/tini.hash | 3 + features/buildroot/package/tini/tini.mk | 35 + .../tinyalsa/0001-disable-doxygen-usage.patch | 35 + .../0002-interval.h-add-missing-header.patch | 36 + features/buildroot/package/tinyalsa/Config.in | 17 + .../buildroot/package/tinyalsa/tinyalsa.hash | 2 + .../buildroot/package/tinyalsa/tinyalsa.mk | 33 + ...x-undefined-encode_half-in-json2cbor.patch | 44 + features/buildroot/package/tinycbor/Config.in | 6 + .../buildroot/package/tinycbor/tinycbor.hash | 3 + .../buildroot/package/tinycbor/tinycbor.mk | 45 + ...kefile.in-to-allow-cross-compilation.patch | 170 + ...2-Fix-compilation-of-tests-directory.patch | 31 + features/buildroot/package/tinydtls/Config.in | 13 + .../buildroot/package/tinydtls/tinydtls.hash | 3 + .../buildroot/package/tinydtls/tinydtls.mk | 17 + .../package/tinyhttpd/0001-misc-fixes.patch | 80 + .../buildroot/package/tinyhttpd/Config.in | 9 + .../buildroot/package/tinyhttpd/S85tinyhttpd | 32 + .../package/tinyhttpd/tinyhttpd.hash | 2 + .../buildroot/package/tinyhttpd/tinyhttpd.mk | 35 + .../package/tinyhttpd/tinyhttpd.service | 10 + ...ix-build-on-Thumb-only-architectures.patch | 47 + .../buildroot/package/tinymembench/Config.in | 12 + .../package/tinymembench/tinymembench.hash | 3 + .../package/tinymembench/tinymembench.mk | 21 + features/buildroot/package/tinyxml/Config.in | 11 + .../buildroot/package/tinyxml/tinyxml.hash | 2 + features/buildroot/package/tinyxml/tinyxml.mk | 16 + features/buildroot/package/tinyxml2/Config.in | 11 + .../buildroot/package/tinyxml2/tinyxml2.hash | 3 + .../buildroot/package/tinyxml2/tinyxml2.mk | 17 + features/buildroot/package/tk/Config.in | 18 + features/buildroot/package/tk/tk.hash | 3 + features/buildroot/package/tk/tk.mk | 31 + features/buildroot/package/tmux/Config.in | 19 + features/buildroot/package/tmux/tmux.hash | 3 + features/buildroot/package/tmux/tmux.mk | 21 + ...0001-Fix-static-linking-with-OpenSSL.patch | 109 + features/buildroot/package/tor/Config.in | 19 + features/buildroot/package/tor/tor.hash | 3 + features/buildroot/package/tor/tor.mk | 66 + .../package/tovid/0001-manpage.patch | 25 + features/buildroot/package/tovid/Config.in | 47 + features/buildroot/package/tovid/tovid.hash | 3 + features/buildroot/package/tovid/tovid.mk | 13 + .../buildroot/package/tpm-tools/Config.in | 13 + .../package/tpm-tools/tpm-tools.hash | 7 + .../buildroot/package/tpm-tools/tpm-tools.mk | 23 + .../buildroot/package/tpm2-abrmd/Config.in | 27 + .../package/tpm2-abrmd/S80tpm2-abrmd | 74 + .../package/tpm2-abrmd/tpm2-abrmd.hash | 3 + .../package/tpm2-abrmd/tpm2-abrmd.mk | 40 + ...-type-may-be-used-uninitialized-warn.patch | 36 + .../buildroot/package/tpm2-tools/Config.in | 22 + .../package/tpm2-tools/tpm2-tools.hash | 3 + .../package/tpm2-tools/tpm2-tools.mk | 18 + ...tring-warnings-when-building-for-32b.patch | 60 + ...ion-failure-due-to-variable-may-be-u.patch | 42 + .../buildroot/package/tpm2-totp/Config.in | 23 + .../package/tpm2-totp/tpm2-totp.hash | 3 + .../buildroot/package/tpm2-totp/tpm2-totp.mk | 21 + ...ypes.c-fix-maybe-uninitialized-error.patch | 37 + features/buildroot/package/tpm2-tss/Config.in | 37 + .../buildroot/package/tpm2-tss/tpm2-tss.hash | 3 + .../buildroot/package/tpm2-tss/tpm2-tss.mk | 23 + ...0001-trace-listen-add-missing-header.patch | 38 + .../buildroot/package/trace-cmd/Config.in | 18 + .../package/trace-cmd/trace-cmd.hash | 4 + .../buildroot/package/trace-cmd/trace-cmd.mk | 53 + .../buildroot/package/traceroute/Config.in | 8 + .../package/traceroute/traceroute.hash | 6 + .../package/traceroute/traceroute.mk | 24 + .../transmission/0001-fix-utypes.patch | 30 + .../0002-musl-missing-header.patch | 36 + .../transmission/0003-fix-utp-include.patch | 46 + ...1.0.18-has-sys-quota.h-synced-with-G.patch | 29 + .../transmission/0005-libsystemd.patch | 133 + .../buildroot/package/transmission/Config.in | 47 + .../package/transmission/S92transmission | 156 + .../package/transmission/transmission.hash | 3 + .../package/transmission/transmission.mk | 85 + features/buildroot/package/tree/Config.in | 13 + features/buildroot/package/tree/tree.hash | 2 + features/buildroot/package/tree/tree.mk | 21 + features/buildroot/package/tremor/Config.in | 10 + features/buildroot/package/tremor/tremor.hash | 3 + features/buildroot/package/tremor/tremor.mk | 32 + .../buildroot/package/triggerhappy/Config.in | 11 + .../package/triggerhappy/S10triggerhappy | 36 + .../package/triggerhappy/triggerhappy.hash | 2 + .../package/triggerhappy/triggerhappy.mk | 49 + .../package/triggerhappy/triggerhappy.service | 9 + features/buildroot/package/trinity/Config.in | 21 + .../buildroot/package/trinity/trinity.hash | 3 + features/buildroot/package/trinity/trinity.mk | 32 + ...er-understands-pie-and-relro-options.patch | 214 + ...pwent_r-is-available-before-using-it.patch | 82 + features/buildroot/package/trousers/Config.in | 18 + .../buildroot/package/trousers/trousers.hash | 6 + .../buildroot/package/trousers/trousers.mk | 35 + .../buildroot/package/ts4900-fpga/Config.in | 11 + .../package/ts4900-fpga/ts4900-fpga.hash | 5 + .../package/ts4900-fpga/ts4900-fpga.mk | 21 + features/buildroot/package/tslib/Config.in | 6 + features/buildroot/package/tslib/tslib.hash | 5 + features/buildroot/package/tslib/tslib.mk | 34 + .../0001-build-get-along-with-buildroot.patch | 40 + features/buildroot/package/tstools/Config.in | 22 + .../buildroot/package/tstools/tstools.hash | 2 + features/buildroot/package/tstools/tstools.mk | 25 + features/buildroot/package/tunctl/Config.in | 6 + features/buildroot/package/tunctl/tunctl.hash | 2 + features/buildroot/package/tunctl/tunctl.mk | 21 + features/buildroot/package/turbolua/Config.in | 18 + .../buildroot/package/turbolua/turbolua.hash | 2 + .../buildroot/package/turbolua/turbolua.mk | 33 + .../tvheadend/0001-no-check_config.patch | 23 + .../0002-tvhcsa.c-include-stdio.h.patch | 40 + .../buildroot/package/tvheadend/Config.in | 43 + .../buildroot/package/tvheadend/S99tvheadend | 56 + .../package/tvheadend/etc.default.tvheadend | 6 + .../package/tvheadend/tvheadend.hash | 3 + .../buildroot/package/tvheadend/tvheadend.mk | 174 + ...001-Fix-static-linking-with-libmagic.patch | 228 + features/buildroot/package/twolame/Config.in | 9 + .../buildroot/package/twolame/twolame.hash | 3 + features/buildroot/package/twolame/twolame.mk | 14 + features/buildroot/package/tz/Config.in | 4 + features/buildroot/package/tz/tz.mk | 36 + features/buildroot/package/tzdata/Config.in | 9 + features/buildroot/package/tzdata/tzdata.hash | 2 + features/buildroot/package/tzdata/tzdata.mk | 63 + features/buildroot/package/tzdump/tzdump.hash | 2 + features/buildroot/package/tzdump/tzdump.mk | 21 + .../0001-drop-configh-from-tools.patch | 49 + ...-tools-only-in-no-dot-config-targets.patch | 42 + .../buildroot/package/uboot-tools/Config.in | 96 + .../package/uboot-tools/Config.in.host | 42 + .../package/uboot-tools/uboot-tools.hash | 3 + .../package/uboot-tools/uboot-tools.mk | 133 + ...1-Install-server-and-client-examples.patch | 28 + features/buildroot/package/ubus/Config.in | 31 + features/buildroot/package/ubus/ubus.hash | 2 + features/buildroot/package/ubus/ubus.mk | 40 + .../buildroot/package/uccp420wlan/Config.in | 16 + .../package/uccp420wlan/uccp420wlan.hash | 2 + .../package/uccp420wlan/uccp420wlan.mk | 18 + features/buildroot/package/ucl/ucl.hash | 2 + features/buildroot/package/ucl/ucl.mk | 15 + ...6-fix-build-with-musl-and-older-kenr.patch | 45 + ...O_CRYPT-to-fix-build-with-glibc-2.28.patch | 43 + .../package/uclibc-ng-test/Config.in | 22 + .../package/uclibc-ng-test/uclibc-ng-test.mk | 59 + ...tfs.h-sync-generic-header-with-glibc.patch | 169 + .../0002-xtensa-add-custom-bits-poll.h.patch | 93 + ...adv-pwritev-fix-offset-argument-type.patch | 71 + .../0004-sparc-remove-asm-constraint.patch | 40 + features/buildroot/package/uclibc/Config.in | 153 + .../buildroot/package/uclibc/uClibc-ng.config | 42 + features/buildroot/package/uclibc/uclibc.hash | 4 + features/buildroot/package/uclibc/uclibc.mk | 458 + features/buildroot/package/udev/Config.in | 6 + features/buildroot/package/udev/udev.mk | 7 + ...tsetup.c-do-not-include-bits-types.h.patch | 32 + ...ect-readline-via-pkg-config-when-pos.patch | 60 + ...event-build-breakage-with-glibc-2-25.patch | 38 + features/buildroot/package/udftools/Config.in | 12 + .../buildroot/package/udftools/udftools.hash | 3 + .../buildroot/package/udftools/udftools.mk | 14 + ...-fix-build-with-newer-glibc-versions.patch | 29 + .../0002-Fix-systemd-service-file.patch | 33 + ...issue-with-missing-sys-sysmacros.h-i.patch | 81 + features/buildroot/package/udisks/Config.in | 46 + features/buildroot/package/udisks/udisks.hash | 3 + features/buildroot/package/udisks/udisks.mk | 32 + .../package/udpcast/0001-select-h.patch | 11 + features/buildroot/package/udpcast/Config.in | 27 + .../buildroot/package/udpcast/udpcast.hash | 2 + features/buildroot/package/udpcast/udpcast.mk | 31 + features/buildroot/package/udpxy/Config.in | 9 + features/buildroot/package/udpxy/udpxy.hash | 2 + features/buildroot/package/udpxy/udpxy.mk | 22 + .../uemacs/01-clear-ixon-termios-flag.patch | 29 + features/buildroot/package/uemacs/Config.in | 7 + features/buildroot/package/uemacs/uemacs.hash | 3 + features/buildroot/package/uemacs/uemacs.mk | 24 + features/buildroot/package/uftp/Config.in | 13 + features/buildroot/package/uftp/uftp.hash | 3 + features/buildroot/package/uftp/uftp.mk | 28 + .../package/uhttpd/0001-Remove-Werror.patch | 33 + ...x-TCP_FASTOPEN-related-compile-error.patch | 30 + features/buildroot/package/uhttpd/Config.in | 18 + features/buildroot/package/uhttpd/uhttpd.hash | 2 + features/buildroot/package/uhttpd/uhttpd.mk | 35 + features/buildroot/package/uhubctl/Config.in | 11 + .../buildroot/package/uhubctl/uhubctl.hash | 3 + features/buildroot/package/uhubctl/uhubctl.mk | 22 + .../0001-ulogd-fix-build-with-musl-libc.patch | 32 + features/buildroot/package/ulogd/Config.in | 18 + features/buildroot/package/ulogd/ulogd.hash | 7 + features/buildroot/package/ulogd/ulogd.mk | 55 + ...01-include-asm-ioctl.h-for-_IOC_SIZE.patch | 26 + features/buildroot/package/unionfs/Config.in | 14 + .../buildroot/package/unionfs/unionfs.hash | 3 + features/buildroot/package/unionfs/unionfs.mk | 13 + .../package/unixodbc/0001-fix-nopthread.patch | 39 + features/buildroot/package/unixodbc/Config.in | 12 + .../buildroot/package/unixodbc/unixodbc.hash | 6 + .../buildroot/package/unixodbc/unixodbc.mk | 37 + features/buildroot/package/unrar/Config.in | 13 + features/buildroot/package/unrar/unrar.hash | 3 + features/buildroot/package/unrar/unrar.mk | 23 + features/buildroot/package/unscd/Config.in | 25 + features/buildroot/package/unscd/S46unscd | 25 + features/buildroot/package/unscd/nscd.conf | 33 + features/buildroot/package/unscd/unscd.hash | 2 + features/buildroot/package/unscd/unscd.mk | 36 + ...keFile.txt-to-ease-cross-compilation.patch | 53 + features/buildroot/package/unzip/Config.in | 12 + features/buildroot/package/unzip/unzip.hash | 18 + features/buildroot/package/unzip/unzip.mk | 31 + features/buildroot/package/upmpdcli/Config.in | 22 + .../buildroot/package/upmpdcli/S99upmpdcli | 36 + .../buildroot/package/upmpdcli/upmpdcli.hash | 5 + .../buildroot/package/upmpdcli/upmpdcli.mk | 41 + .../0001-daemon-fix-get_critical_action.patch | 34 + features/buildroot/package/upower/Config.in | 27 + features/buildroot/package/upower/upower.hash | 2 + features/buildroot/package/upower/upower.mk | 25 + features/buildroot/package/upx/upx.hash | 2 + features/buildroot/package/upx/upx.mk | 29 + .../buildroot/package/urg/0001-select-h.patch | 39 + ...02-urg-gcc6-fix-narrowing-conversion.patch | 99 + features/buildroot/package/urg/Config.in | 10 + features/buildroot/package/urg/urg.hash | 6 + features/buildroot/package/urg/urg.mk | 31 + ...xtra-configure-flags-to-be-passed-to.patch | 29 + .../package/usb_modeswitch/Config.in | 23 + .../usb_modeswitch/usb_modeswitch.hash | 3 + .../package/usb_modeswitch/usb_modeswitch.mk | 45 + .../package/usb_modeswitch_data/Config.in | 13 + .../usb_modeswitch_data.hash | 3 + .../usb_modeswitch_data.mk | 20 + .../package/usbmount/0001-rules-fix.patch | 19 + ...se-udev-environment-instead-of-blkid.patch | 71 + features/buildroot/package/usbmount/Config.in | 13 + .../buildroot/package/usbmount/usbmount.hash | 2 + .../buildroot/package/usbmount/usbmount.mk | 28 + features/buildroot/package/usbredir/Config.in | 30 + .../buildroot/package/usbredir/usbredir.hash | 2 + .../buildroot/package/usbredir/usbredir.mk | 29 + features/buildroot/package/usbutils/Config.in | 12 + .../buildroot/package/usbutils/usbutils.hash | 5 + .../buildroot/package/usbutils/usbutils.mk | 25 + .../package/ushare/0001-compile-fixes.patch | 206 + ...002-ushare-fix-building-with-gcc-5.x.patch | 49 + ...fig-h-before-checking-for-CONFIG-NLS.patch | 42 + features/buildroot/package/ushare/Config.in | 17 + features/buildroot/package/ushare/ushare.hash | 2 + features/buildroot/package/ushare/ushare.mk | 44 + .../0001-fix-build-against-bluez-4.patch | 15 + .../0002-fix-build-again-obex-bluez.patch | 28 + .../0003-add-OBEX_CharToUnicode.patch | 47 + .../buildroot/package/ussp-push/Config.in | 17 + .../package/ussp-push/ussp-push.hash | 4 + .../buildroot/package/ussp-push/ussp-push.mk | 14 + features/buildroot/package/ustr/Config.in | 13 + features/buildroot/package/ustr/ustr.hash | 9 + features/buildroot/package/ustr/ustr.mk | 39 + .../buildroot/package/ustream-ssl/Config.in | 12 + .../package/ustream-ssl/ustream-ssl.hash | 3 + .../package/ustream-ssl/ustream-ssl.mk | 21 + .../buildroot/package/util-linux/Config.in | 429 + .../package/util-linux/Config.in.host | 8 + features/buildroot/package/util-linux/su.pam | 15 + .../package/util-linux/util-linux.hash | 9 + .../package/util-linux/util-linux.mk | 260 + .../buildroot/package/utp_com/Config.in.host | 7 + .../buildroot/package/utp_com/utp_com.hash | 3 + features/buildroot/package/utp_com/utp_com.mk | 21 + .../package/ux500-firmware/Config.in | 8 + .../ux500-firmware/ux500-firmware.hash | 2 + .../package/ux500-firmware/ux500-firmware.mk | 23 + features/buildroot/package/v4l2grab/Config.in | 20 + .../buildroot/package/v4l2grab/v4l2grab.hash | 2 + .../buildroot/package/v4l2grab/v4l2grab.mk | 15 + .../buildroot/package/v4l2loopback/Config.in | 30 + .../package/v4l2loopback/v4l2loopback.hash | 3 + .../package/v4l2loopback/v4l2loopback.mk | 19 + ...0001-dont-add-dirty-to-valac-version.patch | 25 + features/buildroot/package/vala/vala-wrapper | 2 + features/buildroot/package/vala/vala.hash | 2 + features/buildroot/package/vala/vala.mk | 32 + .../0001-workaround-SIGSEGV-on-PPC.patch | 32 + ...TSIGINFO-on-PowerPC-when-not-availab.patch | 37 + ...s32r6-and-mips64r6-compilation-issue.patch | 51 + features/buildroot/package/valgrind/Config.in | 87 + .../buildroot/package/valgrind/uclibc.supp | 212 + .../buildroot/package/valgrind/valgrind.hash | 6 + .../buildroot/package/valgrind/valgrind.mk | 159 + features/buildroot/package/valijson/Config.in | 18 + .../buildroot/package/valijson/valijson.hash | 2 + .../buildroot/package/valijson/valijson.mk | 16 + ...missing-definition-of-MTD_CHAR_MAJOR.patch | 30 + ...d-missing-header-include-for-ssize_t.patch | 27 + .../0003-Avoid-RSA-type-redefinition.patch | 44 + .../0004-Disable-static-futility.patch | 30 + ...05-include-sys-sysmacros.h-for-major.patch | 51 + .../0006-Update-for-openssl-1.1.patch | 268 + .../package/vboot-utils/Config.in.host | 7 + .../package/vboot-utils/vboot-utils.hash | 2 + .../package/vboot-utils/vboot-utils.mk | 43 + .../buildroot/package/vde2/0001-no-cxx.patch | 22 + ...-fstp-Add-static-to-inline-functions.patch | 44 + features/buildroot/package/vde2/Config.in | 14 + features/buildroot/package/vde2/vde2.hash | 5 + features/buildroot/package/vde2/vde2.mk | 52 + .../package/vdr-plugin-vnsiserver/Config.in | 9 + .../vdr-plugin-vnsiserver.hash | 3 + .../vdr-plugin-vnsiserver.mk | 26 + .../buildroot/package/vdr/0001-libjpeg.patch | 40 + features/buildroot/package/vdr/Config.in | 26 + features/buildroot/package/vdr/vdr.hash | 5 + features/buildroot/package/vdr/vdr.mk | 63 + features/buildroot/package/vim/Config.in | 26 + features/buildroot/package/vim/vim.hash | 2 + features/buildroot/package/vim/vim.mk | 92 + ...ding-of-statically-linked-vlc-binary.patch | 40 + ...OMPAT_APIINTCASTS-for-Lua-5.3.0-comp.patch | 41 + ...3-automake-add-subdir-objects-option.patch | 32 + ...ld-use-pkg-config-to-get-tremor-libs.patch | 50 + ...r-using-uClibc-by-adding-sys-types.h.patch | 44 + ...Don-t-assume-strerror_l-is-available.patch | 58 + ...ient-run-time-fallback-to-real-time-.patch | 187 + .../vlc/0008-Add-support-for-freerdp2.patch | 150 + ...o-use-AC_PATH_PROG-to-check-for-wayl.patch | 50 + features/buildroot/package/vlc/Config.in | 36 + features/buildroot/package/vlc/vlc.hash | 9 + features/buildroot/package/vlc/vlc.mk | 564 ++ features/buildroot/package/vmtouch/Config.in | 11 + .../buildroot/package/vmtouch/vmtouch.hash | 5 + features/buildroot/package/vmtouch/vmtouch.mk | 21 + features/buildroot/package/vnstat/Config.in | 17 + features/buildroot/package/vnstat/vnstat.hash | 2 + features/buildroot/package/vnstat/vnstat.mk | 20 + .../buildroot/package/vo-aacenc/Config.in | 9 + .../package/vo-aacenc/vo-aacenc.hash | 2 + .../buildroot/package/vo-aacenc/vo-aacenc.mk | 46 + ...c-Fix-large-alloca-on-bad-AIFF-input.patch | 37 + .../buildroot/package/vorbis-tools/Config.in | 12 + .../package/vorbis-tools/vorbis-tools.hash | 2 + .../package/vorbis-tools/vorbis-tools.mk | 24 + ...llow-to-override-the-PREFIX-variable.patch | 31 + ...kefile-allow-to-override-the-version.patch | 41 + ...allow-passing-custom-CFLAGS-CPPFLAGS.patch | 45 + ...vide-an-option-to-not-build-manpages.patch | 57 + ...assing-a-custom-path-to-libgcrypt-co.patch | 40 + ...-deprecated-SUSv3-functions-with-POS.patch | 36 + ...ssume-error.h-is-available-on-all-Li.patch | 52 + ...on-t-include-linux-if_tun.h-on-Linux.patch | 54 + ...dd-missing-sys-ttydefaults.h-include.patch | 36 + features/buildroot/package/vpnc/Config.in | 21 + features/buildroot/package/vpnc/vpnc.hash | 2 + features/buildroot/package/vpnc/vpnc.mk | 27 + .../package/vsftpd/0001-utmpx-builddef.patch | 49 + .../vsftpd/0003-fix-CVE-2015-1419.patch | 102 + ...0004-Prevent-hang-in-SIGCHLD-handler.patch | 87 + features/buildroot/package/vsftpd/Config.in | 18 + features/buildroot/package/vsftpd/S70vsftpd | 33 + features/buildroot/package/vsftpd/vsftpd.hash | 2 + features/buildroot/package/vsftpd/vsftpd.mk | 67 + features/buildroot/package/vte/Config.in | 35 + features/buildroot/package/vte/vte.hash | 3 + features/buildroot/package/vte/vte.mk | 22 + .../package/vtun/0001-fix-installation.patch | 44 + .../vtun/0002-fix-ssl-headers-checks.patch | 47 + .../package/vtun/0003-openssl11.patch | 294 + features/buildroot/package/vtun/Config.in | 13 + features/buildroot/package/vtun/vtun.hash | 6 + features/buildroot/package/vtun/vtun.mk | 22 + .../buildroot/package/w_scan/0001-musl.patch | 26 + features/buildroot/package/w_scan/Config.in | 14 + features/buildroot/package/w_scan/w_scan.hash | 2 + features/buildroot/package/w_scan/w_scan.mk | 18 + features/buildroot/package/waf/waf.hash | 3 + features/buildroot/package/waf/waf.mk | 19 + ...ads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch | 54 + ...lags-from-.pc-files-to-waffle-cflags.patch | 40 + features/buildroot/package/waffle/Config.in | 47 + features/buildroot/package/waffle/waffle.hash | 3 + features/buildroot/package/waffle/waffle.mk | 48 + features/buildroot/package/wampcc/Config.in | 30 + features/buildroot/package/wampcc/wampcc.hash | 3 + features/buildroot/package/wampcc/wampcc.mk | 19 + ...-on_exit-use-standard-atexit-instead.patch | 73 + features/buildroot/package/wavemon/Config.in | 19 + .../buildroot/package/wavemon/wavemon.hash | 3 + features/buildroot/package/wavemon/wavemon.mk | 16 + ...ew-dependency-on-wchar-t-by-removing.patch | 70 + ...overwrite-stack-on-corrupt-RF64-file.patch | 118 + ...overwrite-heap-on-corrupt-DSDIFF-fil.patch | 38 + ...fer-overflows-and-bad-allocs-on-corr.patch | 72 + ...1-issue-32-no-multiple-format-chunks.patch | 64 + ...e-size-of-unknown-chunks-before-mall.patch | 75 + features/buildroot/package/wavpack/Config.in | 9 + .../buildroot/package/wavpack/wavpack.hash | 2 + features/buildroot/package/wavpack/wavpack.mk | 29 + .../package/wayland-protocols/Config.in | 9 + .../wayland-protocols/wayland-protocols.hash | 5 + .../wayland-protocols/wayland-protocols.mk | 15 + ...onfigure-add-option-to-disable-tests.patch | 73 + features/buildroot/package/wayland/Config.in | 16 + .../buildroot/package/wayland/wayland.hash | 8 + features/buildroot/package/wayland/wayland.mk | 30 + .../buildroot/package/waylandpp/Config.in | 16 + .../package/waylandpp/waylandpp.hash | 4 + .../buildroot/package/waylandpp/waylandpp.mk | 28 + .../buildroot/package/webkitgtk/Config.in | 114 + .../package/webkitgtk/webkitgtk.hash | 8 + .../buildroot/package/webkitgtk/webkitgtk.mk | 96 + features/buildroot/package/webp/Config.in | 25 + features/buildroot/package/webp/webp.hash | 3 + features/buildroot/package/webp/webp.mk | 56 + ...figure.ac-fix-architecture-detection.patch | 84 + ...detection-of-cxxabi.h-and-execinfo.h.patch | 63 + .../package/webrtc-audio-processing/Config.in | 21 + .../webrtc-audio-processing.hash | 2 + .../webrtc-audio-processing.mk | 21 + ...e-make_shared-with-new-in-some-cases.patch | 79 + .../0002-Fix-missed-entries-fix-testing.patch | 66 + .../buildroot/package/websocketpp/Config.in | 15 + .../package/websocketpp/websocketpp.hash | 3 + .../package/websocketpp/websocketpp.mk | 15 + features/buildroot/package/weston/Config.in | 106 + features/buildroot/package/weston/weston.hash | 7 + features/buildroot/package/weston/weston.mk | 153 + features/buildroot/package/wf111/Config.in | 25 + features/buildroot/package/wf111/wf111.hash | 4 + features/buildroot/package/wf111/wf111.mk | 33 + features/buildroot/package/wget/Config.in | 15 + features/buildroot/package/wget/wget.hash | 6 + features/buildroot/package/wget/wget.mk | 52 + .../buildroot/package/whetstone/Config.in | 6 + .../package/whetstone/whetstone.hash | 2 + .../buildroot/package/whetstone/whetstone.mk | 23 + features/buildroot/package/which/Config.in | 7 + features/buildroot/package/which/which.hash | 2 + features/buildroot/package/which/which.mk | 12 + features/buildroot/package/whois/Config.in | 7 + features/buildroot/package/whois/whois.hash | 5 + features/buildroot/package/whois/whois.mk | 47 + .../package/wilc1000-firmware/Config.in | 6 + .../wilc1000-firmware/wilc1000-firmware.hash | 2 + .../wilc1000-firmware/wilc1000-firmware.mk | 24 + .../package/wilink-bt-firmware/Config.in | 7 + .../wilink-bt-firmware.hash | 2 + .../wilink-bt-firmware/wilink-bt-firmware.mk | 17 + features/buildroot/package/wine/Config.in | 28 + features/buildroot/package/wine/wine.hash | 2 + features/buildroot/package/wine/wine.mk | 406 + .../buildroot/package/wipe/0001-musl.patch | 28 + features/buildroot/package/wipe/Config.in | 7 + features/buildroot/package/wipe/wipe.hash | 2 + features/buildroot/package/wipe/wipe.mk | 17 + .../buildroot/package/wireguard/Config.in | 23 + .../package/wireguard/wireguard.hash | 4 + .../buildroot/package/wireguard/wireguard.mk | 41 + .../package/wireless-regdb/Config.in | 14 + .../wireless-regdb/wireless-regdb.hash | 4 + .../package/wireless-regdb/wireless-regdb.mk | 30 + .../wireless_tools/0001-remove-bzero.patch | 95 + .../package/wireless_tools/Config.in | 16 + .../wireless_tools/wireless_tools.hash | 3 + .../package/wireless_tools/wireless_tools.mk | 40 + .../0001-CMake-add-USE_STATIC-option.patch | 70 + ...pkg-config-to-find-pcap-dependencies.patch | 45 + ...-config-to-find-libxml2-dependencies.patch | 48 + .../buildroot/package/wireshark/Config.in | 45 + .../package/wireshark/wireshark.hash | 4 + .../buildroot/package/wireshark/wireshark.mk | 173 + .../0001-Adjust-for-buildroot-build.patch | 131 + ...erial-fix-compile-for-missing-baud-d.patch | 47 + features/buildroot/package/wiringpi/Config.in | 13 + .../buildroot/package/wiringpi/wiringpi.hash | 2 + .../buildroot/package/wiringpi/wiringpi.mk | 32 + features/buildroot/package/wmctrl/Config.in | 24 + features/buildroot/package/wmctrl/wmctrl.hash | 2 + features/buildroot/package/wmctrl/wmctrl.mk | 18 + ...tiple-libraries-being-returned-for-B.patch | 80 + features/buildroot/package/woff2/Config.in | 12 + features/buildroot/package/woff2/woff2.hash | 5 + features/buildroot/package/woff2/woff2.mk | 24 + features/buildroot/package/wolfssl/Config.in | 27 + .../buildroot/package/wolfssl/wolfssl.hash | 6 + features/buildroot/package/wolfssl/wolfssl.mk | 46 + ...pplicant-2.7-fix-undefined-remove-ie.patch | 43 + .../package/wpa_supplicant/Config.in | 123 + .../wpa_supplicant/wpa_supplicant.conf | 6 + .../wpa_supplicant/wpa_supplicant.hash | 19 + .../package/wpa_supplicant/wpa_supplicant.mk | 241 + .../buildroot/package/wpan-tools/Config.in | 11 + .../package/wpan-tools/wpan-tools.hash | 3 + .../package/wpan-tools/wpan-tools.mk | 15 + .../package/wpebackend-fdo/Config.in | 19 + .../wpebackend-fdo/wpebackend-fdo.hash | 7 + .../package/wpebackend-fdo/wpebackend-fdo.mk | 15 + ...uild-failure-after-r243644-in-GTK-Li.patch | 36 + .../wpewebkit/0001-Fix-build-with-musl.patch | 79 + .../buildroot/package/wpewebkit/Config.in | 112 + .../package/wpewebkit/wpewebkit.hash | 8 + .../buildroot/package/wpewebkit/wpewebkit.mk | 54 + .../buildroot/package/wsapi-fcgi/Config.in | 11 + .../package/wsapi-fcgi/wsapi-fcgi.hash | 4 + .../package/wsapi-fcgi/wsapi-fcgi.mk | 15 + .../buildroot/package/wsapi-xavante/Config.in | 10 + .../package/wsapi-xavante/wsapi-xavante.hash | 4 + .../package/wsapi-xavante/wsapi-xavante.mk | 14 + features/buildroot/package/wsapi/Config.in | 9 + features/buildroot/package/wsapi/wsapi.hash | 4 + features/buildroot/package/wsapi/wsapi.mk | 14 + features/buildroot/package/x11r7/Config.in | 245 + .../buildroot/package/x11r7/libxcb/Config.in | 13 + .../package/x11r7/libxcb/libxcb.hash | 7 + .../buildroot/package/x11r7/libxcb/libxcb.mk | 30 + .../buildroot/package/x11r7/mcookie/Config.in | 6 + .../buildroot/package/x11r7/mcookie/mcookie.c | 425 + .../package/x11r7/mcookie/mcookie.mk | 21 + features/buildroot/package/x11r7/x11r7.mk | 1 + .../package/x11r7/xapp_appres/Config.in | 6 + .../x11r7/xapp_appres/xapp_appres.hash | 7 + .../package/x11r7/xapp_appres/xapp_appres.mk | 14 + .../package/x11r7/xapp_bdftopcf/Config.in | 5 + .../x11r7/xapp_bdftopcf/xapp_bdftopcf.hash | 8 + .../x11r7/xapp_bdftopcf/xapp_bdftopcf.mk | 19 + .../package/x11r7/xapp_beforelight/Config.in | 8 + .../xapp_beforelight/xapp_beforelight.hash | 2 + .../xapp_beforelight/xapp_beforelight.mk | 15 + .../package/x11r7/xapp_bitmap/Config.in | 8 + .../x11r7/xapp_bitmap/xapp_bitmap.hash | 7 + .../package/x11r7/xapp_bitmap/xapp_bitmap.mk | 15 + .../package/x11r7/xapp_editres/Config.in | 8 + .../x11r7/xapp_editres/xapp_editres.hash | 7 + .../x11r7/xapp_editres/xapp_editres.mk | 15 + .../package/x11r7/xapp_fonttosfnt/Config.in | 7 + .../xapp_fonttosfnt/xapp_fonttosfnt.hash | 2 + .../x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk | 14 + .../package/x11r7/xapp_fslsfonts/Config.in | 6 + .../x11r7/xapp_fslsfonts/xapp_fslsfonts.hash | 2 + .../x11r7/xapp_fslsfonts/xapp_fslsfonts.mk | 14 + .../package/x11r7/xapp_fstobdf/Config.in | 6 + .../x11r7/xapp_fstobdf/xapp_fstobdf.hash | 2 + .../x11r7/xapp_fstobdf/xapp_fstobdf.mk | 14 + .../package/x11r7/xapp_iceauth/Config.in | 6 + .../x11r7/xapp_iceauth/xapp_iceauth.hash | 7 + .../x11r7/xapp_iceauth/xapp_iceauth.mk | 14 + .../package/x11r7/xapp_ico/Config.in | 5 + .../package/x11r7/xapp_ico/xapp_ico.hash | 7 + .../package/x11r7/xapp_ico/xapp_ico.mk | 14 + .../package/x11r7/xapp_listres/Config.in | 8 + .../x11r7/xapp_listres/xapp_listres.hash | 7 + .../x11r7/xapp_listres/xapp_listres.mk | 14 + .../x11r7/xapp_luit/0001-posix-openpt.patch | 19 + .../package/x11r7/xapp_luit/Config.in | 7 + .../package/x11r7/xapp_luit/xapp_luit.hash | 2 + .../package/x11r7/xapp_luit/xapp_luit.mk | 14 + .../package/x11r7/xapp_mkfontscale/Config.in | 9 + .../xapp_mkfontscale/xapp_mkfontscale.hash | 7 + .../xapp_mkfontscale/xapp_mkfontscale.mk | 17 + .../package/x11r7/xapp_oclock/Config.in | 7 + .../x11r7/xapp_oclock/xapp_oclock.hash | 7 + .../package/x11r7/xapp_oclock/xapp_oclock.mk | 22 + .../package/x11r7/xapp_rgb/Config.in | 5 + .../package/x11r7/xapp_rgb/xapp_rgb.hash | 2 + .../package/x11r7/xapp_rgb/xapp_rgb.mk | 14 + .../package/x11r7/xapp_rstart/Config.in | 6 + .../x11r7/xapp_rstart/xapp_rstart.hash | 2 + .../package/x11r7/xapp_rstart/xapp_rstart.mk | 14 + .../package/x11r7/xapp_scripts/Config.in | 5 + .../x11r7/xapp_scripts/xapp_scripts.hash | 2 + .../x11r7/xapp_scripts/xapp_scripts.mk | 14 + .../package/x11r7/xapp_sessreg/Config.in | 6 + .../x11r7/xapp_sessreg/xapp_sessreg.hash | 7 + .../x11r7/xapp_sessreg/xapp_sessreg.mk | 14 + .../package/x11r7/xapp_setxkbmap/Config.in | 6 + .../x11r7/xapp_setxkbmap/xapp_setxkbmap.hash | 7 + .../x11r7/xapp_setxkbmap/xapp_setxkbmap.mk | 14 + .../package/x11r7/xapp_showfont/Config.in | 5 + .../x11r7/xapp_showfont/xapp_showfont.hash | 2 + .../x11r7/xapp_showfont/xapp_showfont.mk | 14 + .../package/x11r7/xapp_smproxy/Config.in | 6 + .../x11r7/xapp_smproxy/xapp_smproxy.hash | 2 + .../x11r7/xapp_smproxy/xapp_smproxy.mk | 14 + .../package/x11r7/xapp_twm/Config.in | 8 + .../package/x11r7/xapp_twm/xapp_twm.hash | 7 + .../package/x11r7/xapp_twm/xapp_twm.mk | 15 + .../package/x11r7/xapp_viewres/Config.in | 5 + .../x11r7/xapp_viewres/xapp_viewres.hash | 7 + .../x11r7/xapp_viewres/xapp_viewres.mk | 15 + .../package/x11r7/xapp_x11perf/Config.in | 7 + .../x11r7/xapp_x11perf/xapp_x11perf.hash | 7 + .../x11r7/xapp_x11perf/xapp_x11perf.mk | 14 + .../package/x11r7/xapp_xauth/Config.in | 8 + .../package/x11r7/xapp_xauth/xapp_xauth.hash | 7 + .../package/x11r7/xapp_xauth/xapp_xauth.mk | 14 + .../package/x11r7/xapp_xbacklight/Config.in | 8 + .../xapp_xbacklight/xapp_xbacklight.hash | 7 + .../x11r7/xapp_xbacklight/xapp_xbacklight.mk | 14 + .../package/x11r7/xapp_xbiff/Config.in | 6 + .../package/x11r7/xapp_xbiff/xapp_xbiff.hash | 7 + .../package/x11r7/xapp_xbiff/xapp_xbiff.mk | 14 + .../package/x11r7/xapp_xcalc/Config.in | 5 + .../package/x11r7/xapp_xcalc/xapp_xcalc.hash | 7 + .../package/x11r7/xapp_xcalc/xapp_xcalc.mk | 16 + .../package/x11r7/xapp_xclipboard/Config.in | 5 + .../xapp_xclipboard/xapp_xclipboard.hash | 2 + .../x11r7/xapp_xclipboard/xapp_xclipboard.mk | 15 + .../package/x11r7/xapp_xclock/Config.in | 9 + .../x11r7/xapp_xclock/xapp_xclock.hash | 7 + .../package/x11r7/xapp_xclock/xapp_xclock.mk | 15 + .../package/x11r7/xapp_xcmsdb/Config.in | 6 + .../x11r7/xapp_xcmsdb/xapp_xcmsdb.hash | 2 + .../package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk | 14 + .../package/x11r7/xapp_xcompmgr/Config.in | 10 + .../x11r7/xapp_xcompmgr/xapp_xcompmgr.hash | 7 + .../x11r7/xapp_xcompmgr/xapp_xcompmgr.mk | 19 + .../package/x11r7/xapp_xconsole/Config.in | 10 + .../x11r7/xapp_xconsole/xapp_xconsole.hash | 2 + .../x11r7/xapp_xconsole/xapp_xconsole.mk | 17 + .../package/x11r7/xapp_xcursorgen/Config.in | 7 + .../xapp_xcursorgen/xapp_xcursorgen.hash | 7 + .../x11r7/xapp_xcursorgen/xapp_xcursorgen.mk | 17 + .../package/x11r7/xapp_xdbedizzy/Config.in | 5 + .../x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash | 2 + .../x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk | 14 + .../package/x11r7/xapp_xditview/Config.in | 5 + .../x11r7/xapp_xditview/xapp_xditview.hash | 7 + .../x11r7/xapp_xditview/xapp_xditview.mk | 15 + .../package/x11r7/xapp_xdm/Config.in | 15 + .../buildroot/package/x11r7/xapp_xdm/S99xdm | 25 + .../package/x11r7/xapp_xdm/xapp_xdm.hash | 7 + .../package/x11r7/xapp_xdm/xapp_xdm.mk | 32 + .../package/x11r7/xapp_xdpyinfo/Config.in | 8 + .../x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash | 2 + .../x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk | 37 + .../package/x11r7/xapp_xdriinfo/Config.in | 10 + .../x11r7/xapp_xdriinfo/xapp_xdriinfo.hash | 7 + .../x11r7/xapp_xdriinfo/xapp_xdriinfo.mk | 14 + .../package/x11r7/xapp_xedit/Config.in | 6 + .../package/x11r7/xapp_xedit/xapp_xedit.hash | 3 + .../package/x11r7/xapp_xedit/xapp_xedit.mk | 18 + .../package/x11r7/xapp_xev/Config.in | 6 + .../package/x11r7/xapp_xev/xapp_xev.hash | 7 + .../package/x11r7/xapp_xev/xapp_xev.mk | 14 + .../package/x11r7/xapp_xeyes/Config.in | 9 + .../package/x11r7/xapp_xeyes/xapp_xeyes.hash | 7 + .../package/x11r7/xapp_xeyes/xapp_xeyes.mk | 14 + .../package/x11r7/xapp_xf86dga/Config.in | 7 + .../x11r7/xapp_xf86dga/xapp_xf86dga.hash | 2 + .../x11r7/xapp_xf86dga/xapp_xf86dga.mk | 17 + .../package/x11r7/xapp_xfd/Config.in | 8 + .../package/x11r7/xapp_xfd/xapp_xfd.hash | 7 + .../package/x11r7/xapp_xfd/xapp_xfd.mk | 28 + .../package/x11r7/xapp_xfindproxy/Config.in | 9 + .../xapp_xfindproxy/xapp_xfindproxy.hash | 2 + .../x11r7/xapp_xfindproxy/xapp_xfindproxy.mk | 17 + .../package/x11r7/xapp_xfontsel/Config.in | 5 + .../x11r7/xapp_xfontsel/xapp_xfontsel.hash | 7 + .../x11r7/xapp_xfontsel/xapp_xfontsel.mk | 14 + .../package/x11r7/xapp_xfs/Config.in | 8 + .../package/x11r7/xapp_xfs/xapp_xfs.hash | 5 + .../package/x11r7/xapp_xfs/xapp_xfs.mk | 14 + .../package/x11r7/xapp_xfsinfo/Config.in | 6 + .../x11r7/xapp_xfsinfo/xapp_xfsinfo.hash | 7 + .../x11r7/xapp_xfsinfo/xapp_xfsinfo.mk | 14 + .../package/x11r7/xapp_xgamma/Config.in | 5 + .../x11r7/xapp_xgamma/xapp_xgamma.hash | 2 + .../package/x11r7/xapp_xgamma/xapp_xgamma.mk | 14 + .../package/x11r7/xapp_xgc/Config.in | 5 + .../package/x11r7/xapp_xgc/xapp_xgc.hash | 2 + .../package/x11r7/xapp_xgc/xapp_xgc.mk | 14 + .../package/x11r7/xapp_xhost/Config.in | 6 + .../package/x11r7/xapp_xhost/xapp_xhost.hash | 7 + .../package/x11r7/xapp_xhost/xapp_xhost.mk | 14 + .../package/x11r7/xapp_xinit/Config.in | 11 + .../package/x11r7/xapp_xinit/xapp_xinit.hash | 7 + .../package/x11r7/xapp_xinit/xapp_xinit.mk | 15 + .../x11r7/xapp_xinput-calibrator/Config.in | 12 + .../xapp_xinput-calibrator.hash | 2 + .../xapp_xinput-calibrator.mk | 14 + .../package/x11r7/xapp_xinput/Config.in | 8 + .../x11r7/xapp_xinput/xapp_xinput.hash | 7 + .../package/x11r7/xapp_xinput/xapp_xinput.mk | 14 + .../package/x11r7/xapp_xkbcomp/Config.in | 6 + .../x11r7/xapp_xkbcomp/xapp_xkbcomp.hash | 7 + .../x11r7/xapp_xkbcomp/xapp_xkbcomp.mk | 17 + .../package/x11r7/xapp_xkbevd/Config.in | 6 + .../x11r7/xapp_xkbevd/xapp_xkbevd.hash | 2 + .../package/x11r7/xapp_xkbevd/xapp_xkbevd.mk | 14 + .../package/x11r7/xapp_xkbprint/Config.in | 5 + .../x11r7/xapp_xkbprint/xapp_xkbprint.hash | 2 + .../x11r7/xapp_xkbprint/xapp_xkbprint.mk | 14 + .../package/x11r7/xapp_xkbutils/Config.in | 6 + .../x11r7/xapp_xkbutils/xapp_xkbutils.hash | 2 + .../x11r7/xapp_xkbutils/xapp_xkbutils.mk | 14 + .../package/x11r7/xapp_xkill/Config.in | 6 + .../package/x11r7/xapp_xkill/xapp_xkill.hash | 7 + .../package/x11r7/xapp_xkill/xapp_xkill.mk | 14 + .../package/x11r7/xapp_xload/Config.in | 5 + .../package/x11r7/xapp_xload/xapp_xload.hash | 7 + .../package/x11r7/xapp_xload/xapp_xload.mk | 21 + .../package/x11r7/xapp_xlogo/Config.in | 7 + .../package/x11r7/xapp_xlogo/xapp_xlogo.hash | 7 + .../package/x11r7/xapp_xlogo/xapp_xlogo.mk | 16 + .../package/x11r7/xapp_xlsatoms/Config.in | 6 + .../x11r7/xapp_xlsatoms/xapp_xlsatoms.hash | 7 + .../x11r7/xapp_xlsatoms/xapp_xlsatoms.mk | 14 + .../package/x11r7/xapp_xlsclients/Config.in | 8 + .../xapp_xlsclients/xapp_xlsclients.hash | 7 + .../x11r7/xapp_xlsclients/xapp_xlsclients.mk | 14 + .../package/x11r7/xapp_xlsfonts/Config.in | 5 + .../x11r7/xapp_xlsfonts/xapp_xlsfonts.hash | 7 + .../x11r7/xapp_xlsfonts/xapp_xlsfonts.mk | 14 + .../package/x11r7/xapp_xmag/Config.in | 5 + .../package/x11r7/xapp_xmag/xapp_xmag.hash | 2 + .../package/x11r7/xapp_xmag/xapp_xmag.mk | 15 + .../package/x11r7/xapp_xman/Config.in | 5 + .../package/x11r7/xapp_xman/xapp_xman.hash | 7 + .../package/x11r7/xapp_xman/xapp_xman.mk | 21 + .../package/x11r7/xapp_xmessage/Config.in | 5 + .../x11r7/xapp_xmessage/xapp_xmessage.hash | 7 + .../x11r7/xapp_xmessage/xapp_xmessage.mk | 15 + .../package/x11r7/xapp_xmh/Config.in | 7 + .../package/x11r7/xapp_xmh/xapp_xmh.hash | 2 + .../package/x11r7/xapp_xmh/xapp_xmh.mk | 14 + .../package/x11r7/xapp_xmodmap/Config.in | 5 + .../x11r7/xapp_xmodmap/xapp_xmodmap.hash | 7 + .../x11r7/xapp_xmodmap/xapp_xmodmap.mk | 14 + .../package/x11r7/xapp_xmore/Config.in | 5 + .../package/x11r7/xapp_xmore/xapp_xmore.hash | 7 + .../package/x11r7/xapp_xmore/xapp_xmore.mk | 14 + .../package/x11r7/xapp_xpr/Config.in | 6 + .../package/x11r7/xapp_xpr/xapp_xpr.hash | 7 + .../package/x11r7/xapp_xpr/xapp_xpr.mk | 14 + .../package/x11r7/xapp_xprop/Config.in | 6 + .../package/x11r7/xapp_xprop/xapp_xprop.hash | 7 + .../package/x11r7/xapp_xprop/xapp_xprop.mk | 14 + .../package/x11r7/xapp_xrandr/Config.in | 6 + .../x11r7/xapp_xrandr/xapp_xrandr.hash | 2 + .../package/x11r7/xapp_xrandr/xapp_xrandr.mk | 15 + .../package/x11r7/xapp_xrdb/Config.in | 6 + .../package/x11r7/xapp_xrdb/xapp_xrdb.hash | 7 + .../package/x11r7/xapp_xrdb/xapp_xrdb.mk | 14 + .../package/x11r7/xapp_xrefresh/Config.in | 5 + .../x11r7/xapp_xrefresh/xapp_xrefresh.hash | 7 + .../x11r7/xapp_xrefresh/xapp_xrefresh.mk | 14 + .../package/x11r7/xapp_xset/Config.in | 5 + .../package/x11r7/xapp_xset/xapp_xset.hash | 7 + .../package/x11r7/xapp_xset/xapp_xset.mk | 14 + .../package/x11r7/xapp_xsetmode/Config.in | 6 + .../x11r7/xapp_xsetmode/xapp_xsetmode.hash | 2 + .../x11r7/xapp_xsetmode/xapp_xsetmode.mk | 14 + .../package/x11r7/xapp_xsetpointer/Config.in | 7 + .../xapp_xsetpointer/xapp_xsetpointer.hash | 2 + .../xapp_xsetpointer/xapp_xsetpointer.mk | 14 + .../package/x11r7/xapp_xsetroot/Config.in | 8 + .../x11r7/xapp_xsetroot/xapp_xsetroot.hash | 7 + .../x11r7/xapp_xsetroot/xapp_xsetroot.mk | 14 + .../package/x11r7/xapp_xsm/Config.in | 6 + .../package/x11r7/xapp_xsm/xapp_xsm.hash | 7 + .../package/x11r7/xapp_xsm/xapp_xsm.mk | 14 + .../package/x11r7/xapp_xstdcmap/Config.in | 6 + .../x11r7/xapp_xstdcmap/xapp_xstdcmap.hash | 7 + .../x11r7/xapp_xstdcmap/xapp_xstdcmap.mk | 14 + .../package/x11r7/xapp_xvidtune/Config.in | 6 + .../x11r7/xapp_xvidtune/xapp_xvidtune.hash | 2 + .../x11r7/xapp_xvidtune/xapp_xvidtune.mk | 14 + .../package/x11r7/xapp_xvinfo/Config.in | 6 + .../x11r7/xapp_xvinfo/xapp_xvinfo.hash | 7 + .../package/x11r7/xapp_xvinfo/xapp_xvinfo.mk | 14 + .../package/x11r7/xapp_xwd/Config.in | 7 + .../package/x11r7/xapp_xwd/xapp_xwd.hash | 7 + .../package/x11r7/xapp_xwd/xapp_xwd.mk | 14 + .../package/x11r7/xapp_xwininfo/Config.in | 6 + .../x11r7/xapp_xwininfo/xapp_xwininfo.hash | 7 + .../x11r7/xapp_xwininfo/xapp_xwininfo.mk | 14 + .../package/x11r7/xapp_xwud/Config.in | 5 + .../package/x11r7/xapp_xwud/xapp_xwud.hash | 7 + .../package/x11r7/xapp_xwud/xapp_xwud.mk | 14 + .../package/x11r7/xcb-proto/Config.in | 6 + .../package/x11r7/xcb-proto/xcb-proto.hash | 7 + .../package/x11r7/xcb-proto/xcb-proto.mk | 29 + .../package/x11r7/xcb-util-cursor/Config.in | 19 + .../xcb-util-cursor/xcb-util-cursor.hash | 2 + .../x11r7/xcb-util-cursor/xcb-util-cursor.mk | 15 + .../package/x11r7/xcb-util-image/Config.in | 17 + .../x11r7/xcb-util-image/xcb-util-image.hash | 4 + .../x11r7/xcb-util-image/xcb-util-image.mk | 15 + .../package/x11r7/xcb-util-keysyms/Config.in | 17 + .../xcb-util-keysyms/xcb-util-keysyms.hash | 2 + .../xcb-util-keysyms/xcb-util-keysyms.mk | 18 + .../x11r7/xcb-util-renderutil/Config.in | 18 + .../xcb-util-renderutil.hash | 2 + .../xcb-util-renderutil.mk | 15 + .../package/x11r7/xcb-util-wm/Config.in | 17 + .../x11r7/xcb-util-wm/xcb-util-wm.hash | 4 + .../package/x11r7/xcb-util-wm/xcb-util-wm.mk | 15 + .../package/x11r7/xcb-util/Config.in | 8 + .../package/x11r7/xcb-util/xcb-util.hash | 3 + .../package/x11r7/xcb-util/xcb-util.mk | 15 + .../0001-fix-symlink.patch | 37 + .../x11r7/xcursor-transparent-theme/Config.in | 7 + .../xcursor-transparent-theme/index.theme | 2 + .../xcursor-transparent-theme.hash | 2 + .../xcursor-transparent-theme.mk | 20 + .../package/x11r7/xdata_xbitmaps/Config.in | 4 + .../x11r7/xdata_xbitmaps/xdata_xbitmaps.hash | 7 + .../x11r7/xdata_xbitmaps/xdata_xbitmaps.mk | 15 + .../x11r7/xdata_xcursor-themes/Config.in | 5 + .../xdata_xcursor-themes.hash | 7 + .../xdata_xcursor-themes.mk | 16 + .../0001-build-get-rid-of-sdkdir.patch | 87 + .../x11r7/xdriver_xf86-input-evdev/Config.in | 11 + .../xdriver_xf86-input-evdev.hash | 2 + .../xdriver_xf86-input-evdev.mk | 22 + .../0001-build-get-rid-of-sdkdir.patch | 78 + .../50-joystick.conf | 6 + .../xdriver_xf86-input-joystick/Config.in | 5 + .../xdriver_xf86-input-joystick.hash | 2 + .../xdriver_xf86-input-joystick.mk | 22 + .../xdriver_xf86-input-keyboard/Config.in | 5 + .../xdriver_xf86-input-keyboard.hash | 2 + .../xdriver_xf86-input-keyboard.mk | 15 + .../0001-build-get-rid-of-sdkdir.patch | 78 + .../xdriver_xf86-input-libinput/Config.in | 13 + .../xdriver_xf86-input-libinput.hash | 7 + .../xdriver_xf86-input-libinput.mk | 15 + .../0001-build-get-rid-of-sdkdir.patch | 81 + .../x11r7/xdriver_xf86-input-mouse/Config.in | 5 + .../xdriver_xf86-input-mouse.hash | 7 + .../xdriver_xf86-input-mouse.mk | 15 + .../0001-build-get-rid-of-sdkdir.patch | 88 + .../xdriver_xf86-input-synaptics/Config.in | 7 + .../xdriver_xf86-input-synaptics.hash | 2 + .../xdriver_xf86-input-synaptics.mk | 15 + .../x11r7/xdriver_xf86-input-tslib/Config.in | 8 + .../xdriver_xf86-input-tslib.hash | 5 + .../xdriver_xf86-input-tslib.mk | 17 + .../xdriver_xf86-input-vmmouse/Config.in | 6 + .../xdriver_xf86-input-vmmouse.hash | 2 + .../xdriver_xf86-input-vmmouse.mk | 21 + .../x11r7/xdriver_xf86-video-amdgpu/Config.in | 17 + .../xdriver_xf86-video-amdgpu.hash | 7 + .../xdriver_xf86-video-amdgpu.mk | 21 + .../0001-mibstore.patch | 40 + .../x11r7/xdriver_xf86-video-ark/Config.in | 5 + .../xdriver_xf86-video-ark.hash | 2 + .../xdriver_xf86-video-ark.mk | 14 + .../x11r7/xdriver_xf86-video-ast/Config.in | 5 + .../xdriver_xf86-video-ast.hash | 2 + .../xdriver_xf86-video-ast.mk | 14 + .../x11r7/xdriver_xf86-video-ati/Config.in | 13 + .../xdriver_xf86-video-ati.hash | 7 + .../xdriver_xf86-video-ati.mk | 27 + .../x11r7/xdriver_xf86-video-cirrus/Config.in | 5 + .../xdriver_xf86-video-cirrus.hash | 2 + .../xdriver_xf86-video-cirrus.mk | 14 + .../x11r7/xdriver_xf86-video-dummy/Config.in | 5 + .../xdriver_xf86-video-dummy.hash | 2 + .../xdriver_xf86-video-dummy.mk | 14 + .../x11r7/xdriver_xf86-video-fbdev/Config.in | 5 + .../xdriver_xf86-video-fbdev.hash | 2 + .../xdriver_xf86-video-fbdev.mk | 14 + ...sunxi_x_g2d-drop-unused-dri2-include.patch | 28 + .../xdriver_xf86-video-fbturbo/Config.in | 11 + .../xdriver_xf86-video-fbturbo.hash | 2 + .../xdriver_xf86-video-fbturbo.mk | 30 + .../0001-Remove-call-to-LoaderGetOS.patch | 53 + ...ANDR-initialization-for-xserver-1.20.patch | 35 + .../x11r7/xdriver_xf86-video-geode/Config.in | 6 + .../xdriver_xf86-video-geode.hash | 2 + .../xdriver_xf86-video-geode.mk | 14 + .../x11r7/xdriver_xf86-video-glint/Config.in | 10 + .../xdriver_xf86-video-glint.hash | 2 + .../xdriver_xf86-video-glint.mk | 14 + .../x11r7/xdriver_xf86-video-i128/Config.in | 5 + .../xdriver_xf86-video-i128.hash | 7 + .../xdriver_xf86-video-i128.mk | 14 + .../xdriver_xf86-video-imx-viv/Config.in | 40 + .../xdriver_xf86-video-imx-viv.hash | 1 + .../xdriver_xf86-video-imx-viv.mk | 35 + .../0001-Update-to-newer-swap-macros.patch | 65 + ...002-Fix-error-unknown-type-name-uint.patch | 33 + .../0003-support-glibc-2.20.patch | 57 + ...-API-forward-and-backward-compatible.patch | 787 ++ ...-video-imxfb-fix-m4-hardcodded-paths.patch | 53 + .../0006-xserver-1.14-compat.patch | 34 + .../x11r7/xdriver_xf86-video-imx/Config.in | 27 + .../xdriver_xf86-video-imx.hash | 2 + .../xdriver_xf86-video-imx.mk | 14 + .../x11r7/xdriver_xf86-video-intel/Config.in | 10 + .../xdriver_xf86-video-intel.hash | 3 + .../xdriver_xf86-video-intel.mk | 41 + .../0001-cross-compile.patch | 27 + .../x11r7/xdriver_xf86-video-mach64/Config.in | 5 + .../xdriver_xf86-video-mach64.hash | 7 + .../xdriver_xf86-video-mach64.mk | 19 + .../0001-misc-fixes.patch | 21 + .../x11r7/xdriver_xf86-video-mga/Config.in | 10 + .../xdriver_xf86-video-mga.hash | 7 + .../xdriver_xf86-video-mga.mk | 19 + .../xdriver_xf86-video-neomagic/Config.in | 5 + .../xdriver_xf86-video-neomagic.hash | 7 + .../xdriver_xf86-video-neomagic.mk | 14 + .../xdriver_xf86-video-nouveau/Config.in | 14 + .../xdriver_xf86-video-nouveau.hash | 4 + .../xdriver_xf86-video-nouveau.mk | 21 + .../x11r7/xdriver_xf86-video-nv/Config.in | 5 + .../xdriver_xf86-video-nv.hash | 2 + .../xdriver_xf86-video-nv.mk | 14 + .../xdriver_xf86-video-openchrome/Config.in | 16 + .../xdriver_xf86-video-openchrome.hash | 2 + .../xdriver_xf86-video-openchrome.mk | 21 + .../x11r7/xdriver_xf86-video-qxl/Config.in | 12 + .../xdriver_xf86-video-qxl.hash | 2 + .../xdriver_xf86-video-qxl.mk | 37 + .../x11r7/xdriver_xf86-video-r128/Config.in | 5 + .../xdriver_xf86-video-r128.hash | 7 + .../xdriver_xf86-video-r128.mk | 18 + .../0001-cross-compile.patch | 27 + .../0002-xorg-xserver120.patch | 23 + .../x11r7/xdriver_xf86-video-savage/Config.in | 10 + .../xdriver_xf86-video-savage.hash | 2 + .../xdriver_xf86-video-savage.mk | 19 + .../Config.in | 5 + .../xdriver_xf86-video-siliconmotion.hash | 2 + .../xdriver_xf86-video-siliconmotion.mk | 16 + .../xdriver_xf86-video-sis/0001-cross.patch | 21 + ...0002-Remove-reference-to-virtualFrom.patch | 33 + .../x11r7/xdriver_xf86-video-sis/Config.in | 10 + .../xdriver_xf86-video-sis.hash | 2 + .../xdriver_xf86-video-sis.mk | 19 + .../xdriver_xf86-video-tdfx/0001-cross.patch | 24 + .../x11r7/xdriver_xf86-video-tdfx/Config.in | 10 + .../xdriver_xf86-video-tdfx.hash | 7 + .../xdriver_xf86-video-tdfx.mk | 22 + .../0001-mibstore.patch | 47 + .../x11r7/xdriver_xf86-video-tga/Config.in | 5 + .../xdriver_xf86-video-tga.hash | 2 + .../xdriver_xf86-video-tga.mk | 14 + .../xdriver_xf86-video-trident/Config.in | 5 + .../xdriver_xf86-video-trident.hash | 2 + .../xdriver_xf86-video-trident.mk | 14 + .../x11r7/xdriver_xf86-video-vesa/Config.in | 5 + .../xdriver_xf86-video-vesa.hash | 7 + .../xdriver_xf86-video-vesa.mk | 14 + .../x11r7/xdriver_xf86-video-vmware/Config.in | 11 + .../xdriver_xf86-video-vmware.hash | 7 + .../xdriver_xf86-video-vmware.mk | 21 + .../x11r7/xdriver_xf86-video-voodoo/Config.in | 5 + .../xdriver_xf86-video-voodoo.mk | 14 + .../package/x11r7/xfont_encodings/Config.in | 5 + .../xfont_encodings/xfont_encodings.hash | 7 + .../x11r7/xfont_encodings/xfont_encodings.mk | 18 + .../x11r7/xfont_font-adobe-100dpi/Config.in | 5 + .../xfont_font-adobe-100dpi.hash | 2 + .../xfont_font-adobe-100dpi.mk | 17 + .../x11r7/xfont_font-adobe-75dpi/Config.in | 5 + .../xfont_font-adobe-75dpi.hash | 2 + .../xfont_font-adobe-75dpi.mk | 17 + .../xfont_font-adobe-utopia-100dpi/Config.in | 5 + .../xfont_font-adobe-utopia-100dpi.hash | 2 + .../xfont_font-adobe-utopia-100dpi.mk | 17 + .../xfont_font-adobe-utopia-75dpi/Config.in | 5 + .../xfont_font-adobe-utopia-75dpi.hash | 2 + .../xfont_font-adobe-utopia-75dpi.mk | 17 + .../xfont_font-adobe-utopia-type1/Config.in | 5 + .../xfont_font-adobe-utopia-type1.hash | 2 + .../xfont_font-adobe-utopia-type1.mk | 17 + .../package/x11r7/xfont_font-alias/Config.in | 5 + .../xfont_font-alias/xfont_font-alias.hash | 3 + .../xfont_font-alias/xfont_font-alias.mk | 17 + .../x11r7/xfont_font-arabic-misc/Config.in | 5 + .../xfont_font-arabic-misc.hash | 2 + .../xfont_font-arabic-misc.mk | 17 + .../x11r7/xfont_font-bh-100dpi/Config.in | 5 + .../xfont_font-bh-100dpi.hash | 2 + .../xfont_font-bh-100dpi.mk | 17 + .../x11r7/xfont_font-bh-75dpi/Config.in | 5 + .../xfont_font-bh-75dpi.hash | 2 + .../xfont_font-bh-75dpi.mk | 17 + .../Config.in | 5 + ...xfont_font-bh-lucidatypewriter-100dpi.hash | 2 + .../xfont_font-bh-lucidatypewriter-100dpi.mk | 17 + .../Config.in | 5 + .../xfont_font-bh-lucidatypewriter-75dpi.hash | 2 + .../xfont_font-bh-lucidatypewriter-75dpi.mk | 17 + .../package/x11r7/xfont_font-bh-ttf/Config.in | 5 + .../xfont_font-bh-ttf/xfont_font-bh-ttf.hash | 2 + .../xfont_font-bh-ttf/xfont_font-bh-ttf.mk | 17 + .../x11r7/xfont_font-bh-type1/Config.in | 5 + .../xfont_font-bh-type1.hash | 2 + .../xfont_font-bh-type1.mk | 17 + .../xfont_font-bitstream-100dpi/Config.in | 5 + .../xfont_font-bitstream-100dpi.hash | 2 + .../xfont_font-bitstream-100dpi.mk | 17 + .../xfont_font-bitstream-75dpi/Config.in | 5 + .../xfont_font-bitstream-75dpi.hash | 2 + .../xfont_font-bitstream-75dpi.mk | 17 + .../xfont_font-bitstream-type1/Config.in | 5 + .../xfont_font-bitstream-type1.hash | 2 + .../xfont_font-bitstream-type1.mk | 17 + .../xfont_font-cronyx-cyrillic/Config.in | 5 + .../xfont_font-cronyx-cyrillic.hash | 2 + .../xfont_font-cronyx-cyrillic.mk | 17 + .../x11r7/xfont_font-cursor-misc/Config.in | 5 + .../xfont_font-cursor-misc.hash | 3 + .../xfont_font-cursor-misc.mk | 17 + .../x11r7/xfont_font-daewoo-misc/Config.in | 5 + .../xfont_font-daewoo-misc.hash | 2 + .../xfont_font-daewoo-misc.mk | 16 + .../x11r7/xfont_font-dec-misc/Config.in | 5 + .../xfont_font-dec-misc.hash | 2 + .../xfont_font-dec-misc.mk | 17 + .../x11r7/xfont_font-ibm-type1/Config.in | 5 + .../xfont_font-ibm-type1.hash | 2 + .../xfont_font-ibm-type1.mk | 17 + .../x11r7/xfont_font-isas-misc/Config.in | 5 + .../xfont_font-isas-misc.hash | 2 + .../xfont_font-isas-misc.mk | 17 + .../x11r7/xfont_font-jis-misc/Config.in | 5 + .../xfont_font-jis-misc.hash | 2 + .../xfont_font-jis-misc.mk | 16 + .../x11r7/xfont_font-micro-misc/Config.in | 5 + .../xfont_font-micro-misc.hash | 2 + .../xfont_font-micro-misc.mk | 17 + .../x11r7/xfont_font-misc-cyrillic/Config.in | 5 + .../xfont_font-misc-cyrillic.hash | 2 + .../xfont_font-misc-cyrillic.mk | 17 + .../x11r7/xfont_font-misc-ethiopic/Config.in | 5 + .../xfont_font-misc-ethiopic.hash | 2 + .../xfont_font-misc-ethiopic.mk | 17 + .../x11r7/xfont_font-misc-meltho/Config.in | 5 + .../xfont_font-misc-meltho.hash | 2 + .../xfont_font-misc-meltho.mk | 17 + .../x11r7/xfont_font-misc-misc/Config.in | 5 + .../xfont_font-misc-misc.hash | 3 + .../xfont_font-misc-misc.mk | 17 + .../x11r7/xfont_font-mutt-misc/Config.in | 5 + .../xfont_font-mutt-misc.hash | 2 + .../xfont_font-mutt-misc.mk | 17 + .../xfont_font-schumacher-misc/Config.in | 5 + .../xfont_font-schumacher-misc.hash | 2 + .../xfont_font-schumacher-misc.mk | 17 + .../xfont_font-screen-cyrillic/Config.in | 5 + .../xfont_font-screen-cyrillic.hash | 2 + .../xfont_font-screen-cyrillic.mk | 17 + .../x11r7/xfont_font-sony-misc/Config.in | 5 + .../xfont_font-sony-misc.hash | 2 + .../xfont_font-sony-misc.mk | 17 + .../x11r7/xfont_font-sun-misc/Config.in | 5 + .../xfont_font-sun-misc.hash | 2 + .../xfont_font-sun-misc.mk | 17 + .../package/x11r7/xfont_font-util/Config.in | 4 + .../xfont_font-util/xfont_font-util.hash | 6 + .../x11r7/xfont_font-util/xfont_font-util.mk | 19 + .../xfont_font-winitzki-cyrillic/Config.in | 5 + .../xfont_font-winitzki-cyrillic.hash | 2 + .../xfont_font-winitzki-cyrillic.mk | 17 + .../x11r7/xfont_font-xfree86-type1/Config.in | 5 + .../xfont_font-xfree86-type1.hash | 2 + .../xfont_font-xfree86-type1.mk | 17 + .../package/x11r7/xkeyboard-config/Config.in | 10 + .../xkeyboard-config/xkeyboard-config.hash | 3 + .../xkeyboard-config/xkeyboard-config.mk | 19 + .../package/x11r7/xlib_libFS/Config.in | 6 + .../package/x11r7/xlib_libFS/xlib_libFS.hash | 7 + .../package/x11r7/xlib_libFS/xlib_libFS.mk | 16 + .../package/x11r7/xlib_libICE/Config.in | 6 + .../x11r7/xlib_libICE/xlib_libICE.hash | 7 + .../package/x11r7/xlib_libICE/xlib_libICE.mk | 15 + .../package/x11r7/xlib_libSM/Config.in | 7 + .../package/x11r7/xlib_libSM/xlib_libSM.hash | 7 + .../package/x11r7/xlib_libSM/xlib_libSM.mk | 16 + ...ch-ourselves-from-X-headers-entirely.patch | 39 + .../0002-remove-reliance-on-static-libc.patch | 36 + .../package/x11r7/xlib_libX11/Config.in | 10 + .../x11r7/xlib_libX11/xlib_libX11.hash | 7 + .../package/x11r7/xlib_libX11/xlib_libX11.mk | 41 + .../x11r7/xlib_libXScrnSaver/Config.in | 7 + .../xlib_libXScrnSaver.hash | 7 + .../xlib_libXScrnSaver/xlib_libXScrnSaver.mk | 16 + .../package/x11r7/xlib_libXau/Config.in | 6 + .../x11r7/xlib_libXau/xlib_libXau.hash | 7 + .../package/x11r7/xlib_libXau/xlib_libXau.mk | 18 + .../package/x11r7/xlib_libXaw/Config.in | 9 + .../x11r7/xlib_libXaw/xlib_libXaw.hash | 2 + .../package/x11r7/xlib_libXaw/xlib_libXaw.mk | 15 + .../x11r7/xlib_libXcomposite/Config.in | 8 + .../xlib_libXcomposite.hash | 7 + .../xlib_libXcomposite/xlib_libXcomposite.mk | 15 + .../package/x11r7/xlib_libXcursor/Config.in | 8 + .../xlib_libXcursor/xlib_libXcursor.hash | 7 + .../x11r7/xlib_libXcursor/xlib_libXcursor.mk | 19 + .../package/x11r7/xlib_libXdamage/Config.in | 7 + .../xlib_libXdamage/xlib_libXdamage.hash | 7 + .../x11r7/xlib_libXdamage/xlib_libXdamage.mk | 15 + .../package/x11r7/xlib_libXdmcp/Config.in | 6 + .../x11r7/xlib_libXdmcp/xlib_libXdmcp.hash | 7 + .../x11r7/xlib_libXdmcp/xlib_libXdmcp.mk | 17 + .../package/x11r7/xlib_libXext/Config.in | 6 + .../x11r7/xlib_libXext/xlib_libXext.hash | 7 + .../x11r7/xlib_libXext/xlib_libXext.mk | 16 + .../package/x11r7/xlib_libXfixes/Config.in | 6 + .../x11r7/xlib_libXfixes/xlib_libXfixes.hash | 5 + .../x11r7/xlib_libXfixes/xlib_libXfixes.mk | 18 + .../package/x11r7/xlib_libXfont/Config.in | 9 + .../x11r7/xlib_libXfont/xlib_libXfont.hash | 8 + .../x11r7/xlib_libXfont/xlib_libXfont.mk | 42 + .../package/x11r7/xlib_libXfont2/Config.in | 9 + .../x11r7/xlib_libXfont2/xlib_libXfont2.hash | 8 + .../x11r7/xlib_libXfont2/xlib_libXfont2.mk | 39 + .../package/x11r7/xlib_libXft/Config.in | 10 + .../x11r7/xlib_libXft/xlib_libXft.hash | 7 + .../package/x11r7/xlib_libXft/xlib_libXft.mk | 15 + .../package/x11r7/xlib_libXi/Config.in | 8 + .../package/x11r7/xlib_libXi/xlib_libXi.hash | 7 + .../package/x11r7/xlib_libXi/xlib_libXi.mk | 22 + .../package/x11r7/xlib_libXinerama/Config.in | 7 + .../xlib_libXinerama/xlib_libXinerama.hash | 7 + .../xlib_libXinerama/xlib_libXinerama.mk | 16 + .../package/x11r7/xlib_libXmu/Config.in | 8 + .../x11r7/xlib_libXmu/xlib_libXmu.hash | 7 + .../package/x11r7/xlib_libXmu/xlib_libXmu.mk | 15 + .../x11r7/xlib_libXpm/0001-fork-check.patch | 21 + .../package/x11r7/xlib_libXpm/Config.in | 8 + .../x11r7/xlib_libXpm/xlib_libXpm.hash | 2 + .../package/x11r7/xlib_libXpm/xlib_libXpm.mk | 24 + .../package/x11r7/xlib_libXrandr/Config.in | 8 + .../x11r7/xlib_libXrandr/xlib_libXrandr.hash | 7 + .../x11r7/xlib_libXrandr/xlib_libXrandr.mk | 16 + .../package/x11r7/xlib_libXrender/Config.in | 6 + .../xlib_libXrender/xlib_libXrender.hash | 5 + .../x11r7/xlib_libXrender/xlib_libXrender.mk | 20 + .../package/x11r7/xlib_libXres/Config.in | 7 + .../x11r7/xlib_libXres/xlib_libXres.hash | 8 + .../x11r7/xlib_libXres/xlib_libXres.mk | 16 + ...n-t-link-makestrs-with-target-cflags.patch | 33 + .../package/x11r7/xlib_libXt/Config.in | 9 + .../package/x11r7/xlib_libXt/xlib_libXt.hash | 2 + .../package/x11r7/xlib_libXt/xlib_libXt.mk | 17 + .../package/x11r7/xlib_libXtst/Config.in | 8 + .../x11r7/xlib_libXtst/xlib_libXtst.hash | 2 + .../x11r7/xlib_libXtst/xlib_libXtst.mk | 20 + .../package/x11r7/xlib_libXv/Config.in | 7 + .../package/x11r7/xlib_libXv/xlib_libXv.hash | 5 + .../package/x11r7/xlib_libXv/xlib_libXv.mk | 16 + .../package/x11r7/xlib_libXvMC/Config.in | 8 + .../x11r7/xlib_libXvMC/xlib_libXvMC.hash | 7 + .../x11r7/xlib_libXvMC/xlib_libXvMC.mk | 16 + .../package/x11r7/xlib_libXxf86dga/Config.in | 8 + .../xlib_libXxf86dga/xlib_libXxf86dga.hash | 7 + .../xlib_libXxf86dga/xlib_libXxf86dga.mk | 16 + .../package/x11r7/xlib_libXxf86vm/Config.in | 7 + .../xlib_libXxf86vm/xlib_libXxf86vm.hash | 6 + .../x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk | 16 + .../package/x11r7/xlib_libdmx/Config.in | 7 + .../x11r7/xlib_libdmx/xlib_libdmx.hash | 7 + .../package/x11r7/xlib_libdmx/xlib_libdmx.mk | 16 + .../package/x11r7/xlib_libfontenc/Config.in | 6 + .../xlib_libfontenc/xlib_libfontenc.hash | 7 + .../x11r7/xlib_libfontenc/xlib_libfontenc.mk | 17 + .../package/x11r7/xlib_libxkbfile/Config.in | 6 + .../xlib_libxkbfile/xlib_libxkbfile.hash | 7 + .../x11r7/xlib_libxkbfile/xlib_libxkbfile.mk | 17 + .../package/x11r7/xlib_libxshmfence/Config.in | 6 + .../xlib_libxshmfence/xlib_libxshmfence.hash | 7 + .../xlib_libxshmfence/xlib_libxshmfence.mk | 15 + .../package/x11r7/xlib_xtrans/Config.in | 4 + .../x11r7/xlib_xtrans/xlib_xtrans.hash | 7 + .../package/x11r7/xlib_xtrans/xlib_xtrans.mk | 15 + .../package/x11r7/xorgproto/Config.in | 5 + .../package/x11r7/xorgproto/xorgproto.hash | 42 + .../package/x11r7/xorgproto/xorgproto.mk | 54 + .../1.14.7/0001-sdksyms-gcc5.patch | 50 + ...t-buffer-in-SProcXSendExtensionEvent.patch | 39 + ...ow-GenericEvent-in-SendEvent-request.patch | 71 + ...ll-events-in-ProcXSendExtensionEvent.patch | 50 + ...5-Xi-Do-not-try-to-swap-GenericEvent.patch | 45 + .../1.17.4/0001-modesettings-needs-dri2.patch | 19 + ...t-buffer-in-SProcXSendExtensionEvent.patch | 39 + ...ow-GenericEvent-in-SendEvent-request.patch | 71 + ...ll-events-in-ProcXSendExtensionEvent.patch | 50 + ...5-Xi-Do-not-try-to-swap-GenericEvent.patch | 45 + .../1.20.5/0001-modesettings-needs-dri2.patch | 20 + ...ure.ac-Fix-check-for-CLOCK_MONOTONIC.patch | 66 + ...003-Remove-check-for-useSIGIO-option.patch | 53 + ...0004-include-misc.h-fix-uClibc-build.patch | 31 + ...nd-Makefile.am-fix-build-without-glx.patch | 45 + .../x11r7/xserver_xorg-server/Config.in | 161 + .../package/x11r7/xserver_xorg-server/S40xorg | 46 + .../xserver_xorg-server.hash | 13 + .../xserver_xorg-server.mk | 232 + .../package/x11r7/xutil_makedepend/Config.in | 5 + .../xutil_makedepend/xutil_makedepend.hash | 7 + .../xutil_makedepend/xutil_makedepend.mk | 17 + features/buildroot/package/x11vnc/Config.in | 13 + features/buildroot/package/x11vnc/x11vnc.hash | 3 + features/buildroot/package/x11vnc/x11vnc.mk | 67 + features/buildroot/package/x264/Config.in | 19 + features/buildroot/package/x264/x264.hash | 3 + features/buildroot/package/x264/x264.mk | 70 + .../package/x265/0001-fix-gcc-options.patch | 52 + .../x265/0002-arm-asm-primitives.patch | 354 + features/buildroot/package/x265/Config.in | 29 + features/buildroot/package/x265/x265.hash | 3 + features/buildroot/package/x265/x265.mk | 38 + features/buildroot/package/xapian/Config.in | 18 + features/buildroot/package/xapian/xapian.hash | 5 + features/buildroot/package/xapian/xapian.mk | 15 + features/buildroot/package/xavante/Config.in | 13 + .../buildroot/package/xavante/xavante.hash | 3 + features/buildroot/package/xavante/xavante.mk | 11 + features/buildroot/package/xdotool/Config.in | 12 + .../buildroot/package/xdotool/xdotool.hash | 2 + features/buildroot/package/xdotool/xdotool.mk | 24 + ...x-build-with-CFLAGS-from-environment.patch | 36 + ...de-linux-limits.h-for-XATTR_SIZE_MAX.patch | 43 + ...rm-Fix-build-on-arm64-acpi-w-gcc-8.2.patch | 37 + ...-32-bit-gcc-8-1-non-debug-build-work.patch | 79 + features/buildroot/package/xen/Config.in | 42 + features/buildroot/package/xen/xen.hash | 3 + features/buildroot/package/xen/xen.mk | 60 + features/buildroot/package/xenomai/Config.in | 195 + .../buildroot/package/xenomai/xenomai.hash | 2 + features/buildroot/package/xenomai/xenomai.mk | 155 + ...s-to-fail-and-fall-back-to-nothreads.patch | 38 + .../0002-fix-static-linking-with-curl.patch | 39 + features/buildroot/package/xerces/Config.in | 10 + features/buildroot/package/xerces/xerces.hash | 5 + features/buildroot/package/xerces/xerces.mk | 47 + ...-do-dynamic-linking-of-libtool-libra.patch | 52 + ...-do-not-try-to-run-the-crc32selftest.patch | 44 + features/buildroot/package/xfsprogs/Config.in | 15 + .../buildroot/package/xfsprogs/xfsprogs.hash | 6 + .../buildroot/package/xfsprogs/xfsprogs.mk | 32 + .../buildroot/package/xinetd/0001-ar.patch | 74 + .../package/xinetd/0002-destdir.patch | 55 + .../package/xinetd/0003-rpc-fix.patch | 26 + .../xinetd/0004-configure-rlim_t.patch | 18 + features/buildroot/package/xinetd/Config.in | 8 + features/buildroot/package/xinetd/xinetd.hash | 2 + features/buildroot/package/xinetd/xinetd.mk | 33 + features/buildroot/package/xl2tp/Config.in | 12 + features/buildroot/package/xl2tp/xl2tp.hash | 3 + features/buildroot/package/xl2tp/xl2tp.mk | 26 + features/buildroot/package/xl2tp/xl2tpd | 27 + .../buildroot/package/xmlstarlet/Config.in | 9 + .../package/xmlstarlet/xmlstarlet.hash | 3 + .../package/xmlstarlet/xmlstarlet.mk | 34 + .../xorriso/0001-use-sys-xattr.h.patch | 33 + features/buildroot/package/xorriso/Config.in | 22 + .../buildroot/package/xorriso/Config.in.host | 14 + .../buildroot/package/xorriso/xorriso.hash | 2 + features/buildroot/package/xorriso/xorriso.mk | 84 + .../buildroot/package/xr819-xradio/Config.in | 10 + .../package/xr819-xradio/xr819-xradio.hash | 4 + .../package/xr819-xradio/xr819-xradio.mk | 13 + .../buildroot/package/xscreensaver/Config.in | 30 + .../package/xscreensaver/xscreensaver.hash | 4 + .../package/xscreensaver/xscreensaver.mk | 25 + .../package/xtables-addons/Config.in | 19 + .../xtables-addons/xtables-addons.hash | 4 + .../package/xtables-addons/xtables-addons.mk | 33 + features/buildroot/package/xterm/Config.in | 10 + features/buildroot/package/xterm/xterm.hash | 2 + features/buildroot/package/xterm/xterm.mk | 35 + .../package/xutil_util-macros/Config.in | 4 + .../xutil_util-macros/xutil_util-macros.hash | 7 + .../xutil_util-macros/xutil_util-macros.mk | 17 + features/buildroot/package/xvisor/Config.in | 68 + features/buildroot/package/xvisor/xvisor.hash | 2 + features/buildroot/package/xvisor/xvisor.mk | 85 + .../package/xvkbd/0001-makefile.patch | 2400 +++++ features/buildroot/package/xvkbd/Config.in | 16 + features/buildroot/package/xvkbd/xvkbd.hash | 4 + features/buildroot/package/xvkbd/xvkbd.mk | 34 + features/buildroot/package/xxhash/Config.in | 7 + features/buildroot/package/xxhash/xxhash.hash | 4 + features/buildroot/package/xxhash/xxhash.mk | 20 + features/buildroot/package/xz/Config.in | 15 + features/buildroot/package/xz/xz.hash | 8 + features/buildroot/package/xz/xz.mk | 27 + features/buildroot/package/yad/Config.in | 13 + features/buildroot/package/yad/yad.hash | 3 + features/buildroot/package/yad/yad.mk | 23 + .../package/yaffs2utils/yaffs2utils.hash | 2 + .../package/yaffs2utils/yaffs2utils.mk | 22 + ...nd-the-static-library-have-the-same-.patch | 34 + ...ared-library-build-when-BUILD_SHARED.patch | 49 + ...ith-shared-libyajl-in-a-shared-build.patch | 127 + ...with-libm-when-isnan-is-not-brought-.patch | 64 + features/buildroot/package/yajl/Config.in | 8 + features/buildroot/package/yajl/yajl.hash | 2 + features/buildroot/package/yajl/yajl.mk | 13 + features/buildroot/package/yaml-cpp/Config.in | 12 + .../buildroot/package/yaml-cpp/yaml-cpp.hash | 3 + .../buildroot/package/yaml-cpp/yaml-cpp.mk | 18 + features/buildroot/package/yasm/Config.in | 10 + features/buildroot/package/yasm/yasm.hash | 2 + features/buildroot/package/yasm/yasm.mk | 22 + features/buildroot/package/yavta/Config.in | 6 + features/buildroot/package/yavta/yavta.mk | 20 + .../package/ympd/0002-only-c-language.patch | 21 + features/buildroot/package/ympd/Config.in | 13 + features/buildroot/package/ympd/ympd.hash | 3 + features/buildroot/package/ympd/ympd.mk | 20 + features/buildroot/package/zbar/Config.in | 17 + features/buildroot/package/zbar/zbar.hash | 3 + features/buildroot/package/zbar/zbar.mk | 35 + .../package/zd1211-firmware/Config.in | 4 + .../zd1211-firmware/zd1211-firmware.hash | 2 + .../zd1211-firmware/zd1211-firmware.mk | 19 + features/buildroot/package/zeromq/Config.in | 62 + features/buildroot/package/zeromq/zeromq.hash | 7 + features/buildroot/package/zeromq/zeromq.mk | 71 + ...ove-dependency-check-on-version-file.patch | 32 + features/buildroot/package/zic/zic.hash | 2 + features/buildroot/package/zic/zic.mk | 24 + ...-Check-C-compiler-type-optimization-.patch | 130 + .../0002-configure-Don-t-use-host-CPP.patch | 37 + ...akefile-Use-CFLAGS-from-command-line.patch | 30 + ...figure-use-LDFLAGS-from-command-line.patch | 35 + ...-configure-remove-GID-UID-size-check.patch | 85 + ...e-borrow-the-LFS-test-from-autotools.patch | 101 + features/buildroot/package/zip/Config.in | 10 + features/buildroot/package/zip/Config.in.host | 10 + features/buildroot/package/zip/zip.hash | 2 + features/buildroot/package/zip/zip.mk | 55 + .../package/zisofs-tools/zisofs-tools.hash | 5 + .../package/zisofs-tools/zisofs-tools.mk | 15 + .../buildroot/package/zlib-ng/zlib-ng.hash | 3 + features/buildroot/package/zlib-ng/zlib-ng.mk | 22 + features/buildroot/package/zlib/Config.in | 55 + features/buildroot/package/zlib/zlib.mk | 8 + features/buildroot/package/zlog/Config.in | 12 + features/buildroot/package/zlog/zlog.hash | 3 + features/buildroot/package/zlog/zlog.mk | 26 + ...ilding-shared-or-static-library-only.patch | 92 + features/buildroot/package/zmqpp/Config.in | 41 + features/buildroot/package/zmqpp/zmqpp.hash | 3 + features/buildroot/package/zmqpp/zmqpp.mk | 60 + features/buildroot/package/znc/Config.in | 16 + features/buildroot/package/znc/znc.hash | 3 + features/buildroot/package/znc/znc.mk | 43 + features/buildroot/package/zsh/Config.in | 11 + features/buildroot/package/zsh/zsh.hash | 7 + features/buildroot/package/zsh/zsh.mk | 52 + features/buildroot/package/zstd/Config.in | 12 + .../buildroot/package/zstd/Config.in.host | 8 + features/buildroot/package/zstd/zstd.hash | 6 + features/buildroot/package/zstd/zstd.mk | 87 + .../buildroot/package/zxing-cpp/Config.in | 14 + .../package/zxing-cpp/zxing-cpp.hash | 2 + .../buildroot/package/zxing-cpp/zxing-cpp.mk | 18 + .../package/zynq-boot-bin/zynq-boot-bin.hash | 2 + .../package/zynq-boot-bin/zynq-boot-bin.mk | 22 + features/buildroot/package/zyre/Config.in | 16 + features/buildroot/package/zyre/zyre.hash | 2 + features/buildroot/package/zyre/zyre.mk | 22 + features/buildroot/package/zziplib/Config.in | 11 + .../buildroot/package/zziplib/zziplib.hash | 5 + features/buildroot/package/zziplib/zziplib.mk | 18 + .../autobuild/andes-nds32.config | 3 + .../autobuild/arm-aarch64.config | 4 + .../autobuild/br-aarch64-glibc.config | 9 + .../autobuild/br-arc-full-internal.config | 3 + .../autobuild/br-arc-internal-glibc.config | 4 + .../autobuild/br-arcle-hs38.config | 11 + .../autobuild/br-arm-basic.config | 8 + .../autobuild/br-arm-cortex-a9-glibc.config | 11 + .../autobuild/br-arm-cortex-a9-musl.config | 11 + .../autobuild/br-arm-cortex-m4-full.config | 12 + .../autobuild/br-arm-full-nothread.config | 11 + .../autobuild/br-arm-full-static.config | 11 + .../autobuild/br-arm-full.config | 10 + .../autobuild/br-arm-internal-full.config | 5 + .../autobuild/br-arm-internal-glibc.config | 4 + .../autobuild/br-arm-internal-musl.config | 4 + .../autobuild/br-i386-pentium-mmx-musl.config | 10 + .../autobuild/br-i386-pentium4-full.config | 10 + .../autobuild/br-m68k-5208-full.config | 11 + .../autobuild/br-m68k-68040-full.config | 10 + .../br-microblazeel-full-internal.config | 1 + .../autobuild/br-microblazeel-full.config | 9 + .../autobuild/br-mips32r6-el-hf-glibc.config | 11 + .../autobuild/br-mips64-n64-full.config | 10 + .../autobuild/br-mips64r6-el-hf-glibc.config | 12 + .../autobuild/br-mipsel-o32-full.config | 10 + .../autobuild/br-nios2-glibc.config | 10 + .../autobuild/br-openrisc-uclibc.config | 9 + .../br-powerpc-603e-basic-cpp.config | 10 + .../autobuild/br-powerpc-e500mc-full.config | 11 + .../autobuild/br-powerpc-internal-full.config | 4 + .../br-powerpc64-power7-glibc.config | 9 + .../br-powerpc64le-power8-glibc.config | 9 + .../autobuild/br-riscv32.config | 8 + .../autobuild/br-riscv64.config | 7 + .../autobuild/br-sh4-full.config | 10 + .../autobuild/br-sparc-uclibc.config | 9 + .../autobuild/br-sparc64-glibc.config | 8 + .../autobuild/br-x86-64-core2-full.config | 11 + .../autobuild/br-x86-64-musl.config | 10 + .../autobuild/br-xtensa-full-internal.config | 3 + .../autobuild/br-xtensa-full.config | 9 + .../autobuild/linaro-aarch64-be.config | 3 + .../autobuild/linaro-aarch64.config | 3 + .../autobuild/linaro-arm.config | 5 + .../autobuild/sourcery-arm-armv4t.config | 4 + .../autobuild/sourcery-arm-thumb2.config | 7 + .../autobuild/sourcery-arm.config | 3 + .../autobuild/sourcery-mips.config | 4 + .../autobuild/sourcery-mips64.config | 5 + .../autobuild/sourcery-nios2.config | 3 + .../autobuild/sourcery-x86-64.config | 4 + .../autobuild/toolchain-configs.csv | 70 + .../support/config-fragments/minimal.config | 8 + .../dependencies/check-host-asciidoc.sh | 36 + .../dependencies/check-host-bison-flex.mk | 10 + .../support/dependencies/check-host-cmake.mk | 14 + .../support/dependencies/check-host-cmake.sh | 45 + .../support/dependencies/check-host-gzip.mk | 3 + .../support/dependencies/check-host-gzip.sh | 21 + .../support/dependencies/check-host-lzip.mk | 5 + .../support/dependencies/check-host-lzip.sh | 14 + .../support/dependencies/check-host-make.mk | 21 + .../support/dependencies/check-host-make.sh | 37 + .../dependencies/check-host-python3.mk | 8 + .../dependencies/check-host-python3.sh | 31 + .../support/dependencies/check-host-tar.mk | 6 + .../support/dependencies/check-host-tar.sh | 59 + .../support/dependencies/check-host-xzcat.mk | 8 + .../support/dependencies/check-host-xzcat.sh | 14 + .../support/dependencies/dependencies.mk | 35 + .../support/dependencies/dependencies.sh | 296 + features/buildroot/support/docker/Dockerfile | 62 + .../buildroot/support/docker/apt-sources.list | 4 + features/buildroot/support/download/bzr | 58 + .../buildroot/support/download/check-hash | 111 + features/buildroot/support/download/cvs | 63 + .../buildroot/support/download/dl-wrapper | 219 + features/buildroot/support/download/file | 42 + features/buildroot/support/download/git | 201 + features/buildroot/support/download/hg | 43 + features/buildroot/support/download/scp | 40 + features/buildroot/support/download/svn | 41 + features/buildroot/support/download/wget | 43 + .../support/gnuconfig/README.buildroot | 27 + .../buildroot/support/gnuconfig/config.guess | 1658 ++++ .../buildroot/support/gnuconfig/config.sub | 1798 ++++ features/buildroot/support/kconfig/.gitignore | 4 + features/buildroot/support/kconfig/Makefile | 342 + .../buildroot/support/kconfig/Makefile.br | 53 + .../buildroot/support/kconfig/POTFILES.in | 12 + .../support/kconfig/README.buildroot | 25 + features/buildroot/support/kconfig/check.sh | 14 + features/buildroot/support/kconfig/conf.c | 716 ++ features/buildroot/support/kconfig/confdata.c | 1282 +++ features/buildroot/support/kconfig/expr.c | 1305 +++ features/buildroot/support/kconfig/expr.h | 329 + features/buildroot/support/kconfig/foo.h | 12 + features/buildroot/support/kconfig/gconf.c | 1521 ++++ .../buildroot/support/kconfig/gconf.glade | 661 ++ features/buildroot/support/kconfig/images.c | 326 + features/buildroot/support/kconfig/kconf_id.c | 53 + .../buildroot/support/kconfig/kxgettext.c | 235 + features/buildroot/support/kconfig/list.h | 132 + features/buildroot/support/kconfig/lkc.h | 188 + .../buildroot/support/kconfig/lkc_proto.h | 53 + .../support/kconfig/lxdialog/.gitignore | 4 + .../support/kconfig/lxdialog/BIG.FAT.WARNING | 4 + .../kconfig/lxdialog/check-lxdialog.sh | 93 + .../support/kconfig/lxdialog/checklist.c | 332 + .../support/kconfig/lxdialog/dialog.h | 257 + .../support/kconfig/lxdialog/inputbox.c | 301 + .../support/kconfig/lxdialog/menubox.c | 437 + .../support/kconfig/lxdialog/textbox.c | 408 + .../buildroot/support/kconfig/lxdialog/util.c | 713 ++ .../support/kconfig/lxdialog/yesno.c | 114 + features/buildroot/support/kconfig/mconf.c | 1047 +++ features/buildroot/support/kconfig/menu.c | 873 ++ .../buildroot/support/kconfig/merge_config.sh | 182 + features/buildroot/support/kconfig/nconf.c | 1563 ++++ .../buildroot/support/kconfig/nconf.gui.c | 664 ++ features/buildroot/support/kconfig/nconf.h | 94 + .../01-kconfig-kernel-to-buildroot.patch | 107 + .../06-br-build-system-integration.patch | 74 + .../kconfig/patches/10-br-build-system.patch | 80 + .../patches/11-use-mktemp-for-lxdialog.patch | 17 + .../patches/12-fix-glade-file-path.patch | 17 + .../14-support-out-of-tree-config.patch | 207 + .../16-fix-space-to-de-select-options.patch | 41 + .../kconfig/patches/17-backport-kecho.patch | 26 + ...fig.sh-create-temporary-files-in-tmp.patch | 27 + ...e_config.sh-add-br2-external-support.patch | 47 + ...fig.sh-Allow-to-define-config-prefix.patch | 31 + ...-positive-matches-from-comment-lines.patch | 32 + .../buildroot/support/kconfig/patches/series | 12 + features/buildroot/support/kconfig/qconf.cc | 1879 ++++ features/buildroot/support/kconfig/qconf.h | 330 + .../support/kconfig/streamline_config.pl | 682 ++ features/buildroot/support/kconfig/symbol.c | 1432 +++ features/buildroot/support/kconfig/util.c | 179 + features/buildroot/support/kconfig/zconf.l | 372 + .../support/kconfig/zconf.lex.c_shipped | 2500 +++++ .../support/kconfig/zconf.tab.c_shipped | 2488 +++++ features/buildroot/support/kconfig/zconf.y | 782 ++ .../support/legal-info/README.header | 31 + .../support/legal-info/README.warnings-header | 4 + .../support/legal-info/buildroot.hash | 2 + .../libtool/buildroot-libtool-v1.5.patch | 91 + .../libtool/buildroot-libtool-v2.2.patch | 106 + .../libtool/buildroot-libtool-v2.4.4.patch | 95 + .../libtool/buildroot-libtool-v2.4.patch | 89 + .../buildroot/support/misc/Buildroot.cmake | 7 + features/buildroot/support/misc/Vagrantfile | 60 + .../buildroot/support/misc/relocate-sdk.sh | 47 + .../support/misc/target-dir-warning.txt | 29 + .../support/misc/toolchainfile.cmake.in | 71 + features/buildroot/support/misc/utils.mk | 119 + .../support/scripts/apply-patches.sh | 173 + .../buildroot/support/scripts/br2-external | 224 + .../buildroot/support/scripts/brpkgutil.py | 50 + .../buildroot/support/scripts/check-bin-arch | 93 + .../support/scripts/check-host-rpath | 89 + .../support/scripts/check-kernel-headers.sh | 41 + .../support/scripts/check-merged-usr.sh | 39 + .../support/scripts/check-uniq-files | 48 + .../scripts/eclipse-register-toolchain | 76 + .../support/scripts/expunge-gconv-modules | 59 + .../scripts/fix-configure-powerpc64.sh | 47 + features/buildroot/support/scripts/fix-rpath | 147 + .../support/scripts/generate-gitlab-ci-yml | 17 + .../buildroot/support/scripts/genimage.sh | 40 + .../support/scripts/graph-build-time | 312 + .../buildroot/support/scripts/graph-depends | 357 + .../support/scripts/hardlink-or-copy | 35 + features/buildroot/support/scripts/mkmakefile | 52 + features/buildroot/support/scripts/mkusers | 443 + features/buildroot/support/scripts/pkg-stats | 759 ++ .../buildroot/support/scripts/pycompile.py | 69 + .../buildroot/support/scripts/setlocalversion | 82 + features/buildroot/support/scripts/size-stats | 240 + .../testing/conf/docker-compose-kernel.config | 103 + .../support/testing/conf/docker-compose.yml | 4 + .../testing/conf/f2fs-kernel-fragment.config | 5 + .../buildroot/support/testing/conf/grub2.cfg | 7 + .../support/testing/conf/isolinux.cfg | 5 + .../conf/minimal-x86-qemu-kernel.config | 49 + .../support/testing/conf/unittest.cfg | 5 + .../support/testing/infra/__init__.py | 97 + .../support/testing/infra/basetest.py | 86 + .../support/testing/infra/builder.py | 87 + .../support/testing/infra/emulator.py | 120 + features/buildroot/support/testing/run-tests | 122 + .../support/testing/tests/__init__.py | 0 .../support/testing/tests/boot/__init__.py | 0 .../support/testing/tests/boot/test_atf.py | 82 + .../support/testing/tests/core/__init__.py | 0 .../testing/tests/core/device_table2.txt | 7 + .../support/testing/tests/core/post-build.sh | 12 + .../testing/tests/core/post-fakeroot.sh | 1 + .../support/testing/tests/core/post-image.sh | 1 + .../tests/core/rootfs-overlay1/test-file1 | 1 + .../tests/core/rootfs-overlay2/etc/test-file2 | 1 + .../tests/core/squashfs-xattr-kernel.config | 1 + .../tests/core/test_file_capabilities.py | 47 + .../testing/tests/core/test_hardening.py | 110 + .../testing/tests/core/test_post_scripts.py | 48 + .../testing/tests/core/test_rootfs_overlay.py | 30 + .../testing/tests/core/test_timezone.py | 72 + .../testing/tests/download/__init__.py | 0 .../download/br2-external/git-hash/Config.in | 0 .../br2-external/git-hash/external.desc | 1 + .../br2-external/git-hash/external.mk | 4 + .../git-hash/package/bad/bad.hash | 1 + .../br2-external/git-hash/package/bad/bad.mk | 10 + .../git-hash/package/good/good.hash | 1 + .../git-hash/package/good/good.mk | 10 + .../git-hash/package/nohash/nohash.mk | 10 + .../download/br2-external/git-refs/Config.in | 0 .../br2-external/git-refs/external.desc | 1 + .../br2-external/git-refs/external.mk | 4 + .../git-partial-sha1-branch-head.hash | 2 + .../git-partial-sha1-branch-head.mk | 11 + .../git-partial-sha1-reachable-by-branch.hash | 2 + .../git-partial-sha1-reachable-by-branch.mk | 11 + .../git-partial-sha1-reachable-by-tag.hash | 2 + .../git-partial-sha1-reachable-by-tag.mk | 11 + .../git-partial-sha1-tag-itself.hash | 2 + .../git-partial-sha1-tag-itself.mk | 11 + .../git-partial-sha1-tag-points-to.hash | 2 + .../git-partial-sha1-tag-points-to.mk | 11 + .../git-sha1-branch-head.hash | 2 + .../git-sha1-branch-head.mk | 11 + .../git-sha1-reachable-by-branch.hash | 2 + .../git-sha1-reachable-by-branch.mk | 11 + .../git-sha1-reachable-by-tag.hash | 2 + .../git-sha1-reachable-by-tag.mk | 11 + .../git-sha1-tag-itself.hash | 2 + .../git-sha1-tag-itself.mk | 11 + .../git-sha1-tag-points-to.hash | 2 + .../git-sha1-tag-points-to.mk | 11 + .../git-submodule-disabled.hash | 2 + .../git-submodule-disabled.mk | 11 + .../git-submodule-enabled.hash | 1 + .../git-submodule-enabled.mk | 11 + .../git-refs/package/git-tag/git-tag.hash | 2 + .../git-refs/package/git-tag/git-tag.mk | 11 + .../git-wrong-content/git-wrong-content.hash | 2 + .../git-wrong-content/git-wrong-content.mk | 11 + .../package/git-wrong-sha1/git-wrong-sha1.mk | 11 + .../git-remote/refs-sub1.git/.gitattributes | 1 + .../download/git-remote/refs-sub1.git/HEAD | 1 + .../download/git-remote/refs-sub1.git/config | 4 + .../07/cabc655213bdf7087d8dd50fda95124e935570 | Bin 0 -> 22 bytes .../1d/f823cb8a6d1866148ae50a8009762a9c4c777f | Bin 0 -> 180 bytes .../7d/52f458bdb0f9f5a4beb46fa82824421b8b988e | Bin 0 -> 65 bytes .../99/f2e3e1cb15f9b52fa29f66d380dda061d917ab | Bin 0 -> 49 bytes .../a1/30af1626bbadd64841b2cbcb6ac4ed0638ba1a | Bin 0 -> 122 bytes .../bc/c81ba6e5bd8bf52c95688ae8d3e697e131fa23 | Bin 0 -> 22 bytes .../cb/545facf77bbc5f24f95b6d503c338d10b7b717 | 1 + .../dd/130f6f4629514adaf2e03407f3ed9344eb6cd6 | Bin 0 -> 122 bytes .../e7/9c5e8f964493290a409888d5413a737e8e5dd5 | Bin 0 -> 23 bytes .../f8/001e5780100962a5e30a25cbc4c9609cfc7bf3 | Bin 0 -> 184 bytes .../refs-sub1.git/refs/heads/submodule | 1 + .../git-remote/refs-sub2.git/.gitattributes | 1 + .../download/git-remote/refs-sub2.git/HEAD | 1 + .../download/git-remote/refs-sub2.git/config | 4 + .../0a/846af45c3e455789435f49f80d70e86b65b9d7 | Bin 0 -> 22 bytes .../0b/32ebd8fc52cec991f18c94be980e85a8341585 | Bin 0 -> 22 bytes .../32/d61bae693af7879da63b89a60d3ae67f851e56 | 1 + .../3e/9b0a5198c64cea9c00f820433411e3b4d50c1c | Bin 0 -> 48 bytes .../85/8f666af75b7c0dfba6b8be7eac5f196e7a1221 | Bin 0 -> 49 bytes .../99/f2e3e1cb15f9b52fa29f66d380dda061d917ab | Bin 0 -> 49 bytes .../cd/4d62ff218ab7b4a04f5bfdf800ace087af3ceb | 2 + .../e7/9c5e8f964493290a409888d5413a737e8e5dd5 | Bin 0 -> 23 bytes .../e8/3f6f805bd016b90acafc8702c52d778eb57310 | Bin 0 -> 182 bytes .../refs-sub2.git/refs/heads/submodule | 1 + .../git-remote/repo.git/.gitattributes | 1 + .../tests/download/git-remote/repo.git/HEAD | 1 + .../tests/download/git-remote/repo.git/config | 4 + .../0b/d8ceb961c3b2b210f64a67d57f4b5cd669d343 | Bin 0 -> 22 bytes .../11/93ff46343f4f6a0522e2b28b871e905178c1f0 | Bin 0 -> 23 bytes .../25/59d83bfe937fc0412d96ed664663c9e8a99055 | Bin 0 -> 22 bytes .../2b/0e0d98a49c97da6a618ab36337e2058eb733a2 | 1 + .../2f/a37f6885d7eb746df75eccaddbacf3ac82799d | Bin 0 -> 180 bytes .../31/7406308d9259e2231bd0d6ddad3de3832bce08 | 1 + .../34/d1da713bf7de1c535e1d7d3ca985afd84bc7e5 | Bin 0 -> 23 bytes .../46/bae5b639e5a18e2cc4dc508f080d566baeff59 | 1 + .../51/6c9c5f64ec66534d4d069c2e408d9ae4dce023 | 2 + .../68/c197d0879d485f4f6cee85544722b79e68e59f | 1 + .../8b/8a7e885a041da72b1ee9a47c5b9300b172a9e7 | Bin 0 -> 65 bytes .../92/ef85be57d627f280d8ce3724452ac21c9a6452 | Bin 0 -> 20 bytes .../99/f2e3e1cb15f9b52fa29f66d380dda061d917ab | Bin 0 -> 49 bytes .../a2/38b1dfcd825d47d834af3c5223417c8411d90d | 1 + .../a9/dbc1e23c45e8e1b88c0448763f54d714eb6f8f | Bin 0 -> 183 bytes .../b2/4b387624edc78d0292a127c43cad9ba97c6232 | Bin 0 -> 49 bytes .../cf/0f4f85d7a1237e377a2d25b996518a877ea001 | Bin 0 -> 49 bytes .../d4/e2941d18a63535400476324ddeb7f40164be41 | Bin 0 -> 121 bytes .../e2/2695cbf976fed1f543ad7486a531c0af473482 | Bin 0 -> 49 bytes .../e2/cfe068f7e5bf4de32ffe1241da53abce9fa89e | Bin 0 -> 49 bytes .../e7/9c5e8f964493290a409888d5413a737e8e5dd5 | Bin 0 -> 23 bytes .../f6/476b879f65e956d7dedd5b08736369e9a24acc | Bin 0 -> 20 bytes .../fe/74231105841041d5f441e70399d37f0e600aa5 | Bin 0 -> 121 bytes .../git-remote/repo.git/refs/heads/master | 1 + .../git-remote/repo.git/refs/heads/mybranch | 1 + .../git-remote/repo.git/refs/heads/submodule | 1 + .../git-remote/repo.git/refs/tags/mytag | 1 + .../testing/tests/download/gitremote.py | 46 + .../testing/tests/download/test_git.py | 81 + .../support/testing/tests/fs/__init__.py | 0 .../support/testing/tests/fs/test_ext.py | 125 + .../support/testing/tests/fs/test_f2fs.py | 51 + .../support/testing/tests/fs/test_iso9660.py | 169 + .../support/testing/tests/fs/test_jffs2.py | 47 + .../support/testing/tests/fs/test_squashfs.py | 38 + .../support/testing/tests/fs/test_ubi.py | 40 + .../support/testing/tests/fs/test_yaffs2.py | 15 + .../support/testing/tests/init/__init__.py | 0 .../support/testing/tests/init/base.py | 48 + .../tests/init/systemd-factory/var/foo/bar | 1 + .../testing/tests/init/test_busybox.py | 64 + .../support/testing/tests/init/test_none.py | 33 + .../testing/tests/init/test_systemd.py | 159 + .../support/testing/tests/package/__init__.py | 0 .../package/br2-external/openjdk/Config.in | 2 + .../br2-external/openjdk/external.desc | 1 + .../package/br2-external/openjdk/external.mk | 1 + .../package/openjdk-hello-world/Config.in | 5 + .../openjdk-hello-world/HelloWorld.java | 7 + .../openjdk-hello-world.mk | 18 + .../package/openjdk-jni-test/Config.in | 5 + .../package/openjdk-jni-test/JniHelper.java | 9 + .../package/openjdk-jni-test/JniTest.java | 92 + .../package/openjdk-jni-test/JniWrapper.c | 50 + .../package/openjdk-jni-test/JniWrapper.java | 17 + .../package/openjdk-jni-test/jni_helper.c | 94 + .../package/openjdk-jni-test/jni_helper.h | 13 + .../openjdk/package/openjdk-jni-test/native.c | 39 + .../openjdk/package/openjdk-jni-test/native.h | 11 + .../openjdk-jni-test/openjdk-jni-test.mk | 34 + .../package/copy-sample-script-to-target.sh | 7 + .../tests/package/sample_python_argh.py | 10 + .../tests/package/sample_python_attrs.py | 15 + .../tests/package/sample_python_autobahn.py | 1 + .../tests/package/sample_python_automat.py | 27 + .../tests/package/sample_python_bitstring.py | 6 + .../tests/package/sample_python_cbor_dec.py | 10 + .../tests/package/sample_python_cbor_enc.py | 14 + .../tests/package/sample_python_click.py | 12 + .../tests/package/sample_python_constantly.py | 19 + .../tests/package/sample_python_crossbar.py | 3 + .../package/sample_python_cryptography.py | 3 + .../package/sample_python_incremental.py | 3 + .../tests/package/sample_python_passlib.py | 5 + .../tests/package/sample_python_pexpect.py | 8 + .../tests/package/sample_python_pynacl.py | 3 + .../tests/package/sample_python_pyyaml_dec.py | 10 + .../tests/package/sample_python_pyyaml_enc.py | 14 + .../package/sample_python_service_identity.py | 2 + .../package/sample_python_subprocess32.py | 6 + .../tests/package/sample_python_treq.py | 16 + .../tests/package/sample_python_twisted.py | 9 + .../package/sample_python_txaio_asyncio.py | 3 + .../package/sample_python_txaio_twisted.py | 3 + .../tests/package/sample_python_txtorcon.py | 1 + .../tests/package/sample_python_ubjson_dec.py | 10 + .../tests/package/sample_python_ubjson_enc.py | 14 + .../testing/tests/package/test_atop.py | 40 + .../tests/package/test_docker_compose.py | 63 + .../testing/tests/package/test_dropbear.py | 32 + .../testing/tests/package/test_glxinfo.py | 66 + .../testing/tests/package/test_ipython.py | 22 + .../testing/tests/package/test_lpeg.py | 27 + .../testing/tests/package/test_lsqlite3.py | 25 + .../support/testing/tests/package/test_lua.py | 59 + .../testing/tests/package/test_lua_curl.py | 27 + .../testing/tests/package/test_lua_http.py | 37 + .../testing/tests/package/test_lua_utf8.py | 25 + .../testing/tests/package/test_luaexpat.py | 25 + .../tests/package/test_luafilesystem.py | 25 + .../testing/tests/package/test_luaossl.py | 27 + .../testing/tests/package/test_luaposix.py | 83 + .../testing/tests/package/test_luasec.py | 25 + .../testing/tests/package/test_luasocket.py | 29 + .../testing/tests/package/test_luasyslog.py | 25 + .../testing/tests/package/test_openjdk.py | 48 + .../testing/tests/package/test_perl.py | 66 + .../tests/package/test_perl_class_load.py | 29 + .../tests/package/test_perl_dbd_mysql.py | 21 + .../tests/package/test_perl_encode_detect.py | 20 + .../tests/package/test_perl_gdgraph.py | 22 + .../package/test_perl_io_socket_multicast.py | 21 + .../tests/package/test_perl_io_socket_ssl.py | 21 + .../tests/package/test_perl_libwww_perl.py | 42 + .../tests/package/test_perl_mail_dkim.py | 30 + .../testing/tests/package/test_perl_x10.py | 23 + .../tests/package/test_perl_xml_libxml.py | 22 + .../testing/tests/package/test_prosody.py | 48 + .../testing/tests/package/test_python.py | 125 + .../testing/tests/package/test_python_argh.py | 45 + .../tests/package/test_python_attrs.py | 21 + .../tests/package/test_python_autobahn.py | 21 + .../tests/package/test_python_automat.py | 23 + .../tests/package/test_python_bitstring.py | 21 + .../testing/tests/package/test_python_cbor.py | 23 + .../tests/package/test_python_click.py | 44 + .../tests/package/test_python_constantly.py | 21 + .../tests/package/test_python_crossbar.py | 14 + .../tests/package/test_python_cryptography.py | 23 + .../tests/package/test_python_incremental.py | 23 + .../tests/package/test_python_passlib.py | 23 + .../tests/package/test_python_pexpect.py | 21 + .../tests/package/test_python_pynacl.py | 27 + .../tests/package/test_python_pyyaml.py | 23 + .../package/test_python_service_identity.py | 23 + .../tests/package/test_python_subprocess32.py | 11 + .../testing/tests/package/test_python_treq.py | 29 + .../tests/package/test_python_twisted.py | 39 + .../tests/package/test_python_txaio.py | 22 + .../tests/package/test_python_txtorcon.py | 23 + .../tests/package/test_python_ubjson.py | 23 + .../testing/tests/package/test_rings.py | 25 + .../testing/tests/package/test_rust.py | 114 + .../testing/tests/package/test_syslog_ng.py | 34 + .../testing/tests/toolchain/__init__.py | 0 .../testing/tests/toolchain/test_external.py | 252 + features/buildroot/system/Config.in | 602 ++ features/buildroot/system/device_table.txt | 21 + .../buildroot/system/device_table_dev.txt | 133 + features/buildroot/system/skeleton/dev/.empty | 0 features/buildroot/system/skeleton/dev/fd | 1 + features/buildroot/system/skeleton/dev/stderr | 1 + features/buildroot/system/skeleton/dev/stdin | 1 + features/buildroot/system/skeleton/dev/stdout | 1 + features/buildroot/system/skeleton/etc/group | 26 + features/buildroot/system/skeleton/etc/hosts | 1 + features/buildroot/system/skeleton/etc/mtab | 1 + features/buildroot/system/skeleton/etc/passwd | 9 + .../buildroot/system/skeleton/etc/profile | 20 + .../system/skeleton/etc/profile.d/umask.sh | 1 + .../buildroot/system/skeleton/etc/protocols | 61 + .../buildroot/system/skeleton/etc/resolv.conf | 1 + .../buildroot/system/skeleton/etc/services | 302 + features/buildroot/system/skeleton/etc/shadow | 9 + .../buildroot/system/skeleton/media/.empty | 0 features/buildroot/system/skeleton/mnt/.empty | 0 features/buildroot/system/skeleton/opt/.empty | 0 .../buildroot/system/skeleton/proc/.empty | 0 .../buildroot/system/skeleton/root/.empty | 0 features/buildroot/system/skeleton/run/.empty | 0 features/buildroot/system/skeleton/sys/.empty | 0 .../buildroot/system/skeleton/usr/bin/.empty | 0 .../buildroot/system/skeleton/usr/lib/.empty | 0 .../buildroot/system/skeleton/usr/sbin/.empty | 0 features/buildroot/system/system.mk | 92 + features/buildroot/toolchain/Config.in | 659 ++ features/buildroot/toolchain/helpers.mk | 501 + .../toolchain/toolchain-buildroot/Config.in | 113 + .../toolchain-buildroot.mk | 17 + .../toolchain/toolchain-external/Config.in | 162 + .../pkg-toolchain-external.mk | 590 ++ .../toolchain-external-andes-nds32/Config.in | 15 + .../Config.in.options | 9 + .../toolchain-external-andes-nds32.hash | 2 + .../toolchain-external-andes-nds32.mk | 10 + .../Config.in | 20 + .../Config.in.options | 9 + .../toolchain-external-arm-aarch64-be.hash | 4 + .../toolchain-external-arm-aarch64-be.mk | 12 + .../toolchain-external-arm-aarch64/Config.in | 20 + .../Config.in.options | 9 + .../toolchain-external-arm-aarch64.hash | 4 + .../toolchain-external-arm-aarch64.mk | 12 + .../toolchain-external-arm-arm/Config.in | 31 + .../Config.in.options | 9 + .../toolchain-external-arm-arm.hash | 4 + .../toolchain-external-arm-arm.mk | 12 + .../Config.in | 65 + .../Config.in.options | 9 + ...toolchain-external-codescape-img-mips.hash | 4 + .../toolchain-external-codescape-img-mips.mk | 51 + .../Config.in | 76 + .../Config.in.options | 9 + ...toolchain-external-codescape-mti-mips.hash | 4 + .../toolchain-external-codescape-mti-mips.mk | 51 + .../Config.in | 20 + .../Config.in.options | 9 + ...olchain-external-codesourcery-aarch64.hash | 3 + ...toolchain-external-codesourcery-aarch64.mk | 12 + .../Config.in | 28 + .../Config.in.options | 9 + ...toolchain-external-codesourcery-amd64.hash | 3 + .../toolchain-external-codesourcery-amd64.mk | 12 + .../Config.in | 37 + .../Config.in.options | 9 + .../toolchain-external-codesourcery-arm.hash | 3 + .../toolchain-external-codesourcery-arm.mk | 13 + .../Config.in | 96 + .../Config.in.options | 9 + .../toolchain-external-codesourcery-mips.hash | 3 + .../toolchain-external-codesourcery-mips.mk | 13 + .../Config.in | 17 + .../Config.in.options | 9 + ...oolchain-external-codesourcery-niosII.hash | 6 + .../toolchain-external-codesourcery-niosII.mk | 13 + .../toolchain-external-custom/Config.in | 5 + .../Config.in.options | 458 + .../toolchain-external-custom.mk | 15 + .../Config.in | 16 + .../Config.in.options | 9 + .../toolchain-external-linaro-aarch64-be.hash | 3 + .../toolchain-external-linaro-aarch64-be.mk | 16 + .../Config.in | 16 + .../Config.in.options | 9 + .../toolchain-external-linaro-aarch64.hash | 3 + .../toolchain-external-linaro-aarch64.mk | 16 + .../toolchain-external-linaro-arm/Config.in | 28 + .../Config.in.options | 9 + .../toolchain-external-linaro-arm.hash | 3 + .../toolchain-external-linaro-arm.mk | 16 + .../toolchain-external-linaro-armeb/Config.in | 27 + .../Config.in.options | 9 + .../toolchain-external-linaro-armeb.hash | 3 + .../toolchain-external-linaro-armeb.mk | 17 + .../toolchain-external-synopsys-arc/Config.in | 18 + .../Config.in.options | 10 + .../toolchain-external-synopsys-arc.hash | 5 + .../toolchain-external-synopsys-arc.mk | 24 + .../toolchain-external/toolchain-external.mk | 28 + .../buildroot/toolchain/toolchain-wrapper.c | 532 ++ .../buildroot/toolchain/toolchain-wrapper.mk | 68 + features/buildroot/toolchain/toolchain.mk | 50 + .../toolchain/toolchain/toolchain.mk | 50 + features/buildroot/utils/brmake | 42 + features/buildroot/utils/check-package | 190 + .../utils/checkpackagelib/__init__.py | 0 .../buildroot/utils/checkpackagelib/base.py | 18 + .../buildroot/utils/checkpackagelib/lib.py | 68 + .../utils/checkpackagelib/lib_config.py | 214 + .../utils/checkpackagelib/lib_hash.py | 55 + .../buildroot/utils/checkpackagelib/lib_mk.py | 328 + .../utils/checkpackagelib/lib_patch.py | 61 + .../utils/checkpackagelib/readme.txt | 73 + features/buildroot/utils/config | 206 + features/buildroot/utils/diffconfig | 138 + features/buildroot/utils/genrandconfig | 444 + features/buildroot/utils/get-developers | 112 + features/buildroot/utils/getdeveloperlib.py | 215 + features/buildroot/utils/readme.txt | 45 + features/buildroot/utils/scancpan | 993 ++ features/buildroot/utils/scanpypi | 749 ++ features/buildroot/utils/size-stats-compare | 130 + features/buildroot/utils/test-pkg | 267 + 11179 files changed, 424211 insertions(+) create mode 100644 features/buildroot/.defconfig create mode 100644 features/buildroot/.flake8 create mode 100644 features/buildroot/.gitignore create mode 100644 features/buildroot/.gitlab-ci.yml create mode 100644 features/buildroot/.gitlab-ci.yml.in create mode 100644 features/buildroot/CHANGES create mode 100644 features/buildroot/COPYING create mode 100644 features/buildroot/Config.in create mode 100644 features/buildroot/Config.in.legacy create mode 100644 features/buildroot/DEVELOPERS create mode 100644 features/buildroot/Makefile create mode 100644 features/buildroot/Makefile.legacy create mode 100644 features/buildroot/README create mode 100644 features/buildroot/arch/Config.in create mode 100644 features/buildroot/arch/Config.in.arc create mode 100644 features/buildroot/arch/Config.in.arm create mode 100644 features/buildroot/arch/Config.in.csky create mode 100644 features/buildroot/arch/Config.in.m68k create mode 100644 features/buildroot/arch/Config.in.microblaze create mode 100644 features/buildroot/arch/Config.in.mips create mode 100644 features/buildroot/arch/Config.in.nds32 create mode 100644 features/buildroot/arch/Config.in.nios2 create mode 100644 features/buildroot/arch/Config.in.or1k create mode 100644 features/buildroot/arch/Config.in.powerpc create mode 100644 features/buildroot/arch/Config.in.riscv create mode 100644 features/buildroot/arch/Config.in.sh create mode 100644 features/buildroot/arch/Config.in.sparc create mode 100644 features/buildroot/arch/Config.in.x86 create mode 100644 features/buildroot/arch/Config.in.xtensa create mode 100644 features/buildroot/arch/arch.mk create mode 100644 features/buildroot/arch/arch.mk.arc create mode 100644 features/buildroot/arch/arch.mk.csky create mode 100644 features/buildroot/arch/arch.mk.riscv create mode 100644 features/buildroot/arch/arch.mk.xtensa create mode 100644 features/buildroot/board/aarch64-efi/genimage-efi.cfg create mode 100644 features/buildroot/board/aarch64-efi/grub.cfg create mode 100755 features/buildroot/board/aarch64-efi/post-image.sh create mode 100644 features/buildroot/board/aarch64-efi/readme.txt create mode 100644 features/buildroot/board/acmesystems/aria-g25/genimage.cfg create mode 100755 features/buildroot/board/acmesystems/aria-g25/post-image.sh create mode 100644 features/buildroot/board/acmesystems/aria-g25/readme.txt create mode 100644 features/buildroot/board/acmesystems/arietta-g25/genimage.cfg create mode 100755 features/buildroot/board/acmesystems/arietta-g25/post-image.sh create mode 100644 features/buildroot/board/acmesystems/arietta-g25/readme.txt create mode 100644 features/buildroot/board/altera/socrates_cyclone5/boot-env.txt create mode 100644 features/buildroot/board/altera/socrates_cyclone5/genimage.cfg create mode 100644 features/buildroot/board/altera/socrates_cyclone5/readme.txt create mode 100644 features/buildroot/board/amarula/a64-relic/extlinux.conf create mode 100644 features/buildroot/board/amarula/a64-relic/genimage.cfg create mode 100755 features/buildroot/board/amarula/a64-relic/post-build.sh create mode 100644 features/buildroot/board/amarula/a64-relic/readme.txt create mode 100644 features/buildroot/board/amarula/a64-relic/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt create mode 100644 features/buildroot/board/amarula/vyasa/extlinux.conf create mode 100644 features/buildroot/board/amarula/vyasa/genimage.cfg create mode 100644 features/buildroot/board/amarula/vyasa/linux_gmac.fragment create mode 100644 features/buildroot/board/amarula/vyasa/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch create mode 100755 features/buildroot/board/amarula/vyasa/post-build.sh create mode 100644 features/buildroot/board/amarula/vyasa/readme.txt create mode 100644 features/buildroot/board/andes/ae3xx/ae3xx.fragment create mode 100644 features/buildroot/board/andes/patches/linux/0001-nds32-Fix-boot-messages-garbled.patch create mode 100644 features/buildroot/board/andes/readme.txt create mode 100755 features/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh create mode 100644 features/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt create mode 100755 features/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload create mode 100644 features/buildroot/board/arcturus/ppc-ucp1020/readme.txt create mode 100644 features/buildroot/board/arm/foundation-v8/readme.txt create mode 100644 features/buildroot/board/arm/juno/linux-juno-defconfig create mode 100644 features/buildroot/board/arm/juno/readme.txt create mode 100644 features/buildroot/board/armadeus/apf27/linux-4.12.config create mode 100644 features/buildroot/board/armadeus/apf51/linux-4.4.config create mode 100644 features/buildroot/board/armadeus/readme.txt create mode 100644 features/buildroot/board/asus/tinker/extlinux.conf create mode 100644 features/buildroot/board/asus/tinker/genimage.cfg create mode 100644 features/buildroot/board/asus/tinker/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch create mode 100755 features/buildroot/board/asus/tinker/post-build.sh create mode 100644 features/buildroot/board/asus/tinker/readme.txt create mode 100644 features/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg create mode 100644 features/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt create mode 100755 features/buildroot/board/atmel/flasher.sh create mode 100644 features/buildroot/board/atmel/nandflash.tcl create mode 100644 features/buildroot/board/atmel/readme.txt create mode 100644 features/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg create mode 100644 features/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg create mode 100644 features/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg create mode 100644 features/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg create mode 100644 features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts create mode 100644 features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig create mode 100644 features/buildroot/board/avnet/s6lx9_microboard/readme.txt create mode 100644 features/buildroot/board/bananapi/bananapi-m1/boot.cmd create mode 100644 features/buildroot/board/bananapi/bananapi-m1/genimage.cfg create mode 100644 features/buildroot/board/bananapi/bananapi-m1/readme.txt create mode 100644 features/buildroot/board/bananapi/bananapi-m2-ultra/boot.cmd create mode 100644 features/buildroot/board/bananapi/bananapi-m2-ultra/genimage.cfg create mode 100644 features/buildroot/board/bananapi/bananapi-m2-ultra/readme.txt create mode 100644 features/buildroot/board/bananapi/bananapi-m64/boot.cmd create mode 100644 features/buildroot/board/bananapi/bananapi-m64/genimage.cfg create mode 100644 features/buildroot/board/bananapi/bananapi-m64/readme.txt create mode 100644 features/buildroot/board/beagleboardx15/genimage.cfg create mode 100755 features/buildroot/board/beagleboardx15/post-image.sh create mode 100644 features/buildroot/board/beagleboardx15/readme.txt create mode 100644 features/buildroot/board/beaglebone/genimage.cfg create mode 100644 features/buildroot/board/beaglebone/genimage_linux41.cfg create mode 100644 features/buildroot/board/beaglebone/linux-4.1-sgx.fragment create mode 100644 features/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch create mode 100755 features/buildroot/board/beaglebone/post-image.sh create mode 100644 features/buildroot/board/beaglebone/readme.txt create mode 100644 features/buildroot/board/beaglebone/uEnv.txt create mode 100644 features/buildroot/board/boundarydevices/common/boot.cmd create mode 100644 features/buildroot/board/boundarydevices/common/genimage.cfg create mode 100755 features/buildroot/board/boundarydevices/common/post-build.sh create mode 100755 features/buildroot/board/boundarydevices/common/post-image.sh create mode 100644 features/buildroot/board/boundarydevices/common/readme.txt create mode 100644 features/buildroot/board/boundarydevices/common/upgrade.cmd create mode 100644 features/buildroot/board/chromebook/snow/kernel.args create mode 100644 features/buildroot/board/chromebook/snow/kernel.its create mode 100644 features/buildroot/board/chromebook/snow/linux-4.15-dts-tpm.patch create mode 100644 features/buildroot/board/chromebook/snow/linux-4.15.fragment create mode 100755 features/buildroot/board/chromebook/snow/mksd.sh create mode 100644 features/buildroot/board/chromebook/snow/readme.txt create mode 100755 features/buildroot/board/chromebook/snow/sign.sh create mode 100644 features/buildroot/board/ci20/genimage.cfg create mode 100644 features/buildroot/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch create mode 100644 features/buildroot/board/ci20/readme.txt create mode 100644 features/buildroot/board/ci20/uboot-env.txt create mode 100644 features/buildroot/board/csky/gx6605s/gdbinit create mode 100644 features/buildroot/board/csky/gx6605s/patches/linux/0001-csky-update-cmdline-for-serial-console-and-rootfs-on.patch create mode 100644 features/buildroot/board/csky/readme.txt create mode 100644 features/buildroot/board/cubietech/cubieboard2/boot.cmd create mode 100644 features/buildroot/board/cubietech/cubieboard2/genimage.cfg create mode 100755 features/buildroot/board/cubietech/cubieboard2/post-image.sh create mode 100644 features/buildroot/board/embest/riotboard/genimage.cfg create mode 100644 features/buildroot/board/embest/riotboard/readme.txt create mode 100644 features/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf create mode 100644 features/buildroot/board/engicam/geam6ul/genimage.cfg create mode 100644 features/buildroot/board/engicam/geam6ul/readme.txt create mode 100644 features/buildroot/board/engicam/icorem6/genimage.cfg create mode 100644 features/buildroot/board/engicam/icorem6/linux_qt5.fragment create mode 100644 features/buildroot/board/engicam/icorem6/readme.txt create mode 100644 features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json create mode 100644 features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json create mode 100644 features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json create mode 100644 features/buildroot/board/engicam/icorem6_rqs/genimage.cfg create mode 100644 features/buildroot/board/engicam/icorem6_rqs/readme.txt create mode 100644 features/buildroot/board/engicam/isiot/genimage.cfg create mode 100644 features/buildroot/board/engicam/isiot/readme.txt create mode 100644 features/buildroot/board/freescale/common/imx/genimage.cfg.template create mode 100644 features/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 create mode 100644 features/buildroot/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl create mode 100644 features/buildroot/board/freescale/common/imx/genimage.cfg.template_spl create mode 100755 features/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh create mode 100755 features/buildroot/board/freescale/common/imx/post-image.sh create mode 100644 features/buildroot/board/freescale/common/mxs/genimage.cfg.template create mode 100755 features/buildroot/board/freescale/common/mxs/post-image.sh create mode 100644 features/buildroot/board/freescale/imx23evk/readme.txt create mode 100644 features/buildroot/board/freescale/imx25pdk/readme.txt create mode 100644 features/buildroot/board/freescale/imx28evk/readme.txt create mode 100644 features/buildroot/board/freescale/imx51evk/readme.txt create mode 100644 features/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment create mode 100644 features/buildroot/board/freescale/imx6-sabresd/readme.txt create mode 100644 features/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json create mode 100644 features/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imx-Create-distinct-pre-processed-mkimage-config-fil.patch create mode 100644 features/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch create mode 100644 features/buildroot/board/freescale/imx6sabre/readme.txt create mode 100644 features/buildroot/board/freescale/imx6slevk/readme.txt create mode 100644 features/buildroot/board/freescale/imx6sxsdb/readme.txt create mode 100644 features/buildroot/board/freescale/imx6ulevk/readme.txt create mode 100644 features/buildroot/board/freescale/imx7dsdb/patches/uboot/0001-imx-Create-distinct-pre-processed-mkimage-config-fil.patch create mode 100644 features/buildroot/board/freescale/imx7dsdb/readme.txt create mode 100644 features/buildroot/board/freescale/imx8mmevk/readme.txt create mode 100644 features/buildroot/board/freescale/imx8mqevk/readme.txt create mode 100644 features/buildroot/board/freescale/imx8qxpmek/readme.txt create mode 100644 features/buildroot/board/freescale/p1025twr/readme.txt create mode 100644 features/buildroot/board/freescale/t1040_t2080/readme.txt create mode 100644 features/buildroot/board/freescale/warpboard/README create mode 100644 features/buildroot/board/freescale/warpboard/linux.fragment create mode 100644 features/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt create mode 100644 features/buildroot/board/friendlyarm/nanopi-a64/boot.cmd create mode 100644 features/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg create mode 100644 features/buildroot/board/friendlyarm/nanopi-a64/readme.txt create mode 100644 features/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd create mode 100644 features/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg create mode 100644 features/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt create mode 100644 features/buildroot/board/friendlyarm/nanopi-m1/boot.cmd create mode 100644 features/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg create mode 100644 features/buildroot/board/friendlyarm/nanopi-m1/readme.txt create mode 100644 features/buildroot/board/friendlyarm/nanopi-neo/boot.cmd create mode 100644 features/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg create mode 100755 features/buildroot/board/friendlyarm/nanopi-neo/post-build.sh create mode 100755 features/buildroot/board/friendlyarm/nanopi-neo/post-image.sh create mode 100644 features/buildroot/board/friendlyarm/nanopi-neo/readme.txt create mode 100644 features/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd create mode 100644 features/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg create mode 100644 features/buildroot/board/friendlyarm/nanopi-neo2/readme.txt create mode 100644 features/buildroot/board/grinn/chiliboard/genimage.cfg create mode 100755 features/buildroot/board/grinn/chiliboard/post-image.sh create mode 100644 features/buildroot/board/grinn/chiliboard/readme.txt create mode 100644 features/buildroot/board/grinn/liteboard/genimage.cfg create mode 100755 features/buildroot/board/grinn/liteboard/post-image.sh create mode 100644 features/buildroot/board/grinn/liteboard/readme.txt create mode 100644 features/buildroot/board/hardkernel/odroidc2/boot.ini create mode 100644 features/buildroot/board/hardkernel/odroidc2/genimage.cfg create mode 100755 features/buildroot/board/hardkernel/odroidc2/post-image.sh create mode 100644 features/buildroot/board/hardkernel/odroidc2/readme.txt create mode 100644 features/buildroot/board/hardkernel/odroidxu4/boot.ini create mode 100644 features/buildroot/board/hardkernel/odroidxu4/genimage.cfg create mode 100755 features/buildroot/board/hardkernel/odroidxu4/post-image.sh create mode 100644 features/buildroot/board/hardkernel/odroidxu4/readme.txt create mode 100644 features/buildroot/board/intel/galileo/genimage.cfg create mode 100644 features/buildroot/board/intel/galileo/grub.cfg create mode 100644 features/buildroot/board/intel/galileo/linux-3.14.config create mode 100755 features/buildroot/board/intel/galileo/post-build.sh create mode 100755 features/buildroot/board/intel/galileo/post-image.sh create mode 100644 features/buildroot/board/intel/galileo/readme.txt create mode 100755 features/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload create mode 100644 features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf create mode 100644 features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf create mode 100644 features/buildroot/board/lego/ev3/busybox.fragment create mode 100644 features/buildroot/board/lego/ev3/genimage.cfg create mode 100644 features/buildroot/board/lego/ev3/linux.fragment create mode 100755 features/buildroot/board/lego/ev3/post-image.sh create mode 100644 features/buildroot/board/lego/ev3/readme.txt create mode 100644 features/buildroot/board/lemaker/bananapro/boot.cmd create mode 100644 features/buildroot/board/lemaker/bananapro/genimage.cfg create mode 100644 features/buildroot/board/lemaker/bananapro/linux-wifi.fragment create mode 100644 features/buildroot/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch create mode 100755 features/buildroot/board/lemaker/bananapro/post-build.sh create mode 100755 features/buildroot/board/lemaker/bananapro/post-image.sh create mode 100644 features/buildroot/board/lemaker/bananapro/readme.txt create mode 120000 features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt create mode 100644 features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt create mode 100644 features/buildroot/board/licheepi/boot.cmd create mode 100644 features/buildroot/board/licheepi/genimage.cfg create mode 100644 features/buildroot/board/licheepi/readme.txt create mode 100644 features/buildroot/board/linksprite/pcduino/boot.cmd create mode 100644 features/buildroot/board/linksprite/pcduino/genimage.cfg create mode 100644 features/buildroot/board/linksprite/pcduino/linux-extras.config create mode 100755 features/buildroot/board/linksprite/pcduino/post-build.sh create mode 100755 features/buildroot/board/linksprite/pcduino/post-image.sh create mode 100644 features/buildroot/board/linksprite/pcduino/readme.txt create mode 100755 features/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession create mode 100644 features/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf create mode 100644 features/buildroot/board/minnowboard/genimage.cfg create mode 100644 features/buildroot/board/minnowboard/grub.cfg create mode 100644 features/buildroot/board/minnowboard/linux.config create mode 100755 features/buildroot/board/minnowboard/post-build.sh create mode 100755 features/buildroot/board/minnowboard/post-image.sh create mode 100644 features/buildroot/board/minnowboard/readme.txt create mode 100644 features/buildroot/board/nexbox/a95x/boot.txt create mode 100644 features/buildroot/board/nexbox/a95x/genimage.cfg create mode 100755 features/buildroot/board/nexbox/a95x/post-build.sh create mode 100755 features/buildroot/board/nexbox/a95x/post-image.sh create mode 100644 features/buildroot/board/nexbox/a95x/readme.txt create mode 120000 features/buildroot/board/olimex/a10_olinuxino/boot.cmd create mode 120000 features/buildroot/board/olimex/a10_olinuxino/genimage.cfg create mode 120000 features/buildroot/board/olimex/a10_olinuxino/post-build.sh create mode 100644 features/buildroot/board/olimex/a10_olinuxino/readme.txt create mode 100644 features/buildroot/board/olimex/a13_olinuxino/boot.cmd create mode 100644 features/buildroot/board/olimex/a13_olinuxino/genimage.cfg create mode 100755 features/buildroot/board/olimex/a13_olinuxino/post-build.sh create mode 100644 features/buildroot/board/olimex/a13_olinuxino/readme.txt create mode 100644 features/buildroot/board/olimex/a20_olinuxino/boot.cmd create mode 100644 features/buildroot/board/olimex/a20_olinuxino/genimage.cfg create mode 100755 features/buildroot/board/olimex/a20_olinuxino/post-build.sh create mode 100644 features/buildroot/board/olimex/a20_olinuxino/readme.txt create mode 100644 features/buildroot/board/olimex/a64-olinuxino/boot.cmd create mode 100644 features/buildroot/board/olimex/a64-olinuxino/genimage.cfg create mode 100644 features/buildroot/board/olimex/a64-olinuxino/readme.txt create mode 100644 features/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment create mode 100644 features/buildroot/board/olimex/imx233_olinuxino/readme.txt create mode 100644 features/buildroot/board/openblocks/a6/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-lite/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-lite/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-lite/linux-extras.config create mode 100644 features/buildroot/board/orangepi/orangepi-lite/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-lite2/extlinux.conf create mode 100644 features/buildroot/board/orangepi/orangepi-lite2/genimage.cfg create mode 100755 features/buildroot/board/orangepi/orangepi-lite2/post-build.sh create mode 100644 features/buildroot/board/orangepi/orangepi-lite2/readme.txt create mode 100755 features/buildroot/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt create mode 100644 features/buildroot/board/orangepi/orangepi-one-plus/extlinux.conf create mode 100644 features/buildroot/board/orangepi/orangepi-one-plus/genimage.cfg create mode 100755 features/buildroot/board/orangepi/orangepi-one-plus/post-build.sh create mode 100644 features/buildroot/board/orangepi/orangepi-one-plus/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-one/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-one/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-one/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config create mode 100644 features/buildroot/board/orangepi/orangepi-pc-plus/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-pc/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-pc/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-pc/linux.fragment create mode 100644 features/buildroot/board/orangepi/orangepi-pc/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-pc2/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-pc2/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-pc2/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-plus/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-plus/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-plus/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-prime/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-prime/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-prime/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-r1/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-r1/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-r1/linux-extras.config create mode 100644 features/buildroot/board/orangepi/orangepi-r1/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-win/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-win/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-win/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config create mode 100644 features/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt create mode 100644 features/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt create mode 100644 features/buildroot/board/orangepi/orangepi-zero/boot.cmd create mode 100644 features/buildroot/board/orangepi/orangepi-zero/genimage.cfg create mode 100644 features/buildroot/board/orangepi/orangepi-zero/linux-extras.config create mode 100644 features/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch create mode 100644 features/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch create mode 100644 features/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch create mode 100644 features/buildroot/board/orangepi/orangepi-zero/readme.txt create mode 100644 features/buildroot/board/pandaboard/genimage.cfg create mode 100755 features/buildroot/board/pandaboard/post-image.sh create mode 100644 features/buildroot/board/pandaboard/readme.txt create mode 100644 features/buildroot/board/pc/genimage-bios.cfg create mode 100644 features/buildroot/board/pc/grub-bios.cfg create mode 100644 features/buildroot/board/pc/linux.config create mode 100755 features/buildroot/board/pc/post-build.sh create mode 100755 features/buildroot/board/pc/post-image-efi-gpt.sh create mode 100644 features/buildroot/board/pc/readme.txt create mode 100644 features/buildroot/board/pine64/pine64/boot.cmd create mode 100644 features/buildroot/board/pine64/pine64/genimage.cfg create mode 100644 features/buildroot/board/pine64/pine64/readme.txt create mode 100644 features/buildroot/board/pine64/rock64/extlinux.conf create mode 100644 features/buildroot/board/pine64/rock64/genimage.cfg create mode 100644 features/buildroot/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch create mode 100755 features/buildroot/board/pine64/rock64/post-build.sh create mode 100644 features/buildroot/board/pine64/rock64/readme.txt create mode 100644 features/buildroot/board/pine64/sopine/boot.cmd create mode 100644 features/buildroot/board/pine64/sopine/genimage.cfg create mode 100644 features/buildroot/board/pine64/sopine/readme.txt create mode 100644 features/buildroot/board/qemu/aarch64-virt/linux.config create mode 100644 features/buildroot/board/qemu/aarch64-virt/readme.txt create mode 100644 features/buildroot/board/qemu/arm-versatile/linux-nommu.config create mode 100644 features/buildroot/board/qemu/arm-versatile/linux.config create mode 100644 features/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch create mode 100644 features/buildroot/board/qemu/arm-versatile/readme.txt create mode 100644 features/buildroot/board/qemu/arm-vexpress/readme.txt create mode 100644 features/buildroot/board/qemu/m68k-mcf5208/linux.config create mode 100644 features/buildroot/board/qemu/m68k-mcf5208/readme.txt create mode 100644 features/buildroot/board/qemu/m68k-q800/linux.config create mode 100644 features/buildroot/board/qemu/m68k-q800/readme.txt create mode 100644 features/buildroot/board/qemu/microblazebe-mmu/linux.config create mode 100644 features/buildroot/board/qemu/microblazebe-mmu/readme.txt create mode 100644 features/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch create mode 100644 features/buildroot/board/qemu/microblazeel-mmu/linux.config create mode 100644 features/buildroot/board/qemu/microblazeel-mmu/readme.txt create mode 100644 features/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch create mode 100644 features/buildroot/board/qemu/mips32r2-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips32r2-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips32r2el-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips32r2el-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips32r6-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips32r6-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips32r6el-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips32r6el-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips64-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips64-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips64el-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips64el-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips64r6-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips64r6-malta/readme.txt create mode 100644 features/buildroot/board/qemu/mips64r6el-malta/linux.config create mode 100644 features/buildroot/board/qemu/mips64r6el-malta/readme.txt create mode 100644 features/buildroot/board/qemu/nios2-10m50/linux.fragment create mode 100644 features/buildroot/board/qemu/nios2-10m50/readme.txt create mode 100644 features/buildroot/board/qemu/or1k/linux.config create mode 100644 features/buildroot/board/qemu/or1k/readme.txt create mode 100644 features/buildroot/board/qemu/ppc-g3beige/linux.config create mode 100644 features/buildroot/board/qemu/ppc-g3beige/readme.txt create mode 100644 features/buildroot/board/qemu/ppc-mac99/linux.fragment create mode 100644 features/buildroot/board/qemu/ppc-mac99/readme.txt create mode 100644 features/buildroot/board/qemu/ppc-mpc8544ds/linux.config create mode 100644 features/buildroot/board/qemu/ppc-mpc8544ds/readme.txt create mode 100644 features/buildroot/board/qemu/ppc-virtex-ml507/linux.config create mode 100644 features/buildroot/board/qemu/ppc-virtex-ml507/readme.txt create mode 100644 features/buildroot/board/qemu/ppc64-e5500/linux.fragment create mode 100644 features/buildroot/board/qemu/ppc64-e5500/readme.txt create mode 100644 features/buildroot/board/qemu/ppc64-pseries/readme.txt create mode 100644 features/buildroot/board/qemu/ppc64le-pseries/readme.txt create mode 100644 features/buildroot/board/qemu/riscv32-virt/patches/linux/0001-Revert-riscv-Use-latest-system-call-ABI.patch create mode 100644 features/buildroot/board/qemu/riscv32-virt/readme.txt create mode 100644 features/buildroot/board/qemu/riscv64-virt/readme.txt create mode 100644 features/buildroot/board/qemu/sh4-r2d/linux.config create mode 100644 features/buildroot/board/qemu/sh4-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch create mode 100644 features/buildroot/board/qemu/sh4-r2d/readme.txt create mode 100644 features/buildroot/board/qemu/sh4eb-r2d/linux.config create mode 100644 features/buildroot/board/qemu/sh4eb-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch create mode 100644 features/buildroot/board/qemu/sh4eb-r2d/readme.txt create mode 100644 features/buildroot/board/qemu/sparc-ss10/linux.config create mode 100644 features/buildroot/board/qemu/sparc-ss10/readme.txt create mode 100644 features/buildroot/board/qemu/sparc64-sun4u/linux.config create mode 100644 features/buildroot/board/qemu/sparc64-sun4u/readme.txt create mode 100644 features/buildroot/board/qemu/x86/linux.config create mode 100644 features/buildroot/board/qemu/x86/readme.txt create mode 100644 features/buildroot/board/qemu/x86_64/linux.config create mode 100644 features/buildroot/board/qemu/x86_64/readme.txt create mode 100644 features/buildroot/board/qemu/xtensa-lx60/linux-nommu.config create mode 100644 features/buildroot/board/qemu/xtensa-lx60/linux.config create mode 100644 features/buildroot/board/qemu/xtensa-lx60/readme.txt create mode 100644 features/buildroot/board/raspberrypi/genimage-raspberrypi.cfg create mode 100644 features/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg create mode 100644 features/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg create mode 100644 features/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg create mode 100644 features/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg create mode 100644 features/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg create mode 100755 features/buildroot/board/raspberrypi/post-build.sh create mode 100755 features/buildroot/board/raspberrypi/post-image.sh create mode 100644 features/buildroot/board/raspberrypi/readme.txt create mode 120000 features/buildroot/board/raspberrypi0 create mode 120000 features/buildroot/board/raspberrypi0w create mode 120000 features/buildroot/board/raspberrypi2 create mode 120000 features/buildroot/board/raspberrypi3 create mode 120000 features/buildroot/board/raspberrypi3-64 create mode 100644 features/buildroot/board/roseapplepi/genimage.cfg create mode 100644 features/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch create mode 100644 features/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch create mode 100644 features/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch create mode 100644 features/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch create mode 100644 features/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch create mode 100644 features/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch create mode 100755 features/buildroot/board/roseapplepi/post-image.sh create mode 100755 features/buildroot/board/roseapplepi/uEnv.txt create mode 100644 features/buildroot/board/sheevaplug/readme.txt create mode 100644 features/buildroot/board/sinovoip/m2-plus/boot.cmd create mode 100644 features/buildroot/board/sinovoip/m2-plus/genimage.cfg create mode 100644 features/buildroot/board/solidrun/clearfog/extlinux.conf create mode 100644 features/buildroot/board/solidrun/clearfog/genimage.cfg create mode 100644 features/buildroot/board/solidrun/clearfog/linux.fragment create mode 100755 features/buildroot/board/solidrun/clearfog/post-build.sh create mode 100644 features/buildroot/board/solidrun/clearfog/readme.txt create mode 100644 features/buildroot/board/solidrun/clearfog_gt_8k/extlinux.conf create mode 120000 features/buildroot/board/solidrun/clearfog_gt_8k/genimage.cfg create mode 100644 features/buildroot/board/solidrun/clearfog_gt_8k/linux-extras.config create mode 120000 features/buildroot/board/solidrun/clearfog_gt_8k/post-build-mainline.sh create mode 100644 features/buildroot/board/solidrun/clearfog_gt_8k/readme.txt create mode 120000 features/buildroot/board/solidrun/clearfog_gt_8k/uboot-fragment.config create mode 100644 features/buildroot/board/solidrun/macchiatobin/extlinux.conf create mode 100644 features/buildroot/board/solidrun/macchiatobin/genimage.cfg create mode 100644 features/buildroot/board/solidrun/macchiatobin/linux-extras.config create mode 100755 features/buildroot/board/solidrun/macchiatobin/post-build-mainline.sh create mode 100755 features/buildroot/board/solidrun/macchiatobin/post-build.sh create mode 100644 features/buildroot/board/solidrun/macchiatobin/readme.txt create mode 100644 features/buildroot/board/solidrun/macchiatobin/uEnv-example.txt create mode 100644 features/buildroot/board/solidrun/macchiatobin/uboot-fragment.config create mode 100644 features/buildroot/board/solidrun/mx6cubox/boot.scr.txt create mode 100644 features/buildroot/board/solidrun/mx6cubox/genimage.cfg create mode 100755 features/buildroot/board/solidrun/mx6cubox/post-build.sh create mode 100755 features/buildroot/board/solidrun/mx6cubox/post-image.sh create mode 100644 features/buildroot/board/solidrun/mx6cubox/readme.txt create mode 100755 features/buildroot/board/stmicroelectronics/stm32-post-build.sh create mode 100755 features/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh create mode 100644 features/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch create mode 100644 features/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt create mode 100755 features/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh create mode 100644 features/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch create mode 100644 features/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt create mode 100755 features/buildroot/board/synopsys/axs10x/post-build.sh create mode 100644 features/buildroot/board/synopsys/hsdk/genimage.cfg create mode 100644 features/buildroot/board/synopsys/hsdk/linux.fragment create mode 100644 features/buildroot/board/synopsys/hsdk/readme.txt create mode 100644 features/buildroot/board/synopsys/hsdk/uboot.env.txt create mode 100644 features/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig create mode 100644 features/buildroot/board/synopsys/vdk/readme.txt create mode 100644 features/buildroot/board/technexion/imx6ulpico/readme.txt create mode 100644 features/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt create mode 100644 features/buildroot/board/technexion/imx7dpico/readme.txt create mode 100644 features/buildroot/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf create mode 100644 features/buildroot/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt create mode 100644 features/buildroot/board/technexion/imx8mmpico/readme.txt create mode 100644 features/buildroot/board/technexion/imx8mpico/readme.txt create mode 100644 features/buildroot/board/technologic/ts4800/genimage.cfg create mode 100644 features/buildroot/board/technologic/ts4800/linux.fragment create mode 100755 features/buildroot/board/technologic/ts4800/post-image.sh create mode 100644 features/buildroot/board/technologic/ts4800/readme.txt create mode 100644 features/buildroot/board/technologic/ts4900/genimage.cfg create mode 100755 features/buildroot/board/technologic/ts4900/post-image.sh create mode 100644 features/buildroot/board/technologic/ts4900/readme.txt create mode 100644 features/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg create mode 100644 features/buildroot/board/technologic/ts5500/linux-4.14.config create mode 100644 features/buildroot/board/technologic/ts5500/readme.txt create mode 100644 features/buildroot/board/technologic/ts7680/genimage.cfg create mode 100644 features/buildroot/board/technologic/ts7680/readme.txt create mode 100644 features/buildroot/board/toradex/apalis-imx6/genimage.cfg create mode 100755 features/buildroot/board/toradex/apalis-imx6/post-image.sh create mode 100644 features/buildroot/board/toradex/apalis-imx6/readme.txt create mode 100644 features/buildroot/board/toradex/apalis-imx6/uEnv.txt create mode 100644 features/buildroot/board/udoo/mx6qdl/linux.fragment create mode 100644 features/buildroot/board/udoo/mx6qdl/readme.txt create mode 100644 features/buildroot/board/udoo/neo/boot.scr.txt create mode 100644 features/buildroot/board/udoo/neo/genimage.cfg create mode 100755 features/buildroot/board/udoo/neo/post-build.sh create mode 100755 features/buildroot/board/udoo/neo/post-image.sh create mode 100644 features/buildroot/board/udoo/neo/readme.txt create mode 100644 features/buildroot/board/wandboard/boot.scr.txt create mode 100644 features/buildroot/board/wandboard/genimage.cfg create mode 100755 features/buildroot/board/wandboard/post-build.sh create mode 100755 features/buildroot/board/wandboard/post-image.sh create mode 100644 features/buildroot/board/wandboard/readme.txt create mode 100644 features/buildroot/board/warp7/readme.txt create mode 100644 features/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt create mode 100644 features/buildroot/board/zynq/genimage.cfg create mode 100755 features/buildroot/board/zynq/post-image.sh create mode 100644 features/buildroot/board/zynq/readme.txt create mode 100644 features/buildroot/board/zynqmp/genimage.cfg create mode 100644 features/buildroot/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch create mode 100644 features/buildroot/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch create mode 100644 features/buildroot/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch create mode 100644 features/buildroot/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch create mode 100755 features/buildroot/board/zynqmp/post-image.sh create mode 100644 features/buildroot/board/zynqmp/readme.txt create mode 100644 features/buildroot/boot/Config.in create mode 100644 features/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch create mode 100644 features/buildroot/boot/afboot-stm32/Config.in create mode 100644 features/buildroot/boot/afboot-stm32/afboot-stm32.hash create mode 100644 features/buildroot/boot/afboot-stm32/afboot-stm32.mk create mode 100644 features/buildroot/boot/arm-trusted-firmware/Config.in create mode 100644 features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash create mode 100644 features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk create mode 100644 features/buildroot/boot/at91bootstrap/Config.in create mode 100644 features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch create mode 100644 features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch create mode 100644 features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch create mode 100644 features/buildroot/boot/at91bootstrap/at91bootstrap.hash create mode 100644 features/buildroot/boot/at91bootstrap/at91bootstrap.mk create mode 100644 features/buildroot/boot/at91bootstrap3/Config.in create mode 100644 features/buildroot/boot/at91bootstrap3/at91bootstrap3.hash create mode 100644 features/buildroot/boot/at91bootstrap3/at91bootstrap3.mk create mode 100644 features/buildroot/boot/at91dataflashboot/Config.in create mode 100644 features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch create mode 100644 features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch create mode 100644 features/buildroot/boot/at91dataflashboot/at91dataflashboot.hash create mode 100644 features/buildroot/boot/at91dataflashboot/at91dataflashboot.mk create mode 100644 features/buildroot/boot/barebox/Config.in create mode 100644 features/buildroot/boot/barebox/barebox-aux/Config.in create mode 120000 features/buildroot/boot/barebox/barebox-aux/barebox-aux.hash create mode 100644 features/buildroot/boot/barebox/barebox-aux/barebox-aux.mk create mode 100644 features/buildroot/boot/barebox/barebox.hash create mode 100644 features/buildroot/boot/barebox/barebox.mk create mode 100644 features/buildroot/boot/barebox/barebox/Config.in create mode 120000 features/buildroot/boot/barebox/barebox/barebox.hash create mode 100644 features/buildroot/boot/barebox/barebox/barebox.mk create mode 100644 features/buildroot/boot/binaries-marvell/Config.in create mode 100644 features/buildroot/boot/binaries-marvell/binaries-marvell.hash create mode 100644 features/buildroot/boot/binaries-marvell/binaries-marvell.mk create mode 100644 features/buildroot/boot/boot-wrapper-aarch64/Config.in create mode 100644 features/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk create mode 100644 features/buildroot/boot/common.mk create mode 100644 features/buildroot/boot/grub2/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch create mode 100644 features/buildroot/boot/grub2/Config.in create mode 100644 features/buildroot/boot/grub2/grub.cfg create mode 100644 features/buildroot/boot/grub2/grub2.hash create mode 100644 features/buildroot/boot/grub2/grub2.mk create mode 100644 features/buildroot/boot/grub2/readme.txt create mode 100644 features/buildroot/boot/gummiboot/0001-Allow-building-with-newer-glibc-versions.patch create mode 100644 features/buildroot/boot/gummiboot/0002-Fix-linking-for-non-host-compatible-targets.patch create mode 100644 features/buildroot/boot/gummiboot/Config.in create mode 100644 features/buildroot/boot/gummiboot/buildroot.conf create mode 100644 features/buildroot/boot/gummiboot/gummiboot.mk create mode 100644 features/buildroot/boot/gummiboot/loader.conf create mode 100644 features/buildroot/boot/lpc32xxcdl/Config.in create mode 100644 features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch create mode 100644 features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch create mode 100644 features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch create mode 100644 features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch create mode 100644 features/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk create mode 100644 features/buildroot/boot/mv-ddr-marvell/0001-mv_ddr-mv_ddr4_training_leveling.c-uninitialized-var.patch create mode 100644 features/buildroot/boot/mv-ddr-marvell/Config.in create mode 100644 features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash create mode 100644 features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk create mode 100644 features/buildroot/boot/mxs-bootlets/Config.in create mode 100644 features/buildroot/boot/mxs-bootlets/barebox_ivt.bd create mode 100644 features/buildroot/boot/mxs-bootlets/mxs-bootlets.hash create mode 100644 features/buildroot/boot/mxs-bootlets/mxs-bootlets.mk create mode 100644 features/buildroot/boot/opensbi/Config.in create mode 100644 features/buildroot/boot/opensbi/opensbi.hash create mode 100644 features/buildroot/boot/opensbi/opensbi.mk create mode 100644 features/buildroot/boot/optee-os/Config.in create mode 100644 features/buildroot/boot/optee-os/optee-os.hash create mode 100644 features/buildroot/boot/optee-os/optee-os.mk create mode 100644 features/buildroot/boot/riscv-pk/Config.in create mode 100644 features/buildroot/boot/riscv-pk/riscv-pk.mk create mode 100644 features/buildroot/boot/s500-bootloader/Config.in create mode 100644 features/buildroot/boot/s500-bootloader/s500-bootloader.hash create mode 100644 features/buildroot/boot/s500-bootloader/s500-bootloader.mk create mode 100644 features/buildroot/boot/shim/Config.in create mode 100644 features/buildroot/boot/shim/shim.hash create mode 100644 features/buildroot/boot/shim/shim.mk create mode 100644 features/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch create mode 100644 features/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch create mode 100644 features/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch create mode 100644 features/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch create mode 100644 features/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch create mode 100644 features/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch create mode 100644 features/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch create mode 100644 features/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch create mode 100644 features/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch create mode 100644 features/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch create mode 100644 features/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch create mode 100644 features/buildroot/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch create mode 100644 features/buildroot/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch create mode 100644 features/buildroot/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch create mode 100644 features/buildroot/boot/syslinux/Config.in create mode 100644 features/buildroot/boot/syslinux/syslinux.hash create mode 100644 features/buildroot/boot/syslinux/syslinux.mk create mode 100644 features/buildroot/boot/ts4800-mbrboot/Config.in create mode 100644 features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash create mode 100644 features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk create mode 100644 features/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch create mode 100644 features/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch create mode 100644 features/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch create mode 100644 features/buildroot/boot/uboot/Config.in create mode 100644 features/buildroot/boot/uboot/uboot.hash create mode 100644 features/buildroot/boot/uboot/uboot.mk create mode 100644 features/buildroot/boot/vexpress-firmware/Config.in create mode 100644 features/buildroot/boot/vexpress-firmware/vexpress-firmware.hash create mode 100644 features/buildroot/boot/vexpress-firmware/vexpress-firmware.mk create mode 100644 features/buildroot/build create mode 100644 features/buildroot/configs/aarch64_efi_defconfig create mode 100644 features/buildroot/configs/acmesystems_aria_g25_128mb_defconfig create mode 100644 features/buildroot/configs/acmesystems_aria_g25_256mb_defconfig create mode 100644 features/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig create mode 100644 features/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig create mode 100644 features/buildroot/configs/amarula_a64_relic_defconfig create mode 100644 features/buildroot/configs/amarula_vyasa_rk3288_defconfig create mode 100644 features/buildroot/configs/andes_ae3xx_defconfig create mode 100644 features/buildroot/configs/arcturus_ucls1012a_defconfig create mode 100644 features/buildroot/configs/arcturus_ucp1020_defconfig create mode 100644 features/buildroot/configs/arm_foundationv8_defconfig create mode 100644 features/buildroot/configs/arm_juno_defconfig create mode 100644 features/buildroot/configs/armadeus_apf27_defconfig create mode 100644 features/buildroot/configs/armadeus_apf28_defconfig create mode 100644 features/buildroot/configs/armadeus_apf51_defconfig create mode 100644 features/buildroot/configs/asus_tinker_rk3288_defconfig create mode 100644 features/buildroot/configs/at91sam9260eknf_defconfig create mode 100644 features/buildroot/configs/at91sam9g20dfc_defconfig create mode 100644 features/buildroot/configs/at91sam9g45m10ek_defconfig create mode 100644 features/buildroot/configs/at91sam9rlek_defconfig create mode 100644 features/buildroot/configs/at91sam9x5ek_defconfig create mode 100644 features/buildroot/configs/at91sam9x5ek_dev_defconfig create mode 100644 features/buildroot/configs/at91sam9x5ek_mmc_defconfig create mode 100644 features/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d3_xplained_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d3xek_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d4_xplained_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig create mode 100644 features/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig create mode 100644 features/buildroot/configs/bananapi_m1_defconfig create mode 100644 features/buildroot/configs/bananapi_m2_plus_defconfig create mode 100644 features/buildroot/configs/bananapi_m2_ultra_defconfig create mode 100644 features/buildroot/configs/bananapi_m64_defconfig create mode 100644 features/buildroot/configs/bananapro_defconfig create mode 100644 features/buildroot/configs/beagleboardx15_defconfig create mode 100644 features/buildroot/configs/beaglebone_defconfig create mode 100644 features/buildroot/configs/beaglebone_qt5_defconfig create mode 100644 features/buildroot/configs/chromebook_snow_defconfig create mode 100644 features/buildroot/configs/ci20_defconfig create mode 100644 features/buildroot/configs/csky_gx6605s_defconfig create mode 100644 features/buildroot/configs/cubieboard2_defconfig create mode 100644 features/buildroot/configs/engicam_imx6qdl_icore_defconfig create mode 100644 features/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig create mode 100644 features/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig create mode 100644 features/buildroot/configs/engicam_imx6ul_geam_defconfig create mode 100644 features/buildroot/configs/engicam_imx6ul_isiot_defconfig create mode 100644 features/buildroot/configs/freescale_imx28evk_defconfig create mode 100644 features/buildroot/configs/freescale_imx6dlsabreauto_defconfig create mode 100644 features/buildroot/configs/freescale_imx6dlsabresd_defconfig create mode 100644 features/buildroot/configs/freescale_imx6qsabreauto_defconfig create mode 100644 features/buildroot/configs/freescale_imx6qsabresd_defconfig create mode 100644 features/buildroot/configs/freescale_imx6sxsabresd_defconfig create mode 100644 features/buildroot/configs/freescale_imx7dsabresd_defconfig create mode 100644 features/buildroot/configs/freescale_imx8mmevk_defconfig create mode 100644 features/buildroot/configs/freescale_imx8mqevk_defconfig create mode 100644 features/buildroot/configs/freescale_imx8qxpmek_defconfig create mode 100644 features/buildroot/configs/freescale_p1025twr_defconfig create mode 100644 features/buildroot/configs/freescale_t1040d4rdb_defconfig create mode 100644 features/buildroot/configs/freescale_t2080_qds_rdb_defconfig create mode 100644 features/buildroot/configs/friendlyarm_nanopi_a64_defconfig create mode 100644 features/buildroot/configs/friendlyarm_nanopi_neo2_defconfig create mode 100644 features/buildroot/configs/galileo_defconfig create mode 100644 features/buildroot/configs/grinn_chiliboard_defconfig create mode 100644 features/buildroot/configs/grinn_liteboard_defconfig create mode 100644 features/buildroot/configs/imx23evk_defconfig create mode 100644 features/buildroot/configs/imx6-sabreauto_defconfig create mode 100644 features/buildroot/configs/imx6-sabresd_defconfig create mode 100644 features/buildroot/configs/imx6-sabresd_qt5_defconfig create mode 100644 features/buildroot/configs/imx6slevk_defconfig create mode 100644 features/buildroot/configs/imx6sx-sdb_defconfig create mode 100644 features/buildroot/configs/imx6ulevk_defconfig create mode 100644 features/buildroot/configs/imx6ulpico_defconfig create mode 100644 features/buildroot/configs/imx7d-sdb_defconfig create mode 100644 features/buildroot/configs/imx7dpico_defconfig create mode 100644 features/buildroot/configs/imx8mmpico_defconfig create mode 100644 features/buildroot/configs/imx8mpico_defconfig create mode 100644 features/buildroot/configs/lego_ev3_defconfig create mode 100644 features/buildroot/configs/licheepi_zero_defconfig create mode 100644 features/buildroot/configs/linksprite_pcduino_defconfig create mode 100644 features/buildroot/configs/minnowboard_max-graphical_defconfig create mode 100644 features/buildroot/configs/minnowboard_max_defconfig create mode 100644 features/buildroot/configs/mx25pdk_defconfig create mode 100644 features/buildroot/configs/mx51evk_defconfig create mode 100644 features/buildroot/configs/mx53loco_defconfig create mode 100644 features/buildroot/configs/mx6cubox_defconfig create mode 100644 features/buildroot/configs/mx6sx_udoo_neo_defconfig create mode 100644 features/buildroot/configs/mx6udoo_defconfig create mode 100644 features/buildroot/configs/nanopi_m1_defconfig create mode 100644 features/buildroot/configs/nanopi_m1_plus_defconfig create mode 100644 features/buildroot/configs/nanopi_neo_defconfig create mode 100644 features/buildroot/configs/nexbox_a95x_defconfig create mode 100644 features/buildroot/configs/nitrogen6sx_defconfig create mode 100644 features/buildroot/configs/nitrogen6x_defconfig create mode 100644 features/buildroot/configs/nitrogen7_defconfig create mode 100644 features/buildroot/configs/nitrogen8m_defconfig create mode 100644 features/buildroot/configs/odroidc2_defconfig create mode 100644 features/buildroot/configs/odroidxu4_defconfig create mode 100644 features/buildroot/configs/olimex_a10_olinuxino_lime_defconfig create mode 100644 features/buildroot/configs/olimex_a13_olinuxino_defconfig create mode 100644 features/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig create mode 100644 features/buildroot/configs/olimex_a20_olinuxino_lime_defconfig create mode 100644 features/buildroot/configs/olimex_a20_olinuxino_micro_defconfig create mode 100644 features/buildroot/configs/olimex_a64_olinuxino_defconfig create mode 100644 features/buildroot/configs/olimex_imx233_olinuxino_defconfig create mode 100644 features/buildroot/configs/openblocks_a6_defconfig create mode 100644 features/buildroot/configs/orangepi_lite2_defconfig create mode 100644 features/buildroot/configs/orangepi_lite_defconfig create mode 100644 features/buildroot/configs/orangepi_one_defconfig create mode 100644 features/buildroot/configs/orangepi_one_plus_defconfig create mode 100644 features/buildroot/configs/orangepi_pc2_defconfig create mode 100644 features/buildroot/configs/orangepi_pc_defconfig create mode 100644 features/buildroot/configs/orangepi_pc_plus_defconfig create mode 100644 features/buildroot/configs/orangepi_plus_defconfig create mode 100644 features/buildroot/configs/orangepi_prime_defconfig create mode 100644 features/buildroot/configs/orangepi_r1_defconfig create mode 100644 features/buildroot/configs/orangepi_win_defconfig create mode 100644 features/buildroot/configs/orangepi_zero_defconfig create mode 100644 features/buildroot/configs/orangepi_zero_plus2_defconfig create mode 100644 features/buildroot/configs/pandaboard_defconfig create mode 100644 features/buildroot/configs/pc_x86_64_bios_defconfig create mode 100644 features/buildroot/configs/pc_x86_64_efi_defconfig create mode 100644 features/buildroot/configs/pine64_defconfig create mode 100644 features/buildroot/configs/pine64_sopine_defconfig create mode 100644 features/buildroot/configs/qemu_aarch64_virt_defconfig create mode 100644 features/buildroot/configs/qemu_arm_versatile_defconfig create mode 100644 features/buildroot/configs/qemu_arm_versatile_nommu_defconfig create mode 100644 features/buildroot/configs/qemu_arm_vexpress_defconfig create mode 100644 features/buildroot/configs/qemu_m68k_mcf5208_defconfig create mode 100644 features/buildroot/configs/qemu_m68k_q800_defconfig create mode 100644 features/buildroot/configs/qemu_microblazebe_mmu_defconfig create mode 100644 features/buildroot/configs/qemu_microblazeel_mmu_defconfig create mode 100644 features/buildroot/configs/qemu_mips32r2_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips32r2el_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips32r6_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips32r6el_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips64_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips64el_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips64r6_malta_defconfig create mode 100644 features/buildroot/configs/qemu_mips64r6el_malta_defconfig create mode 100644 features/buildroot/configs/qemu_nios2_10m50_defconfig create mode 100644 features/buildroot/configs/qemu_or1k_defconfig create mode 100644 features/buildroot/configs/qemu_ppc64_e5500_defconfig create mode 100644 features/buildroot/configs/qemu_ppc64_pseries_defconfig create mode 100644 features/buildroot/configs/qemu_ppc64le_pseries_defconfig create mode 100644 features/buildroot/configs/qemu_ppc_g3beige_defconfig create mode 100644 features/buildroot/configs/qemu_ppc_mac99_defconfig create mode 100644 features/buildroot/configs/qemu_ppc_mpc8544ds_defconfig create mode 100644 features/buildroot/configs/qemu_ppc_virtex_ml507_defconfig create mode 100644 features/buildroot/configs/qemu_riscv32_virt_defconfig create mode 100644 features/buildroot/configs/qemu_riscv64_virt_defconfig create mode 100644 features/buildroot/configs/qemu_sh4_r2d_defconfig create mode 100644 features/buildroot/configs/qemu_sh4eb_r2d_defconfig create mode 100644 features/buildroot/configs/qemu_sparc64_sun4u_defconfig create mode 100644 features/buildroot/configs/qemu_sparc_ss10_defconfig create mode 100644 features/buildroot/configs/qemu_x86_64_defconfig create mode 100644 features/buildroot/configs/qemu_x86_defconfig create mode 100644 features/buildroot/configs/qemu_xtensa_lx60_defconfig create mode 100644 features/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig create mode 100644 features/buildroot/configs/raspberrypi0_defconfig create mode 100644 features/buildroot/configs/raspberrypi0w_defconfig create mode 100644 features/buildroot/configs/raspberrypi2_defconfig create mode 100644 features/buildroot/configs/raspberrypi3_64_defconfig create mode 100644 features/buildroot/configs/raspberrypi3_defconfig create mode 100644 features/buildroot/configs/raspberrypi3_qt5we_defconfig create mode 100644 features/buildroot/configs/raspberrypi_defconfig create mode 100644 features/buildroot/configs/riotboard_defconfig create mode 100644 features/buildroot/configs/rock64_defconfig create mode 100644 features/buildroot/configs/roseapplepi_defconfig create mode 100644 features/buildroot/configs/s6lx9_microboard_defconfig create mode 100644 features/buildroot/configs/sheevaplug_defconfig create mode 100644 features/buildroot/configs/snps_aarch64_vdk_defconfig create mode 100644 features/buildroot/configs/snps_arc700_axs101_defconfig create mode 100644 features/buildroot/configs/snps_archs38_axs103_defconfig create mode 100644 features/buildroot/configs/snps_archs38_haps_defconfig create mode 100644 features/buildroot/configs/snps_archs38_hsdk_defconfig create mode 100644 features/buildroot/configs/snps_archs38_vdk_defconfig create mode 100644 features/buildroot/configs/socrates_cyclone5_defconfig create mode 100644 features/buildroot/configs/solidrun_clearfog_defconfig create mode 100644 features/buildroot/configs/solidrun_clearfog_gt_8k_defconfig create mode 100644 features/buildroot/configs/solidrun_macchiatobin_mainline_defconfig create mode 100644 features/buildroot/configs/solidrun_macchiatobin_marvell_defconfig create mode 100644 features/buildroot/configs/stm32f429_disco_defconfig create mode 100644 features/buildroot/configs/stm32f469_disco_defconfig create mode 100644 features/buildroot/configs/toradex_apalis_imx6_defconfig create mode 100644 features/buildroot/configs/ts4800_defconfig create mode 100644 features/buildroot/configs/ts4900_defconfig create mode 100644 features/buildroot/configs/ts5500_defconfig create mode 100644 features/buildroot/configs/ts7680_defconfig create mode 100644 features/buildroot/configs/wandboard_defconfig create mode 100644 features/buildroot/configs/warp7_defconfig create mode 100644 features/buildroot/configs/warpboard_defconfig create mode 100644 features/buildroot/configs/zynq_microzed_defconfig create mode 100644 features/buildroot/configs/zynq_zc706_defconfig create mode 100644 features/buildroot/configs/zynq_zed_defconfig create mode 100644 features/buildroot/configs/zynqmp_zcu106_defconfig create mode 100644 features/buildroot/docs/conf/asciidoc-text.conf create mode 120000 features/buildroot/docs/images create mode 100644 features/buildroot/docs/manual/adding-board-support.txt create mode 100644 features/buildroot/docs/manual/adding-packages-asciidoc.txt create mode 100644 features/buildroot/docs/manual/adding-packages-autotools.txt create mode 100644 features/buildroot/docs/manual/adding-packages-cargo.txt create mode 100644 features/buildroot/docs/manual/adding-packages-cmake.txt create mode 100644 features/buildroot/docs/manual/adding-packages-conclusion.txt create mode 100644 features/buildroot/docs/manual/adding-packages-directory.txt create mode 100644 features/buildroot/docs/manual/adding-packages-generic.txt create mode 100644 features/buildroot/docs/manual/adding-packages-gettext.txt create mode 100644 features/buildroot/docs/manual/adding-packages-golang.txt create mode 100644 features/buildroot/docs/manual/adding-packages-hooks.txt create mode 100644 features/buildroot/docs/manual/adding-packages-kconfig.txt create mode 100644 features/buildroot/docs/manual/adding-packages-kernel-module.txt create mode 100644 features/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt create mode 100644 features/buildroot/docs/manual/adding-packages-luarocks.txt create mode 100644 features/buildroot/docs/manual/adding-packages-meson.txt create mode 100644 features/buildroot/docs/manual/adding-packages-perl.txt create mode 100644 features/buildroot/docs/manual/adding-packages-python.txt create mode 100644 features/buildroot/docs/manual/adding-packages-rebar.txt create mode 100644 features/buildroot/docs/manual/adding-packages-tips.txt create mode 100644 features/buildroot/docs/manual/adding-packages-virtual.txt create mode 100644 features/buildroot/docs/manual/adding-packages-waf.txt create mode 100644 features/buildroot/docs/manual/adding-packages.txt create mode 100644 features/buildroot/docs/manual/advanced.txt create mode 100644 features/buildroot/docs/manual/appendix.txt create mode 100644 features/buildroot/docs/manual/beyond-buildroot.txt create mode 100644 features/buildroot/docs/manual/ccache-support.txt create mode 100644 features/buildroot/docs/manual/common-usage.txt create mode 100644 features/buildroot/docs/manual/configure-other-components.txt create mode 100644 features/buildroot/docs/manual/configure.txt create mode 100644 features/buildroot/docs/manual/contribute.txt create mode 100644 features/buildroot/docs/manual/customize-configuration.txt create mode 100644 features/buildroot/docs/manual/customize-device-permission-tables.txt create mode 100644 features/buildroot/docs/manual/customize-directory-structure.txt create mode 100644 features/buildroot/docs/manual/customize-outside-br.txt create mode 100644 features/buildroot/docs/manual/customize-packages.txt create mode 100644 features/buildroot/docs/manual/customize-patches.txt create mode 100644 features/buildroot/docs/manual/customize-post-image.txt create mode 100644 features/buildroot/docs/manual/customize-quick-guide.txt create mode 100644 features/buildroot/docs/manual/customize-rootfs.txt create mode 100644 features/buildroot/docs/manual/customize-users-tables.txt create mode 100644 features/buildroot/docs/manual/customize.txt create mode 100644 features/buildroot/docs/manual/debugging-buildroot.txt create mode 100644 features/buildroot/docs/manual/developers.txt create mode 100644 features/buildroot/docs/manual/download-infra.txt create mode 100644 features/buildroot/docs/manual/download-location.txt create mode 100644 features/buildroot/docs/manual/eclipse-integration.txt create mode 100644 features/buildroot/docs/manual/faq-troubleshooting.txt create mode 100644 features/buildroot/docs/manual/getting.txt create mode 100644 features/buildroot/docs/manual/how-buildroot-works.txt create mode 100644 features/buildroot/docs/manual/introduction.txt create mode 100644 features/buildroot/docs/manual/known-issues.txt create mode 100644 features/buildroot/docs/manual/legal-notice.txt create mode 100644 features/buildroot/docs/manual/make-tips.txt create mode 100644 features/buildroot/docs/manual/makedev-syntax.txt create mode 100644 features/buildroot/docs/manual/makeusers-syntax.txt create mode 100644 features/buildroot/docs/manual/manual.mk create mode 100644 features/buildroot/docs/manual/manual.txt create mode 100644 features/buildroot/docs/manual/migrating.txt create mode 100644 features/buildroot/docs/manual/package-make-target.txt create mode 100644 features/buildroot/docs/manual/patch-policy.txt create mode 100644 features/buildroot/docs/manual/prerequisite.txt create mode 100644 features/buildroot/docs/manual/quickstart.txt create mode 100644 features/buildroot/docs/manual/rebuilding-packages.txt create mode 100644 features/buildroot/docs/manual/resources.txt create mode 100644 features/buildroot/docs/manual/using-buildroot-debugger.txt create mode 100644 features/buildroot/docs/manual/using-buildroot-development.txt create mode 100644 features/buildroot/docs/manual/using-buildroot-toolchain.txt create mode 100644 features/buildroot/docs/manual/writing-rules.txt create mode 100644 features/buildroot/docs/website/.htaccess create mode 100644 features/buildroot/docs/website/association.html create mode 100644 features/buildroot/docs/website/contribute.html create mode 100644 features/buildroot/docs/website/copyright.txt create mode 100644 features/buildroot/docs/website/css/main.css create mode 100644 features/buildroot/docs/website/css/timeline.css create mode 100644 features/buildroot/docs/website/docs.html create mode 100644 features/buildroot/docs/website/download.html create mode 100644 features/buildroot/docs/website/favicon.ico create mode 100644 features/buildroot/docs/website/favicon.png create mode 100644 features/buildroot/docs/website/fonts/glyphicons-halflings-regular.woff create mode 100644 features/buildroot/docs/website/footer.html create mode 100644 features/buildroot/docs/website/header.html create mode 100644 features/buildroot/docs/website/images/amarula-solutions-logo.png create mode 100644 features/buildroot/docs/website/images/bootlin-logo.png create mode 100644 features/buildroot/docs/website/images/boundary-devices-logo.png create mode 100644 features/buildroot/docs/website/images/browser.png create mode 100644 features/buildroot/docs/website/images/bug-buddy.png create mode 100644 features/buildroot/docs/website/images/buildroot-slides.png create mode 100644 features/buildroot/docs/website/images/calao-logo.png create mode 100644 features/buildroot/docs/website/images/circuitco-logo.png create mode 100644 features/buildroot/docs/website/images/clippy.svg create mode 100644 features/buildroot/docs/website/images/email.png create mode 100644 features/buildroot/docs/website/images/fluendo-logo.png create mode 100644 features/buildroot/docs/website/images/free-electrons-logo.png create mode 100644 features/buildroot/docs/website/images/gift.png create mode 100644 features/buildroot/docs/website/images/github_hash_mongrel2.png create mode 100644 features/buildroot/docs/website/images/google-logo.png create mode 100644 features/buildroot/docs/website/images/hammer.png create mode 100644 features/buildroot/docs/website/images/imgtec-logo.png create mode 100644 features/buildroot/docs/website/images/irc.png create mode 100644 features/buildroot/docs/website/images/logilin-logo.png create mode 100644 features/buildroot/docs/website/images/logo.png create mode 100644 features/buildroot/docs/website/images/logo.xcf create mode 100644 features/buildroot/docs/website/images/logo_small.png create mode 100644 features/buildroot/docs/website/images/menuconfig.png create mode 100644 features/buildroot/docs/website/images/mind-logo.png create mode 100644 features/buildroot/docs/website/images/nconfig.png create mode 100644 features/buildroot/docs/website/images/package.png create mode 100644 features/buildroot/docs/website/images/pdf-icon.png create mode 100644 features/buildroot/docs/website/images/rockwell-collins-logo.png create mode 100644 features/buildroot/docs/website/images/scaleway-logo.png create mode 100644 features/buildroot/docs/website/images/smile-logo.png create mode 100644 features/buildroot/docs/website/images/synopsys-logo.png create mode 100644 features/buildroot/docs/website/images/text.png create mode 100644 features/buildroot/docs/website/images/tkos-logo.png create mode 100644 features/buildroot/docs/website/images/tux-flat.png create mode 100644 features/buildroot/docs/website/images/xconfig.png create mode 100644 features/buildroot/docs/website/images/zillabit-logo.png create mode 100644 features/buildroot/docs/website/images/zip.png create mode 100644 features/buildroot/docs/website/index.html create mode 100644 features/buildroot/docs/website/js/buildroot.js create mode 100644 features/buildroot/docs/website/news.html create mode 100644 features/buildroot/docs/website/robots.txt create mode 100644 features/buildroot/docs/website/sponsors.html create mode 100644 features/buildroot/docs/website/support.html create mode 100644 features/buildroot/fs/Config.in create mode 100644 features/buildroot/fs/axfs/Config.in create mode 100644 features/buildroot/fs/axfs/axfs.mk create mode 100644 features/buildroot/fs/btrfs/Config.in create mode 100644 features/buildroot/fs/btrfs/btrfs.mk create mode 100644 features/buildroot/fs/cloop/Config.in create mode 100644 features/buildroot/fs/cloop/cloop.mk create mode 100644 features/buildroot/fs/common.mk create mode 100644 features/buildroot/fs/cpio/Config.in create mode 100644 features/buildroot/fs/cpio/cpio.mk create mode 100755 features/buildroot/fs/cpio/init create mode 100644 features/buildroot/fs/cramfs/Config.in create mode 100644 features/buildroot/fs/cramfs/cramfs.mk create mode 100644 features/buildroot/fs/ext2/Config.in create mode 100644 features/buildroot/fs/ext2/ext2.mk create mode 100644 features/buildroot/fs/f2fs/Config.in create mode 100644 features/buildroot/fs/f2fs/f2fs.mk create mode 100644 features/buildroot/fs/initramfs/Config.in create mode 100644 features/buildroot/fs/initramfs/initramfs.mk create mode 100644 features/buildroot/fs/iso9660/Config.in create mode 100644 features/buildroot/fs/iso9660/grub.cfg create mode 100644 features/buildroot/fs/iso9660/iso9660.mk create mode 100644 features/buildroot/fs/iso9660/isolinux.cfg create mode 100644 features/buildroot/fs/jffs2/Config.in create mode 100644 features/buildroot/fs/jffs2/jffs2.mk create mode 100644 features/buildroot/fs/romfs/Config.in create mode 100644 features/buildroot/fs/romfs/romfs.mk create mode 100644 features/buildroot/fs/squashfs/Config.in create mode 100644 features/buildroot/fs/squashfs/squashfs.mk create mode 100644 features/buildroot/fs/tar/Config.in create mode 100644 features/buildroot/fs/tar/tar.mk create mode 100644 features/buildroot/fs/ubi/Config.in create mode 100644 features/buildroot/fs/ubi/ubi.mk create mode 100644 features/buildroot/fs/ubi/ubinize.cfg create mode 100644 features/buildroot/fs/ubifs/Config.in create mode 100644 features/buildroot/fs/ubifs/ubifs.mk create mode 100644 features/buildroot/fs/yaffs2/Config.in create mode 100644 features/buildroot/fs/yaffs2/yaffs2.mk create mode 100644 features/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional create mode 100644 features/buildroot/linux/Config.ext.in create mode 100644 features/buildroot/linux/Config.in create mode 100644 features/buildroot/linux/linux-ext-aufs.mk create mode 100644 features/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk create mode 100644 features/buildroot/linux/linux-ext-fbtft.mk create mode 100644 features/buildroot/linux/linux-ext-rtai.mk create mode 100644 features/buildroot/linux/linux-ext-xenomai.mk create mode 100644 features/buildroot/linux/linux.hash create mode 100644 features/buildroot/linux/linux.mk create mode 100644 features/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash create mode 100644 features/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk create mode 100644 features/buildroot/package/18xx-ti-utils/Config.in create mode 100644 features/buildroot/package/4th/0001-avoid-regen-during-install.patch create mode 100644 features/buildroot/package/4th/4th.hash create mode 100644 features/buildroot/package/4th/4th.mk create mode 100644 features/buildroot/package/4th/Config.in create mode 100644 features/buildroot/package/Config.in create mode 100644 features/buildroot/package/Config.in.host create mode 100644 features/buildroot/package/Makefile.in create mode 100644 features/buildroot/package/a10disp/Config.in create mode 100644 features/buildroot/package/a10disp/a10disp.hash create mode 100644 features/buildroot/package/a10disp/a10disp.mk create mode 100644 features/buildroot/package/abootimg/Config.in create mode 100644 features/buildroot/package/abootimg/abootimg.hash create mode 100644 features/buildroot/package/abootimg/abootimg.mk create mode 100644 features/buildroot/package/acl/0001-Build-with-old-GCC-versions.patch create mode 100644 features/buildroot/package/acl/Config.in create mode 100644 features/buildroot/package/acl/acl.hash create mode 100644 features/buildroot/package/acl/acl.mk create mode 100644 features/buildroot/package/acpica/0001-build-do-not-use-Werror.patch create mode 100644 features/buildroot/package/acpica/Config.in create mode 100644 features/buildroot/package/acpica/acpica.hash create mode 100644 features/buildroot/package/acpica/acpica.mk create mode 100644 features/buildroot/package/acpid/0001-dont-use-isfdtype.patch create mode 100644 features/buildroot/package/acpid/0002-add-missing-defines.patch create mode 100644 features/buildroot/package/acpid/Config.in create mode 100644 features/buildroot/package/acpid/S02acpid create mode 100644 features/buildroot/package/acpid/acpid.hash create mode 100644 features/buildroot/package/acpid/acpid.mk create mode 100644 features/buildroot/package/acpid/acpid.service create mode 100644 features/buildroot/package/acpitool/Config.in create mode 100644 features/buildroot/package/acpitool/acpitool.hash create mode 100644 features/buildroot/package/acpitool/acpitool.mk create mode 100644 features/buildroot/package/acsccid/Config.in create mode 100644 features/buildroot/package/acsccid/acsccid.hash create mode 100644 features/buildroot/package/acsccid/acsccid.mk create mode 100644 features/buildroot/package/adwaita-icon-theme/Config.in create mode 100644 features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash create mode 100644 features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk create mode 100644 features/buildroot/package/aer-inject/Config.in create mode 100644 features/buildroot/package/aer-inject/aer-inject.hash create mode 100644 features/buildroot/package/aer-inject/aer-inject.mk create mode 100644 features/buildroot/package/aespipe/Config.in create mode 100644 features/buildroot/package/aespipe/Config.in.host create mode 100644 features/buildroot/package/aespipe/aespipe.hash create mode 100644 features/buildroot/package/aespipe/aespipe.mk create mode 100644 features/buildroot/package/agentpp/Config.in create mode 100644 features/buildroot/package/agentpp/agentpp.hash create mode 100644 features/buildroot/package/agentpp/agentpp.mk create mode 100644 features/buildroot/package/aircrack-ng/Config.in create mode 100644 features/buildroot/package/aircrack-ng/aircrack-ng.hash create mode 100644 features/buildroot/package/aircrack-ng/aircrack-ng.mk create mode 100644 features/buildroot/package/alljoyn-base/Config.in create mode 100644 features/buildroot/package/alljoyn-base/alljoyn-base.hash create mode 100644 features/buildroot/package/alljoyn-base/alljoyn-base.mk create mode 100644 features/buildroot/package/alljoyn-tcl-base/Config.in create mode 100644 features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash create mode 100644 features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk create mode 100644 features/buildroot/package/alljoyn-tcl/Config.in create mode 100644 features/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash create mode 100644 features/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk create mode 100644 features/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch create mode 100644 features/buildroot/package/alljoyn/Config.in create mode 100644 features/buildroot/package/alljoyn/alljoyn.hash create mode 100644 features/buildroot/package/alljoyn/alljoyn.mk create mode 100644 features/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch create mode 100644 features/buildroot/package/alsa-lib/Config.in create mode 100644 features/buildroot/package/alsa-lib/alsa-lib.hash create mode 100644 features/buildroot/package/alsa-lib/alsa-lib.mk create mode 100644 features/buildroot/package/alsa-utils/Config.in create mode 100644 features/buildroot/package/alsa-utils/alsa-utils.hash create mode 100644 features/buildroot/package/alsa-utils/alsa-utils.mk create mode 100644 features/buildroot/package/alsamixergui/0001-misc-fixes.patch create mode 100644 features/buildroot/package/alsamixergui/Config.in create mode 100644 features/buildroot/package/alsamixergui/alsamixergui.hash create mode 100644 features/buildroot/package/alsamixergui/alsamixergui.mk create mode 100644 features/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch create mode 100644 features/buildroot/package/am335x-pru-package/Config.in create mode 100644 features/buildroot/package/am335x-pru-package/am335x-pru-package.hash create mode 100644 features/buildroot/package/am335x-pru-package/am335x-pru-package.mk create mode 100644 features/buildroot/package/am33x-cm3/0001-fix-makefile.patch create mode 100644 features/buildroot/package/am33x-cm3/Config.in create mode 100644 features/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load create mode 100644 features/buildroot/package/am33x-cm3/am33x-cm3.hash create mode 100644 features/buildroot/package/am33x-cm3/am33x-cm3.mk create mode 100644 features/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch create mode 100644 features/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch create mode 100644 features/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch create mode 100644 features/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch create mode 100644 features/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch create mode 100644 features/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch create mode 100644 features/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch create mode 100644 features/buildroot/package/amd-catalyst/20-fglrx.conf create mode 100644 features/buildroot/package/amd-catalyst/Config.in create mode 100644 features/buildroot/package/amd-catalyst/amd-catalyst.hash create mode 100644 features/buildroot/package/amd-catalyst/amd-catalyst.mk create mode 100644 features/buildroot/package/amd-catalyst/gl.pc create mode 100644 features/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch create mode 100644 features/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch create mode 100644 features/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch create mode 100644 features/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch create mode 100644 features/buildroot/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch create mode 100644 features/buildroot/package/android-tools/0006-fix-big-endian-build.patch create mode 100644 features/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch create mode 100644 features/buildroot/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch create mode 100644 features/buildroot/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch create mode 100644 features/buildroot/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch create mode 100644 features/buildroot/package/android-tools/Config.in create mode 100644 features/buildroot/package/android-tools/Config.in.host create mode 100644 features/buildroot/package/android-tools/android-tools.hash create mode 100644 features/buildroot/package/android-tools/android-tools.mk create mode 100644 features/buildroot/package/angular-websocket/Config.in create mode 100644 features/buildroot/package/angular-websocket/angular-websocket.hash create mode 100644 features/buildroot/package/angular-websocket/angular-websocket.mk create mode 100644 features/buildroot/package/angularjs/Config.in create mode 100644 features/buildroot/package/angularjs/angularjs.hash create mode 100644 features/buildroot/package/angularjs/angularjs.mk create mode 100644 features/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch create mode 100644 features/buildroot/package/aoetools/Config.in create mode 100644 features/buildroot/package/aoetools/aoetools.hash create mode 100644 features/buildroot/package/aoetools/aoetools.mk create mode 100644 features/buildroot/package/apache/0001-cross-compile.patch create mode 100644 features/buildroot/package/apache/0002-nios2_is_not_os2.patch create mode 100644 features/buildroot/package/apache/Config.in create mode 100644 features/buildroot/package/apache/S50apache create mode 100644 features/buildroot/package/apache/apache.hash create mode 100644 features/buildroot/package/apache/apache.mk create mode 100644 features/buildroot/package/apache/apache.service create mode 100644 features/buildroot/package/apitrace/Config.in create mode 100644 features/buildroot/package/apitrace/apitrace.hash create mode 100644 features/buildroot/package/apitrace/apitrace.mk create mode 100644 features/buildroot/package/apr-util/0001-remove-checkapr.patch create mode 100644 features/buildroot/package/apr-util/Config.in create mode 100644 features/buildroot/package/apr-util/apr-util.hash create mode 100644 features/buildroot/package/apr-util/apr-util.mk create mode 100644 features/buildroot/package/apr/0001-cross-compile.patch create mode 100644 features/buildroot/package/apr/Config.in create mode 100644 features/buildroot/package/apr/apr.hash create mode 100644 features/buildroot/package/apr/apr.mk create mode 100644 features/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch create mode 100644 features/buildroot/package/argp-standalone/0002-isprint.patch create mode 100644 features/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch create mode 100644 features/buildroot/package/argp-standalone/Config.in create mode 100644 features/buildroot/package/argp-standalone/argp-standalone.hash create mode 100644 features/buildroot/package/argp-standalone/argp-standalone.mk create mode 100644 features/buildroot/package/argparse/Config.in create mode 100644 features/buildroot/package/argparse/argparse.hash create mode 100644 features/buildroot/package/argparse/argparse.mk create mode 100644 features/buildroot/package/argus/Config.in create mode 100644 features/buildroot/package/argus/argus.hash create mode 100644 features/buildroot/package/argus/argus.mk create mode 100644 features/buildroot/package/armadillo/Config.in create mode 100644 features/buildroot/package/armadillo/armadillo.hash create mode 100644 features/buildroot/package/armadillo/armadillo.mk create mode 100644 features/buildroot/package/armbian-firmware/Config.in create mode 100644 features/buildroot/package/armbian-firmware/armbian-firmware.hash create mode 100644 features/buildroot/package/armbian-firmware/armbian-firmware.mk create mode 100644 features/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch create mode 100644 features/buildroot/package/arp-scan/Config.in create mode 100644 features/buildroot/package/arp-scan/arp-scan.hash create mode 100644 features/buildroot/package/arp-scan/arp-scan.mk create mode 100644 features/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch create mode 100644 features/buildroot/package/arptables/0002-src-Use-stdint-types.patch create mode 100644 features/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch create mode 100644 features/buildroot/package/arptables/0004-Fix-musl-build-issue.patch create mode 100644 features/buildroot/package/arptables/Config.in create mode 100644 features/buildroot/package/arptables/arptables.hash create mode 100644 features/buildroot/package/arptables/arptables.mk create mode 100644 features/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch create mode 100644 features/buildroot/package/assimp/Config.in create mode 100644 features/buildroot/package/assimp/assimp.hash create mode 100644 features/buildroot/package/assimp/assimp.mk create mode 100644 features/buildroot/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch create mode 100644 features/buildroot/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch create mode 100644 features/buildroot/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch create mode 100644 features/buildroot/package/asterisk/0004-install-samples-need-the-data-files.patch create mode 100644 features/buildroot/package/asterisk/0005-configure-fix-detection-of-re-entrant-resolver-funct.patch create mode 100644 features/buildroot/package/asterisk/Config.in create mode 100644 features/buildroot/package/asterisk/asterisk.hash create mode 100644 features/buildroot/package/asterisk/asterisk.mk create mode 100644 features/buildroot/package/at-spi2-atk/Config.in create mode 100644 features/buildroot/package/at-spi2-atk/at-spi2-atk.hash create mode 100644 features/buildroot/package/at-spi2-atk/at-spi2-atk.mk create mode 100644 features/buildroot/package/at-spi2-core/0001-Fix-meson.build-for-meson-0.50.0.patch create mode 100644 features/buildroot/package/at-spi2-core/Config.in create mode 100644 features/buildroot/package/at-spi2-core/at-spi2-core.hash create mode 100644 features/buildroot/package/at-spi2-core/at-spi2-core.mk create mode 100644 features/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch create mode 100644 features/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch create mode 100644 features/buildroot/package/at/0003-Makefile.in-make-install-fix.patch create mode 100644 features/buildroot/package/at/0004-getloadavg.c-fix.patch create mode 100644 features/buildroot/package/at/0005-parsetime.l-include-config-h.patch create mode 100644 features/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch create mode 100644 features/buildroot/package/at/Config.in create mode 100644 features/buildroot/package/at/S99at create mode 100644 features/buildroot/package/at/at.hash create mode 100644 features/buildroot/package/at/at.mk create mode 100644 features/buildroot/package/atest/Config.in create mode 100644 features/buildroot/package/atest/atest.hash create mode 100644 features/buildroot/package/atest/atest.mk create mode 100644 features/buildroot/package/atf/Config.in create mode 100644 features/buildroot/package/atf/atf.hash create mode 100644 features/buildroot/package/atf/atf.mk create mode 100644 features/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch create mode 100644 features/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch create mode 100644 features/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch create mode 100644 features/buildroot/package/atftp/Config.in create mode 100644 features/buildroot/package/atftp/atftp.hash create mode 100644 features/buildroot/package/atftp/atftp.mk create mode 100644 features/buildroot/package/atk/Config.in create mode 100644 features/buildroot/package/atk/atk.hash create mode 100644 features/buildroot/package/atk/atk.mk create mode 100644 features/buildroot/package/atkmm/Config.in create mode 100644 features/buildroot/package/atkmm/atkmm.hash create mode 100644 features/buildroot/package/atkmm/atkmm.mk create mode 100644 features/buildroot/package/atop/Config.in create mode 100644 features/buildroot/package/atop/atop.hash create mode 100644 features/buildroot/package/atop/atop.mk create mode 100644 features/buildroot/package/attr/0001-build-with-older-GCCs.patch create mode 100644 features/buildroot/package/attr/0002-Switch-back-to-syscall.patch create mode 100644 features/buildroot/package/attr/Config.in create mode 100644 features/buildroot/package/attr/attr.hash create mode 100644 features/buildroot/package/attr/attr.mk create mode 100644 features/buildroot/package/aubio/0001-Fix-build-with-FFmpeg-4.0.patch create mode 100644 features/buildroot/package/aubio/Config.in create mode 100644 features/buildroot/package/aubio/aubio.hash create mode 100644 features/buildroot/package/aubio/aubio.mk create mode 100644 features/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch create mode 100644 features/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch create mode 100644 features/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch create mode 100644 features/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch create mode 100644 features/buildroot/package/audiofile/0005-Check-for-multiplication-overflow-in-sfconvert.patch create mode 100644 features/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch create mode 100644 features/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch create mode 100644 features/buildroot/package/audiofile/0008-CVE-2015-7747.patch create mode 100644 features/buildroot/package/audiofile/0009-Fix-static-linking-with-libsndfile.patch create mode 100644 features/buildroot/package/audiofile/Config.in create mode 100644 features/buildroot/package/audiofile/audiofile.hash create mode 100644 features/buildroot/package/audiofile/audiofile.mk create mode 100644 features/buildroot/package/audit/0001-Fix-audispd-path-in-auditd.conf.patch create mode 100644 features/buildroot/package/audit/Config.in create mode 100644 features/buildroot/package/audit/S02auditd create mode 100644 features/buildroot/package/audit/audit.hash create mode 100644 features/buildroot/package/audit/audit.mk create mode 100644 features/buildroot/package/audit/audit_tmpfiles.conf create mode 100644 features/buildroot/package/aufs-util/0001-remove-user-settings.patch create mode 100644 features/buildroot/package/aufs-util/0002-no-check-ver.patch create mode 100644 features/buildroot/package/aufs-util/0003-no-strip-lib.patch create mode 100644 features/buildroot/package/aufs-util/Config.in create mode 100644 features/buildroot/package/aufs-util/aufs-util.mk create mode 100644 features/buildroot/package/aufs/Config.in create mode 100644 features/buildroot/package/aufs/aufs.mk create mode 100644 features/buildroot/package/augeas/Config.in create mode 100644 features/buildroot/package/augeas/augeas.hash create mode 100644 features/buildroot/package/augeas/augeas.mk create mode 100644 features/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch create mode 100644 features/buildroot/package/aumix/Config.in create mode 100644 features/buildroot/package/aumix/aumix.hash create mode 100644 features/buildroot/package/aumix/aumix.mk create mode 100644 features/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch create mode 100644 features/buildroot/package/autoconf-archive/autoconf-archive.hash create mode 100644 features/buildroot/package/autoconf-archive/autoconf-archive.mk create mode 100644 features/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch create mode 100644 features/buildroot/package/autoconf/autoconf.hash create mode 100644 features/buildroot/package/autoconf/autoconf.mk create mode 100644 features/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch create mode 100644 features/buildroot/package/autofs/Config.in create mode 100644 features/buildroot/package/autofs/autofs.hash create mode 100644 features/buildroot/package/autofs/autofs.mk create mode 100644 features/buildroot/package/automake/0001-noman.patch create mode 100644 features/buildroot/package/automake/automake.hash create mode 100644 features/buildroot/package/automake/automake.mk create mode 100644 features/buildroot/package/automake/gtk-doc.m4 create mode 100644 features/buildroot/package/autossh/Config.in create mode 100644 features/buildroot/package/autossh/autossh.hash create mode 100644 features/buildroot/package/autossh/autossh.mk create mode 100644 features/buildroot/package/avahi/0001-Drop-legacy-unicast-queries-from-address-not-on-loca.patch create mode 100644 features/buildroot/package/avahi/Config.in create mode 100644 features/buildroot/package/avahi/S05avahi-setup.sh create mode 100644 features/buildroot/package/avahi/S50avahi-daemon create mode 100644 features/buildroot/package/avahi/avahi.hash create mode 100644 features/buildroot/package/avahi/avahi.mk create mode 100644 features/buildroot/package/avahi/avahi_sysusers.conf create mode 100644 features/buildroot/package/avahi/avahi_tmpfiles.conf create mode 100644 features/buildroot/package/avrdude/Config.in create mode 100644 features/buildroot/package/avrdude/avrdude.hash create mode 100644 features/buildroot/package/avrdude/avrdude.mk create mode 100644 features/buildroot/package/axel/Config.in create mode 100644 features/buildroot/package/axel/axel.hash create mode 100644 features/buildroot/package/axel/axel.mk create mode 100644 features/buildroot/package/axfsutils/axfsutils.hash create mode 100644 features/buildroot/package/axfsutils/axfsutils.mk create mode 100644 features/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch create mode 100644 features/buildroot/package/azmq/Config.in create mode 100644 features/buildroot/package/azmq/azmq.hash create mode 100644 features/buildroot/package/azmq/azmq.mk create mode 100644 features/buildroot/package/azure-iot-sdk-c/Config.in create mode 100644 features/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk create mode 100644 features/buildroot/package/b43-firmware/Config.in create mode 100644 features/buildroot/package/b43-firmware/b43-firmware.hash create mode 100644 features/buildroot/package/b43-firmware/b43-firmware.mk create mode 100644 features/buildroot/package/b43-fwcutter/b43-fwcutter.hash create mode 100644 features/buildroot/package/b43-fwcutter/b43-fwcutter.mk create mode 100644 features/buildroot/package/babeld/Config.in create mode 100644 features/buildroot/package/babeld/S50babeld create mode 100644 features/buildroot/package/babeld/babeld.hash create mode 100644 features/buildroot/package/babeld/babeld.mk create mode 100644 features/buildroot/package/babeld/babeld.service create mode 100644 features/buildroot/package/bandwidthd/Config.in create mode 100644 features/buildroot/package/bandwidthd/bandwidthd.hash create mode 100644 features/buildroot/package/bandwidthd/bandwidthd.mk create mode 100644 features/buildroot/package/bandwidthd/bandwidthd.service create mode 100644 features/buildroot/package/bash-completion/0001-completions-Makefile.am-Use-install-data-hook-not-in.patch create mode 100644 features/buildroot/package/bash-completion/Config.in create mode 100644 features/buildroot/package/bash-completion/bash-completion.hash create mode 100644 features/buildroot/package/bash-completion/bash-completion.mk create mode 100644 features/buildroot/package/bash/0001-bash44-019.patch create mode 100644 features/buildroot/package/bash/0002-bash44-020.patch create mode 100644 features/buildroot/package/bash/0003-bash44-021.patch create mode 100644 features/buildroot/package/bash/0004-bash44-022.patch create mode 100644 features/buildroot/package/bash/0005-bash44-023.patch create mode 100644 features/buildroot/package/bash/Config.in create mode 100644 features/buildroot/package/bash/bash.hash create mode 100644 features/buildroot/package/bash/bash.mk create mode 100644 features/buildroot/package/batctl/Config.in create mode 100644 features/buildroot/package/batctl/batctl.hash create mode 100644 features/buildroot/package/batctl/batctl.mk create mode 100644 features/buildroot/package/batman-adv/Config.in create mode 100644 features/buildroot/package/batman-adv/batman-adv.hash create mode 100644 features/buildroot/package/batman-adv/batman-adv.mk create mode 100644 features/buildroot/package/bats-core/Config.in create mode 100644 features/buildroot/package/bats-core/bats-core.hash create mode 100644 features/buildroot/package/bats-core/bats-core.mk create mode 100644 features/buildroot/package/bayer2rgb-neon/Config.in create mode 100644 features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.hash create mode 100644 features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.mk create mode 100644 features/buildroot/package/bc/01_array_initialize.patch create mode 100644 features/buildroot/package/bc/02_notice_read_write_errors.patch create mode 100644 features/buildroot/package/bc/03_use_appropiate_makeinfo.patch create mode 100644 features/buildroot/package/bc/Config.in create mode 100644 features/buildroot/package/bc/bc.hash create mode 100644 features/buildroot/package/bc/bc.mk create mode 100644 features/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch create mode 100644 features/buildroot/package/bcache-tools/Config.in create mode 100644 features/buildroot/package/bcache-tools/bcache-tools.hash create mode 100644 features/buildroot/package/bcache-tools/bcache-tools.mk create mode 100644 features/buildroot/package/bcg729/Config.in create mode 100644 features/buildroot/package/bcg729/bcg729.hash create mode 100644 features/buildroot/package/bcg729/bcg729.mk create mode 100644 features/buildroot/package/bcm2835/Config.in create mode 100644 features/buildroot/package/bcm2835/bcm2835.hash create mode 100644 features/buildroot/package/bcm2835/bcm2835.mk create mode 100644 features/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch create mode 100644 features/buildroot/package/bctoolbox/Config.in create mode 100644 features/buildroot/package/bctoolbox/bctoolbox.hash create mode 100644 features/buildroot/package/bctoolbox/bctoolbox.mk create mode 100644 features/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch create mode 100644 features/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch create mode 100644 features/buildroot/package/bcusdk/Config.in create mode 100644 features/buildroot/package/bcusdk/bcusdk.hash create mode 100644 features/buildroot/package/bcusdk/bcusdk.mk create mode 100644 features/buildroot/package/bdwgc/0001-fix-link-with-of-bdw-gc-with-a-system-atomic_ops.patch create mode 100644 features/buildroot/package/bdwgc/Config.in create mode 100644 features/buildroot/package/bdwgc/bdwgc.hash create mode 100644 features/buildroot/package/bdwgc/bdwgc.mk create mode 100644 features/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch create mode 100644 features/buildroot/package/beecrypt/0002-build-system.patch create mode 100644 features/buildroot/package/beecrypt/0003-don-t-check-for-cplusplus-compiler.patch create mode 100644 features/buildroot/package/beecrypt/Config.in create mode 100644 features/buildroot/package/beecrypt/beecrypt.hash create mode 100644 features/buildroot/package/beecrypt/beecrypt.mk create mode 100644 features/buildroot/package/bellagio/0001-drop-werror.patch create mode 100644 features/buildroot/package/bellagio/0002-dynamicloader-linking.patch create mode 100644 features/buildroot/package/bellagio/0003-parallel-build.patch create mode 100644 features/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch create mode 100644 features/buildroot/package/bellagio/0005-fix-doc-installation-path.patch create mode 100644 features/buildroot/package/bellagio/Config.in create mode 100644 features/buildroot/package/bellagio/bellagio.hash create mode 100644 features/buildroot/package/bellagio/bellagio.mk create mode 100644 features/buildroot/package/benejson/0001-c-std.patch create mode 100644 features/buildroot/package/benejson/Config.in create mode 100644 features/buildroot/package/benejson/benejson.hash create mode 100644 features/buildroot/package/benejson/benejson.mk create mode 100644 features/buildroot/package/berkeleydb/0001-cwd-db_config.patch create mode 100644 features/buildroot/package/berkeleydb/0002-atomic_compare_exchange.patch create mode 100644 features/buildroot/package/berkeleydb/Config.in create mode 100644 features/buildroot/package/berkeleydb/berkeleydb.hash create mode 100644 features/buildroot/package/berkeleydb/berkeleydb.mk create mode 100644 features/buildroot/package/bind/0001-cross.patch create mode 100644 features/buildroot/package/bind/0002-Replace-atomic-operations-in-bin-named-client.c-with.patch create mode 100644 features/buildroot/package/bind/0002-dlz_open_driver.c-fix-build-without-dlfcn.h.patch create mode 100644 features/buildroot/package/bind/Config.in create mode 100644 features/buildroot/package/bind/S81named create mode 100644 features/buildroot/package/bind/bind.hash create mode 100644 features/buildroot/package/bind/bind.mk create mode 100644 features/buildroot/package/bind/named.service create mode 100644 features/buildroot/package/binutils/2.30/0001-sh-conf.patch create mode 100644 features/buildroot/package/binutils/2.30/0002-ld-makefile.patch create mode 100644 features/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch create mode 100644 features/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch create mode 100644 features/buildroot/package/binutils/2.30/0005-poison-system-directories.patch create mode 100644 features/buildroot/package/binutils/2.30/0006-ARC-Refactored-location-where-GOT-information-is-col.patch create mode 100644 features/buildroot/package/binutils/2.30/0007-ARC-Improved-robustness.-Return-FALSE-in-case-of-NUL.patch create mode 100644 features/buildroot/package/binutils/2.30/0008-ARC-Make-sure-global-symbol-is-not-an-indirect-or-wa.patch create mode 100644 features/buildroot/package/binutils/2.30/0009-ARC-PLT-information-was-still-being-generated-when-s.patch create mode 100644 features/buildroot/package/binutils/2.30/0010-gas-use-literals-const16-for-xtensa-loop-relaxation.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0001-sh-conf.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0005-poison-system-directories.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0006-Refactored-location-where-GOT-information-is-collect.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0007-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0008-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0009-PLT-information-was-still-being-generated-when-symbo.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0010-xtensa-fix-relaxation-of-undefined-weak-references-i.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0011-xtensa-move-dynamic-relocations-sections-consistency.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0012-x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0013-x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0014-x86-Properly-add-X86_ISA_1_NEEDED-property.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0015-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0016-gas-use-literals-const16-for-xtensa-loop-relaxation.patch create mode 100644 features/buildroot/package/binutils/2.31.1/0017-xtensa-gas-put-.literal_position-at-section-start.patch create mode 100644 features/buildroot/package/binutils/2.32/0001-sh-conf.patch create mode 100644 features/buildroot/package/binutils/2.32/0002-poison-system-directories.patch create mode 100644 features/buildroot/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch create mode 100644 features/buildroot/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch create mode 100644 features/buildroot/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch create mode 100644 features/buildroot/package/binutils/Config.in create mode 100644 features/buildroot/package/binutils/Config.in.host create mode 100644 features/buildroot/package/binutils/arc-2019.03-release/0001-poison-system-directories.patch create mode 100644 features/buildroot/package/binutils/binutils.hash create mode 100644 features/buildroot/package/binutils/binutils.mk create mode 100644 features/buildroot/package/biosdevname/Config.in create mode 100644 features/buildroot/package/biosdevname/biosdevname.hash create mode 100644 features/buildroot/package/biosdevname/biosdevname.mk create mode 100644 features/buildroot/package/bird/Config.in create mode 100644 features/buildroot/package/bird/bird.hash create mode 100644 features/buildroot/package/bird/bird.mk create mode 100644 features/buildroot/package/bison/bison.hash create mode 100644 features/buildroot/package/bison/bison.mk create mode 100644 features/buildroot/package/bitstream-vera/Config.in create mode 100644 features/buildroot/package/bitstream-vera/bitstream-vera.hash create mode 100644 features/buildroot/package/bitstream-vera/bitstream-vera.mk create mode 100644 features/buildroot/package/bitstream/Config.in create mode 100644 features/buildroot/package/bitstream/bitstream.hash create mode 100644 features/buildroot/package/bitstream/bitstream.mk create mode 100644 features/buildroot/package/blktrace/Config.in create mode 100644 features/buildroot/package/blktrace/blktrace.hash create mode 100644 features/buildroot/package/blktrace/blktrace.mk create mode 100644 features/buildroot/package/bluez-alsa/Config.in create mode 100644 features/buildroot/package/bluez-alsa/bluez-alsa.hash create mode 100644 features/buildroot/package/bluez-alsa/bluez-alsa.mk create mode 100644 features/buildroot/package/bluez-tools/Config.in create mode 100644 features/buildroot/package/bluez-tools/bluez-tools.hash create mode 100644 features/buildroot/package/bluez-tools/bluez-tools.mk create mode 100644 features/buildroot/package/bluez5_utils-headers/Config.in create mode 120000 features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.hash create mode 100644 features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.mk create mode 100644 features/buildroot/package/bluez5_utils/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch create mode 100644 features/buildroot/package/bluez5_utils/Config.in create mode 100644 features/buildroot/package/bluez5_utils/bluez5_utils.hash create mode 100644 features/buildroot/package/bluez5_utils/bluez5_utils.mk create mode 100644 features/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch create mode 100644 features/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch create mode 100644 features/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch create mode 100644 features/buildroot/package/bluez_utils/0004-test-add-missing-header.patch create mode 100644 features/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch create mode 100644 features/buildroot/package/bluez_utils/0006-tools-Fix-build-after-y2038-changes-in-glibc.patch create mode 100644 features/buildroot/package/bluez_utils/Config.in create mode 100644 features/buildroot/package/bluez_utils/bluez_utils.hash create mode 100644 features/buildroot/package/bluez_utils/bluez_utils.mk create mode 100644 features/buildroot/package/bmon/Config.in create mode 100644 features/buildroot/package/bmon/bmon.hash create mode 100644 features/buildroot/package/bmon/bmon.mk create mode 100644 features/buildroot/package/boa/0001-use-name-max.patch create mode 100644 features/buildroot/package/boa/Config.in create mode 100644 features/buildroot/package/boa/boa.conf create mode 100644 features/buildroot/package/boa/boa.hash create mode 100644 features/buildroot/package/boa/boa.mk create mode 100644 features/buildroot/package/boa/mime.types create mode 100644 features/buildroot/package/boinc/Config.in create mode 100644 features/buildroot/package/boinc/S99boinc-client create mode 100644 features/buildroot/package/boinc/boinc.hash create mode 100644 features/buildroot/package/boinc/boinc.mk create mode 100644 features/buildroot/package/bonnie/Config.in create mode 100644 features/buildroot/package/bonnie/bonnie.hash create mode 100644 features/buildroot/package/bonnie/bonnie.mk create mode 100644 features/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch create mode 100644 features/buildroot/package/boost/0002-fix-uclibc-eventfd.patch create mode 100644 features/buildroot/package/boost/0003-fenv.patch create mode 100644 features/buildroot/package/boost/0004-workaround-musl-bug.patch create mode 100644 features/buildroot/package/boost/Config.in create mode 100644 features/buildroot/package/boost/boost.hash create mode 100644 features/buildroot/package/boost/boost.mk create mode 100644 features/buildroot/package/bootstrap/Config.in create mode 100644 features/buildroot/package/bootstrap/bootstrap.hash create mode 100644 features/buildroot/package/bootstrap/bootstrap.mk create mode 100644 features/buildroot/package/botan/Config.in create mode 100644 features/buildroot/package/botan/botan.hash create mode 100644 features/buildroot/package/botan/botan.mk create mode 100644 features/buildroot/package/brcm-patchram-plus/Config.in create mode 100644 features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.hash create mode 100644 features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.mk create mode 100644 features/buildroot/package/brickd/Config.in create mode 100644 features/buildroot/package/brickd/S70brickd create mode 100644 features/buildroot/package/brickd/brickd.hash create mode 100644 features/buildroot/package/brickd/brickd.mk create mode 100644 features/buildroot/package/bridge-utils/0001-build-system.patch create mode 100644 features/buildroot/package/bridge-utils/Config.in create mode 100644 features/buildroot/package/bridge-utils/bridge-utils.hash create mode 100644 features/buildroot/package/bridge-utils/bridge-utils.mk create mode 100644 features/buildroot/package/brltty/0001-buildsys-fix-cross-compilation.patch create mode 100644 features/buildroot/package/brltty/0002-Fix-linking-error-on-mips64el.patch create mode 100644 features/buildroot/package/brltty/Config.in create mode 100644 features/buildroot/package/brltty/S10brltty create mode 100644 features/buildroot/package/brltty/brltty.hash create mode 100644 features/buildroot/package/brltty/brltty.mk create mode 100644 features/buildroot/package/brltty/brltty.service create mode 100644 features/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch create mode 100644 features/buildroot/package/brotli/Config.in create mode 100644 features/buildroot/package/brotli/brotli.hash create mode 100644 features/buildroot/package/brotli/brotli.mk create mode 100644 features/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch create mode 100644 features/buildroot/package/bsdiff/Config.in create mode 100644 features/buildroot/package/bsdiff/bsdiff.hash create mode 100644 features/buildroot/package/bsdiff/bsdiff.mk create mode 100644 features/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch create mode 100644 features/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch create mode 100644 features/buildroot/package/btrfs-progs/Config.in create mode 100644 features/buildroot/package/btrfs-progs/Config.in.host create mode 100644 features/buildroot/package/btrfs-progs/btrfs-progs.hash create mode 100644 features/buildroot/package/btrfs-progs/btrfs-progs.mk create mode 100644 features/buildroot/package/bullet/Config.in create mode 100644 features/buildroot/package/bullet/bullet.hash create mode 100644 features/buildroot/package/bullet/bullet.mk create mode 100644 features/buildroot/package/bustle/Config.in create mode 100644 features/buildroot/package/bustle/bustle.hash create mode 100644 features/buildroot/package/bustle/bustle.mk create mode 100644 features/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch create mode 100644 features/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch create mode 100644 features/buildroot/package/busybox/Config.in create mode 100644 features/buildroot/package/busybox/S01syslogd create mode 100644 features/buildroot/package/busybox/S02klogd create mode 100644 features/buildroot/package/busybox/S10mdev create mode 100644 features/buildroot/package/busybox/S15watchdog create mode 100644 features/buildroot/package/busybox/S50telnet create mode 100644 features/buildroot/package/busybox/busybox-minimal.config create mode 100644 features/buildroot/package/busybox/busybox.config create mode 100644 features/buildroot/package/busybox/busybox.hash create mode 100644 features/buildroot/package/busybox/busybox.mk create mode 100644 features/buildroot/package/busybox/inittab create mode 100644 features/buildroot/package/busybox/mdev.conf create mode 100755 features/buildroot/package/busybox/udhcpc.script create mode 100644 features/buildroot/package/bwm-ng/Config.in create mode 100644 features/buildroot/package/bwm-ng/bwm-ng.hash create mode 100644 features/buildroot/package/bwm-ng/bwm-ng.mk create mode 100644 features/buildroot/package/bzip2/0001-build-objects-twice.patch create mode 100644 features/buildroot/package/bzip2/0002-improve-build-system.patch create mode 100644 features/buildroot/package/bzip2/0003-Make-sure-nSelectors-is-not-out-of-range.patch create mode 100644 features/buildroot/package/bzip2/Config.in create mode 100644 features/buildroot/package/bzip2/bzip2.hash create mode 100644 features/buildroot/package/bzip2/bzip2.mk create mode 100644 features/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch create mode 100644 features/buildroot/package/c-ares/Config.in create mode 100644 features/buildroot/package/c-ares/c-ares.hash create mode 100644 features/buildroot/package/c-ares/c-ares.mk create mode 100644 features/buildroot/package/c-capnproto/Config.in create mode 100644 features/buildroot/package/c-capnproto/c-capnproto.hash create mode 100644 features/buildroot/package/c-capnproto/c-capnproto.mk create mode 100644 features/buildroot/package/c-icap-modules/Config.in create mode 100644 features/buildroot/package/c-icap-modules/c-icap-modules.hash create mode 100644 features/buildroot/package/c-icap-modules/c-icap-modules.mk create mode 100644 features/buildroot/package/c-icap/Config.in create mode 100644 features/buildroot/package/c-icap/S96cicap create mode 100644 features/buildroot/package/c-icap/c-icap.hash create mode 100644 features/buildroot/package/c-icap/c-icap.mk create mode 100644 features/buildroot/package/c-periphery/Config.in create mode 100644 features/buildroot/package/c-periphery/c-periphery.hash create mode 100644 features/buildroot/package/c-periphery/c-periphery.mk create mode 100644 features/buildroot/package/ca-certificates/Config.in create mode 100644 features/buildroot/package/ca-certificates/ca-certificates.hash create mode 100644 features/buildroot/package/ca-certificates/ca-certificates.mk create mode 100644 features/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch create mode 100644 features/buildroot/package/cache-calibrator/Config.in create mode 100644 features/buildroot/package/cache-calibrator/cache-calibrator.hash create mode 100644 features/buildroot/package/cache-calibrator/cache-calibrator.mk create mode 100644 features/buildroot/package/cairo/0001-fix-nofork-build.patch create mode 100644 features/buildroot/package/cairo/Config.in create mode 100644 features/buildroot/package/cairo/cairo.hash create mode 100644 features/buildroot/package/cairo/cairo.mk create mode 100644 features/buildroot/package/cairomm/Config.in create mode 100644 features/buildroot/package/cairomm/cairomm.hash create mode 100644 features/buildroot/package/cairomm/cairomm.mk create mode 100644 features/buildroot/package/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch create mode 100644 features/buildroot/package/can-utils/Config.in create mode 100644 features/buildroot/package/can-utils/can-utils.hash create mode 100644 features/buildroot/package/can-utils/can-utils.mk create mode 100644 features/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch create mode 100644 features/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch create mode 100644 features/buildroot/package/canfestival/Config.in create mode 100644 features/buildroot/package/canfestival/canfestival.hash create mode 100644 features/buildroot/package/canfestival/canfestival.mk create mode 100644 features/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch create mode 100644 features/buildroot/package/cannelloni/Config.in create mode 100644 features/buildroot/package/cannelloni/cannelloni.hash create mode 100644 features/buildroot/package/cannelloni/cannelloni.mk create mode 100644 features/buildroot/package/cantarell/Config.in create mode 100644 features/buildroot/package/cantarell/cantarell.hash create mode 100644 features/buildroot/package/cantarell/cantarell.mk create mode 100644 features/buildroot/package/capnproto/0001-Do-not-use-execinfo-h-with-uclibc.patch create mode 100644 features/buildroot/package/capnproto/Config.in create mode 100644 features/buildroot/package/capnproto/capnproto.hash create mode 100644 features/buildroot/package/capnproto/capnproto.mk create mode 100644 features/buildroot/package/cargo-bin/cargo-bin.hash create mode 100644 features/buildroot/package/cargo-bin/cargo-bin.mk create mode 100644 features/buildroot/package/cargo/Config.in.host create mode 100644 features/buildroot/package/cargo/cargo.hash create mode 100644 features/buildroot/package/cargo/cargo.mk create mode 100644 features/buildroot/package/cargo/config.in create mode 100644 features/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch create mode 100644 features/buildroot/package/cbootimage/Config.in create mode 100644 features/buildroot/package/cbootimage/Config.in.host create mode 100644 features/buildroot/package/cbootimage/cbootimage.hash create mode 100644 features/buildroot/package/cbootimage/cbootimage.mk create mode 100644 features/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch create mode 100644 features/buildroot/package/cc-tool/0002-boost-m4.patch create mode 100644 features/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch create mode 100644 features/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch create mode 100644 features/buildroot/package/cc-tool/Config.in create mode 100644 features/buildroot/package/cc-tool/cc-tool.hash create mode 100644 features/buildroot/package/cc-tool/cc-tool.mk create mode 100644 features/buildroot/package/ccache/ccache.hash create mode 100644 features/buildroot/package/ccache/ccache.mk create mode 100644 features/buildroot/package/ccid/Config.in create mode 100644 features/buildroot/package/ccid/ccid.hash create mode 100644 features/buildroot/package/ccid/ccid.mk create mode 100644 features/buildroot/package/ccrypt/Config.in create mode 100644 features/buildroot/package/ccrypt/ccrypt.hash create mode 100644 features/buildroot/package/ccrypt/ccrypt.mk create mode 100644 features/buildroot/package/cdrkit/0001-no-rcmd.patch create mode 100644 features/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch create mode 100644 features/buildroot/package/cdrkit/Config.in create mode 100644 features/buildroot/package/cdrkit/cdrkit.hash create mode 100644 features/buildroot/package/cdrkit/cdrkit.mk create mode 100644 features/buildroot/package/cegui06/0001-stddef.h.patch create mode 100644 features/buildroot/package/cegui06/Config.in create mode 100644 features/buildroot/package/cegui06/cegui06.hash create mode 100644 features/buildroot/package/cegui06/cegui06.mk create mode 100644 features/buildroot/package/celt051/0001-fix-gnuc-prereq.patch create mode 100644 features/buildroot/package/celt051/Config.in create mode 100644 features/buildroot/package/celt051/celt051.hash create mode 100644 features/buildroot/package/celt051/celt051.mk create mode 100644 features/buildroot/package/cgic/0001-prepare_makefile.patch create mode 100644 features/buildroot/package/cgic/0002-file_enhancements.patch create mode 100644 features/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch create mode 100644 features/buildroot/package/cgic/Config.in create mode 100644 features/buildroot/package/cgic/cgic.hash create mode 100644 features/buildroot/package/cgic/cgic.mk create mode 100644 features/buildroot/package/cgilua/Config.in create mode 100644 features/buildroot/package/cgilua/cgilua.hash create mode 100644 features/buildroot/package/cgilua/cgilua.mk create mode 100644 features/buildroot/package/cgroupfs-mount/Config.in create mode 100644 features/buildroot/package/cgroupfs-mount/S30cgroupfs create mode 100644 features/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash create mode 100644 features/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk create mode 100644 features/buildroot/package/check/Config.in create mode 100644 features/buildroot/package/check/check.hash create mode 100644 features/buildroot/package/check/check.mk create mode 100644 features/buildroot/package/checkpolicy/Config.in create mode 100644 features/buildroot/package/checkpolicy/Config.in.host create mode 100644 features/buildroot/package/checkpolicy/checkpolicy.hash create mode 100644 features/buildroot/package/checkpolicy/checkpolicy.mk create mode 100644 features/buildroot/package/checksec/0001-checksec-Fixed-issue-with-relative-path.patch create mode 100644 features/buildroot/package/checksec/Config.in.host create mode 100644 features/buildroot/package/checksec/checksec.hash create mode 100644 features/buildroot/package/checksec/checksec.mk create mode 100644 features/buildroot/package/chipmunk/0001-Fix-build-failure-on-musl.patch create mode 100644 features/buildroot/package/chipmunk/Config.in create mode 100644 features/buildroot/package/chipmunk/chipmunk.hash create mode 100644 features/buildroot/package/chipmunk/chipmunk.mk create mode 100644 features/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch create mode 100644 features/buildroot/package/chocolate-doom/Config.in create mode 100644 features/buildroot/package/chocolate-doom/chocolate-doom.hash create mode 100644 features/buildroot/package/chocolate-doom/chocolate-doom.mk create mode 100644 features/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch create mode 100644 features/buildroot/package/chrony/0002-hash-include-util.h-for-MIN-macro.patch create mode 100644 features/buildroot/package/chrony/Config.in create mode 100644 features/buildroot/package/chrony/S49chrony create mode 100644 features/buildroot/package/chrony/chrony.hash create mode 100644 features/buildroot/package/chrony/chrony.mk create mode 100644 features/buildroot/package/chrony/chrony.service create mode 100644 features/buildroot/package/cifs-utils/Config.in create mode 100644 features/buildroot/package/cifs-utils/cifs-utils.hash create mode 100644 features/buildroot/package/cifs-utils/cifs-utils.mk create mode 100644 features/buildroot/package/circus/0001-circus-tests-rename-async-argument-of-_create_circus.patch create mode 100644 features/buildroot/package/circus/Config.in create mode 100644 features/buildroot/package/circus/circus.hash create mode 100644 features/buildroot/package/circus/circus.mk create mode 100644 features/buildroot/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch create mode 100644 features/buildroot/package/civetweb/Config.in create mode 100644 features/buildroot/package/civetweb/civetweb.hash create mode 100644 features/buildroot/package/civetweb/civetweb.mk create mode 100644 features/buildroot/package/cjson/Config.in create mode 100644 features/buildroot/package/cjson/cjson.hash create mode 100644 features/buildroot/package/cjson/cjson.mk create mode 100644 features/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch create mode 100644 features/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch create mode 100644 features/buildroot/package/clamav/Config.in create mode 100644 features/buildroot/package/clamav/clamav.hash create mode 100644 features/buildroot/package/clamav/clamav.mk create mode 100644 features/buildroot/package/clang/Config.in create mode 100644 features/buildroot/package/clang/clang.hash create mode 100644 features/buildroot/package/clang/clang.mk create mode 100644 features/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch create mode 100644 features/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch create mode 100644 features/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch create mode 100644 features/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch create mode 100644 features/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch create mode 100644 features/buildroot/package/clapack/0006-remove-uninit-f2c.patch create mode 100644 features/buildroot/package/clapack/0007-off64-t.patch create mode 100644 features/buildroot/package/clapack/Config.in create mode 100644 features/buildroot/package/clapack/clapack.hash create mode 100644 features/buildroot/package/clapack/clapack.mk create mode 100644 features/buildroot/package/classpath/Config.in create mode 100644 features/buildroot/package/classpath/classpath.hash create mode 100644 features/buildroot/package/classpath/classpath.mk create mode 100644 features/buildroot/package/clinfo/Config.in create mode 100644 features/buildroot/package/clinfo/clinfo.hash create mode 100644 features/buildroot/package/clinfo/clinfo.mk create mode 100644 features/buildroot/package/cloop/0001-cflags.patch create mode 100644 features/buildroot/package/cloop/cloop.hash create mode 100644 features/buildroot/package/cloop/cloop.mk create mode 100644 features/buildroot/package/cmake/0001-rename_cmake_rootfile.patch create mode 100644 features/buildroot/package/cmake/0002-FindLibUV-Also-check-uv-version-h-for-version-detection.patch create mode 100644 features/buildroot/package/cmake/Config.in create mode 100644 features/buildroot/package/cmake/Config.in.host create mode 100644 features/buildroot/package/cmake/cmake.hash create mode 100644 features/buildroot/package/cmake/cmake.mk create mode 100644 features/buildroot/package/cmocka/Config.in create mode 100644 features/buildroot/package/cmocka/cmocka.hash create mode 100644 features/buildroot/package/cmocka/cmocka.mk create mode 100644 features/buildroot/package/cog/Config.in create mode 100644 features/buildroot/package/cog/cog.hash create mode 100644 features/buildroot/package/cog/cog.mk create mode 100644 features/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch create mode 100644 features/buildroot/package/collectd/0002-gps-plugin-fix-build-with-newer-gpsd.patch create mode 100644 features/buildroot/package/collectd/0003-sensors-Removed-checks-for-upper-limit-of-SENSORS_AP.patch create mode 100644 features/buildroot/package/collectd/Config.in create mode 100644 features/buildroot/package/collectd/collectd.hash create mode 100644 features/buildroot/package/collectd/collectd.mk create mode 100644 features/buildroot/package/collectd/collectd.service create mode 100644 features/buildroot/package/comix-cursors/Config.in create mode 100644 features/buildroot/package/comix-cursors/comix-cursors.hash create mode 100644 features/buildroot/package/comix-cursors/comix-cursors.mk create mode 100644 features/buildroot/package/conan-gtest/Config.in create mode 100644 features/buildroot/package/conan-gtest/conan-gtest.mk create mode 100644 features/buildroot/package/conan-zlib/Config.in create mode 100644 features/buildroot/package/conan-zlib/conan-zlib.mk create mode 100644 features/buildroot/package/conan/Config.in create mode 100644 features/buildroot/package/connman-gtk/Config.in create mode 100644 features/buildroot/package/connman-gtk/connman-gtk.hash create mode 100644 features/buildroot/package/connman-gtk/connman-gtk.mk create mode 100644 features/buildroot/package/connman/0001-nat-build-failure.patch create mode 100644 features/buildroot/package/connman/Config.in create mode 100644 features/buildroot/package/connman/S45connman create mode 100644 features/buildroot/package/connman/connman.hash create mode 100644 features/buildroot/package/connman/connman.mk create mode 100644 features/buildroot/package/conntrack-tools/Config.in create mode 100644 features/buildroot/package/conntrack-tools/conntrack-tools.hash create mode 100644 features/buildroot/package/conntrack-tools/conntrack-tools.mk create mode 100644 features/buildroot/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch create mode 100644 features/buildroot/package/copas/Config.in create mode 100644 features/buildroot/package/copas/copas.hash create mode 100644 features/buildroot/package/copas/copas.mk create mode 100644 features/buildroot/package/coreutils/0001-fix-for-dummy-man-usage.patch create mode 100644 features/buildroot/package/coreutils/Config.in create mode 100644 features/buildroot/package/coreutils/coreutils.hash create mode 100644 features/buildroot/package/coreutils/coreutils.mk create mode 100644 features/buildroot/package/corkscrew/Config.in create mode 100644 features/buildroot/package/corkscrew/corkscrew.hash create mode 100644 features/buildroot/package/corkscrew/corkscrew.mk create mode 100644 features/buildroot/package/coxpcall/Config.in create mode 100644 features/buildroot/package/coxpcall/coxpcall.hash create mode 100644 features/buildroot/package/coxpcall/coxpcall.mk create mode 100644 features/buildroot/package/cpio/0001-fix-CVE-2016-2037.patch create mode 100644 features/buildroot/package/cpio/Config.in create mode 100644 features/buildroot/package/cpio/cpio.hash create mode 100644 features/buildroot/package/cpio/cpio.mk create mode 100644 features/buildroot/package/cppcms/Config.in create mode 100644 features/buildroot/package/cppcms/cppcms.hash create mode 100644 features/buildroot/package/cppcms/cppcms.mk create mode 100644 features/buildroot/package/cppdb/0001-mysql-library-suffix.patch create mode 100644 features/buildroot/package/cppdb/Config.in create mode 100644 features/buildroot/package/cppdb/cppdb.hash create mode 100644 features/buildroot/package/cppdb/cppdb.mk create mode 100644 features/buildroot/package/cppunit/Config.in create mode 100644 features/buildroot/package/cppunit/cppunit.hash create mode 100644 features/buildroot/package/cppunit/cppunit.mk create mode 100644 features/buildroot/package/cppzmq/0001-fix-install-without-static-libzmq.patch create mode 100644 features/buildroot/package/cppzmq/Config.in create mode 100644 features/buildroot/package/cppzmq/cppzmq.hash create mode 100644 features/buildroot/package/cppzmq/cppzmq.mk create mode 100644 features/buildroot/package/cpuload/Config.in create mode 100644 features/buildroot/package/cpuload/cpuload.hash create mode 100644 features/buildroot/package/cpuload/cpuload.mk create mode 100644 features/buildroot/package/cracklib/0001-Force-grep-to-treat-the-input-as-text-when-formattin.patch create mode 100644 features/buildroot/package/cracklib/Config.in create mode 100644 features/buildroot/package/cracklib/cracklib.hash create mode 100644 features/buildroot/package/cracklib/cracklib.mk create mode 100644 features/buildroot/package/cramfs/Config.in create mode 100644 features/buildroot/package/cramfs/Config.in.host create mode 100644 features/buildroot/package/cramfs/cramfs.hash create mode 100644 features/buildroot/package/cramfs/cramfs.mk create mode 100644 features/buildroot/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch create mode 100644 features/buildroot/package/crda/0002-drop-ldconfig-call.patch create mode 100644 features/buildroot/package/crda/0003-drop-werror.patch create mode 100644 features/buildroot/package/crda/Config.in create mode 100644 features/buildroot/package/crda/crda.hash create mode 100644 features/buildroot/package/crda/crda.mk create mode 100644 features/buildroot/package/crudini/Config.in create mode 100644 features/buildroot/package/crudini/crudini.hash create mode 100644 features/buildroot/package/crudini/crudini.mk create mode 100644 features/buildroot/package/cryptodev-linux/cryptodev-linux.hash create mode 100644 features/buildroot/package/cryptodev-linux/cryptodev-linux.mk create mode 100644 features/buildroot/package/cryptodev/Config.in create mode 100644 features/buildroot/package/cryptodev/cryptodev.mk create mode 100644 features/buildroot/package/cryptopp/cryptopp.hash create mode 100644 features/buildroot/package/cryptopp/cryptopp.mk create mode 100644 features/buildroot/package/cryptsetup/0001-Remove-json_object-typedef.patch create mode 100644 features/buildroot/package/cryptsetup/Config.in create mode 100644 features/buildroot/package/cryptsetup/Config.in.host create mode 100644 features/buildroot/package/cryptsetup/cryptsetup.hash create mode 100644 features/buildroot/package/cryptsetup/cryptsetup.mk create mode 100644 features/buildroot/package/ctorrent/0001-fix-musl-build.patch create mode 100644 features/buildroot/package/ctorrent/Config.in create mode 100644 features/buildroot/package/ctorrent/ctorrent.hash create mode 100644 features/buildroot/package/ctorrent/ctorrent.mk create mode 100644 features/buildroot/package/cunit/Config.in create mode 100644 features/buildroot/package/cunit/cunit.hash create mode 100644 features/buildroot/package/cunit/cunit.mk create mode 100644 features/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch create mode 100644 features/buildroot/package/cups-filters/Config.in create mode 100644 features/buildroot/package/cups-filters/cups-filters.hash create mode 100644 features/buildroot/package/cups-filters/cups-filters.mk create mode 100644 features/buildroot/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch create mode 100644 features/buildroot/package/cups/0002-Do-not-use-genstrings.patch create mode 100644 features/buildroot/package/cups/0003-Sanitize-the-installation-process.patch create mode 100644 features/buildroot/package/cups/0004-Remove-PIE-flags-from-the-build.patch create mode 100644 features/buildroot/package/cups/0005-Use-GZIPPROG-instead-of-GZIP-to-avoid-install-issues.patch create mode 100644 features/buildroot/package/cups/Config.in create mode 100644 features/buildroot/package/cups/cups.hash create mode 100644 features/buildroot/package/cups/cups.mk create mode 100644 features/buildroot/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch create mode 100644 features/buildroot/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch create mode 100644 features/buildroot/package/curlftpfs/0003-nocache-memleak-fix.patch create mode 100644 features/buildroot/package/curlftpfs/0004-fix-musl-build-off-t.patch create mode 100644 features/buildroot/package/curlftpfs/Config.in create mode 100644 features/buildroot/package/curlftpfs/curlftpfs.hash create mode 100644 features/buildroot/package/curlftpfs/curlftpfs.mk create mode 100644 features/buildroot/package/curlpp/Config.in create mode 100644 features/buildroot/package/curlpp/curlpp.hash create mode 100644 features/buildroot/package/curlpp/curlpp.mk create mode 100644 features/buildroot/package/cutelyst/Config.in create mode 100644 features/buildroot/package/cutelyst/cutelyst.hash create mode 100644 features/buildroot/package/cutelyst/cutelyst.mk create mode 100644 features/buildroot/package/cvs/Config.in create mode 100644 features/buildroot/package/cvs/cvs.hash create mode 100644 features/buildroot/package/cvs/cvs.mk create mode 100644 features/buildroot/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch create mode 100644 features/buildroot/package/cwiid/0002-configure-make-wmgui-build-optional.patch create mode 100644 features/buildroot/package/cwiid/Config.in create mode 100644 features/buildroot/package/cwiid/cwiid.hash create mode 100644 features/buildroot/package/cwiid/cwiid.mk create mode 100644 features/buildroot/package/cxxtest/Config.in create mode 100644 features/buildroot/package/cxxtest/cxxtest.hash create mode 100644 features/buildroot/package/cxxtest/cxxtest.mk create mode 100644 features/buildroot/package/czmq/Config.in create mode 100644 features/buildroot/package/czmq/czmq.hash create mode 100644 features/buildroot/package/czmq/czmq.mk create mode 100644 features/buildroot/package/dacapo/Config.in create mode 100644 features/buildroot/package/dacapo/dacapo.hash create mode 100644 features/buildroot/package/dacapo/dacapo.mk create mode 100644 features/buildroot/package/dado/Config.in create mode 100644 features/buildroot/package/dado/dado.hash create mode 100644 features/buildroot/package/dado/dado.mk create mode 100644 features/buildroot/package/daemon/0001-fix-musl.patch create mode 100644 features/buildroot/package/daemon/Config.in create mode 100644 features/buildroot/package/daemon/daemon.hash create mode 100644 features/buildroot/package/daemon/daemon.mk create mode 100644 features/buildroot/package/dahdi-linux/Config.in create mode 100644 features/buildroot/package/dahdi-linux/dahdi-linux.hash create mode 100644 features/buildroot/package/dahdi-linux/dahdi-linux.mk create mode 100644 features/buildroot/package/dahdi-tools/0001-no-build-docs.patch create mode 100644 features/buildroot/package/dahdi-tools/0002-no-perl-manpages.patch create mode 100644 features/buildroot/package/dahdi-tools/Config.in create mode 100644 features/buildroot/package/dahdi-tools/dahdi-tools.hash create mode 100644 features/buildroot/package/dahdi-tools/dahdi-tools.mk create mode 100644 features/buildroot/package/dante/0001-fix-sparc-compile.patch create mode 100644 features/buildroot/package/dante/0002-compiler.m4-do-not-remove-g-flag.patch create mode 100644 features/buildroot/package/dante/Config.in create mode 100644 features/buildroot/package/dante/S50dante create mode 100644 features/buildroot/package/dante/dante.hash create mode 100644 features/buildroot/package/dante/dante.mk create mode 100644 features/buildroot/package/dante/dante.service create mode 100644 features/buildroot/package/daq/0001-Fix-build-against-the-musl-C-library.patch create mode 100644 features/buildroot/package/daq/Config.in create mode 100644 features/buildroot/package/daq/daq.hash create mode 100644 features/buildroot/package/daq/daq.mk create mode 100644 features/buildroot/package/darkhttpd/Config.in create mode 100644 features/buildroot/package/darkhttpd/S50darkhttpd create mode 100644 features/buildroot/package/darkhttpd/darkhttpd.hash create mode 100644 features/buildroot/package/darkhttpd/darkhttpd.mk create mode 100644 features/buildroot/package/darkhttpd/darkhttpd.service create mode 100644 features/buildroot/package/dash/0001-no-config.h-for-helpers.patch create mode 100644 features/buildroot/package/dash/Config.in create mode 100644 features/buildroot/package/dash/dash.hash create mode 100644 features/buildroot/package/dash/dash.mk create mode 100644 features/buildroot/package/davfs2/0001-src-Makefile.am-do-not-hardcode-fstack-protector-str.patch create mode 100644 features/buildroot/package/davfs2/0002-fix-iconv.patch create mode 100644 features/buildroot/package/davfs2/Config.in create mode 100644 features/buildroot/package/davfs2/davfs2.hash create mode 100644 features/buildroot/package/davfs2/davfs2.mk create mode 100644 features/buildroot/package/davici/Config.in create mode 100644 features/buildroot/package/davici/davici.hash create mode 100644 features/buildroot/package/davici/davici.mk create mode 100644 features/buildroot/package/dawgdic/Config.in create mode 100644 features/buildroot/package/dawgdic/dawgdic.hash create mode 100644 features/buildroot/package/dawgdic/dawgdic.mk create mode 100644 features/buildroot/package/dbus-cpp/0001-gcc4.7.patch create mode 100644 features/buildroot/package/dbus-cpp/0002-cross-compile-tools.patch create mode 100644 features/buildroot/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch create mode 100644 features/buildroot/package/dbus-cpp/Config.in create mode 100644 features/buildroot/package/dbus-cpp/dbus-cpp.hash create mode 100644 features/buildroot/package/dbus-cpp/dbus-cpp.mk create mode 100644 features/buildroot/package/dbus-glib/Config.in create mode 100644 features/buildroot/package/dbus-glib/dbus-glib.hash create mode 100644 features/buildroot/package/dbus-glib/dbus-glib.mk create mode 100644 features/buildroot/package/dbus-python/Config.in create mode 100644 features/buildroot/package/dbus-python/Config.in.host create mode 100644 features/buildroot/package/dbus-python/dbus-python.hash create mode 100644 features/buildroot/package/dbus-python/dbus-python.mk create mode 100644 features/buildroot/package/dbus-triggerd/Config.in create mode 100644 features/buildroot/package/dbus-triggerd/dbus-triggerd.hash create mode 100644 features/buildroot/package/dbus-triggerd/dbus-triggerd.mk create mode 100644 features/buildroot/package/dbus/Config.in create mode 100644 features/buildroot/package/dbus/S30dbus create mode 100644 features/buildroot/package/dbus/dbus.hash create mode 100644 features/buildroot/package/dbus/dbus.mk create mode 100644 features/buildroot/package/dc3dd/0001-no_man.patch create mode 100644 features/buildroot/package/dc3dd/0002-fix-autoreconf.patch create mode 100644 features/buildroot/package/dc3dd/0003-fix-for-glibc-2.28.patch create mode 100644 features/buildroot/package/dc3dd/Config.in create mode 100644 features/buildroot/package/dc3dd/dc3dd.hash create mode 100644 features/buildroot/package/dc3dd/dc3dd.mk create mode 100644 features/buildroot/package/dcron/Config.in create mode 100644 features/buildroot/package/dcron/S90dcron create mode 100644 features/buildroot/package/dcron/dcron.hash create mode 100644 features/buildroot/package/dcron/dcron.mk create mode 100644 features/buildroot/package/dcron/dcron.service create mode 100644 features/buildroot/package/ddrescue/0001-io.cc-add-stdio.h-include.patch create mode 100644 features/buildroot/package/ddrescue/Config.in create mode 100644 features/buildroot/package/ddrescue/ddrescue.hash create mode 100644 features/buildroot/package/ddrescue/ddrescue.mk create mode 100644 features/buildroot/package/debianutils/Config.in create mode 100644 features/buildroot/package/debianutils/debianutils.hash create mode 100644 features/buildroot/package/debianutils/debianutils.mk create mode 100644 features/buildroot/package/dehydrated/Config.in create mode 100644 features/buildroot/package/dehydrated/dehydrated.hash create mode 100644 features/buildroot/package/dehydrated/dehydrated.mk create mode 100644 features/buildroot/package/dejavu/Config.in create mode 100644 features/buildroot/package/dejavu/dejavu.hash create mode 100644 features/buildroot/package/dejavu/dejavu.mk create mode 100644 features/buildroot/package/devmem2/0001-be-coherent-in-type-usage.patch create mode 100644 features/buildroot/package/devmem2/Config.in create mode 100644 features/buildroot/package/devmem2/devmem2.hash create mode 100644 features/buildroot/package/devmem2/devmem2.mk create mode 100644 features/buildroot/package/dfu-util/Config.in create mode 100644 features/buildroot/package/dfu-util/Config.in.host create mode 100644 features/buildroot/package/dfu-util/dfu-util.hash create mode 100644 features/buildroot/package/dfu-util/dfu-util.mk create mode 100644 features/buildroot/package/dhcp/0001-master-Added-includes-of-new-BIND9-compatibility-headers-updated-util-bind-sh.patch create mode 100644 features/buildroot/package/dhcp/Config.in create mode 100644 features/buildroot/package/dhcp/S80dhcp-relay create mode 100644 features/buildroot/package/dhcp/S80dhcp-server create mode 100755 features/buildroot/package/dhcp/dhclient-script create mode 100644 features/buildroot/package/dhcp/dhclient.conf create mode 100644 features/buildroot/package/dhcp/dhcp.hash create mode 100644 features/buildroot/package/dhcp/dhcp.mk create mode 100644 features/buildroot/package/dhcp/dhcpd.conf create mode 100644 features/buildroot/package/dhcp/dhcpd.service create mode 100644 features/buildroot/package/dhcpcd/Config.in create mode 100644 features/buildroot/package/dhcpcd/S41dhcpcd create mode 100644 features/buildroot/package/dhcpcd/dhcpcd.hash create mode 100644 features/buildroot/package/dhcpcd/dhcpcd.mk create mode 100644 features/buildroot/package/dhcpcd/dhcpcd.service create mode 100644 features/buildroot/package/dhcpdump/0001-use-non-bsd-structures.patch create mode 100644 features/buildroot/package/dhcpdump/Config.in create mode 100644 features/buildroot/package/dhcpdump/dhcpdump.hash create mode 100644 features/buildroot/package/dhcpdump/dhcpdump.mk create mode 100644 features/buildroot/package/dhrystone/0001-cmdline-nruns.patch create mode 100644 features/buildroot/package/dhrystone/0002-HZ.patch create mode 100644 features/buildroot/package/dhrystone/0003-exit.patch create mode 100644 features/buildroot/package/dhrystone/0004-headers.patch create mode 100644 features/buildroot/package/dhrystone/0005-prototypes.patch create mode 100644 features/buildroot/package/dhrystone/Config.in create mode 100644 features/buildroot/package/dhrystone/Makefile create mode 100644 features/buildroot/package/dhrystone/dhrystone.hash create mode 100644 features/buildroot/package/dhrystone/dhrystone.mk create mode 100644 features/buildroot/package/dialog/Config.in create mode 100644 features/buildroot/package/dialog/dialog.hash create mode 100644 features/buildroot/package/dialog/dialog.mk create mode 100644 features/buildroot/package/dieharder/0001-Do-not-use-includedir-as-include-search-path-for-bui.patch create mode 100644 features/buildroot/package/dieharder/0002-Fix-missing-type-intptr_t.patch create mode 100644 features/buildroot/package/dieharder/0003-Add-_GNU_SOURCE-for-uint-and-M_PI-with-musl-libc.patch create mode 100644 features/buildroot/package/dieharder/0004-Add-static-to-inline-functions.patch create mode 100644 features/buildroot/package/dieharder/Config.in create mode 100644 features/buildroot/package/dieharder/dieharder.hash create mode 100644 features/buildroot/package/dieharder/dieharder.mk create mode 100644 features/buildroot/package/diffutils/Config.in create mode 100644 features/buildroot/package/diffutils/diffutils.hash create mode 100644 features/buildroot/package/diffutils/diffutils.mk create mode 100644 features/buildroot/package/dillo/0002-usr-local-include.patch create mode 100644 features/buildroot/package/dillo/Config.in create mode 100644 features/buildroot/package/dillo/dillo.hash create mode 100644 features/buildroot/package/dillo/dillo.mk create mode 100644 features/buildroot/package/ding-libs/Config.in create mode 100644 features/buildroot/package/ding-libs/ding-libs.hash create mode 100644 features/buildroot/package/ding-libs/ding-libs.mk create mode 100644 features/buildroot/package/directfb-examples/0001-remove-bzero.patch create mode 100644 features/buildroot/package/directfb-examples/Config.in create mode 100644 features/buildroot/package/directfb-examples/directfb-examples.hash create mode 100644 features/buildroot/package/directfb-examples/directfb-examples.mk create mode 100644 features/buildroot/package/directfb/0001-fix-missing-davinci-voodoo-header.patch create mode 100644 features/buildroot/package/directfb/0002-imlib2-config.patch create mode 100644 features/buildroot/package/directfb/0003-setregion-lock.patch create mode 100644 features/buildroot/package/directfb/0004-use-gcc-link.patch create mode 100644 features/buildroot/package/directfb/0005-add-missing-idivine-header.patch create mode 100644 features/buildroot/package/directfb/0006-fix-client-gfx_state-initialisation.patch create mode 100644 features/buildroot/package/directfb/Config.in create mode 100644 features/buildroot/package/directfb/directfb.hash create mode 100644 features/buildroot/package/directfb/directfb.mk create mode 100644 features/buildroot/package/dmalloc/0001-add-fpic.patch create mode 100644 features/buildroot/package/dmalloc/0002-mips.patch create mode 100644 features/buildroot/package/dmalloc/0003-fix-parallel-build.patch create mode 100644 features/buildroot/package/dmalloc/0004-fix-shlibs.patch create mode 100644 features/buildroot/package/dmalloc/0005-fix-strdup.patch create mode 100644 features/buildroot/package/dmalloc/0006-fix-strndup.patch create mode 100644 features/buildroot/package/dmalloc/Config.in create mode 100644 features/buildroot/package/dmalloc/dmalloc.hash create mode 100644 features/buildroot/package/dmalloc/dmalloc.mk create mode 100644 features/buildroot/package/dmidecode/0001-build-system-fixes.patch create mode 100644 features/buildroot/package/dmidecode/Config.in create mode 100644 features/buildroot/package/dmidecode/dmidecode.hash create mode 100644 features/buildroot/package/dmidecode/dmidecode.mk create mode 100644 features/buildroot/package/dmraid/0001-fix-compilation-under-musl.patch create mode 100644 features/buildroot/package/dmraid/Config.in create mode 100644 features/buildroot/package/dmraid/S20dmraid create mode 100644 features/buildroot/package/dmraid/dmraid.hash create mode 100644 features/buildroot/package/dmraid/dmraid.mk create mode 100644 features/buildroot/package/dnsmasq/0001-Makefile-fix-i18n-build-with-ubus.patch create mode 100644 features/buildroot/package/dnsmasq/0002-Fix-build-with-libnettle-3.5.patch create mode 100644 features/buildroot/package/dnsmasq/Config.in create mode 100644 features/buildroot/package/dnsmasq/S80dnsmasq create mode 100644 features/buildroot/package/dnsmasq/dnsmasq.hash create mode 100644 features/buildroot/package/dnsmasq/dnsmasq.mk create mode 100644 features/buildroot/package/doc-asciidoc.mk create mode 100644 features/buildroot/package/docker-cli/Config.in create mode 100644 features/buildroot/package/docker-cli/docker-cli.hash create mode 100644 features/buildroot/package/docker-cli/docker-cli.mk create mode 100644 features/buildroot/package/docker-compose/0001-setup.py-allow-all-recent-2.x-requests-releases.patch create mode 100644 features/buildroot/package/docker-compose/0002-Upgrade-pyyaml-to-4.2b1.patch create mode 100644 features/buildroot/package/docker-compose/Config.in create mode 100644 features/buildroot/package/docker-compose/docker-compose.hash create mode 100644 features/buildroot/package/docker-compose/docker-compose.mk create mode 100644 features/buildroot/package/docker-containerd/Config.in create mode 100644 features/buildroot/package/docker-containerd/docker-containerd.hash create mode 100644 features/buildroot/package/docker-containerd/docker-containerd.mk create mode 100644 features/buildroot/package/docker-engine/0001-Fix-faulty-runc-version-commit-scrape.patch create mode 100644 features/buildroot/package/docker-engine/Config.in create mode 100644 features/buildroot/package/docker-engine/S60dockerd create mode 100644 features/buildroot/package/docker-engine/docker-engine.hash create mode 100644 features/buildroot/package/docker-engine/docker-engine.mk create mode 100644 features/buildroot/package/docker-proxy/Config.in create mode 100644 features/buildroot/package/docker-proxy/docker-proxy.hash create mode 100644 features/buildroot/package/docker-proxy/docker-proxy.mk create mode 100644 features/buildroot/package/docker/Config.in create mode 100644 features/buildroot/package/docker/docker.hash create mode 100644 features/buildroot/package/docker/docker.mk create mode 100644 features/buildroot/package/domoticz/0001-appversion.default-bump-version-to-10717.patch create mode 100644 features/buildroot/package/domoticz/Config.in create mode 100644 features/buildroot/package/domoticz/S99domoticz create mode 100644 features/buildroot/package/domoticz/domoticz.hash create mode 100644 features/buildroot/package/domoticz/domoticz.mk create mode 100644 features/buildroot/package/domoticz/domoticz.service create mode 100644 features/buildroot/package/doom-wad/Config.in create mode 100644 features/buildroot/package/doom-wad/doom-wad.hash create mode 100644 features/buildroot/package/doom-wad/doom-wad.mk create mode 100644 features/buildroot/package/dos2unix/Config.in create mode 100644 features/buildroot/package/dos2unix/Config.in.host create mode 100644 features/buildroot/package/dos2unix/dos2unix.hash create mode 100644 features/buildroot/package/dos2unix/dos2unix.mk create mode 100644 features/buildroot/package/dosfstools/Config.in create mode 100644 features/buildroot/package/dosfstools/Config.in.host create mode 100644 features/buildroot/package/dosfstools/dosfstools.hash create mode 100644 features/buildroot/package/dosfstools/dosfstools.mk create mode 100644 features/buildroot/package/dovecot-pigeonhole/Config.in create mode 100644 features/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash create mode 100644 features/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk create mode 100644 features/buildroot/package/dovecot/0001-byteorder.h-fix-uclibc-build.patch create mode 100644 features/buildroot/package/dovecot/Config.in create mode 100644 features/buildroot/package/dovecot/dovecot.hash create mode 100644 features/buildroot/package/dovecot/dovecot.mk create mode 100644 features/buildroot/package/doxygen/doxygen.hash create mode 100644 features/buildroot/package/doxygen/doxygen.mk create mode 100644 features/buildroot/package/drbd-utils/Config.in create mode 100644 features/buildroot/package/drbd-utils/drbd-utils.hash create mode 100644 features/buildroot/package/drbd-utils/drbd-utils.mk create mode 100644 features/buildroot/package/dropbear/Config.in create mode 100644 features/buildroot/package/dropbear/S50dropbear create mode 100644 features/buildroot/package/dropbear/dropbear.hash create mode 100644 features/buildroot/package/dropbear/dropbear.mk create mode 100644 features/buildroot/package/dropbear/dropbear.service create mode 100644 features/buildroot/package/dropbear/etc-pam.d-sshd create mode 100644 features/buildroot/package/dropwatch/0001-binutils-2.23.1.patch create mode 100644 features/buildroot/package/dropwatch/Config.in create mode 100644 features/buildroot/package/dropwatch/dropwatch.hash create mode 100644 features/buildroot/package/dropwatch/dropwatch.mk create mode 100644 features/buildroot/package/dstat/Config.in create mode 100644 features/buildroot/package/dstat/dstat.hash create mode 100644 features/buildroot/package/dstat/dstat.mk create mode 100644 features/buildroot/package/dt-utils/Config.in create mode 100644 features/buildroot/package/dt-utils/dt-utils.hash create mode 100644 features/buildroot/package/dt-utils/dt-utils.mk create mode 100644 features/buildroot/package/dt/0001-adjust-os-symlink.patch create mode 100644 features/buildroot/package/dt/0002-dt-default-source-define.patch create mode 100644 features/buildroot/package/dt/Config.in create mode 100644 features/buildroot/package/dt/dt.hash create mode 100644 features/buildroot/package/dt/dt.mk create mode 100644 features/buildroot/package/dtach/Config.in create mode 100644 features/buildroot/package/dtach/dtach.hash create mode 100644 features/buildroot/package/dtach/dtach.mk create mode 100644 features/buildroot/package/dtc/0001-Fix-include-guards-for-older-kernel-u-boot-sources.patch create mode 100644 features/buildroot/package/dtc/0002-Makefile-Add-EXTRA_CFLAGS-variable.patch create mode 100644 features/buildroot/package/dtc/Config.in create mode 100644 features/buildroot/package/dtc/Config.in.host create mode 100644 features/buildroot/package/dtc/dtc.hash create mode 100644 features/buildroot/package/dtc/dtc.mk create mode 100644 features/buildroot/package/dtv-scan-tables/Config.in create mode 100644 features/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash create mode 100644 features/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk create mode 100644 features/buildroot/package/duktape/Config.in create mode 100644 features/buildroot/package/duktape/duktape.hash create mode 100644 features/buildroot/package/duktape/duktape.mk create mode 100644 features/buildroot/package/duma/0001-fix-cross-compilation.patch create mode 100644 features/buildroot/package/duma/0002-no-tests.patch create mode 100644 features/buildroot/package/duma/0003-fix-C++14.patch create mode 100644 features/buildroot/package/duma/Config.in create mode 100644 features/buildroot/package/duma/duma.hash create mode 100644 features/buildroot/package/duma/duma.mk create mode 100644 features/buildroot/package/dump1090/Config.in create mode 100644 features/buildroot/package/dump1090/dump1090.hash create mode 100644 features/buildroot/package/dump1090/dump1090.mk create mode 100644 features/buildroot/package/dvb-apps/0001-Fix-generate-keynames.patch create mode 100644 features/buildroot/package/dvb-apps/0002-Fix-compiler-warning-flags.patch create mode 100644 features/buildroot/package/dvb-apps/0003-handle-static-shared-only-build.patch create mode 100644 features/buildroot/package/dvb-apps/0004-Makefile-remove-test.patch create mode 100644 features/buildroot/package/dvb-apps/0005-utils-fix-build-with-kernel-headers-4.14.patch create mode 100644 features/buildroot/package/dvb-apps/Config.in create mode 100644 features/buildroot/package/dvb-apps/dvb-apps.mk create mode 100644 features/buildroot/package/dvblast/0001-missing-lm.patch create mode 100644 features/buildroot/package/dvblast/0002-fix-int-types.patch create mode 100644 features/buildroot/package/dvblast/Config.in create mode 100644 features/buildroot/package/dvblast/dvblast.hash create mode 100644 features/buildroot/package/dvblast/dvblast.mk create mode 100644 features/buildroot/package/dvbsnoop/0001-musl-types-h.patch create mode 100644 features/buildroot/package/dvbsnoop/Config.in create mode 100644 features/buildroot/package/dvbsnoop/dvbsnoop.hash create mode 100644 features/buildroot/package/dvbsnoop/dvbsnoop.mk create mode 100644 features/buildroot/package/dvdauthor/Config.in create mode 100644 features/buildroot/package/dvdauthor/dvdauthor.hash create mode 100644 features/buildroot/package/dvdauthor/dvdauthor.mk create mode 100644 features/buildroot/package/dvdrw-tools/0001-limits.h.patch create mode 100644 features/buildroot/package/dvdrw-tools/0002-Include-sysmacros.h-to-compile-with-newer-gcc.patch create mode 100644 features/buildroot/package/dvdrw-tools/Config.in create mode 100644 features/buildroot/package/dvdrw-tools/dvdrw-tools.hash create mode 100644 features/buildroot/package/dvdrw-tools/dvdrw-tools.mk create mode 100644 features/buildroot/package/e2fsprogs/Config.in create mode 100644 features/buildroot/package/e2fsprogs/Config.in.host create mode 100644 features/buildroot/package/e2fsprogs/e2fsprogs.hash create mode 100644 features/buildroot/package/e2fsprogs/e2fsprogs.mk create mode 100644 features/buildroot/package/e2tools/Config.in create mode 100644 features/buildroot/package/e2tools/Config.in.host create mode 100644 features/buildroot/package/e2tools/e2tools.hash create mode 100644 features/buildroot/package/e2tools/e2tools.mk create mode 100644 features/buildroot/package/easy-rsa/Config.in create mode 100644 features/buildroot/package/easy-rsa/easy-rsa.hash create mode 100644 features/buildroot/package/easy-rsa/easy-rsa.mk create mode 100644 features/buildroot/package/easydbus/Config.in create mode 100644 features/buildroot/package/easydbus/easydbus.hash create mode 100644 features/buildroot/package/easydbus/easydbus.mk create mode 100644 features/buildroot/package/ebtables/0001-ethernetdb.h-Remove-C-specific-compiler-hint-macro-_.patch create mode 100644 features/buildroot/package/ebtables/0002-Fix-musl-compatibility.patch create mode 100644 features/buildroot/package/ebtables/Config.in create mode 100644 features/buildroot/package/ebtables/ebtables.hash create mode 100644 features/buildroot/package/ebtables/ebtables.mk create mode 100644 features/buildroot/package/ecryptfs-utils/0001-musl.patch create mode 100644 features/buildroot/package/ecryptfs-utils/0002-openssl110.patch create mode 100644 features/buildroot/package/ecryptfs-utils/Config.in create mode 100644 features/buildroot/package/ecryptfs-utils/ecryptfs-utils.hash create mode 100644 features/buildroot/package/ecryptfs-utils/ecryptfs-utils.mk create mode 100644 features/buildroot/package/ed/Config.in create mode 100644 features/buildroot/package/ed/ed.hash create mode 100644 features/buildroot/package/ed/ed.mk create mode 100644 features/buildroot/package/edid-decode/Config.in create mode 100644 features/buildroot/package/edid-decode/edid-decode.hash create mode 100644 features/buildroot/package/edid-decode/edid-decode.mk create mode 100644 features/buildroot/package/efibootmgr/0001-Allow-build-with-uClibc.patch create mode 100644 features/buildroot/package/efibootmgr/Config.in create mode 100644 features/buildroot/package/efibootmgr/efibootmgr.hash create mode 100644 features/buildroot/package/efibootmgr/efibootmgr.mk create mode 100644 features/buildroot/package/efivar/0001-Allow-build-with-uClibc.patch create mode 100644 features/buildroot/package/efivar/0002-dp.h-make-format_guid-handle-misaligned-guid-pointer.patch create mode 100644 features/buildroot/package/efivar/0003-Fix-all-the-places-Werror-address-of-packed-member-c.patch create mode 100644 features/buildroot/package/efivar/0004-Fix-another-error-of-Werror-address-of-packed-member.patch create mode 100644 features/buildroot/package/efivar/Config.in create mode 100644 features/buildroot/package/efivar/efivar.hash create mode 100644 features/buildroot/package/efivar/efivar.mk create mode 100644 features/buildroot/package/efl/0001-libunibreak-add-missing-__has_attribute-definitions-.patch create mode 100644 features/buildroot/package/efl/0002-eina-set-EINA_VALUE_EMPTY-during-library-init.patch create mode 100644 features/buildroot/package/efl/Config.in create mode 100644 features/buildroot/package/efl/efl.hash create mode 100644 features/buildroot/package/efl/efl.mk create mode 100644 features/buildroot/package/eigen/Config.in create mode 100644 features/buildroot/package/eigen/eigen.hash create mode 100644 features/buildroot/package/eigen/eigen.mk create mode 100644 features/buildroot/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch create mode 100644 features/buildroot/package/ejabberd/0002-fix-ejabberdctl.patch create mode 100644 features/buildroot/package/ejabberd/Config.in create mode 100644 features/buildroot/package/ejabberd/S50ejabberd create mode 100755 features/buildroot/package/ejabberd/check-erlang-lib create mode 100644 features/buildroot/package/ejabberd/ejabberd.hash create mode 100644 features/buildroot/package/ejabberd/ejabberd.mk create mode 100644 features/buildroot/package/elf2flt/0001-ld-elf2flt-behave-properly-when-called-with-a-name-d.patch create mode 100644 features/buildroot/package/elf2flt/Config.in.host create mode 100644 features/buildroot/package/elf2flt/elf2flt.hash create mode 100644 features/buildroot/package/elf2flt/elf2flt.mk create mode 100644 features/buildroot/package/elftosb/0001-fixes-includes.patch create mode 100644 features/buildroot/package/elftosb/0002-force-cxx-compiler.patch create mode 100644 features/buildroot/package/elftosb/elftosb.hash create mode 100644 features/buildroot/package/elftosb/elftosb.mk create mode 100644 features/buildroot/package/elfutils/0001-Add-a-enable-disable-progs-configure-option.patch create mode 100644 features/buildroot/package/elfutils/0002-Add-an-implementation-of-the-fts_-functions.patch create mode 100644 features/buildroot/package/elfutils/0003-Really-make-Werror-conditional-to-BUILD_WERROR.patch create mode 100644 features/buildroot/package/elfutils/Config.in create mode 100644 features/buildroot/package/elfutils/elfutils.hash create mode 100644 features/buildroot/package/elfutils/elfutils.mk create mode 100644 features/buildroot/package/ell/0001-ell-ecc.h-fix-build-with-uclibc.patch create mode 100644 features/buildroot/package/ell/Config.in create mode 100644 features/buildroot/package/ell/ell.hash create mode 100644 features/buildroot/package/ell/ell.mk create mode 100644 features/buildroot/package/emlog/Config.in create mode 100644 features/buildroot/package/emlog/emlog.hash create mode 100644 features/buildroot/package/emlog/emlog.mk create mode 100644 features/buildroot/package/empty/0001-respect-LDFLAGS.patch create mode 100644 features/buildroot/package/empty/Config.in create mode 100644 features/buildroot/package/empty/empty.hash create mode 100644 features/buildroot/package/empty/empty.mk create mode 100644 features/buildroot/package/enchant/Config.in create mode 100644 features/buildroot/package/enchant/enchant.hash create mode 100644 features/buildroot/package/enchant/enchant.mk create mode 100644 features/buildroot/package/enet/Config.in create mode 100644 features/buildroot/package/enet/enet.hash create mode 100644 features/buildroot/package/enet/enet.mk create mode 100644 features/buildroot/package/enlightenment/Config.in create mode 100644 features/buildroot/package/enlightenment/enlightenment.hash create mode 100644 features/buildroot/package/enlightenment/enlightenment.mk create mode 100644 features/buildroot/package/enscript/Config.in create mode 100644 features/buildroot/package/enscript/enscript.hash create mode 100644 features/buildroot/package/enscript/enscript.mk create mode 100644 features/buildroot/package/erlang-eimp/Config.in create mode 100644 features/buildroot/package/erlang-eimp/erlang-eimp.mk create mode 100644 features/buildroot/package/erlang-goldrush/Config.in create mode 100644 features/buildroot/package/erlang-goldrush/erlang-goldrush.hash create mode 100644 features/buildroot/package/erlang-goldrush/erlang-goldrush.mk create mode 100644 features/buildroot/package/erlang-jiffy/Config.in create mode 100644 features/buildroot/package/erlang-jiffy/erlang-jiffy.hash create mode 100644 features/buildroot/package/erlang-jiffy/erlang-jiffy.mk create mode 100644 features/buildroot/package/erlang-lager/Config.in create mode 100644 features/buildroot/package/erlang-lager/erlang-lager.hash create mode 100644 features/buildroot/package/erlang-lager/erlang-lager.mk create mode 100644 features/buildroot/package/erlang-p1-cache-tab/Config.in create mode 100644 features/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash create mode 100644 features/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk create mode 100644 features/buildroot/package/erlang-p1-iconv/Config.in create mode 100644 features/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.hash create mode 100644 features/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.mk create mode 100644 features/buildroot/package/erlang-p1-oauth2/Config.in create mode 100644 features/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.hash create mode 100644 features/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.mk create mode 100644 features/buildroot/package/erlang-p1-sip/0001-fix-includes.patch create mode 100644 features/buildroot/package/erlang-p1-sip/Config.in create mode 100644 features/buildroot/package/erlang-p1-sip/erlang-p1-sip.hash create mode 100644 features/buildroot/package/erlang-p1-sip/erlang-p1-sip.mk create mode 100644 features/buildroot/package/erlang-p1-stringprep/Config.in create mode 100644 features/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.hash create mode 100644 features/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.mk create mode 100644 features/buildroot/package/erlang-p1-stun/Config.in create mode 100644 features/buildroot/package/erlang-p1-stun/erlang-p1-stun.hash create mode 100644 features/buildroot/package/erlang-p1-stun/erlang-p1-stun.mk create mode 100644 features/buildroot/package/erlang-p1-tls/Config.in create mode 100644 features/buildroot/package/erlang-p1-tls/erlang-p1-tls.hash create mode 100644 features/buildroot/package/erlang-p1-tls/erlang-p1-tls.mk create mode 100644 features/buildroot/package/erlang-p1-utils/Config.in create mode 100644 features/buildroot/package/erlang-p1-utils/erlang-p1-utils.hash create mode 100644 features/buildroot/package/erlang-p1-utils/erlang-p1-utils.mk create mode 100644 features/buildroot/package/erlang-p1-xml/Config.in create mode 100644 features/buildroot/package/erlang-p1-xml/erlang-p1-xml.hash create mode 100644 features/buildroot/package/erlang-p1-xml/erlang-p1-xml.mk create mode 100644 features/buildroot/package/erlang-p1-xmpp/0001-fix-includes.patch create mode 100644 features/buildroot/package/erlang-p1-xmpp/Config.in create mode 100644 features/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.hash create mode 100644 features/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.mk create mode 100644 features/buildroot/package/erlang-p1-yaml/Config.in create mode 100644 features/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.hash create mode 100644 features/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.mk create mode 100644 features/buildroot/package/erlang-p1-zlib/Config.in create mode 100644 features/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.hash create mode 100644 features/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.mk create mode 100644 features/buildroot/package/erlang-rebar/erlang-rebar.hash create mode 100644 features/buildroot/package/erlang-rebar/erlang-rebar.mk create mode 100644 features/buildroot/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch create mode 100644 features/buildroot/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch create mode 100644 features/buildroot/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch create mode 100644 features/buildroot/package/erlang/Config.in create mode 100644 features/buildroot/package/erlang/erlang.hash create mode 100644 features/buildroot/package/erlang/erlang.mk create mode 100644 features/buildroot/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch create mode 100644 features/buildroot/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch create mode 100644 features/buildroot/package/espeak/Config.in create mode 100644 features/buildroot/package/espeak/espeak.hash create mode 100644 features/buildroot/package/espeak/espeak.mk create mode 100644 features/buildroot/package/ethtool/Config.in create mode 100644 features/buildroot/package/ethtool/ethtool.hash create mode 100644 features/buildroot/package/ethtool/ethtool.mk create mode 100644 features/buildroot/package/eudev/0001-Only-use-pragma-for-ignoring-diagnostics-if-.patch create mode 100644 features/buildroot/package/eudev/Config.in create mode 100644 features/buildroot/package/eudev/S10udev create mode 100644 features/buildroot/package/eudev/eudev.hash create mode 100644 features/buildroot/package/eudev/eudev.mk create mode 100644 features/buildroot/package/ev3dev-linux-drivers/Config.in create mode 100644 features/buildroot/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk create mode 100644 features/buildroot/package/ev3dev-linux-drivers/lego-linux-drivers.hash create mode 100644 features/buildroot/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch create mode 100644 features/buildroot/package/evemu/Config.in create mode 100644 features/buildroot/package/evemu/evemu.hash create mode 100644 features/buildroot/package/evemu/evemu.mk create mode 100644 features/buildroot/package/eventlog/Config.in create mode 100644 features/buildroot/package/eventlog/eventlog.hash create mode 100644 features/buildroot/package/eventlog/eventlog.mk create mode 100644 features/buildroot/package/evtest/Config.in create mode 100644 features/buildroot/package/evtest/evtest.hash create mode 100644 features/buildroot/package/evtest/evtest.mk create mode 100644 features/buildroot/package/execline/Config.in create mode 100644 features/buildroot/package/execline/execline.hash create mode 100644 features/buildroot/package/execline/execline.mk create mode 100644 features/buildroot/package/exempi/Config.in create mode 100644 features/buildroot/package/exempi/exempi.hash create mode 100644 features/buildroot/package/exempi/exempi.mk create mode 100644 features/buildroot/package/exfat-utils/Config.in create mode 100644 features/buildroot/package/exfat-utils/exfat-utils.hash create mode 100644 features/buildroot/package/exfat-utils/exfat-utils.mk create mode 100644 features/buildroot/package/exfat/Config.in create mode 100644 features/buildroot/package/exfat/exfat.hash create mode 100644 features/buildroot/package/exfat/exfat.mk create mode 100644 features/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch create mode 100644 features/buildroot/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch create mode 100644 features/buildroot/package/exim/0003-Skip-version-check-and-symlink-installation.patch create mode 100644 features/buildroot/package/exim/0004-remove-libnsl.patch create mode 100644 features/buildroot/package/exim/0005-Fix-uClibc-build.patch create mode 100644 features/buildroot/package/exim/Config.in create mode 100644 features/buildroot/package/exim/S86exim create mode 100644 features/buildroot/package/exim/exim.hash create mode 100644 features/buildroot/package/exim/exim.mk create mode 100644 features/buildroot/package/exim/exim.service create mode 100644 features/buildroot/package/exiv2/Config.in create mode 100644 features/buildroot/package/exiv2/exiv2.hash create mode 100644 features/buildroot/package/exiv2/exiv2.mk create mode 100644 features/buildroot/package/expat/Config.in create mode 100644 features/buildroot/package/expat/expat.hash create mode 100644 features/buildroot/package/expat/expat.mk create mode 100644 features/buildroot/package/expect/0001-enable-cross-compilation.patch create mode 100644 features/buildroot/package/expect/0002-allow-tcl-build-directory.patch create mode 100644 features/buildroot/package/expect/Config.in create mode 100644 features/buildroot/package/expect/expect.hash create mode 100644 features/buildroot/package/expect/expect.mk create mode 100644 features/buildroot/package/explorercanvas/Config.in create mode 100644 features/buildroot/package/explorercanvas/explorercanvas.hash create mode 100644 features/buildroot/package/explorercanvas/explorercanvas.mk create mode 100644 features/buildroot/package/ezxml/0001-allow-compiler-override.patch create mode 100644 features/buildroot/package/ezxml/Config.in create mode 100644 features/buildroot/package/ezxml/ezxml.hash create mode 100644 features/buildroot/package/ezxml/ezxml.mk create mode 100644 features/buildroot/package/f2fs-tools/0001-configure-uclinux-is-also-linux.patch create mode 100644 features/buildroot/package/f2fs-tools/Config.in create mode 100644 features/buildroot/package/f2fs-tools/Config.in.host create mode 100644 features/buildroot/package/f2fs-tools/f2fs-tools.hash create mode 100644 features/buildroot/package/f2fs-tools/f2fs-tools.mk create mode 100644 features/buildroot/package/faad2/0001-syntax.c-check-for-syntax-element-inconsistencies.patch create mode 100644 features/buildroot/package/faad2/0002-sbr_hfadj-sanitize-frequency-band-borders.patch create mode 100644 features/buildroot/package/faad2/0003-Fix-a-couple-buffer-overflows.patch create mode 100644 features/buildroot/package/faad2/0004-add-patch-to-prevent-crash-on-SCE-followed-by-CPE.patch create mode 100644 features/buildroot/package/faad2/Config.in create mode 100644 features/buildroot/package/faad2/faad2.hash create mode 100644 features/buildroot/package/faad2/faad2.mk create mode 100644 features/buildroot/package/faifa/0001-sha2.c-explicitly-include-endian.h-for-BYTE_ORDER-ma.patch create mode 100644 features/buildroot/package/faifa/0002-hpav_cfg.c-do-not-include-linux-if_ether.h-for-musl-.patch create mode 100644 features/buildroot/package/faifa/Config.in create mode 100644 features/buildroot/package/faifa/faifa.hash create mode 100644 features/buildroot/package/faifa/faifa.mk create mode 100644 features/buildroot/package/fail2ban/Config.in create mode 100644 features/buildroot/package/fail2ban/S60fail2ban create mode 100644 features/buildroot/package/fail2ban/fail2ban.hash create mode 100644 features/buildroot/package/fail2ban/fail2ban.mk create mode 100755 features/buildroot/package/fakedate/fakedate create mode 100644 features/buildroot/package/fakedate/fakedate.mk create mode 100644 features/buildroot/package/fakeroot/0001-hide-dlsym-error.patch create mode 100644 features/buildroot/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch create mode 100644 features/buildroot/package/fakeroot/fakeroot.hash create mode 100644 features/buildroot/package/fakeroot/fakeroot.mk create mode 100644 features/buildroot/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch create mode 100644 features/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch create mode 100644 features/buildroot/package/faketime/Config.in.host create mode 100644 features/buildroot/package/faketime/faketime.hash create mode 100644 features/buildroot/package/faketime/faketime.mk create mode 100644 features/buildroot/package/fan-ctrl/Config.in create mode 100644 features/buildroot/package/fan-ctrl/fan-ctrl.hash create mode 100644 features/buildroot/package/fan-ctrl/fan-ctrl.mk create mode 100644 features/buildroot/package/fastd/0001-cmake-use-INTERPROCEDURAL_OPTIMIZATION-target-proper.patch create mode 100644 features/buildroot/package/fastd/0002-CMakeList-do-not-overwrite-module-path.patch create mode 100644 features/buildroot/package/fastd/0003-cipher-remove-aes128-ctr-NaCl-implementation.patch create mode 100644 features/buildroot/package/fastd/Config.in create mode 100644 features/buildroot/package/fastd/fastd.hash create mode 100644 features/buildroot/package/fastd/fastd.mk create mode 100644 features/buildroot/package/fatcat/Config.in.host create mode 100644 features/buildroot/package/fatcat/fatcat.hash create mode 100644 features/buildroot/package/fatcat/fatcat.mk create mode 100644 features/buildroot/package/fb-test-app/Config.in create mode 100644 features/buildroot/package/fb-test-app/fb-test-app.hash create mode 100644 features/buildroot/package/fb-test-app/fb-test-app.mk create mode 100644 features/buildroot/package/fbdump/Config.in create mode 100644 features/buildroot/package/fbdump/fbdump.hash create mode 100644 features/buildroot/package/fbdump/fbdump.mk create mode 100644 features/buildroot/package/fbgrab/0001-fix-static-build.patch create mode 100644 features/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch create mode 100644 features/buildroot/package/fbgrab/Config.in create mode 100644 features/buildroot/package/fbgrab/fbgrab.hash create mode 100644 features/buildroot/package/fbgrab/fbgrab.mk create mode 100644 features/buildroot/package/fbset/0001-Fix-musl-compile.patch create mode 100644 features/buildroot/package/fbset/Config.in create mode 100644 features/buildroot/package/fbset/fbset.hash create mode 100644 features/buildroot/package/fbset/fbset.mk create mode 100644 features/buildroot/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch create mode 100644 features/buildroot/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch create mode 100644 features/buildroot/package/fbterm/0003-C++11-compliance.patch create mode 100644 features/buildroot/package/fbterm/0004-iconv.patch create mode 100644 features/buildroot/package/fbterm/Config.in create mode 100644 features/buildroot/package/fbterm/fbterm.hash create mode 100644 features/buildroot/package/fbterm/fbterm.mk create mode 100644 features/buildroot/package/fbtft/Config.in create mode 100644 features/buildroot/package/fbtft/fbtft.hash create mode 100644 features/buildroot/package/fbtft/fbtft.mk create mode 100644 features/buildroot/package/fbv/0002-cross.patch create mode 100644 features/buildroot/package/fbv/0003-fix-24bpp-support-on-big-endian.patch create mode 100644 features/buildroot/package/fbv/0004-fix-bgr555.patch create mode 100644 features/buildroot/package/fbv/0005-giflib.patch create mode 100644 features/buildroot/package/fbv/0006-include.patch create mode 100644 features/buildroot/package/fbv/0007-libpng15.patch create mode 100644 features/buildroot/package/fbv/Config.in create mode 100644 features/buildroot/package/fbv/fbv.hash create mode 100644 features/buildroot/package/fbv/fbv.mk create mode 100644 features/buildroot/package/fcgiwrap/0001-use-LIBS-from-configure.patch create mode 100644 features/buildroot/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch create mode 100644 features/buildroot/package/fcgiwrap/Config.in create mode 100644 features/buildroot/package/fcgiwrap/fcgiwrap.hash create mode 100644 features/buildroot/package/fcgiwrap/fcgiwrap.mk create mode 100644 features/buildroot/package/fconfig/Config.in create mode 100644 features/buildroot/package/fconfig/fconfig.hash create mode 100644 features/buildroot/package/fconfig/fconfig.mk create mode 100644 features/buildroot/package/fdk-aac/Config.in create mode 100644 features/buildroot/package/fdk-aac/fdk-aac.hash create mode 100644 features/buildroot/package/fdk-aac/fdk-aac.mk create mode 100644 features/buildroot/package/feh/Config.in create mode 100644 features/buildroot/package/feh/feh.hash create mode 100644 features/buildroot/package/feh/feh.mk create mode 100644 features/buildroot/package/fetchmail/Config.in create mode 100644 features/buildroot/package/fetchmail/fetchmail.hash create mode 100644 features/buildroot/package/fetchmail/fetchmail.mk create mode 100644 features/buildroot/package/ffmpeg/Config.in create mode 100644 features/buildroot/package/ffmpeg/ffmpeg.hash create mode 100644 features/buildroot/package/ffmpeg/ffmpeg.mk create mode 100644 features/buildroot/package/fftw/Config.in create mode 100644 features/buildroot/package/fftw/fftw-double/Config.in create mode 120000 features/buildroot/package/fftw/fftw-double/fftw-double.hash create mode 100644 features/buildroot/package/fftw/fftw-double/fftw-double.mk create mode 100644 features/buildroot/package/fftw/fftw-long-double/Config.in create mode 120000 features/buildroot/package/fftw/fftw-long-double/fftw-long-double.hash create mode 100644 features/buildroot/package/fftw/fftw-long-double/fftw-long-double.mk create mode 100644 features/buildroot/package/fftw/fftw-quad/Config.in create mode 120000 features/buildroot/package/fftw/fftw-quad/fftw-quad.hash create mode 100644 features/buildroot/package/fftw/fftw-quad/fftw-quad.mk create mode 100644 features/buildroot/package/fftw/fftw-single/Config.in create mode 120000 features/buildroot/package/fftw/fftw-single/fftw-single.hash create mode 100644 features/buildroot/package/fftw/fftw-single/fftw-single.mk create mode 100644 features/buildroot/package/fftw/fftw.hash create mode 100644 features/buildroot/package/fftw/fftw.mk create mode 100644 features/buildroot/package/ficl/0001-fix-Makefile.patch create mode 100644 features/buildroot/package/ficl/Config.in create mode 100644 features/buildroot/package/ficl/ficl.hash create mode 100644 features/buildroot/package/ficl/ficl.mk create mode 100644 features/buildroot/package/file/Config.in create mode 100644 features/buildroot/package/file/file.hash create mode 100644 features/buildroot/package/file/file.mk create mode 100644 features/buildroot/package/filemq/Config.in create mode 100644 features/buildroot/package/filemq/filemq.hash create mode 100644 features/buildroot/package/filemq/filemq.mk create mode 100644 features/buildroot/package/findutils/0001-mountlist-include-sysmacros-h-for-glibc.patch create mode 100644 features/buildroot/package/findutils/0002-fflush-adjust-to-glibc-2-28-libio-h-removal.patch create mode 100644 features/buildroot/package/findutils/Config.in create mode 100644 features/buildroot/package/findutils/findutils.hash create mode 100644 features/buildroot/package/findutils/findutils.mk create mode 100644 features/buildroot/package/fio/Config.in create mode 100644 features/buildroot/package/fio/fio.hash create mode 100644 features/buildroot/package/fio/fio.mk create mode 100644 features/buildroot/package/fis/0001-checksum.patch create mode 100644 features/buildroot/package/fis/0003-list_output.patch create mode 100644 features/buildroot/package/fis/0004-sorted_list.patch create mode 100644 features/buildroot/package/fis/Config.in create mode 100644 features/buildroot/package/fis/fis.mk create mode 100644 features/buildroot/package/flac/0001-configure.ac-relax-linux-OS-detection.patch create mode 100644 features/buildroot/package/flac/Config.in create mode 100644 features/buildroot/package/flac/flac.hash create mode 100644 features/buildroot/package/flac/flac.mk create mode 100644 features/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch create mode 100644 features/buildroot/package/flann/Config.in create mode 100644 features/buildroot/package/flann/flann.hash create mode 100644 features/buildroot/package/flann/flann.mk create mode 100644 features/buildroot/package/flannel/Config.in create mode 100644 features/buildroot/package/flannel/flannel.hash create mode 100644 features/buildroot/package/flannel/flannel.mk create mode 100644 features/buildroot/package/flare-engine/Config.in create mode 100644 features/buildroot/package/flare-engine/flare-engine.hash create mode 100644 features/buildroot/package/flare-engine/flare-engine.mk create mode 100644 features/buildroot/package/flare-game/Config.in create mode 100644 features/buildroot/package/flare-game/flare-game.hash create mode 100644 features/buildroot/package/flare-game/flare-game.mk create mode 100644 features/buildroot/package/flashbench/Config.in create mode 100644 features/buildroot/package/flashbench/flashbench.hash create mode 100644 features/buildroot/package/flashbench/flashbench.mk create mode 100644 features/buildroot/package/flashrom/0001-spi.patch create mode 100644 features/buildroot/package/flashrom/Config.in create mode 100644 features/buildroot/package/flashrom/flashrom.hash create mode 100644 features/buildroot/package/flashrom/flashrom.mk create mode 100644 features/buildroot/package/flatbuffers/0001-Add-detection-of-strtoull_l-function.patch create mode 100644 features/buildroot/package/flatbuffers/Config.in create mode 100644 features/buildroot/package/flatbuffers/flatbuffers.hash create mode 100644 features/buildroot/package/flatbuffers/flatbuffers.mk create mode 100644 features/buildroot/package/flatcc/0001-CMakeLists.txt-conditionally-require-C-based-on-FLAT.patch create mode 100644 features/buildroot/package/flatcc/Config.in create mode 100644 features/buildroot/package/flatcc/flatcc.hash create mode 100644 features/buildroot/package/flatcc/flatcc.mk create mode 100644 features/buildroot/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch create mode 100644 features/buildroot/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch create mode 100644 features/buildroot/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch create mode 100644 features/buildroot/package/flex/Config.in create mode 100644 features/buildroot/package/flex/flex.hash create mode 100644 features/buildroot/package/flex/flex.mk create mode 100644 features/buildroot/package/flickcurl/Config.in create mode 100644 features/buildroot/package/flickcurl/flickcurl.hash create mode 100644 features/buildroot/package/flickcurl/flickcurl.mk create mode 100644 features/buildroot/package/flite/0001-now-honor-DESTDIR-env.-var.patch create mode 100644 features/buildroot/package/flite/0002-fix-alsa-static.patch create mode 100644 features/buildroot/package/flite/0003-fix-alsa-version-check.patch create mode 100644 features/buildroot/package/flite/Config.in create mode 100644 features/buildroot/package/flite/flite.hash create mode 100644 features/buildroot/package/flite/flite.mk create mode 100644 features/buildroot/package/flot/Config.in create mode 100644 features/buildroot/package/flot/flot.hash create mode 100644 features/buildroot/package/flot/flot.mk create mode 100644 features/buildroot/package/fltk/0001-disable-tests.patch create mode 100644 features/buildroot/package/fltk/Config.in create mode 100644 features/buildroot/package/fltk/fltk.hash create mode 100644 features/buildroot/package/fltk/fltk.mk create mode 100644 features/buildroot/package/fluxbox/Config.in create mode 100644 features/buildroot/package/fluxbox/fluxbox.hash create mode 100644 features/buildroot/package/fluxbox/fluxbox.mk create mode 100644 features/buildroot/package/fluxbox/xsession create mode 100644 features/buildroot/package/fmc/Config.in create mode 100644 features/buildroot/package/fmc/fmc.hash create mode 100644 features/buildroot/package/fmc/fmc.mk create mode 100644 features/buildroot/package/fmlib/Config.in create mode 100644 features/buildroot/package/fmlib/fmlib.hash create mode 100644 features/buildroot/package/fmlib/fmlib.mk create mode 100644 features/buildroot/package/fmt/Config.in create mode 100644 features/buildroot/package/fmt/fmt.hash create mode 100644 features/buildroot/package/fmt/fmt.mk create mode 100644 features/buildroot/package/fmtools/Config.in create mode 100644 features/buildroot/package/fmtools/fmtools.hash create mode 100644 features/buildroot/package/fmtools/fmtools.mk create mode 100644 features/buildroot/package/font-awesome/Config.in create mode 100644 features/buildroot/package/font-awesome/font-awesome.hash create mode 100644 features/buildroot/package/font-awesome/font-awesome.mk create mode 100644 features/buildroot/package/fontconfig/0001-Fix-the-build-issue-with-enable-static.patch create mode 100644 features/buildroot/package/fontconfig/Config.in create mode 100644 features/buildroot/package/fontconfig/fontconfig.hash create mode 100644 features/buildroot/package/fontconfig/fontconfig.mk create mode 100644 features/buildroot/package/fping/Config.in create mode 100644 features/buildroot/package/fping/fping.hash create mode 100644 features/buildroot/package/fping/fping.mk create mode 100644 features/buildroot/package/freeradius-client/0001-fix-for-nettle.patch create mode 100644 features/buildroot/package/freeradius-client/Config.in create mode 100644 features/buildroot/package/freeradius-client/freeradius-client.hash create mode 100644 features/buildroot/package/freeradius-client/freeradius-client.mk create mode 100644 features/buildroot/package/freerdp/0001-xf_floatbar.c-fix-build-without-Xfixes.patch create mode 100644 features/buildroot/package/freerdp/Config.in create mode 100644 features/buildroot/package/freerdp/freerdp.hash create mode 100644 features/buildroot/package/freerdp/freerdp.mk create mode 100644 features/buildroot/package/freescale-imx/Config.in create mode 100644 features/buildroot/package/freescale-imx/firmware-imx/Config.in create mode 100644 features/buildroot/package/freescale-imx/firmware-imx/firmware-imx.hash create mode 100644 features/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk create mode 100644 features/buildroot/package/freescale-imx/freescale-imx.mk create mode 100644 features/buildroot/package/freescale-imx/gpu-amd-bin-mx51/Config.in create mode 100644 features/buildroot/package/freescale-imx/gpu-amd-bin-mx51/egl.pc create mode 100644 features/buildroot/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc create mode 100644 features/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash create mode 100644 features/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk create mode 100644 features/buildroot/package/freescale-imx/gpu-amd-bin-mx51/vg.pc create mode 100644 features/buildroot/package/freescale-imx/imx-alsa-plugins/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash create mode 100644 features/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk create mode 100644 features/buildroot/package/freescale-imx/imx-codec/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-codec/imx-codec.hash create mode 100644 features/buildroot/package/freescale-imx/imx-codec/imx-codec.mk create mode 100644 features/buildroot/package/freescale-imx/imx-gpu-g2d/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash create mode 100644 features/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk create mode 100644 features/buildroot/package/freescale-imx/imx-gpu-viv/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash create mode 100644 features/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk create mode 100644 features/buildroot/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch create mode 100644 features/buildroot/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch create mode 100644 features/buildroot/package/freescale-imx/imx-kobs/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-kobs/imx-kobs.hash create mode 100644 features/buildroot/package/freescale-imx/imx-kobs/imx-kobs.mk create mode 100644 features/buildroot/package/freescale-imx/imx-lib/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-lib/imx-lib.hash create mode 100644 features/buildroot/package/freescale-imx/imx-lib/imx-lib.mk create mode 100644 features/buildroot/package/freescale-imx/imx-m4fwloader/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash create mode 100644 features/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk create mode 100644 features/buildroot/package/freescale-imx/imx-parser/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-parser/imx-parser.hash create mode 100644 features/buildroot/package/freescale-imx/imx-parser/imx-parser.mk create mode 100644 features/buildroot/package/freescale-imx/imx-sc-firmware/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-sc-firmware/imx-sc-firmware.mk create mode 100644 features/buildroot/package/freescale-imx/imx-uuc/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-uuc/S80imx-uuc create mode 100644 features/buildroot/package/freescale-imx/imx-uuc/imx-uuc.hash create mode 100644 features/buildroot/package/freescale-imx/imx-uuc/imx-uuc.mk create mode 100644 features/buildroot/package/freescale-imx/imx-uuc/imx-uuc.service create mode 100644 features/buildroot/package/freescale-imx/imx-vpu-hantro/0001-Fix-ion.h-header-inclusion-to-be-standard.patch create mode 100644 features/buildroot/package/freescale-imx/imx-vpu-hantro/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.hash create mode 100644 features/buildroot/package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.mk create mode 100644 features/buildroot/package/freescale-imx/imx-vpu/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-vpu/imx-vpu.hash create mode 100644 features/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk create mode 100644 features/buildroot/package/freescale-imx/imx-vpuwrap/Config.in create mode 100644 features/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash create mode 100644 features/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk create mode 100644 features/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in create mode 100644 features/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash create mode 100644 features/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk create mode 100644 features/buildroot/package/freescale-imx/libz160/Config.in create mode 100644 features/buildroot/package/freescale-imx/libz160/libz160.hash create mode 100644 features/buildroot/package/freescale-imx/libz160/libz160.mk create mode 100644 features/buildroot/package/freeswitch-mod-bcg729/Config.in create mode 100644 features/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash create mode 100644 features/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk create mode 100644 features/buildroot/package/freeswitch/0001-Fix-cross-compiling-libvpx.patch create mode 100644 features/buildroot/package/freeswitch/Config.in create mode 100644 features/buildroot/package/freeswitch/freeswitch.hash create mode 100644 features/buildroot/package/freeswitch/freeswitch.mk create mode 100644 features/buildroot/package/freetype/Config.in create mode 100644 features/buildroot/package/freetype/freetype.hash create mode 100644 features/buildroot/package/freetype/freetype.mk create mode 100644 features/buildroot/package/fscryptctl/Config.in create mode 100644 features/buildroot/package/fscryptctl/fscryptctl.hash create mode 100644 features/buildroot/package/fscryptctl/fscryptctl.mk create mode 100644 features/buildroot/package/fswebcam/Config.in create mode 100644 features/buildroot/package/fswebcam/fswebcam.hash create mode 100644 features/buildroot/package/fswebcam/fswebcam.mk create mode 100644 features/buildroot/package/ftop/0001-overflow.patch create mode 100644 features/buildroot/package/ftop/Config.in create mode 100644 features/buildroot/package/ftop/ftop.hash create mode 100644 features/buildroot/package/ftop/ftop.mk create mode 100644 features/buildroot/package/fwts/0001-build-do-not-use-Werror.patch create mode 100644 features/buildroot/package/fwts/Config.in create mode 100644 features/buildroot/package/fwts/fwts.hash create mode 100644 features/buildroot/package/fwts/fwts.mk create mode 100644 features/buildroot/package/fwup/Config.in create mode 100644 features/buildroot/package/fwup/Config.in.host create mode 100644 features/buildroot/package/fwup/fwup.hash create mode 100644 features/buildroot/package/fwup/fwup.mk create mode 100644 features/buildroot/package/fxload/Config.in create mode 100644 features/buildroot/package/fxload/fxload.hash create mode 100644 features/buildroot/package/fxload/fxload.mk create mode 100644 features/buildroot/package/gadgetfs-test/0001-fix-usb-ch9-include.patch create mode 100644 features/buildroot/package/gadgetfs-test/0002-rename-include-usb_gadgetfs-to-usb-dir.patch create mode 100644 features/buildroot/package/gadgetfs-test/Config.in create mode 100644 features/buildroot/package/gadgetfs-test/gadgetfs-test.hash create mode 100644 features/buildroot/package/gadgetfs-test/gadgetfs-test.mk create mode 100644 features/buildroot/package/gamin/0001-no-abstract-sockets.patch create mode 100644 features/buildroot/package/gamin/0002-no-const-return.patch create mode 100644 features/buildroot/package/gamin/0003-fix-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch create mode 100644 features/buildroot/package/gamin/Config.in create mode 100644 features/buildroot/package/gamin/gamin.hash create mode 100644 features/buildroot/package/gamin/gamin.mk create mode 100644 features/buildroot/package/gauche/0001-fix-so-suffix.patch create mode 100644 features/buildroot/package/gauche/0002-gc-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch create mode 100644 features/buildroot/package/gauche/0003-Fix-missing-libc-version.h-build-error-uClibc-x86-_6.patch create mode 100644 features/buildroot/package/gauche/0004-rfc-needs-srfi.patch create mode 100644 features/buildroot/package/gauche/Config.in create mode 100644 features/buildroot/package/gauche/gauche.hash create mode 100644 features/buildroot/package/gauche/gauche.mk create mode 100644 features/buildroot/package/gawk/0001-no-versioned.patch create mode 100644 features/buildroot/package/gawk/Config.in create mode 100644 features/buildroot/package/gawk/gawk.hash create mode 100644 features/buildroot/package/gawk/gawk.mk create mode 100644 features/buildroot/package/gcc/4.9.4/0001-ARM-PR-target-68059-libgcc-should-not-use-__write-fo.patch create mode 100644 features/buildroot/package/gcc/4.9.4/0002-m68k-coldfire-pr68467.patch create mode 100644 features/buildroot/package/gcc/4.9.4/0003-libsanitizer-Use-pre-computed-size.patch create mode 100644 features/buildroot/package/gcc/4.9.4/100-uclibc-conf.patch create mode 100644 features/buildroot/package/gcc/4.9.4/1000-powerpc-link-with-math-lib.patch.conditional create mode 100644 features/buildroot/package/gcc/4.9.4/111-pr65730.patch create mode 100644 features/buildroot/package/gcc/4.9.4/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch create mode 100644 features/buildroot/package/gcc/4.9.4/130-pr43538.patch create mode 100644 features/buildroot/package/gcc/4.9.4/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch create mode 100644 features/buildroot/package/gcc/4.9.4/301-missing-execinfo_h.patch create mode 100644 features/buildroot/package/gcc/4.9.4/810-arm-softfloat-libgcc.patch create mode 100644 features/buildroot/package/gcc/4.9.4/830-arm_unbreak_armv4t.patch create mode 100644 features/buildroot/package/gcc/4.9.4/840-microblaze-enable-dwarf-eh-support.patch create mode 100644 features/buildroot/package/gcc/4.9.4/850-libstdcxx-uclibc-c99.patch create mode 100644 features/buildroot/package/gcc/4.9.4/860-cilk-wchar.patch create mode 100644 features/buildroot/package/gcc/4.9.4/870-xtensa-add-mauto-litpools-option.patch create mode 100644 features/buildroot/package/gcc/4.9.4/871-xtensa-reimplement-register-spilling.patch create mode 100644 features/buildroot/package/gcc/4.9.4/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch create mode 100644 features/buildroot/package/gcc/4.9.4/873-xtensa-fix-_Unwind_GetCFA.patch create mode 100644 features/buildroot/package/gcc/4.9.4/874-xtensa-add-uclinux-support.patch create mode 100644 features/buildroot/package/gcc/4.9.4/875-xtensa-fix-PR-target-82181.patch create mode 100644 features/buildroot/package/gcc/4.9.4/880-nios2_legitimize_address.patch create mode 100644 features/buildroot/package/gcc/4.9.4/890-fix-m68k-compile.patch create mode 100644 features/buildroot/package/gcc/4.9.4/900-musl-support.patch create mode 100644 features/buildroot/package/gcc/4.9.4/901-microblaze-uclibc.patch create mode 100644 features/buildroot/package/gcc/4.9.4/930-libgcc-disable-split-stack-nothreads.patch create mode 100644 features/buildroot/package/gcc/4.9.4/940-uclinux-enable-threads.patch create mode 100644 features/buildroot/package/gcc/4.9.4/942-asan-fix-missing-include-signal-h.patch create mode 100644 features/buildroot/package/gcc/4.9.4/943-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch create mode 100644 features/buildroot/package/gcc/4.9.4/944-sanitizer-linux.patch create mode 100644 features/buildroot/package/gcc/5.5.0/0001-m68k-coldfire-pr68467.patch create mode 100644 features/buildroot/package/gcc/5.5.0/0002-libsanitizer-Use-pre-computed-size.patch create mode 100644 features/buildroot/package/gcc/5.5.0/100-uclibc-conf.patch create mode 100644 features/buildroot/package/gcc/5.5.0/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch create mode 100644 features/buildroot/package/gcc/5.5.0/301-missing-execinfo_h.patch create mode 100644 features/buildroot/package/gcc/5.5.0/810-arm-softfloat-libgcc.patch create mode 100644 features/buildroot/package/gcc/5.5.0/830-arm_unbreak_armv4t.patch create mode 100644 features/buildroot/package/gcc/5.5.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch create mode 100644 features/buildroot/package/gcc/5.5.0/840-microblaze-enable-dwarf-eh-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/850-libstdcxx-uclibc-c99.patch create mode 100644 features/buildroot/package/gcc/5.5.0/860-cilk-wchar.patch create mode 100644 features/buildroot/package/gcc/5.5.0/870-xtensa-add-mauto-litpools-option.patch create mode 100644 features/buildroot/package/gcc/5.5.0/871-xtensa-reimplement-register-spilling.patch create mode 100644 features/buildroot/package/gcc/5.5.0/874-xtensa-add-uclinux-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/875-xtensa-implement-trap-pattern.patch create mode 100644 features/buildroot/package/gcc/5.5.0/880-gcc-nios2-Add-IJMP_REGS-enum.patch create mode 100644 features/buildroot/package/gcc/5.5.0/890-fix-m68k-compile.patch create mode 100644 features/buildroot/package/gcc/5.5.0/900-libitm-fixes-for-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/901-fixincludes-update-for-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/902-unwind-fix-for-musl.patch create mode 100644 features/buildroot/package/gcc/5.5.0/903-libstdc++-libgfortran-gthr-workaround-for-musl.patch create mode 100644 features/buildroot/package/gcc/5.5.0/904-musl-libc-config.patch create mode 100644 features/buildroot/package/gcc/5.5.0/905-add-musl-support-to-gcc.patch create mode 100644 features/buildroot/package/gcc/5.5.0/906-mips-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/907-x86-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/908-arm-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/909-aarch64-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/910-microblaze-musl-and-uclibc.patch create mode 100644 features/buildroot/package/gcc/5.5.0/911-ppc-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/912-sh-musl-support.patch create mode 100644 features/buildroot/package/gcc/5.5.0/930-libgcc-disable-split-stack-nothreads.patch create mode 100644 features/buildroot/package/gcc/5.5.0/940-uclinux-enable-threads.patch create mode 100644 features/buildroot/package/gcc/5.5.0/941-mips-Add-support-for-mips-r6-musl.patch create mode 100644 features/buildroot/package/gcc/6.5.0/0001-m68k-coldfire-pr68467.patch create mode 100644 features/buildroot/package/gcc/6.5.0/0004-gcc-xtensa-don-t-force-PIC-for-uclinux-target.patch create mode 100644 features/buildroot/package/gcc/6.5.0/100-uclibc-conf.patch create mode 100644 features/buildroot/package/gcc/6.5.0/301-missing-execinfo_h.patch create mode 100644 features/buildroot/package/gcc/6.5.0/810-arm-softfloat-libgcc.patch create mode 100644 features/buildroot/package/gcc/6.5.0/830-arm_unbreak_armv4t.patch create mode 100644 features/buildroot/package/gcc/6.5.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch create mode 100644 features/buildroot/package/gcc/6.5.0/860-cilk-wchar.patch create mode 100644 features/buildroot/package/gcc/6.5.0/890-fix-m68k-compile.patch create mode 100644 features/buildroot/package/gcc/6.5.0/896-microblaze-Revert.patch create mode 100644 features/buildroot/package/gcc/6.5.0/897-Make-MicroBlaze-support-DWARF-EH-old-Xilinx-patch-ne.patch create mode 100644 features/buildroot/package/gcc/6.5.0/940-uclinux-enable-threads.patch create mode 100644 features/buildroot/package/gcc/6.5.0/941-mips-Add-support-for-mips-r6-musl.patch create mode 100644 features/buildroot/package/gcc/7.4.0/0100-uclibc-conf.patch create mode 100644 features/buildroot/package/gcc/7.4.0/0810-arm-softfloat-libgcc.patch create mode 100644 features/buildroot/package/gcc/7.4.0/0860-cilk-fix-build-without-wchar.patch create mode 100644 features/buildroot/package/gcc/7.4.0/0892-microblaze-Revert.patch create mode 100644 features/buildroot/package/gcc/7.4.0/1000-arm-PR-target-81497-Fix-arm_acle.h-for-C.patch create mode 100644 features/buildroot/package/gcc/7.4.0/1001-gcc-define-_REENTRANT-for-RISC-V-when-pthread-is-pas.patch create mode 100644 features/buildroot/package/gcc/9.1.0/0001-ARC-Backport-fix-PR89838.patch create mode 100644 features/buildroot/package/gcc/9.1.0/0002-ARC-Fix-emitting-TLS-symbols.patch create mode 100644 features/buildroot/package/gcc/Config.in.host create mode 100644 features/buildroot/package/gcc/arc-2019.03-release/0001-ARC-PR89838.patch create mode 100644 features/buildroot/package/gcc/arc-2019.03-release/0002-ARC-Fix-emitting-TLS-symbols.patch create mode 100644 features/buildroot/package/gcc/arc-2019.03-release/0100-uclibc-conf.patch create mode 120000 features/buildroot/package/gcc/gcc-final/gcc-final.hash create mode 100644 features/buildroot/package/gcc/gcc-final/gcc-final.mk create mode 120000 features/buildroot/package/gcc/gcc-initial/gcc-initial.hash create mode 100644 features/buildroot/package/gcc/gcc-initial/gcc-initial.mk create mode 100644 features/buildroot/package/gcc/gcc.hash create mode 100644 features/buildroot/package/gcc/gcc.mk create mode 100644 features/buildroot/package/gcc/or1k-musl-5.4.0-20170218/100-uclibc-conf.patch create mode 100644 features/buildroot/package/gcc/or1k-musl-5.4.0-20170218/301-missing-execinfo_h.patch create mode 100644 features/buildroot/package/gcc/or1k-musl-5.4.0-20170218/850-libstdcxx-uclibc-c99.patch create mode 100644 features/buildroot/package/gcc/or1k-musl-5.4.0-20170218/860-cilk-wchar.patch create mode 100644 features/buildroot/package/gcc/or1k-musl-5.4.0-20170218/930-libgcc-disable-split-stack-nothreads.patch create mode 100644 features/buildroot/package/gconf/Config.in create mode 100644 features/buildroot/package/gconf/gconf.hash create mode 100644 features/buildroot/package/gconf/gconf.mk create mode 100644 features/buildroot/package/gcr/Config.in create mode 100644 features/buildroot/package/gcr/gcr.hash create mode 100644 features/buildroot/package/gcr/gcr.mk create mode 100644 features/buildroot/package/gd/Config.in create mode 100644 features/buildroot/package/gd/gd.hash create mode 100644 features/buildroot/package/gd/gd.mk create mode 100644 features/buildroot/package/gdb/7.12.1/0001-Remove-const-in-xtensa-linux-nat.c-fetch_gregs.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0004-Fix-gdbserver-build-on-uClibc-noMMU.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0005-use-asm-sgidefs.h.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0006-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0007-gdbserver-fix-build-for-m68k.patch create mode 100644 features/buildroot/package/gdb/7.12.1/0008-gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-gdb_wait-h.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0003-use-asm-sgidefs.h.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0004-gdbserver-fix-build-for-m68k.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0006-Move-is_regular_file-from-common-utils.c-to-filestuf.patch create mode 100644 features/buildroot/package/gdb/8.1.1/0007-gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-gdb_wait-h.patch create mode 100644 features/buildroot/package/gdb/8.2.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch create mode 100644 features/buildroot/package/gdb/8.2.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch create mode 100644 features/buildroot/package/gdb/8.2.1/0003-use-asm-sgidefs.h.patch create mode 100644 features/buildroot/package/gdb/8.2.1/0004-gdbserver-fix-build-for-m68k.patch create mode 100644 features/buildroot/package/gdb/8.2.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch create mode 100644 features/buildroot/package/gdb/8.3/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch create mode 100644 features/buildroot/package/gdb/8.3/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch create mode 100644 features/buildroot/package/gdb/8.3/0003-use-asm-sgidefs.h.patch create mode 100644 features/buildroot/package/gdb/8.3/0004-gdbserver-fix-build-for-m68k.patch create mode 100644 features/buildroot/package/gdb/8.3/0005-nat-fork-inferior-include-linux-ptrace.h.patch create mode 100644 features/buildroot/package/gdb/Config.in create mode 100644 features/buildroot/package/gdb/Config.in.host create mode 100644 features/buildroot/package/gdb/arc-2018.09-gdb/0001-gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch create mode 100755 features/buildroot/package/gdb/gdb-python-config create mode 100644 features/buildroot/package/gdb/gdb.hash create mode 100644 features/buildroot/package/gdb/gdb.mk create mode 100644 features/buildroot/package/gdbm/Config.in create mode 100644 features/buildroot/package/gdbm/gdbm.hash create mode 100644 features/buildroot/package/gdbm/gdbm.mk create mode 100644 features/buildroot/package/gdk-pixbuf/Config.in create mode 100644 features/buildroot/package/gdk-pixbuf/gdk-pixbuf.hash create mode 100644 features/buildroot/package/gdk-pixbuf/gdk-pixbuf.mk create mode 100644 features/buildroot/package/genext2fs/0001-update-genext2fs.c-to-rev-1.118.patch create mode 100644 features/buildroot/package/genext2fs/Config.in create mode 100644 features/buildroot/package/genext2fs/Config.in.host create mode 100644 features/buildroot/package/genext2fs/genext2fs.hash create mode 100644 features/buildroot/package/genext2fs/genext2fs.mk create mode 100644 features/buildroot/package/gengetopt/0001-fix-compilation-warnings-in-generated-code.patch create mode 100644 features/buildroot/package/gengetopt/gengetopt.hash create mode 100644 features/buildroot/package/gengetopt/gengetopt.mk create mode 100644 features/buildroot/package/genimage/Config.in.host create mode 100644 features/buildroot/package/genimage/genimage.hash create mode 100644 features/buildroot/package/genimage/genimage.mk create mode 100644 features/buildroot/package/genpart/0001-fix-return-code.patch create mode 100644 features/buildroot/package/genpart/Config.in create mode 100644 features/buildroot/package/genpart/Config.in.host create mode 100644 features/buildroot/package/genpart/genpart.hash create mode 100644 features/buildroot/package/genpart/genpart.mk create mode 100644 features/buildroot/package/genromfs/0001-build-system.patch create mode 100644 features/buildroot/package/genromfs/Config.in create mode 100644 features/buildroot/package/genromfs/genromfs.hash create mode 100644 features/buildroot/package/genromfs/genromfs.mk create mode 100644 features/buildroot/package/geoip/Config.in create mode 100644 features/buildroot/package/geoip/geoip.hash create mode 100644 features/buildroot/package/geoip/geoip.mk create mode 100644 features/buildroot/package/gerbera/Config.in create mode 100644 features/buildroot/package/gerbera/S99gerbera create mode 100644 features/buildroot/package/gerbera/config.xml create mode 100644 features/buildroot/package/gerbera/gerbera.hash create mode 100644 features/buildroot/package/gerbera/gerbera.mk create mode 100644 features/buildroot/package/gesftpserver/0001-Change-order-of-v3-attributes-according-to-draft-iet.patch create mode 100644 features/buildroot/package/gesftpserver/Config.in create mode 100644 features/buildroot/package/gesftpserver/gesftpserver.hash create mode 100644 features/buildroot/package/gesftpserver/gesftpserver.mk create mode 100644 features/buildroot/package/getent/Config.in create mode 100644 features/buildroot/package/getent/getent create mode 100644 features/buildroot/package/getent/getent.mk create mode 100644 features/buildroot/package/gettext-gnu/0001-error_print_progname.patch create mode 100644 features/buildroot/package/gettext-gnu/0002-Update-after-gnulib-changed.patch create mode 100644 features/buildroot/package/gettext-gnu/Config.in create mode 100644 features/buildroot/package/gettext-gnu/gettext-gnu.hash create mode 100644 features/buildroot/package/gettext-gnu/gettext-gnu.mk create mode 100644 features/buildroot/package/gettext-tiny/Config.in create mode 100644 features/buildroot/package/gettext-tiny/gettext-tiny.hash create mode 100644 features/buildroot/package/gettext-tiny/gettext-tiny.mk create mode 100644 features/buildroot/package/gettext-tiny/gettext-wrapper create mode 100644 features/buildroot/package/gettext/Config.in create mode 100644 features/buildroot/package/gettext/gettext.mk create mode 100644 features/buildroot/package/gflags/Config.in create mode 100644 features/buildroot/package/gflags/gflags.hash create mode 100644 features/buildroot/package/gflags/gflags.mk create mode 100644 features/buildroot/package/ghostscript-fonts/Config.in create mode 100644 features/buildroot/package/ghostscript-fonts/ghostscript-fonts.hash create mode 100644 features/buildroot/package/ghostscript-fonts/ghostscript-fonts.mk create mode 100644 features/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch create mode 100644 features/buildroot/package/ghostscript/0002-Bug-700986-Remove-the-crazy-md5-file-copying-nonsense.patch create mode 100644 features/buildroot/package/ghostscript/Config.in create mode 100644 features/buildroot/package/ghostscript/ghostscript.hash create mode 100644 features/buildroot/package/ghostscript/ghostscript.mk create mode 100644 features/buildroot/package/giblib/0001-fix-imlib2-detection.patch create mode 100644 features/buildroot/package/giblib/Config.in create mode 100644 features/buildroot/package/giblib/giblib.hash create mode 100644 features/buildroot/package/giblib/giblib.mk create mode 100644 features/buildroot/package/giflib/Config.in create mode 100644 features/buildroot/package/giflib/giflib.hash create mode 100644 features/buildroot/package/giflib/giflib.mk create mode 100644 features/buildroot/package/git-crypt/Config.in create mode 100644 features/buildroot/package/git-crypt/git-crypt.hash create mode 100644 features/buildroot/package/git-crypt/git-crypt.mk create mode 100644 features/buildroot/package/git/Config.in create mode 100644 features/buildroot/package/git/git.hash create mode 100644 features/buildroot/package/git/git.mk create mode 100644 features/buildroot/package/gli/Config.in create mode 100644 features/buildroot/package/gli/gli.hash create mode 100644 features/buildroot/package/gli/gli.mk create mode 100644 features/buildroot/package/glib-networking/Config.in create mode 100644 features/buildroot/package/glib-networking/glib-networking.hash create mode 100644 features/buildroot/package/glib-networking/glib-networking.mk create mode 100644 features/buildroot/package/glibc/06983fe52cfe8e4779035c27e8cc5d2caab31531/glibc.hash create mode 100644 features/buildroot/package/glibc/2.29-11-ge28ad442e73b00ae2047d89c8cc7f9b2a0de5436/glibc.hash create mode 100644 features/buildroot/package/glibc/7630ed2fa60caea98f500e4a7a51b88f9bf1e176/glibc.hash create mode 100644 features/buildroot/package/glibc/Config.in create mode 100644 features/buildroot/package/glibc/arc-2019.03-release/glibc.hash create mode 100644 features/buildroot/package/glibc/glibc.hash create mode 100644 features/buildroot/package/glibc/glibc.mk create mode 100644 features/buildroot/package/glibc/nsswitch.conf create mode 100644 features/buildroot/package/glibmm/Config.in create mode 100644 features/buildroot/package/glibmm/glibmm.hash create mode 100644 features/buildroot/package/glibmm/glibmm.mk create mode 100644 features/buildroot/package/glm/Config.in create mode 100644 features/buildroot/package/glm/glm.hash create mode 100644 features/buildroot/package/glm/glm.mk create mode 100644 features/buildroot/package/glmark2/Config.in create mode 100644 features/buildroot/package/glmark2/glmark2.hash create mode 100644 features/buildroot/package/glmark2/glmark2.mk create mode 100644 features/buildroot/package/glog/Config.in create mode 100644 features/buildroot/package/glog/glog.hash create mode 100644 features/buildroot/package/glog/glog.mk create mode 100644 features/buildroot/package/glorytun/Config.in create mode 100644 features/buildroot/package/glorytun/glorytun.hash create mode 100644 features/buildroot/package/glorytun/glorytun.mk create mode 100644 features/buildroot/package/gmp/Config.in create mode 100644 features/buildroot/package/gmp/gmp.hash create mode 100644 features/buildroot/package/gmp/gmp.mk create mode 100644 features/buildroot/package/gmpc/Config.in create mode 100644 features/buildroot/package/gmpc/gmpc.hash create mode 100644 features/buildroot/package/gmpc/gmpc.mk create mode 100644 features/buildroot/package/gmrender-resurrect/Config.in create mode 100644 features/buildroot/package/gmrender-resurrect/gmrender-resurrect.hash create mode 100644 features/buildroot/package/gmrender-resurrect/gmrender-resurrect.mk create mode 100644 features/buildroot/package/gnu-efi/0001-Fix-for-problem-with-undeclared-intptr_t-type.patch create mode 100644 features/buildroot/package/gnu-efi/0002-Make.defaults-don-t-override-ARCH-when-cross-compili.patch create mode 100644 features/buildroot/package/gnu-efi/Config.in create mode 100644 features/buildroot/package/gnu-efi/gnu-efi.hash create mode 100644 features/buildroot/package/gnu-efi/gnu-efi.mk create mode 100644 features/buildroot/package/gnuchess/Config.in create mode 100644 features/buildroot/package/gnuchess/gnuchess.hash create mode 100644 features/buildroot/package/gnuchess/gnuchess.mk create mode 100644 features/buildroot/package/gnupg/Config.in create mode 100644 features/buildroot/package/gnupg/Config.in.host create mode 100644 features/buildroot/package/gnupg/gnupg.hash create mode 100644 features/buildroot/package/gnupg/gnupg.mk create mode 100644 features/buildroot/package/gnupg2/Config.in create mode 100644 features/buildroot/package/gnupg2/gnupg2.hash create mode 100644 features/buildroot/package/gnupg2/gnupg2.mk create mode 100644 features/buildroot/package/gnuplot/0001-configure-add-without-demo-option.patch create mode 100644 features/buildroot/package/gnuplot/0002-use-gdlib-config-properly.patch create mode 100644 features/buildroot/package/gnuplot/Config.in create mode 100644 features/buildroot/package/gnuplot/gnuplot.hash create mode 100644 features/buildroot/package/gnuplot/gnuplot.mk create mode 100644 features/buildroot/package/gnuradio/0001-socket_pdu_impl.cc-fix-build-with-boost-1.70.0.patch create mode 100644 features/buildroot/package/gnuradio/Config.in create mode 100644 features/buildroot/package/gnuradio/gnuradio.hash create mode 100644 features/buildroot/package/gnuradio/gnuradio.mk create mode 100644 features/buildroot/package/gnutls/Config.in create mode 100644 features/buildroot/package/gnutls/gnutls.hash create mode 100644 features/buildroot/package/gnutls/gnutls.mk create mode 100644 features/buildroot/package/go-bootstrap/Config.in.host create mode 100644 features/buildroot/package/go-bootstrap/go-bootstrap.hash create mode 100644 features/buildroot/package/go-bootstrap/go-bootstrap.mk create mode 100644 features/buildroot/package/go/0001-build.go-explicit-option-for-crosscompilation.patch create mode 100644 features/buildroot/package/go/Config.in.host create mode 100644 features/buildroot/package/go/go.hash create mode 100644 features/buildroot/package/go/go.mk create mode 100644 features/buildroot/package/gob2/0001-dont-include-from-prefix.patch create mode 100644 features/buildroot/package/gob2/gob2.hash create mode 100644 features/buildroot/package/gob2/gob2.mk create mode 100644 features/buildroot/package/google-breakpad/0001-add-missing-asm-ptrace-include.patch create mode 100644 features/buildroot/package/google-breakpad/0002-Replace-remaining-references-to-struct-ucontext-with.patch create mode 100644 features/buildroot/package/google-breakpad/Config.in create mode 100644 features/buildroot/package/google-breakpad/Config.in.host create mode 100755 features/buildroot/package/google-breakpad/gen-syms.sh create mode 100644 features/buildroot/package/google-breakpad/google-breakpad.hash create mode 100644 features/buildroot/package/google-breakpad/google-breakpad.mk create mode 100644 features/buildroot/package/google-material-design-icons/Config.in create mode 100644 features/buildroot/package/google-material-design-icons/google-material-design-icons.hash create mode 100644 features/buildroot/package/google-material-design-icons/google-material-design-icons.mk create mode 100644 features/buildroot/package/googlefontdirectory/Config.in create mode 100644 features/buildroot/package/googlefontdirectory/googlefontdirectory.hash create mode 100644 features/buildroot/package/googlefontdirectory/googlefontdirectory.mk create mode 100644 features/buildroot/package/gperf/Config.in create mode 100644 features/buildroot/package/gperf/gperf.hash create mode 100644 features/buildroot/package/gperf/gperf.mk create mode 100644 features/buildroot/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch create mode 100644 features/buildroot/package/gpm/0002-Install-unversioned-solibrary.patch create mode 100644 features/buildroot/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch create mode 100644 features/buildroot/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch create mode 100644 features/buildroot/package/gpm/0005-fix-building-w-newer-glibc.patch create mode 100644 features/buildroot/package/gpm/Config.in create mode 100644 features/buildroot/package/gpm/gpm.hash create mode 100644 features/buildroot/package/gpm/gpm.mk create mode 100644 features/buildroot/package/gpsd/0001-SConstruct-do-not-force-O2-by-default.patch create mode 100644 features/buildroot/package/gpsd/0002-SConstruct-Do-not-crash-when-not-building-python-man-pages.patch create mode 100644 features/buildroot/package/gpsd/0003-driver_ubx-Save-UBX-RXM-RAWX-data-in-rawdate_t.patch create mode 100644 features/buildroot/package/gpsd/0004-packet_states.h-fix-isync-build-without-NMEA.patch create mode 100644 features/buildroot/package/gpsd/Config.in create mode 100644 features/buildroot/package/gpsd/S50gpsd create mode 100644 features/buildroot/package/gpsd/gpsd.hash create mode 100644 features/buildroot/package/gpsd/gpsd.mk create mode 100644 features/buildroot/package/gptfdisk/0001-ldlibs.patch create mode 100644 features/buildroot/package/gptfdisk/Config.in create mode 100644 features/buildroot/package/gptfdisk/Config.in.host create mode 100644 features/buildroot/package/gptfdisk/gptfdisk.hash create mode 100644 features/buildroot/package/gptfdisk/gptfdisk.mk create mode 100644 features/buildroot/package/gqrx/Config.in create mode 100644 features/buildroot/package/gqrx/gqrx.hash create mode 100644 features/buildroot/package/gqrx/gqrx.mk create mode 100644 features/buildroot/package/gqview/0001-make.patch create mode 100644 features/buildroot/package/gqview/Config.in create mode 100644 features/buildroot/package/gqview/gqview.hash create mode 100644 features/buildroot/package/gqview/gqview.mk create mode 100644 features/buildroot/package/gr-osmosdr/Config.in create mode 100644 features/buildroot/package/gr-osmosdr/gr-osmosdr.hash create mode 100644 features/buildroot/package/gr-osmosdr/gr-osmosdr.mk create mode 100644 features/buildroot/package/granite/Config.in create mode 100644 features/buildroot/package/granite/granite.hash create mode 100644 features/buildroot/package/granite/granite.mk create mode 100644 features/buildroot/package/grantlee/Config.in create mode 100644 features/buildroot/package/grantlee/grantlee.hash create mode 100644 features/buildroot/package/grantlee/grantlee.mk create mode 100644 features/buildroot/package/graphite2/Config.in create mode 100644 features/buildroot/package/graphite2/graphite2.hash create mode 100644 features/buildroot/package/graphite2/graphite2.mk create mode 100644 features/buildroot/package/grep/Config.in create mode 100644 features/buildroot/package/grep/grep.hash create mode 100644 features/buildroot/package/grep/grep.mk create mode 100644 features/buildroot/package/grpc/0001-target-build-using-host-plugin.patch create mode 100644 features/buildroot/package/grpc/0002-Properly-detect-the-availability-of-pthread_setname_.patch create mode 100644 features/buildroot/package/grpc/0003-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch create mode 100644 features/buildroot/package/grpc/Config.in create mode 100644 features/buildroot/package/grpc/grpc.hash create mode 100644 features/buildroot/package/grpc/grpc.mk create mode 100644 features/buildroot/package/gsettings-desktop-schemas/Config.in create mode 100644 features/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash create mode 100644 features/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk create mode 100644 features/buildroot/package/gsl/Config.in create mode 100644 features/buildroot/package/gsl/gsl.hash create mode 100644 features/buildroot/package/gsl/gsl.mk create mode 100644 features/buildroot/package/gssdp/Config.in create mode 100644 features/buildroot/package/gssdp/gssdp.hash create mode 100644 features/buildroot/package/gssdp/gssdp.mk create mode 100644 features/buildroot/package/gstreamer/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-ffmpeg/0001-gcc47.patch create mode 100644 features/buildroot/package/gstreamer/gst-ffmpeg/0002-arm-avoid-using-the-movw-instruction.patch create mode 100644 features/buildroot/package/gstreamer/gst-ffmpeg/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.hash create mode 100644 features/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/0001-gplay-add-missing-include.patch create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/0002-Fix-bashism-in-configure-script.patch create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/0003-Use-proper-objdump.patch create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/0004-Fix-libgstfsl-linkage-add-lrt-for-shared-memory-func.patch create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/0005-Remove-use-of-obsolete-VIDIOC_DBG_G_CHIP_IDENT.patch create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.hash create mode 100644 features/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.mk create mode 100644 features/buildroot/package/gstreamer/gst-omapfb/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.hash create mode 100644 features/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.mk create mode 100644 features/buildroot/package/gstreamer/gst-plugin-x170/0001-correct-CFLAGS.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugin-x170/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.hash create mode 100644 features/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.mk create mode 100644 features/buildroot/package/gstreamer/gst-plugins-bad/0001-opus-jpegformat-unbreak-non-debug-build.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-bad/0002-fix-dfb-example.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-bad/0003-drop-buggy-libvpx-legacy-handling.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-bad/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.hash create mode 100644 features/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.mk create mode 100644 features/buildroot/package/gstreamer/gst-plugins-base/0001-tremor.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-base/0002-audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-base/0003-audioresample-It-s-HAVE_EMMINTRIN_H-not-HAVE_XMMINTR.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-base/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.hash create mode 100644 features/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.mk create mode 100644 features/buildroot/package/gstreamer/gst-plugins-good/0001-linux36.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-good/0002-v4l2-fix-compilation-against-newer-kernel-headers.patch create mode 100644 features/buildroot/package/gstreamer/gst-plugins-good/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.hash create mode 100644 features/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.mk create mode 100644 features/buildroot/package/gstreamer/gst-plugins-ugly/Config.in create mode 100644 features/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.hash create mode 100644 features/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.mk create mode 100644 features/buildroot/package/gstreamer/gstreamer.mk create mode 100644 features/buildroot/package/gstreamer/gstreamer/0001-bison3.patch create mode 100644 features/buildroot/package/gstreamer/gstreamer/Config.in create mode 100644 features/buildroot/package/gstreamer/gstreamer/gstreamer.hash create mode 100644 features/buildroot/package/gstreamer/gstreamer/gstreamer.mk create mode 100644 features/buildroot/package/gstreamer1/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst-omx/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst-omx/gst-omx.hash create mode 100644 features/buildroot/package/gstreamer1/gst-omx/gst-omx.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-imx/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-imx/gst1-imx.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-imx/gst1-imx.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-interpipe/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-libav/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-libav/gst1-libav.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-libav/gst1-libav.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-bad/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-base/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-good/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-ugly/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-rtsp-server/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-shark/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-shark/gst1-shark.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-shark/gst1-shark.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-vaapi/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk create mode 100644 features/buildroot/package/gstreamer1/gst1-validate/Config.in create mode 100644 features/buildroot/package/gstreamer1/gst1-validate/gst1-validate.hash create mode 100644 features/buildroot/package/gstreamer1/gst1-validate/gst1-validate.mk create mode 100644 features/buildroot/package/gstreamer1/gstreamer1-editing-services/Config.in create mode 100644 features/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash create mode 100644 features/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk create mode 100644 features/buildroot/package/gstreamer1/gstreamer1-mm/Config.in create mode 100644 features/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash create mode 100644 features/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk create mode 100644 features/buildroot/package/gstreamer1/gstreamer1.mk create mode 100644 features/buildroot/package/gstreamer1/gstreamer1/0001-meson-Link-to-objects-instea-of-static-helper-librar.patch create mode 100644 features/buildroot/package/gstreamer1/gstreamer1/Config.in create mode 100644 features/buildroot/package/gstreamer1/gstreamer1/gstreamer1.hash create mode 100644 features/buildroot/package/gstreamer1/gstreamer1/gstreamer1.mk create mode 100644 features/buildroot/package/gtest/Config.in create mode 100644 features/buildroot/package/gtest/gmock.pc create mode 100644 features/buildroot/package/gtest/gtest.hash create mode 100644 features/buildroot/package/gtest/gtest.mk create mode 100644 features/buildroot/package/gtest/gtest.pc create mode 100644 features/buildroot/package/gtk2-engines/Config.in create mode 100644 features/buildroot/package/gtk2-engines/gtk2-engines.hash create mode 100644 features/buildroot/package/gtk2-engines/gtk2-engines.mk create mode 100644 features/buildroot/package/gtkmm3/Config.in create mode 100644 features/buildroot/package/gtkmm3/gtkmm3.hash create mode 100644 features/buildroot/package/gtkmm3/gtkmm3.mk create mode 100644 features/buildroot/package/gtkperf/Config.in create mode 100644 features/buildroot/package/gtkperf/gtkperf.hash create mode 100644 features/buildroot/package/gtkperf/gtkperf.mk create mode 100644 features/buildroot/package/gtksourceview/Config.in create mode 100644 features/buildroot/package/gtksourceview/gtksourceview.hash create mode 100644 features/buildroot/package/gtksourceview/gtksourceview.mk create mode 100644 features/buildroot/package/guile/0001-fix_arm_endianness.patch create mode 100644 features/buildroot/package/guile/0002-calculate-csqrt_manually.patch create mode 100644 features/buildroot/package/guile/0003-workaround-ice-ssa-corruption.patch create mode 100644 features/buildroot/package/guile/Config.in create mode 100644 features/buildroot/package/guile/guile.hash create mode 100644 features/buildroot/package/guile/guile.mk create mode 100644 features/buildroot/package/gupnp-av/Config.in create mode 100644 features/buildroot/package/gupnp-av/gupnp-av.hash create mode 100644 features/buildroot/package/gupnp-av/gupnp-av.mk create mode 100644 features/buildroot/package/gupnp-dlna/Config.in create mode 100644 features/buildroot/package/gupnp-dlna/gupnp-dlna.hash create mode 100644 features/buildroot/package/gupnp-dlna/gupnp-dlna.mk create mode 100644 features/buildroot/package/gupnp-tools/Config.in create mode 100644 features/buildroot/package/gupnp-tools/gupnp-tools.hash create mode 100644 features/buildroot/package/gupnp-tools/gupnp-tools.mk create mode 100644 features/buildroot/package/gupnp/Config.in create mode 100644 features/buildroot/package/gupnp/gupnp.hash create mode 100644 features/buildroot/package/gupnp/gupnp.mk create mode 100644 features/buildroot/package/gutenprint/0001-use-pregen-xmli18n-header.patch create mode 100644 features/buildroot/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch create mode 100644 features/buildroot/package/gutenprint/Config.in create mode 100644 features/buildroot/package/gutenprint/gutenprint.hash create mode 100644 features/buildroot/package/gutenprint/gutenprint.mk create mode 100644 features/buildroot/package/gvfs/Config.in create mode 100644 features/buildroot/package/gvfs/gvfs.hash create mode 100644 features/buildroot/package/gvfs/gvfs.mk create mode 100644 features/buildroot/package/gzip/Config.in create mode 100644 features/buildroot/package/gzip/gzip.hash create mode 100644 features/buildroot/package/gzip/gzip.mk create mode 100644 features/buildroot/package/hackrf/0001-Don-t-require-a-C-compiler.patch create mode 100644 features/buildroot/package/hackrf/Config.in create mode 100644 features/buildroot/package/hackrf/hackrf.hash create mode 100644 features/buildroot/package/hackrf/hackrf.mk create mode 100644 features/buildroot/package/hans/Config.in create mode 100644 features/buildroot/package/hans/hans.hash create mode 100644 features/buildroot/package/hans/hans.mk create mode 100644 features/buildroot/package/haproxy/Config.in create mode 100644 features/buildroot/package/haproxy/haproxy.hash create mode 100644 features/buildroot/package/haproxy/haproxy.mk create mode 100644 features/buildroot/package/harfbuzz/0001-Add-missing-cairo-svg-dependency-to-test-ot-color.patch create mode 100644 features/buildroot/package/harfbuzz/Config.in create mode 100644 features/buildroot/package/harfbuzz/harfbuzz.hash create mode 100644 features/buildroot/package/harfbuzz/harfbuzz.mk create mode 100644 features/buildroot/package/haserl/0001-add-haserl_lualib.inc.patch create mode 100644 features/buildroot/package/haserl/Config.in create mode 100644 features/buildroot/package/haserl/haserl.hash create mode 100644 features/buildroot/package/haserl/haserl.mk create mode 100644 features/buildroot/package/haveged/Config.in create mode 100644 features/buildroot/package/haveged/S21haveged create mode 100644 features/buildroot/package/haveged/haveged.hash create mode 100644 features/buildroot/package/haveged/haveged.mk create mode 100644 features/buildroot/package/haveged/haveged.service create mode 100644 features/buildroot/package/hdparm/Config.in create mode 100644 features/buildroot/package/hdparm/hdparm.hash create mode 100644 features/buildroot/package/hdparm/hdparm.mk create mode 100644 features/buildroot/package/heimdal/heimdal.hash create mode 100644 features/buildroot/package/heimdal/heimdal.mk create mode 100644 features/buildroot/package/heirloom-mailx/0001-Patched-out-SSL2-support-since-it-is-no-longer-suppo.patch create mode 100644 features/buildroot/package/heirloom-mailx/0002-fix-libressl-support.patch create mode 100644 features/buildroot/package/heirloom-mailx/Config.in create mode 100644 features/buildroot/package/heirloom-mailx/heirloom-mailx.hash create mode 100644 features/buildroot/package/heirloom-mailx/heirloom-mailx.mk create mode 100644 features/buildroot/package/hello-world/Config.in create mode 100644 features/buildroot/package/hello-world/hello-world.mk create mode 100644 features/buildroot/package/hello-world/src/CMakeLists.txt create mode 100644 features/buildroot/package/hello-world/src/conanfile.txt create mode 100644 features/buildroot/package/hello-world/src/main.cpp create mode 100644 features/buildroot/package/hiawatha/Config.in create mode 100644 features/buildroot/package/hiawatha/hiawatha.hash create mode 100644 features/buildroot/package/hiawatha/hiawatha.mk create mode 100644 features/buildroot/package/hicolor-icon-theme/Config.in create mode 100644 features/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.hash create mode 100644 features/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.mk create mode 100644 features/buildroot/package/hidapi/0001-hidtest-dont-use-a-C-source-file-since-it-s-pure-C.patch create mode 100644 features/buildroot/package/hidapi/Config.in create mode 100644 features/buildroot/package/hidapi/hidapi.hash create mode 100644 features/buildroot/package/hidapi/hidapi.mk create mode 100644 features/buildroot/package/hiredis/Config.in create mode 100644 features/buildroot/package/hiredis/hiredis.hash create mode 100644 features/buildroot/package/hiredis/hiredis.mk create mode 100644 features/buildroot/package/hostapd/Config.in create mode 100644 features/buildroot/package/hostapd/hostapd.hash create mode 100644 features/buildroot/package/hostapd/hostapd.mk create mode 100644 features/buildroot/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch create mode 100644 features/buildroot/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch create mode 100644 features/buildroot/package/hplip/Config.in create mode 100644 features/buildroot/package/hplip/hplip.hash create mode 100644 features/buildroot/package/hplip/hplip.mk create mode 100644 features/buildroot/package/htop/0001-MetersPanel-remove-0xe2-from-MetersPanel.c.patch create mode 100644 features/buildroot/package/htop/Config.in create mode 100644 features/buildroot/package/htop/htop.hash create mode 100644 features/buildroot/package/htop/htop.mk create mode 100644 features/buildroot/package/httping/0001-fix-math-library-linking.patch create mode 100644 features/buildroot/package/httping/0002-Makefile-allow-build-without-gettext.patch create mode 100644 features/buildroot/package/httping/Config.in create mode 100644 features/buildroot/package/httping/httping.hash create mode 100644 features/buildroot/package/httping/httping.mk create mode 100644 features/buildroot/package/hwdata/Config.in create mode 100644 features/buildroot/package/hwdata/hwdata.hash create mode 100644 features/buildroot/package/hwdata/hwdata.mk create mode 100644 features/buildroot/package/hwloc/Config.in create mode 100644 features/buildroot/package/hwloc/hwloc.hash create mode 100644 features/buildroot/package/hwloc/hwloc.mk create mode 100644 features/buildroot/package/i2c-tools/Config.in create mode 100644 features/buildroot/package/i2c-tools/i2c-tools.hash create mode 100644 features/buildroot/package/i2c-tools/i2c-tools.mk create mode 100644 features/buildroot/package/i2pd/0001-build-CMakeLists.txt-don-t-install-source-and-licens.patch create mode 100644 features/buildroot/package/i2pd/Config.in create mode 100644 features/buildroot/package/i2pd/S99i2pd create mode 100644 features/buildroot/package/i2pd/i2pd.hash create mode 100644 features/buildroot/package/i2pd/i2pd.mk create mode 100644 features/buildroot/package/i2pd/i2pd.service create mode 100644 features/buildroot/package/i7z/Config.in create mode 100644 features/buildroot/package/i7z/i7z.hash create mode 100644 features/buildroot/package/i7z/i7z.mk create mode 100644 features/buildroot/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch create mode 100644 features/buildroot/package/ibrcommon/0002-ibrcommon-added-openssl-1.1-compatibility-264.patch create mode 100644 features/buildroot/package/ibrcommon/0003-ibrcommon-ssl-gcm-fix-static-build-with-openssl.patch create mode 100644 features/buildroot/package/ibrcommon/Config.in create mode 100644 features/buildroot/package/ibrcommon/ibrcommon.hash create mode 100644 features/buildroot/package/ibrcommon/ibrcommon.mk create mode 100644 features/buildroot/package/ibrdtn-tools/Config.in create mode 100644 features/buildroot/package/ibrdtn-tools/ibrdtn-tools.hash create mode 100644 features/buildroot/package/ibrdtn-tools/ibrdtn-tools.mk create mode 100644 features/buildroot/package/ibrdtn/Config.in create mode 100644 features/buildroot/package/ibrdtn/ibrdtn.hash create mode 100644 features/buildroot/package/ibrdtn/ibrdtn.mk create mode 100644 features/buildroot/package/ibrdtnd/0001-ibrdtnd-added-openssl-compatibility.patch create mode 100644 features/buildroot/package/ibrdtnd/0002-SecurityCertificateManager.cpp-include-cstring-267.patch create mode 100644 features/buildroot/package/ibrdtnd/Config.in create mode 100644 features/buildroot/package/ibrdtnd/ibrdtnd.hash create mode 100644 features/buildroot/package/ibrdtnd/ibrdtnd.mk create mode 100644 features/buildroot/package/icu/0001-dont-build-static-dynamic-twice.patch create mode 100644 features/buildroot/package/icu/0002-workaround-toolchain-bugs.patch create mode 100644 features/buildroot/package/icu/0003-link-icudata-as-data-only.patch create mode 100644 features/buildroot/package/icu/0004-fix-static-linking-with-icu-uc.patch create mode 100644 features/buildroot/package/icu/0005-Fix-big-endian-build.patch create mode 100644 features/buildroot/package/icu/Config.in create mode 100644 features/buildroot/package/icu/icu.hash create mode 100644 features/buildroot/package/icu/icu.mk create mode 100644 features/buildroot/package/ifenslave/Config.in create mode 100644 features/buildroot/package/ifenslave/ifenslave.hash create mode 100644 features/buildroot/package/ifenslave/ifenslave.mk create mode 100644 features/buildroot/package/ifmetric/0001-Fix-issue-NETLINK-Packet-too-small-or-truncated-92-1.patch create mode 100644 features/buildroot/package/ifmetric/Config.in create mode 100644 features/buildroot/package/ifmetric/ifmetric.hash create mode 100644 features/buildroot/package/ifmetric/ifmetric.mk create mode 100644 features/buildroot/package/ifplugd/0001-cross.patch create mode 100644 features/buildroot/package/ifplugd/0002-fix-headers.patch create mode 100644 features/buildroot/package/ifplugd/0003-no-cxx.patch create mode 100644 features/buildroot/package/ifplugd/0004-musl-fix-types.patch create mode 100644 features/buildroot/package/ifplugd/Config.in create mode 100644 features/buildroot/package/ifplugd/ifplugd.hash create mode 100644 features/buildroot/package/ifplugd/ifplugd.mk create mode 100644 features/buildroot/package/iftop/Config.in create mode 100644 features/buildroot/package/iftop/iftop.hash create mode 100644 features/buildroot/package/iftop/iftop.mk create mode 100644 features/buildroot/package/ifupdown-scripts/Config.in create mode 100644 features/buildroot/package/ifupdown-scripts/S40network create mode 100644 features/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk create mode 100644 features/buildroot/package/ifupdown-scripts/network.service create mode 100644 features/buildroot/package/ifupdown-scripts/network/if-down.d/.empty create mode 100644 features/buildroot/package/ifupdown-scripts/network/if-post-down.d/.empty create mode 100755 features/buildroot/package/ifupdown-scripts/network/if-pre-up.d/wait_iface create mode 100644 features/buildroot/package/ifupdown-scripts/network/if-up.d/.empty create mode 100755 features/buildroot/package/ifupdown-scripts/nfs_check create mode 100644 features/buildroot/package/ifupdown/0001-dont-use-dpkg-architecture.patch create mode 100644 features/buildroot/package/ifupdown/Config.in create mode 100644 features/buildroot/package/ifupdown/ifupdown.hash create mode 100644 features/buildroot/package/ifupdown/ifupdown.mk create mode 100644 features/buildroot/package/igd2-for-linux/Config.in create mode 100644 features/buildroot/package/igd2-for-linux/S99upnpd create mode 100644 features/buildroot/package/igd2-for-linux/igd2-for-linux.hash create mode 100644 features/buildroot/package/igd2-for-linux/igd2-for-linux.mk create mode 100644 features/buildroot/package/igd2-for-linux/upnpd.service create mode 100644 features/buildroot/package/igh-ethercat/Config.in create mode 100644 features/buildroot/package/igh-ethercat/igh-ethercat.hash create mode 100644 features/buildroot/package/igh-ethercat/igh-ethercat.mk create mode 100644 features/buildroot/package/igmpproxy/Config.in create mode 100644 features/buildroot/package/igmpproxy/igmpproxy.hash create mode 100644 features/buildroot/package/igmpproxy/igmpproxy.mk create mode 100644 features/buildroot/package/ijs/Config.in create mode 100644 features/buildroot/package/ijs/ijs.hash create mode 100644 features/buildroot/package/ijs/ijs.mk create mode 100644 features/buildroot/package/imagemagick/0001-CVE-2019-13454.patch create mode 100644 features/buildroot/package/imagemagick/Config.in create mode 100644 features/buildroot/package/imagemagick/Config.in.host create mode 100644 features/buildroot/package/imagemagick/imagemagick.hash create mode 100644 features/buildroot/package/imagemagick/imagemagick.mk create mode 100644 features/buildroot/package/imlib2/Config.in create mode 100644 features/buildroot/package/imlib2/imlib2.hash create mode 100644 features/buildroot/package/imlib2/imlib2.mk create mode 100644 features/buildroot/package/imx-mkimage/0001-add-support-for-overriding-bl32-and-bl33-not-only-bl.patch create mode 100644 features/buildroot/package/imx-mkimage/0002-add-ldflags-to-link-step.patch create mode 100644 features/buildroot/package/imx-mkimage/0003-Add-unused-fake-version.patch create mode 100644 features/buildroot/package/imx-mkimage/Config.in.host create mode 100644 features/buildroot/package/imx-mkimage/imx-mkimage.hash create mode 100644 features/buildroot/package/imx-mkimage/imx-mkimage.mk create mode 100644 features/buildroot/package/imx-usb-loader/Config.in create mode 100644 features/buildroot/package/imx-usb-loader/Config.in.host create mode 100644 features/buildroot/package/imx-usb-loader/imx-usb-loader.hash create mode 100644 features/buildroot/package/imx-usb-loader/imx-usb-loader.mk create mode 100644 features/buildroot/package/inadyn/Config.in create mode 100644 features/buildroot/package/inadyn/S70inadyn create mode 100644 features/buildroot/package/inadyn/inadyn.conf create mode 100644 features/buildroot/package/inadyn/inadyn.hash create mode 100644 features/buildroot/package/inadyn/inadyn.mk create mode 100644 features/buildroot/package/inadyn/inadyn.service create mode 100644 features/buildroot/package/inconsolata/Config.in create mode 100644 features/buildroot/package/inconsolata/inconsolata.hash create mode 100644 features/buildroot/package/inconsolata/inconsolata.mk create mode 100644 features/buildroot/package/initscripts/Config.in create mode 100644 features/buildroot/package/initscripts/init.d/S20urandom create mode 100755 features/buildroot/package/initscripts/init.d/rcK create mode 100755 features/buildroot/package/initscripts/init.d/rcS create mode 100644 features/buildroot/package/initscripts/initscripts.mk create mode 100644 features/buildroot/package/inotify-tools/Config.in create mode 100644 features/buildroot/package/inotify-tools/inotify-tools.hash create mode 100644 features/buildroot/package/inotify-tools/inotify-tools.mk create mode 100644 features/buildroot/package/input-event-daemon/Config.in create mode 100644 features/buildroot/package/input-event-daemon/S99input-event-daemon create mode 100644 features/buildroot/package/input-event-daemon/input-event-daemon.hash create mode 100644 features/buildroot/package/input-event-daemon/input-event-daemon.mk create mode 100644 features/buildroot/package/input-event-daemon/input-event-daemon.service create mode 100644 features/buildroot/package/intel-gmmlib/Config.in create mode 100644 features/buildroot/package/intel-gmmlib/intel-gmmlib.hash create mode 100644 features/buildroot/package/intel-gmmlib/intel-gmmlib.mk create mode 100644 features/buildroot/package/intel-mediadriver/0001-Drop-hardening-related-flags.patch create mode 100644 features/buildroot/package/intel-mediadriver/Config.in create mode 100644 features/buildroot/package/intel-mediadriver/intel-mediadriver.hash create mode 100644 features/buildroot/package/intel-mediadriver/intel-mediadriver.mk create mode 100644 features/buildroot/package/intel-mediasdk/0001-Don-t-force-fstack-protector.patch create mode 100644 features/buildroot/package/intel-mediasdk/Config.in create mode 100644 features/buildroot/package/intel-mediasdk/intel-mediasdk.hash create mode 100644 features/buildroot/package/intel-mediasdk/intel-mediasdk.mk create mode 100644 features/buildroot/package/intel-microcode/Config.in create mode 100644 features/buildroot/package/intel-microcode/intel-microcode.hash create mode 100644 features/buildroot/package/intel-microcode/intel-microcode.mk create mode 100644 features/buildroot/package/intltool/0001-perl-5.26-compatibility.patch create mode 100644 features/buildroot/package/intltool/intltool.hash create mode 100644 features/buildroot/package/intltool/intltool.mk create mode 100644 features/buildroot/package/iodine/0001-disable-systemd-and-selinux.patch create mode 100644 features/buildroot/package/iodine/Config.in create mode 100644 features/buildroot/package/iodine/iodine.hash create mode 100644 features/buildroot/package/iodine/iodine.mk create mode 100644 features/buildroot/package/iostat/0001-cpunum.patch create mode 100644 features/buildroot/package/iostat/Config.in create mode 100644 features/buildroot/package/iostat/iostat.hash create mode 100644 features/buildroot/package/iostat/iostat.mk create mode 100644 features/buildroot/package/iotop/0001-Fix-build-error-with-Python-3.patch create mode 100644 features/buildroot/package/iotop/Config.in create mode 100644 features/buildroot/package/iotop/iotop.hash create mode 100644 features/buildroot/package/iotop/iotop.mk create mode 100644 features/buildroot/package/iozone/0001-Add-new-targets-for-iozone.patch create mode 100644 features/buildroot/package/iozone/Config.in create mode 100644 features/buildroot/package/iozone/iozone.hash create mode 100644 features/buildroot/package/iozone/iozone.mk create mode 100644 features/buildroot/package/iperf/Config.in create mode 100644 features/buildroot/package/iperf/iperf.hash create mode 100644 features/buildroot/package/iperf/iperf.mk create mode 100644 features/buildroot/package/iperf3/0001-disable-profiling.patch create mode 100644 features/buildroot/package/iperf3/0002-Fix-build-using-musl-libc.patch create mode 100644 features/buildroot/package/iperf3/Config.in create mode 100644 features/buildroot/package/iperf3/iperf3.hash create mode 100644 features/buildroot/package/iperf3/iperf3.mk create mode 100644 features/buildroot/package/ipmitool/0001-Fix-missing-stddef.h-include.patch create mode 100644 features/buildroot/package/ipmitool/0002-ID-461-OpenSSL-1.1-compatibility-error-storage-size-.patch create mode 100644 features/buildroot/package/ipmitool/0003-ID-461-Make-compiler-happier-about-changes-related-t.patch create mode 100644 features/buildroot/package/ipmitool/0004-ID-480-ipmitool-coredumps-in-EVP_CIPHER_CTX_init.patch create mode 100644 features/buildroot/package/ipmitool/0005-ID-480-Call-EVP_CIPHER_CTX_free-instead-of-EVP_CIPHE.patch create mode 100644 features/buildroot/package/ipmitool/0006-lanplus-Fix-compile-with-deprecated-APIs-disabled.patch create mode 100644 features/buildroot/package/ipmitool/Config.in create mode 100644 features/buildroot/package/ipmitool/ipmitool.hash create mode 100644 features/buildroot/package/ipmitool/ipmitool.mk create mode 100644 features/buildroot/package/ipmiutil/0001-no-build-doc.patch create mode 100644 features/buildroot/package/ipmiutil/Config.in create mode 100644 features/buildroot/package/ipmiutil/ipmiutil.hash create mode 100644 features/buildroot/package/ipmiutil/ipmiutil.mk create mode 100644 features/buildroot/package/iproute2/Config.in create mode 100644 features/buildroot/package/iproute2/iproute2.hash create mode 100644 features/buildroot/package/iproute2/iproute2.mk create mode 100644 features/buildroot/package/iprutils/Config.in create mode 100644 features/buildroot/package/iprutils/iprutils.hash create mode 100644 features/buildroot/package/iprutils/iprutils.mk create mode 100644 features/buildroot/package/ipsec-tools/0001-susv3-legacy.patch create mode 100644 features/buildroot/package/ipsec-tools/0002-configure-automake.patch create mode 100644 features/buildroot/package/ipsec-tools/0003-Don-t-link-against-libfl.patch create mode 100644 features/buildroot/package/ipsec-tools/0004-CVE-2015-4047.patch create mode 100644 features/buildroot/package/ipsec-tools/0005-CVE-2016-10396.patch create mode 100644 features/buildroot/package/ipsec-tools/0006-openssl-1.1.patch create mode 100644 features/buildroot/package/ipsec-tools/Config.in create mode 100644 features/buildroot/package/ipsec-tools/ipsec-tools.hash create mode 100644 features/buildroot/package/ipsec-tools/ipsec-tools.mk create mode 100644 features/buildroot/package/ipset/Config.in create mode 100644 features/buildroot/package/ipset/ipset.hash create mode 100644 features/buildroot/package/ipset/ipset.mk create mode 100644 features/buildroot/package/iptables/Config.in create mode 100644 features/buildroot/package/iptables/iptables.hash create mode 100644 features/buildroot/package/iptables/iptables.mk create mode 100644 features/buildroot/package/iptraf-ng/Config.in create mode 100644 features/buildroot/package/iptraf-ng/iptraf-ng.hash create mode 100644 features/buildroot/package/iptraf-ng/iptraf-ng.mk create mode 100644 features/buildroot/package/iputils/Config.in create mode 100644 features/buildroot/package/iputils/iputils.hash create mode 100644 features/buildroot/package/iputils/iputils.mk create mode 100644 features/buildroot/package/irda-utils/0001-daemon.patch create mode 100644 features/buildroot/package/irda-utils/0002-nommu.patch create mode 100644 features/buildroot/package/irda-utils/0003-subdir.patch create mode 100644 features/buildroot/package/irda-utils/0004-musl.patch create mode 100644 features/buildroot/package/irda-utils/Config.in create mode 100644 features/buildroot/package/irda-utils/irda-utils.hash create mode 100644 features/buildroot/package/irda-utils/irda-utils.mk create mode 100644 features/buildroot/package/irqbalance/Config.in create mode 100644 features/buildroot/package/irqbalance/S13irqbalance create mode 100644 features/buildroot/package/irqbalance/irqbalance.hash create mode 100644 features/buildroot/package/irqbalance/irqbalance.mk create mode 100644 features/buildroot/package/irqbalance/irqbalance.service create mode 100644 features/buildroot/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch create mode 100644 features/buildroot/package/irrlicht/0002-remove-sys-sysctl.h.patch create mode 100644 features/buildroot/package/irrlicht/Config.in create mode 100644 features/buildroot/package/irrlicht/irrlicht.hash create mode 100644 features/buildroot/package/irrlicht/irrlicht.mk create mode 100644 features/buildroot/package/irssi/Config.in create mode 100644 features/buildroot/package/irssi/irssi.hash create mode 100644 features/buildroot/package/irssi/irssi.mk create mode 100644 features/buildroot/package/isl/isl.hash create mode 100644 features/buildroot/package/isl/isl.mk create mode 100644 features/buildroot/package/iucode-tool/Config.in create mode 100644 features/buildroot/package/iucode-tool/S00iucode-tool create mode 100644 features/buildroot/package/iucode-tool/iucode-tool.hash create mode 100644 features/buildroot/package/iucode-tool/iucode-tool.mk create mode 100644 features/buildroot/package/iucode-tool/iucode.service create mode 100644 features/buildroot/package/iw/Config.in create mode 100644 features/buildroot/package/iw/iw.hash create mode 100644 features/buildroot/package/iw/iw.mk create mode 100644 features/buildroot/package/iwd/Config.in create mode 100644 features/buildroot/package/iwd/iwd.hash create mode 100644 features/buildroot/package/iwd/iwd.mk create mode 100644 features/buildroot/package/jack2/Config.in create mode 100644 features/buildroot/package/jack2/jack2.hash create mode 100644 features/buildroot/package/jack2/jack2.mk create mode 100644 features/buildroot/package/jailhouse/Config.in create mode 100644 features/buildroot/package/jailhouse/jailhouse.hash create mode 100644 features/buildroot/package/jailhouse/jailhouse.mk create mode 100644 features/buildroot/package/jamvm/0001-Use-fenv.h-when-available-instead-of-fpu_control.h.patch create mode 100644 features/buildroot/package/jamvm/Config.in create mode 100644 features/buildroot/package/jamvm/jamvm.hash create mode 100644 features/buildroot/package/jamvm/jamvm.mk create mode 100644 features/buildroot/package/jansson/Config.in create mode 100644 features/buildroot/package/jansson/jansson.hash create mode 100644 features/buildroot/package/jansson/jansson.mk create mode 100644 features/buildroot/package/janus-gateway/0001-disable-ssp.patch create mode 100644 features/buildroot/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch create mode 100644 features/buildroot/package/janus-gateway/Config.in create mode 100644 features/buildroot/package/janus-gateway/janus-gateway.hash create mode 100644 features/buildroot/package/janus-gateway/janus-gateway.mk create mode 100644 features/buildroot/package/jasper/Config.in create mode 100644 features/buildroot/package/jasper/jasper.hash create mode 100644 features/buildroot/package/jasper/jasper.mk create mode 100644 features/buildroot/package/jemalloc/0001-Disable-documentation.patch create mode 100644 features/buildroot/package/jemalloc/Config.in create mode 100644 features/buildroot/package/jemalloc/jemalloc.hash create mode 100644 features/buildroot/package/jemalloc/jemalloc.mk create mode 100644 features/buildroot/package/jhead/Config.in create mode 100644 features/buildroot/package/jhead/jhead.hash create mode 100644 features/buildroot/package/jhead/jhead.mk create mode 100644 features/buildroot/package/jimtcl/Config.in create mode 100644 features/buildroot/package/jimtcl/jimtcl.hash create mode 100644 features/buildroot/package/jimtcl/jimtcl.mk create mode 100644 features/buildroot/package/jo/Config.in create mode 100644 features/buildroot/package/jo/jo.hash create mode 100644 features/buildroot/package/jo/jo.mk create mode 100644 features/buildroot/package/joe/Config.in create mode 100644 features/buildroot/package/joe/joe.hash create mode 100644 features/buildroot/package/joe/joe.mk create mode 100644 features/buildroot/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch create mode 100644 features/buildroot/package/jose/0002-configure-fix-build-with-old-compilers.patch create mode 100644 features/buildroot/package/jose/Config.in create mode 100644 features/buildroot/package/jose/jose.hash create mode 100644 features/buildroot/package/jose/jose.mk create mode 100644 features/buildroot/package/jpeg-turbo/jpeg-turbo.hash create mode 100644 features/buildroot/package/jpeg-turbo/jpeg-turbo.mk create mode 100644 features/buildroot/package/jpeg/Config.in create mode 100644 features/buildroot/package/jpeg/jpeg.mk create mode 100644 features/buildroot/package/jq/Config.in create mode 100644 features/buildroot/package/jq/Config.in.host create mode 100644 features/buildroot/package/jq/jq.hash create mode 100644 features/buildroot/package/jq/jq.mk create mode 100644 features/buildroot/package/jquery-datetimepicker/Config.in create mode 100644 features/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.hash create mode 100644 features/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.mk create mode 100644 features/buildroot/package/jquery-keyboard/Config.in create mode 100644 features/buildroot/package/jquery-keyboard/jquery-keyboard.hash create mode 100644 features/buildroot/package/jquery-keyboard/jquery-keyboard.mk create mode 100644 features/buildroot/package/jquery-mobile/Config.in create mode 100644 features/buildroot/package/jquery-mobile/jquery-mobile.hash create mode 100644 features/buildroot/package/jquery-mobile/jquery-mobile.mk create mode 100644 features/buildroot/package/jquery-sidebar/Config.in create mode 100644 features/buildroot/package/jquery-sidebar/jquery-sidebar.hash create mode 100644 features/buildroot/package/jquery-sidebar/jquery-sidebar.mk create mode 100644 features/buildroot/package/jquery-sparkline/Config.in create mode 100644 features/buildroot/package/jquery-sparkline/jquery-sparkline.hash create mode 100644 features/buildroot/package/jquery-sparkline/jquery-sparkline.mk create mode 100644 features/buildroot/package/jquery-ui-themes/Config.in create mode 100644 features/buildroot/package/jquery-ui-themes/jquery-ui-themes.hash create mode 100644 features/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk create mode 100644 features/buildroot/package/jquery-ui/Config.in create mode 100644 features/buildroot/package/jquery-ui/jquery-ui.hash create mode 100644 features/buildroot/package/jquery-ui/jquery-ui.mk create mode 100644 features/buildroot/package/jquery-validation/Config.in create mode 100644 features/buildroot/package/jquery-validation/jquery-validation.hash create mode 100644 features/buildroot/package/jquery-validation/jquery-validation.mk create mode 100644 features/buildroot/package/jquery/Config.in create mode 100644 features/buildroot/package/jquery/jquery.hash create mode 100644 features/buildroot/package/jquery/jquery.mk create mode 100644 features/buildroot/package/jsmin/Config.in create mode 100644 features/buildroot/package/jsmin/Config.in.host create mode 100644 features/buildroot/package/jsmin/jsmin.hash create mode 100644 features/buildroot/package/jsmin/jsmin.mk create mode 100644 features/buildroot/package/jsmn/Config.in create mode 100644 features/buildroot/package/jsmn/jsmn.hash create mode 100644 features/buildroot/package/jsmn/jsmn.mk create mode 100644 features/buildroot/package/json-c/Config.in create mode 100644 features/buildroot/package/json-c/json-c.hash create mode 100644 features/buildroot/package/json-c/json-c.mk create mode 100644 features/buildroot/package/json-for-modern-cpp/Config.in create mode 100644 features/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash create mode 100644 features/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk create mode 100644 features/buildroot/package/json-glib/Config.in create mode 100644 features/buildroot/package/json-glib/json-glib.hash create mode 100644 features/buildroot/package/json-glib/json-glib.mk create mode 100644 features/buildroot/package/json-javascript/Config.in create mode 100644 features/buildroot/package/json-javascript/json-javascript.hash create mode 100644 features/buildroot/package/json-javascript/json-javascript.mk create mode 100644 features/buildroot/package/jsoncpp/Config.in create mode 100644 features/buildroot/package/jsoncpp/jsoncpp.hash create mode 100644 features/buildroot/package/jsoncpp/jsoncpp.mk create mode 100644 features/buildroot/package/kbd/Config.in create mode 100644 features/buildroot/package/kbd/kbd.hash create mode 100644 features/buildroot/package/kbd/kbd.mk create mode 100644 features/buildroot/package/keepalived/0001-Ensure-that-lm-linker-library-flag-is-always-set.patch create mode 100644 features/buildroot/package/keepalived/Config.in create mode 100644 features/buildroot/package/keepalived/keepalived.hash create mode 100644 features/buildroot/package/keepalived/keepalived.mk create mode 100644 features/buildroot/package/kexec-lite/0001-clean-restart.patch create mode 100644 features/buildroot/package/kexec-lite/Config.in create mode 100644 features/buildroot/package/kexec-lite/kexec-lite.hash create mode 100644 features/buildroot/package/kexec-lite/kexec-lite.mk create mode 100644 features/buildroot/package/kexec/Config.in create mode 100644 features/buildroot/package/kexec/kexec.hash create mode 100644 features/buildroot/package/kexec/kexec.mk create mode 100644 features/buildroot/package/keyutils/0001-fix-install-rule.patch create mode 100644 features/buildroot/package/keyutils/0002-cifs.patch create mode 100644 features/buildroot/package/keyutils/Config.in create mode 100644 features/buildroot/package/keyutils/keyutils.hash create mode 100644 features/buildroot/package/keyutils/keyutils.mk create mode 100644 features/buildroot/package/kf5/Config.in create mode 100644 features/buildroot/package/kf5/kf5-extra-cmake-modules/Config.in create mode 100644 features/buildroot/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.hash create mode 100644 features/buildroot/package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.mk create mode 100644 features/buildroot/package/kf5/kf5-kcoreaddons/Config.in create mode 100644 features/buildroot/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.hash create mode 100644 features/buildroot/package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.mk create mode 100644 features/buildroot/package/kf5/kf5-modemmanager-qt/Config.in create mode 100644 features/buildroot/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.hash create mode 100644 features/buildroot/package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.mk create mode 100644 features/buildroot/package/kf5/kf5-networkmanager-qt/Config.in create mode 100644 features/buildroot/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.hash create mode 100644 features/buildroot/package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.mk create mode 100644 features/buildroot/package/kf5/kf5.mk create mode 100644 features/buildroot/package/kismet/0001-ncurses.patch create mode 100644 features/buildroot/package/kismet/0002-nobsd.patch create mode 100644 features/buildroot/package/kismet/0003-fix-curses-libs-ordering.patch create mode 100644 features/buildroot/package/kismet/0004-no-include-host-paths.patch create mode 100644 features/buildroot/package/kismet/0005-dumpfile_tuntap-don-t-include-linux-if_tun.h-kernel-.patch create mode 100644 features/buildroot/package/kismet/Config.in create mode 100644 features/buildroot/package/kismet/kismet.hash create mode 100644 features/buildroot/package/kismet/kismet.mk create mode 100644 features/buildroot/package/kmod/0001-fix-O_CLOEXEC.patch create mode 100644 features/buildroot/package/kmod/Config.in create mode 100644 features/buildroot/package/kmod/kmod.hash create mode 100644 features/buildroot/package/kmod/kmod.mk create mode 100644 features/buildroot/package/kmscube/Config.in create mode 100644 features/buildroot/package/kmscube/kmscube.hash create mode 100644 features/buildroot/package/kmscube/kmscube.mk create mode 100644 features/buildroot/package/kmsxx/Config.in create mode 100644 features/buildroot/package/kmsxx/kmsxx.hash create mode 100644 features/buildroot/package/kmsxx/kmsxx.mk create mode 100644 features/buildroot/package/knock/Config.in create mode 100644 features/buildroot/package/knock/knock.hash create mode 100644 features/buildroot/package/knock/knock.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-modplug/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-nosefart/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-opus/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-sidplay/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-snesapu/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-stsound/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-timidity/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk create mode 100644 features/buildroot/package/kodi-audiodecoder-vgmstream/Config.in create mode 100644 features/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash create mode 100644 features/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk create mode 100644 features/buildroot/package/kodi-audioencoder-flac/Config.in create mode 100644 features/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash create mode 100644 features/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk create mode 100644 features/buildroot/package/kodi-audioencoder-lame/Config.in create mode 100644 features/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash create mode 100644 features/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk create mode 100644 features/buildroot/package/kodi-audioencoder-vorbis/Config.in create mode 100644 features/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash create mode 100644 features/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk create mode 100644 features/buildroot/package/kodi-audioencoder-wav/Config.in create mode 100644 features/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash create mode 100644 features/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk create mode 100644 features/buildroot/package/kodi-inputstream-adaptive/Config.in create mode 100644 features/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash create mode 100644 features/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk create mode 100644 features/buildroot/package/kodi-inputstream-rtmp/Config.in create mode 100644 features/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash create mode 100644 features/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk create mode 120000 features/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash create mode 100644 features/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk create mode 100644 features/buildroot/package/kodi-peripheral-joystick/Config.in create mode 100644 features/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash create mode 100644 features/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk create mode 100644 features/buildroot/package/kodi-peripheral-steamcontroller/Config.in create mode 100644 features/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.hash create mode 100644 features/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.mk create mode 100644 features/buildroot/package/kodi-peripheral-xarcade/Config.in create mode 100644 features/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash create mode 100644 features/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk create mode 100644 features/buildroot/package/kodi-platform/0001-kodiplatform-config.cmake-fix-for-cross-compilation.patch create mode 100644 features/buildroot/package/kodi-platform/Config.in create mode 100644 features/buildroot/package/kodi-platform/kodi-platform.hash create mode 100644 features/buildroot/package/kodi-platform/kodi-platform.mk create mode 100644 features/buildroot/package/kodi-pvr-argustv/Config.in create mode 100644 features/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.hash create mode 100644 features/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.mk create mode 100644 features/buildroot/package/kodi-pvr-dvblink/Config.in create mode 100644 features/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash create mode 100644 features/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk create mode 100644 features/buildroot/package/kodi-pvr-dvbviewer/Config.in create mode 100644 features/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash create mode 100644 features/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk create mode 100644 features/buildroot/package/kodi-pvr-filmon/Config.in create mode 100644 features/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.hash create mode 100644 features/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.mk create mode 100644 features/buildroot/package/kodi-pvr-hdhomerun/Config.in create mode 100644 features/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash create mode 100644 features/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk create mode 100644 features/buildroot/package/kodi-pvr-hts/Config.in create mode 100644 features/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.hash create mode 100644 features/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.mk create mode 100644 features/buildroot/package/kodi-pvr-iptvsimple/Config.in create mode 100644 features/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash create mode 100644 features/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk create mode 100644 features/buildroot/package/kodi-pvr-mediaportal-tvserver/0001-live555-remove-xlocale.h-from-Locale.hh.patch create mode 100644 features/buildroot/package/kodi-pvr-mediaportal-tvserver/Config.in create mode 100644 features/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash create mode 100644 features/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk create mode 100644 features/buildroot/package/kodi-pvr-mythtv/Config.in create mode 100644 features/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash create mode 100644 features/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk create mode 100644 features/buildroot/package/kodi-pvr-nextpvr/Config.in create mode 100644 features/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash create mode 100644 features/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk create mode 100644 features/buildroot/package/kodi-pvr-njoy/Config.in create mode 100644 features/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.hash create mode 100644 features/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.mk create mode 100644 features/buildroot/package/kodi-pvr-pctv/Config.in create mode 100644 features/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.hash create mode 100644 features/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.mk create mode 100644 features/buildroot/package/kodi-pvr-stalker/0001-src-CWatchdog.h-Fix-gcc7-build.patch create mode 100644 features/buildroot/package/kodi-pvr-stalker/Config.in create mode 100644 features/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.hash create mode 100644 features/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.mk create mode 100644 features/buildroot/package/kodi-pvr-vbox/Config.in create mode 100644 features/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.hash create mode 100644 features/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.mk create mode 100644 features/buildroot/package/kodi-pvr-vdr-vnsi/Config.in create mode 100644 features/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash create mode 100644 features/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk create mode 100644 features/buildroot/package/kodi-pvr-vuplus/Config.in create mode 100644 features/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash create mode 100644 features/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk create mode 100644 features/buildroot/package/kodi-pvr-wmc/Config.in create mode 100644 features/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.hash create mode 100644 features/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.mk create mode 100644 features/buildroot/package/kodi-screensaver-asteroids/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash create mode 100644 features/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk create mode 100644 features/buildroot/package/kodi-screensaver-asterwave/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash create mode 100644 features/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk create mode 100644 features/buildroot/package/kodi-screensaver-biogenesis/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash create mode 100644 features/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk create mode 100644 features/buildroot/package/kodi-screensaver-cpblobs/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash create mode 100644 features/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk create mode 100644 features/buildroot/package/kodi-screensaver-crystalmorph/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.hash create mode 100644 features/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.mk create mode 100644 features/buildroot/package/kodi-screensaver-greynetic/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash create mode 100644 features/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk create mode 100644 features/buildroot/package/kodi-screensaver-matrixtrails/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash create mode 100644 features/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk create mode 100644 features/buildroot/package/kodi-screensaver-pingpong/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash create mode 100644 features/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk create mode 100644 features/buildroot/package/kodi-screensaver-planestate/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.hash create mode 100644 features/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.mk create mode 100644 features/buildroot/package/kodi-screensaver-pyro/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash create mode 100644 features/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk create mode 100644 features/buildroot/package/kodi-screensaver-rsxs/0001-cross-compile.patch create mode 100644 features/buildroot/package/kodi-screensaver-rsxs/0002-fix-default-include-dir.patch create mode 100644 features/buildroot/package/kodi-screensaver-rsxs/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash create mode 100644 features/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk create mode 100644 features/buildroot/package/kodi-screensaver-stars/Config.in create mode 100644 features/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.hash create mode 100644 features/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.mk create mode 100644 features/buildroot/package/kodi-skin-confluence/Config.in create mode 100644 features/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.hash create mode 100644 features/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.mk create mode 100644 features/buildroot/package/kodi-texturepacker/0001-texturepacker.patch create mode 100644 features/buildroot/package/kodi-texturepacker/0002-fix_reallocarray.patch create mode 120000 features/buildroot/package/kodi-texturepacker/kodi-texturepacker.hash create mode 100644 features/buildroot/package/kodi-texturepacker/kodi-texturepacker.mk create mode 100644 features/buildroot/package/kodi-visualisation-fishbmc/Config.in create mode 100644 features/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash create mode 100644 features/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk create mode 100644 features/buildroot/package/kodi-visualisation-goom/0001-cross-compile.patch create mode 100644 features/buildroot/package/kodi-visualisation-goom/Config.in create mode 100644 features/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.hash create mode 100644 features/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.mk create mode 100644 features/buildroot/package/kodi-visualisation-shadertoy/0001-FindOpenGLES2-also-search-for-egl-with-pkg-config.patch create mode 100644 features/buildroot/package/kodi-visualisation-shadertoy/Config.in create mode 100644 features/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash create mode 100644 features/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk create mode 100644 features/buildroot/package/kodi-visualisation-spectrum/Config.in create mode 100644 features/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash create mode 100644 features/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk create mode 100644 features/buildroot/package/kodi-visualisation-waveforhue/Config.in create mode 100644 features/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.hash create mode 100644 features/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.mk create mode 100644 features/buildroot/package/kodi-visualisation-waveform/Config.in create mode 100644 features/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash create mode 100644 features/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk create mode 100644 features/buildroot/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch create mode 100644 features/buildroot/package/kodi/0002-CMake-Remove-dependency-on-gmp-and-libintl-from-Find.patch create mode 100644 features/buildroot/package/kodi/0003-cmake-iconv-is-a-required-dependency.patch create mode 100644 features/buildroot/package/kodi/0004-Fix-ffmpeg-build-for-mips.patch create mode 100644 features/buildroot/package/kodi/0005-Fix-crosscompiling-issues.patch create mode 100644 features/buildroot/package/kodi/Config.in create mode 100644 features/buildroot/package/kodi/S50kodi create mode 100755 features/buildroot/package/kodi/br-kodi create mode 100644 features/buildroot/package/kodi/kodi.hash create mode 100644 features/buildroot/package/kodi/kodi.mk create mode 100644 features/buildroot/package/kodi/kodi.service create mode 100644 features/buildroot/package/kompexsqlite/0001-Makefile-use-autoconf-CXX-for-proper-builds.patch create mode 100644 features/buildroot/package/kompexsqlite/0002-append-to-cflags-and-cxxflags.patch create mode 100644 features/buildroot/package/kompexsqlite/Config.in create mode 100644 features/buildroot/package/kompexsqlite/kompexsqlite.hash create mode 100644 features/buildroot/package/kompexsqlite/kompexsqlite.mk create mode 100644 features/buildroot/package/ktap/Config.in create mode 100644 features/buildroot/package/ktap/ktap.hash create mode 100644 features/buildroot/package/ktap/ktap.mk create mode 100644 features/buildroot/package/kvazaar/Config.in create mode 100644 features/buildroot/package/kvazaar/kvazaar.hash create mode 100644 features/buildroot/package/kvazaar/kvazaar.mk create mode 100644 features/buildroot/package/kvm-unit-tests/0001-Makefile-remove-Werror-to-avoid-build-failures.patch create mode 100644 features/buildroot/package/kvm-unit-tests/0002-kvm-unit-tests-test-for-rdseed-rdrand.patch create mode 100644 features/buildroot/package/kvm-unit-tests/Config.in create mode 100644 features/buildroot/package/kvm-unit-tests/kvm-unit-tests.hash create mode 100644 features/buildroot/package/kvm-unit-tests/kvm-unit-tests.mk create mode 100644 features/buildroot/package/kvmtool/Config.in create mode 100644 features/buildroot/package/kvmtool/kvmtool.hash create mode 100644 features/buildroot/package/kvmtool/kvmtool.mk create mode 100644 features/buildroot/package/kyua/Config.in create mode 100644 features/buildroot/package/kyua/kyua.hash create mode 100644 features/buildroot/package/kyua/kyua.mk create mode 100644 features/buildroot/package/lame/Config.in create mode 100644 features/buildroot/package/lame/lame.hash create mode 100644 features/buildroot/package/lame/lame.mk create mode 100644 features/buildroot/package/lapack/Config.in create mode 100644 features/buildroot/package/lapack/lapack.hash create mode 100644 features/buildroot/package/lapack/lapack.mk create mode 100644 features/buildroot/package/latencytop/0001-makefile.patch create mode 100644 features/buildroot/package/latencytop/Config.in create mode 100644 features/buildroot/package/latencytop/latencytop.hash create mode 100644 features/buildroot/package/latencytop/latencytop.mk create mode 100644 features/buildroot/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch create mode 100644 features/buildroot/package/lbase64/Config.in create mode 100644 features/buildroot/package/lbase64/lbase64.hash create mode 100644 features/buildroot/package/lbase64/lbase64.mk create mode 100644 features/buildroot/package/lbreakout2/Config.in create mode 100644 features/buildroot/package/lbreakout2/lbreakout2.hash create mode 100644 features/buildroot/package/lbreakout2/lbreakout2.mk create mode 100644 features/buildroot/package/lcdapi/Config.in create mode 100644 features/buildroot/package/lcdapi/lcdapi.hash create mode 100644 features/buildroot/package/lcdapi/lcdapi.mk create mode 100644 features/buildroot/package/lcdproc/0001-Add-missing-ioctl-header.patch create mode 100644 features/buildroot/package/lcdproc/0001-LCDd.conf.patch create mode 100644 features/buildroot/package/lcdproc/Config.in create mode 100644 features/buildroot/package/lcdproc/lcdproc.hash create mode 100644 features/buildroot/package/lcdproc/lcdproc.mk create mode 100644 features/buildroot/package/lcms2/0001-Upgrade-Visual-studio-2017-15.8.patch create mode 100644 features/buildroot/package/lcms2/Config.in create mode 100644 features/buildroot/package/lcms2/lcms2.hash create mode 100644 features/buildroot/package/lcms2/lcms2.mk create mode 100644 features/buildroot/package/leafnode2/0001-cross_makefile.patch create mode 100644 features/buildroot/package/leafnode2/Config.in create mode 100644 features/buildroot/package/leafnode2/leafnode2.hash create mode 100644 features/buildroot/package/leafnode2/leafnode2.mk create mode 100644 features/buildroot/package/leafpad/Config.in create mode 100644 features/buildroot/package/leafpad/leafpad.hash create mode 100644 features/buildroot/package/leafpad/leafpad.mk create mode 100644 features/buildroot/package/lensfun/Config.in create mode 100644 features/buildroot/package/lensfun/lensfun.hash create mode 100644 features/buildroot/package/lensfun/lensfun.mk create mode 100644 features/buildroot/package/leptonica/Config.in create mode 100644 features/buildroot/package/leptonica/leptonica.hash create mode 100644 features/buildroot/package/leptonica/leptonica.mk create mode 100644 features/buildroot/package/less/Config.in create mode 100644 features/buildroot/package/less/less.hash create mode 100644 features/buildroot/package/less/less.mk create mode 100644 features/buildroot/package/lesstif/Config.in create mode 100644 features/buildroot/package/lesstif/lesstif.hash create mode 100644 features/buildroot/package/lesstif/lesstif.mk create mode 100644 features/buildroot/package/let-me-create/0001-fix-build-with-musl-C-library.patch create mode 100644 features/buildroot/package/let-me-create/Config.in create mode 100644 features/buildroot/package/let-me-create/let-me-create.hash create mode 100644 features/buildroot/package/let-me-create/let-me-create.mk create mode 100644 features/buildroot/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch create mode 100644 features/buildroot/package/leveldb/0002-Add-install-recipe.patch create mode 100644 features/buildroot/package/leveldb/0003-Generate-position-independant-code-for-static-librar.patch create mode 100644 features/buildroot/package/leveldb/Config.in create mode 100644 features/buildroot/package/leveldb/leveldb.hash create mode 100644 features/buildroot/package/leveldb/leveldb.mk create mode 100644 features/buildroot/package/lft/Config.in create mode 100644 features/buildroot/package/lft/lft.hash create mode 100644 features/buildroot/package/lft/lft.mk create mode 100644 features/buildroot/package/lftp/0001-fix-static-link-with-readline.patch create mode 100644 features/buildroot/package/lftp/0002-fix-gcc-6-conflicts-signbit.patch create mode 100644 features/buildroot/package/lftp/Config.in create mode 100644 features/buildroot/package/lftp/lftp.hash create mode 100644 features/buildroot/package/lftp/lftp.mk create mode 100644 features/buildroot/package/libaacs/Config.in create mode 100644 features/buildroot/package/libaacs/libaacs.hash create mode 100644 features/buildroot/package/libaacs/libaacs.mk create mode 100644 features/buildroot/package/libaio/0001-src-Makefile-add-ENABLE_SHARED-boolean-to-allow-stat.patch create mode 100644 features/buildroot/package/libaio/0002-Makefile-add-missing-DESTDIR-variable-use.patch create mode 100644 features/buildroot/package/libaio/0003-Link-against-libgcc-to-avoid-unresolved-symbols.patch create mode 100644 features/buildroot/package/libaio/Config.in create mode 100644 features/buildroot/package/libaio/libaio.hash create mode 100644 features/buildroot/package/libaio/libaio.mk create mode 100644 features/buildroot/package/libamcodec/Config.in create mode 100644 features/buildroot/package/libamcodec/libamcodec.hash create mode 100644 features/buildroot/package/libamcodec/libamcodec.mk create mode 100644 features/buildroot/package/libao/Config.in create mode 100644 features/buildroot/package/libao/libao.hash create mode 100644 features/buildroot/package/libao/libao.mk create mode 100644 features/buildroot/package/libarchive/0001-Unbreak-compilation-without-zlib.patch create mode 100644 features/buildroot/package/libarchive/Config.in create mode 100644 features/buildroot/package/libarchive/libarchive.hash create mode 100644 features/buildroot/package/libarchive/libarchive.mk create mode 100644 features/buildroot/package/libargtable2/Config.in create mode 100644 features/buildroot/package/libargtable2/libargtable2.hash create mode 100644 features/buildroot/package/libargtable2/libargtable2.mk create mode 100644 features/buildroot/package/libart/0001-art-config-cross.patch create mode 100644 features/buildroot/package/libart/Config.in create mode 100644 features/buildroot/package/libart/libart.hash create mode 100644 features/buildroot/package/libart/libart.mk create mode 100644 features/buildroot/package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch create mode 100644 features/buildroot/package/libasplib/Config.in create mode 100644 features/buildroot/package/libasplib/libasplib.hash create mode 100644 features/buildroot/package/libasplib/libasplib.mk create mode 100644 features/buildroot/package/libass/Config.in create mode 100644 features/buildroot/package/libass/libass.hash create mode 100644 features/buildroot/package/libass/libass.mk create mode 100644 features/buildroot/package/libassuan/Config.in create mode 100644 features/buildroot/package/libassuan/libassuan.hash create mode 100644 features/buildroot/package/libassuan/libassuan.mk create mode 100644 features/buildroot/package/libatasmart/0001-strpool-cross-flags.patch create mode 100644 features/buildroot/package/libatasmart/Config.in create mode 100644 features/buildroot/package/libatasmart/libatasmart.hash create mode 100644 features/buildroot/package/libatasmart/libatasmart.mk create mode 100644 features/buildroot/package/libatomic_ops/Config.in create mode 100644 features/buildroot/package/libatomic_ops/libatomic_ops.hash create mode 100644 features/buildroot/package/libatomic_ops/libatomic_ops.mk create mode 100644 features/buildroot/package/libb64/0001-Integer-overflows.patch create mode 100644 features/buildroot/package/libb64/0002-Initialize-C++-objects.patch create mode 100644 features/buildroot/package/libb64/Config.in create mode 100644 features/buildroot/package/libb64/libb64.hash create mode 100644 features/buildroot/package/libb64/libb64.mk create mode 100644 features/buildroot/package/libbdplus/Config.in create mode 100644 features/buildroot/package/libbdplus/libbdplus.hash create mode 100644 features/buildroot/package/libbdplus/libbdplus.mk create mode 100644 features/buildroot/package/libbluray/Config.in create mode 100644 features/buildroot/package/libbluray/libbluray.hash create mode 100644 features/buildroot/package/libbluray/libbluray.mk create mode 100644 features/buildroot/package/libbroadvoice/Config.in create mode 100644 features/buildroot/package/libbroadvoice/libbroadvoice.hash create mode 100644 features/buildroot/package/libbroadvoice/libbroadvoice.mk create mode 100644 features/buildroot/package/libbsd/0001-flopen-fix-build-with-musl-libc.patch create mode 100644 features/buildroot/package/libbsd/Config.in create mode 100644 features/buildroot/package/libbsd/libbsd.hash create mode 100644 features/buildroot/package/libbsd/libbsd.mk create mode 100644 features/buildroot/package/libbson/Config.in create mode 100644 features/buildroot/package/libbson/libbson.hash create mode 100644 features/buildroot/package/libbson/libbson.mk create mode 100644 features/buildroot/package/libcamera/Config.in create mode 100644 features/buildroot/package/libcamera/libcamera.hash create mode 100644 features/buildroot/package/libcamera/libcamera.mk create mode 100644 features/buildroot/package/libcap-ng/0001-Fix-compilation-without-pthread.h.patch create mode 100644 features/buildroot/package/libcap-ng/Config.in create mode 100644 features/buildroot/package/libcap-ng/libcap-ng.hash create mode 100644 features/buildroot/package/libcap-ng/libcap-ng.mk create mode 100644 features/buildroot/package/libcap/0001-build-system-fixes-for-cross-compilation.patch create mode 100644 features/buildroot/package/libcap/0002-libcap-split-install-into-install-shared-install-sta.patch create mode 100644 features/buildroot/package/libcap/0003-libcap-cap_file.c-fix-build-with-old-kernel-headers.patch create mode 100644 features/buildroot/package/libcap/Config.in create mode 100644 features/buildroot/package/libcap/libcap.hash create mode 100644 features/buildroot/package/libcap/libcap.mk create mode 100644 features/buildroot/package/libcdaudio/0001-libcdaudio-enable-autoreconf.patch create mode 100644 features/buildroot/package/libcdaudio/Config.in create mode 100644 features/buildroot/package/libcdaudio/libcdaudio.hash create mode 100644 features/buildroot/package/libcdaudio/libcdaudio.mk create mode 100644 features/buildroot/package/libcddb/Config.in create mode 100644 features/buildroot/package/libcddb/libcddb.hash create mode 100644 features/buildroot/package/libcddb/libcddb.mk create mode 100644 features/buildroot/package/libcdio-paranoia/Config.in create mode 100644 features/buildroot/package/libcdio-paranoia/libcdio-paranoia.hash create mode 100644 features/buildroot/package/libcdio-paranoia/libcdio-paranoia.mk create mode 100644 features/buildroot/package/libcdio/Config.in create mode 100644 features/buildroot/package/libcdio/libcdio.hash create mode 100644 features/buildroot/package/libcdio/libcdio.mk create mode 100644 features/buildroot/package/libcec/Config.in create mode 100644 features/buildroot/package/libcec/libcec.hash create mode 100644 features/buildroot/package/libcec/libcec.mk create mode 100644 features/buildroot/package/libcgi/0001-CMakeLists.txt-libcgi-is-in-C.patch create mode 100644 features/buildroot/package/libcgi/0002-CMakeLists.txt-don-t-force-the-build-of-a-shared-lib.patch create mode 100644 features/buildroot/package/libcgi/Config.in create mode 100644 features/buildroot/package/libcgi/libcgi.hash create mode 100644 features/buildroot/package/libcgi/libcgi.mk create mode 100644 features/buildroot/package/libcgicc/0001-disable-documentation-option.patch create mode 100644 features/buildroot/package/libcgicc/Config.in create mode 100644 features/buildroot/package/libcgicc/libcgicc.hash create mode 100644 features/buildroot/package/libcgicc/libcgicc.mk create mode 100644 features/buildroot/package/libcgroup/Config.in create mode 100644 features/buildroot/package/libcgroup/libcgroup.hash create mode 100644 features/buildroot/package/libcgroup/libcgroup.mk create mode 100644 features/buildroot/package/libclc/Config.in create mode 100644 features/buildroot/package/libclc/libclc.hash create mode 100644 features/buildroot/package/libclc/libclc.mk create mode 100644 features/buildroot/package/libcli/Config.in create mode 100644 features/buildroot/package/libcli/libcli.hash create mode 100644 features/buildroot/package/libcli/libcli.mk create mode 100644 features/buildroot/package/libcoap/Config.in create mode 100644 features/buildroot/package/libcoap/libcoap.hash create mode 100644 features/buildroot/package/libcoap/libcoap.mk create mode 100644 features/buildroot/package/libcodec2/0001-fix-codec2-pc-in.patch create mode 100644 features/buildroot/package/libcodec2/Config.in create mode 100644 features/buildroot/package/libcodec2/libcodec2.hash create mode 100644 features/buildroot/package/libcodec2/libcodec2.mk create mode 100644 features/buildroot/package/libcofi/Config.in create mode 100644 features/buildroot/package/libcofi/libcofi.hash create mode 100644 features/buildroot/package/libcofi/libcofi.mk create mode 100644 features/buildroot/package/libconfig/0001-Add-disable-doc-option.patch create mode 100644 features/buildroot/package/libconfig/Config.in create mode 100644 features/buildroot/package/libconfig/libconfig.hash create mode 100644 features/buildroot/package/libconfig/libconfig.mk create mode 100644 features/buildroot/package/libconfuse/Config.in create mode 100644 features/buildroot/package/libconfuse/libconfuse.hash create mode 100644 features/buildroot/package/libconfuse/libconfuse.mk create mode 100644 features/buildroot/package/libcorrect/0001-CMakeLists.txt-conditionally-use-Wpedantic.patch create mode 100644 features/buildroot/package/libcorrect/0002-CMakeLists.txt-conditionally-use-fsanitize-address.patch create mode 100644 features/buildroot/package/libcorrect/Config.in create mode 100644 features/buildroot/package/libcorrect/libcorrect.hash create mode 100644 features/buildroot/package/libcorrect/libcorrect.mk create mode 100644 features/buildroot/package/libcpprestsdk/0001-libcpprestsdk-fix-building-as-a-static-library.patch create mode 100644 features/buildroot/package/libcpprestsdk/Config.in create mode 100644 features/buildroot/package/libcpprestsdk/libcpprestsdk.hash create mode 100644 features/buildroot/package/libcpprestsdk/libcpprestsdk.mk create mode 100644 features/buildroot/package/libcroco/0001-input-check-end-of-input-before-reading-a-byte.patch create mode 100644 features/buildroot/package/libcroco/0002-tknzr-support-only-max-long-rgb-values.patch create mode 100644 features/buildroot/package/libcroco/Config.in create mode 100644 features/buildroot/package/libcroco/libcroco.hash create mode 100644 features/buildroot/package/libcroco/libcroco.mk create mode 100644 features/buildroot/package/libcrossguid/Config.in create mode 100644 features/buildroot/package/libcrossguid/libcrossguid.hash create mode 100644 features/buildroot/package/libcrossguid/libcrossguid.mk create mode 100644 features/buildroot/package/libcsv/Config.in create mode 100644 features/buildroot/package/libcsv/libcsv.hash create mode 100644 features/buildroot/package/libcsv/libcsv.mk create mode 100644 features/buildroot/package/libcue/Config.in create mode 100644 features/buildroot/package/libcue/libcue.hash create mode 100644 features/buildroot/package/libcue/libcue.mk create mode 100644 features/buildroot/package/libcuefile/0001-fix-static-link.patch create mode 100644 features/buildroot/package/libcuefile/Config.in create mode 100644 features/buildroot/package/libcuefile/libcuefile.hash create mode 100644 features/buildroot/package/libcuefile/libcuefile.mk create mode 100644 features/buildroot/package/libcurl/Config.in create mode 100644 features/buildroot/package/libcurl/libcurl.hash create mode 100644 features/buildroot/package/libcurl/libcurl.mk create mode 100644 features/buildroot/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch create mode 100644 features/buildroot/package/libdaemon/Config.in create mode 100644 features/buildroot/package/libdaemon/libdaemon.hash create mode 100644 features/buildroot/package/libdaemon/libdaemon.mk create mode 100644 features/buildroot/package/libdcadec/Config.in create mode 100644 features/buildroot/package/libdcadec/libdcadec.hash create mode 100644 features/buildroot/package/libdcadec/libdcadec.mk create mode 100644 features/buildroot/package/libdmtx/Config.in create mode 100644 features/buildroot/package/libdmtx/libdmtx.hash create mode 100644 features/buildroot/package/libdmtx/libdmtx.mk create mode 100644 features/buildroot/package/libdnet/0001-python-gcc.patch create mode 100644 features/buildroot/package/libdnet/0002-python-makefile.patch create mode 100644 features/buildroot/package/libdnet/Config.in create mode 100644 features/buildroot/package/libdnet/libdnet.hash create mode 100644 features/buildroot/package/libdnet/libdnet.mk create mode 100644 features/buildroot/package/libdri2/Config.in create mode 100644 features/buildroot/package/libdri2/libdri2.hash create mode 100644 features/buildroot/package/libdri2/libdri2.mk create mode 100644 features/buildroot/package/libdrm/0001-Add-ARM-support-into-xf86drm.h.patch create mode 100644 features/buildroot/package/libdrm/0002-xf86atomic-require-CAS-support-in-libatomic_ops.patch create mode 100644 features/buildroot/package/libdrm/0003-configure-Makefile.am-use-pkg-config-to-discover-lib.patch create mode 100644 features/buildroot/package/libdrm/Config.in create mode 100644 features/buildroot/package/libdrm/libdrm.hash create mode 100644 features/buildroot/package/libdrm/libdrm.mk create mode 100644 features/buildroot/package/libdvbcsa/0001-altivec-powerpc64.patch create mode 100644 features/buildroot/package/libdvbcsa/Config.in create mode 100644 features/buildroot/package/libdvbcsa/libdvbcsa.hash create mode 100644 features/buildroot/package/libdvbcsa/libdvbcsa.mk create mode 100644 features/buildroot/package/libdvbpsi/Config.in create mode 100644 features/buildroot/package/libdvbpsi/libdvbpsi.hash create mode 100644 features/buildroot/package/libdvbpsi/libdvbpsi.mk create mode 100644 features/buildroot/package/libdvbsi/Config.in create mode 100644 features/buildroot/package/libdvbsi/libdvbsi.hash create mode 100644 features/buildroot/package/libdvbsi/libdvbsi.mk create mode 100644 features/buildroot/package/libdvdcss/Config.in create mode 100644 features/buildroot/package/libdvdcss/libdvdcss.hash create mode 100644 features/buildroot/package/libdvdcss/libdvdcss.mk create mode 100644 features/buildroot/package/libdvdnav/0001-do-not-match-nios2-as-os2.patch create mode 100644 features/buildroot/package/libdvdnav/Config.in create mode 100644 features/buildroot/package/libdvdnav/libdvdnav.hash create mode 100644 features/buildroot/package/libdvdnav/libdvdnav.mk create mode 100644 features/buildroot/package/libdvdread/Config.in create mode 100644 features/buildroot/package/libdvdread/libdvdread.hash create mode 100644 features/buildroot/package/libdvdread/libdvdread.mk create mode 100644 features/buildroot/package/libeXosip2/0001-use-pkg-config-to-detect-openssl.patch create mode 100644 features/buildroot/package/libeXosip2/Config.in create mode 100644 features/buildroot/package/libeXosip2/libeXosip2.hash create mode 100644 features/buildroot/package/libeXosip2/libeXosip2.mk create mode 100644 features/buildroot/package/libeastl/Config.in create mode 100644 features/buildroot/package/libeastl/libeastl.hash create mode 100644 features/buildroot/package/libeastl/libeastl.mk create mode 100644 features/buildroot/package/libebml/Config.in create mode 100644 features/buildroot/package/libebml/libebml.hash create mode 100644 features/buildroot/package/libebml/libebml.mk create mode 100644 features/buildroot/package/libebur128/Config.in create mode 100644 features/buildroot/package/libebur128/libebur128.hash create mode 100644 features/buildroot/package/libebur128/libebur128.mk create mode 100644 features/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch create mode 100644 features/buildroot/package/libedit/Config.in create mode 100644 features/buildroot/package/libedit/libedit.hash create mode 100644 features/buildroot/package/libedit/libedit.mk create mode 100644 features/buildroot/package/libee/Config.in create mode 100644 features/buildroot/package/libee/libee.hash create mode 100644 features/buildroot/package/libee/libee.mk create mode 100644 features/buildroot/package/libenca/Config.in create mode 100644 features/buildroot/package/libenca/libenca.hash create mode 100644 features/buildroot/package/libenca/libenca.mk create mode 100644 features/buildroot/package/libepoxy/Config.in create mode 100644 features/buildroot/package/libepoxy/libepoxy.hash create mode 100644 features/buildroot/package/libepoxy/libepoxy.mk create mode 100644 features/buildroot/package/liberation/Config.in create mode 100644 features/buildroot/package/liberation/liberation.hash create mode 100644 features/buildroot/package/liberation/liberation.mk create mode 100644 features/buildroot/package/libesmtp/Config.in create mode 100644 features/buildroot/package/libesmtp/libesmtp.hash create mode 100644 features/buildroot/package/libesmtp/libesmtp.mk create mode 100644 features/buildroot/package/libestr/Config.in create mode 100644 features/buildroot/package/libestr/libestr.hash create mode 100644 features/buildroot/package/libestr/libestr.mk create mode 100644 features/buildroot/package/libev/Config.in create mode 100644 features/buildroot/package/libev/libev.hash create mode 100644 features/buildroot/package/libev/libev.mk create mode 100644 features/buildroot/package/libevdev/0001-configure-add-disable-runtime-tests-option.patch create mode 100644 features/buildroot/package/libevdev/Config.in create mode 100644 features/buildroot/package/libevdev/libevdev.hash create mode 100644 features/buildroot/package/libevdev/libevdev.mk create mode 100644 features/buildroot/package/libevent/0001-Disable-building-test-programs.patch create mode 100644 features/buildroot/package/libevent/0002-m4-libevent_openssl.m4-fix-detection-of-openssl.patch create mode 100644 features/buildroot/package/libevent/Config.in create mode 100644 features/buildroot/package/libevent/libevent.hash create mode 100644 features/buildroot/package/libevent/libevent.mk create mode 100644 features/buildroot/package/libexif/Config.in create mode 100644 features/buildroot/package/libexif/libexif.hash create mode 100644 features/buildroot/package/libexif/libexif.mk create mode 100644 features/buildroot/package/libfastjson/Config.in create mode 100644 features/buildroot/package/libfastjson/libfastjson.hash create mode 100644 features/buildroot/package/libfastjson/libfastjson.mk create mode 100644 features/buildroot/package/libfcgi/0001-eof.patch create mode 100644 features/buildroot/package/libfcgi/0002-link-against-libfcgi-la.patch create mode 100644 features/buildroot/package/libfcgi/0003-link-against-math.patch create mode 100644 features/buildroot/package/libfcgi/0004-make-autoreconfable.patch create mode 100644 features/buildroot/package/libfcgi/0005-disable-examples.patch create mode 100644 features/buildroot/package/libfcgi/0006-fix-CVE-2012-6687.patch create mode 100644 features/buildroot/package/libfcgi/Config.in create mode 100644 features/buildroot/package/libfcgi/libfcgi.hash create mode 100644 features/buildroot/package/libfcgi/libfcgi.mk create mode 100644 features/buildroot/package/libffi/0001-Fix-installation-location-of-libffi.patch create mode 100644 features/buildroot/package/libffi/0002-Fix-use-of-compact-eh-frames-on-MIPS.patch create mode 100644 features/buildroot/package/libffi/0003-libffi-enable-hardfloat-in-the-MIPS-assembly-code.patch create mode 100644 features/buildroot/package/libffi/Config.in create mode 100644 features/buildroot/package/libffi/libffi.hash create mode 100644 features/buildroot/package/libffi/libffi.mk create mode 100644 features/buildroot/package/libfm-extra/Config.in create mode 100644 features/buildroot/package/libfm-extra/libfm-extra.hash create mode 100644 features/buildroot/package/libfm-extra/libfm-extra.mk create mode 100644 features/buildroot/package/libfm/0001-modules-fix-cross-compilation.patch create mode 100644 features/buildroot/package/libfm/Config.in create mode 100644 features/buildroot/package/libfm/libfm.hash create mode 100644 features/buildroot/package/libfm/libfm.mk create mode 100644 features/buildroot/package/libfreefare/Config.in create mode 100644 features/buildroot/package/libfreefare/libfreefare.hash create mode 100644 features/buildroot/package/libfreefare/libfreefare.mk create mode 100644 features/buildroot/package/libfreeglut/Config.in create mode 100644 features/buildroot/package/libfreeglut/libfreeglut.hash create mode 100644 features/buildroot/package/libfreeglut/libfreeglut.mk create mode 100644 features/buildroot/package/libfreeimage/0001-no-root-install.patch create mode 100644 features/buildroot/package/libfreeimage/0002-fix-cpuid-x86.patch create mode 100644 features/buildroot/package/libfreeimage/0003-LibWebP-fix-compilation-issue-with-GCC-5.x-C-11.patch create mode 100644 features/buildroot/package/libfreeimage/0004-fix-gcc-6.patch create mode 100644 features/buildroot/package/libfreeimage/0005-Manage-powf64-with-glibc.patch create mode 100644 features/buildroot/package/libfreeimage/Config.in create mode 100644 features/buildroot/package/libfreeimage/libfreeimage.hash create mode 100644 features/buildroot/package/libfreeimage/libfreeimage.mk create mode 100644 features/buildroot/package/libfribidi/Config.in create mode 100644 features/buildroot/package/libfribidi/libfribidi.hash create mode 100644 features/buildroot/package/libfribidi/libfribidi.mk create mode 100644 features/buildroot/package/libftdi/0001_pkgconfig_libusb.patch create mode 100644 features/buildroot/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch create mode 100644 features/buildroot/package/libftdi/Config.in create mode 100644 features/buildroot/package/libftdi/libftdi.hash create mode 100644 features/buildroot/package/libftdi/libftdi.mk create mode 100644 features/buildroot/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch create mode 100644 features/buildroot/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch create mode 100644 features/buildroot/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch create mode 100644 features/buildroot/package/libftdi1/0004-cmake-find-swig.patch create mode 100644 features/buildroot/package/libftdi1/Config.in create mode 100644 features/buildroot/package/libftdi1/libftdi1.hash create mode 100644 features/buildroot/package/libftdi1/libftdi1.mk create mode 100644 features/buildroot/package/libfuse/0001-fix-aarch64-build.patch create mode 100644 features/buildroot/package/libfuse/Config.in create mode 100644 features/buildroot/package/libfuse/libfuse.hash create mode 100644 features/buildroot/package/libfuse/libfuse.mk create mode 100644 features/buildroot/package/libg7221/Config.in create mode 100644 features/buildroot/package/libg7221/libg7221.hash create mode 100644 features/buildroot/package/libg7221/libg7221.mk create mode 100644 features/buildroot/package/libgcrypt/0001-build-Don-t-default-to-underscore-yes-for-cross-buil.patch create mode 100644 features/buildroot/package/libgcrypt/0002-build-Provide-libgcrypt.pc-generated-by-configure.patch create mode 100644 features/buildroot/package/libgcrypt/0003-build-Fix-libgcrypt.pc.patch create mode 100644 features/buildroot/package/libgcrypt/0004-configure.ac-add-an-option-to-disable-tests.patch create mode 100644 features/buildroot/package/libgcrypt/Config.in create mode 100644 features/buildroot/package/libgcrypt/libgcrypt.hash create mode 100644 features/buildroot/package/libgcrypt/libgcrypt.mk create mode 100644 features/buildroot/package/libgdiplus/0001-Embed-the-license-texts-in-LICENSE-like-on-Mono-repo.patch create mode 100644 features/buildroot/package/libgdiplus/0002-Update-LICENSE-to-match-the-headers-of-the-source-fi.patch create mode 100644 features/buildroot/package/libgdiplus/Config.in create mode 100644 features/buildroot/package/libgdiplus/libgdiplus.hash create mode 100644 features/buildroot/package/libgdiplus/libgdiplus.mk create mode 100644 features/buildroot/package/libgee/Config.in create mode 100644 features/buildroot/package/libgee/libgee.hash create mode 100644 features/buildroot/package/libgee/libgee.mk create mode 100644 features/buildroot/package/libgeotiff/0001-use-pkg-config.patch create mode 100644 features/buildroot/package/libgeotiff/0002-fix-GEO_NORMALIZE_DISABLE_TOWGS84-define.patch create mode 100644 features/buildroot/package/libgeotiff/0003-libgeotiff-configure.ac-do-not-check-for-C.patch create mode 100644 features/buildroot/package/libgeotiff/Config.in create mode 100644 features/buildroot/package/libgeotiff/libgeotiff.hash create mode 100644 features/buildroot/package/libgeotiff/libgeotiff.mk create mode 100644 features/buildroot/package/libgit2/Config.in create mode 100644 features/buildroot/package/libgit2/libgit2.hash create mode 100644 features/buildroot/package/libgit2/libgit2.mk create mode 100644 features/buildroot/package/libglade/Config.in create mode 100644 features/buildroot/package/libglade/libglade.hash create mode 100644 features/buildroot/package/libglade/libglade.mk create mode 100644 features/buildroot/package/libglew/Config.in create mode 100644 features/buildroot/package/libglew/libglew.hash create mode 100644 features/buildroot/package/libglew/libglew.mk create mode 100644 features/buildroot/package/libglfw/Config.in create mode 100644 features/buildroot/package/libglfw/libglfw.hash create mode 100644 features/buildroot/package/libglfw/libglfw.mk create mode 100644 features/buildroot/package/libglib2/0001-fix-compile-time-atomic-detection.patch create mode 100644 features/buildroot/package/libglib2/0002-add-option-to-build-tests.patch create mode 100644 features/buildroot/package/libglib2/0003-remove-cpp-requirement.patch create mode 100644 features/buildroot/package/libglib2/0004-Add-Wno-format-nonliteral-to-compiler-arguments.patch create mode 100644 features/buildroot/package/libglib2/Config.in create mode 100644 features/buildroot/package/libglib2/libglib2.hash create mode 100644 features/buildroot/package/libglib2/libglib2.mk create mode 100644 features/buildroot/package/libglob/Config.in create mode 100644 features/buildroot/package/libglob/libglob.hash create mode 100644 features/buildroot/package/libglob/libglob.mk create mode 100644 features/buildroot/package/libglu/Config.in create mode 100644 features/buildroot/package/libglu/libglu.hash create mode 100644 features/buildroot/package/libglu/libglu.mk create mode 100644 features/buildroot/package/libgpg-error/Config.in create mode 100644 features/buildroot/package/libgpg-error/libgpg-error.hash create mode 100644 features/buildroot/package/libgpg-error/libgpg-error.mk create mode 100644 features/buildroot/package/libgpgme/Config.in create mode 100644 features/buildroot/package/libgpgme/libgpgme.hash create mode 100644 features/buildroot/package/libgpgme/libgpgme.mk create mode 100644 features/buildroot/package/libgphoto2/Config.in create mode 100644 features/buildroot/package/libgphoto2/libgphoto2.hash create mode 100644 features/buildroot/package/libgphoto2/libgphoto2.mk create mode 100644 features/buildroot/package/libgpiod/Config.in create mode 100644 features/buildroot/package/libgpiod/libgpiod.hash create mode 100644 features/buildroot/package/libgpiod/libgpiod.mk create mode 100644 features/buildroot/package/libgsasl/Config.in create mode 100644 features/buildroot/package/libgsasl/libgsasl.hash create mode 100644 features/buildroot/package/libgsasl/libgsasl.mk create mode 100644 features/buildroot/package/libgsm/0001-misc-fixes-from-archlinux.patch create mode 100644 features/buildroot/package/libgsm/Config.in create mode 100644 features/buildroot/package/libgsm/libgsm.hash create mode 100644 features/buildroot/package/libgsm/libgsm.mk create mode 100644 features/buildroot/package/libgta/Config.in create mode 100644 features/buildroot/package/libgta/libgta.hash create mode 100644 features/buildroot/package/libgta/libgta.mk create mode 100644 features/buildroot/package/libgtk2/0001-reduce-dependencies.patch create mode 100644 features/buildroot/package/libgtk2/Config.in create mode 100644 features/buildroot/package/libgtk2/libgtk2.hash create mode 100644 features/buildroot/package/libgtk2/libgtk2.mk create mode 100644 features/buildroot/package/libgtk3/0001-no-gtk-doc.patch create mode 100644 features/buildroot/package/libgtk3/0002-fix-introspection-check.patch create mode 100644 features/buildroot/package/libgtk3/0003-disable-atk-bridge.patch create mode 100644 features/buildroot/package/libgtk3/0004-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch create mode 100644 features/buildroot/package/libgtk3/Config.in create mode 100644 features/buildroot/package/libgtk3/libgtk3.hash create mode 100644 features/buildroot/package/libgtk3/libgtk3.mk create mode 100644 features/buildroot/package/libgudev/Config.in create mode 100644 features/buildroot/package/libgudev/libgudev.hash create mode 100644 features/buildroot/package/libgudev/libgudev.mk create mode 100644 features/buildroot/package/libhdhomerun/0001-dont-strip.patch create mode 100644 features/buildroot/package/libhdhomerun/Config.in create mode 100644 features/buildroot/package/libhdhomerun/libhdhomerun.hash create mode 100644 features/buildroot/package/libhdhomerun/libhdhomerun.mk create mode 100644 features/buildroot/package/libhid/0001-dont-fiddle-with-debug-flags.patch create mode 100644 features/buildroot/package/libhid/0002-no-newline-in-ldflags.patch create mode 100644 features/buildroot/package/libhid/0003-uclinux.patch create mode 100644 features/buildroot/package/libhid/Config.in create mode 100644 features/buildroot/package/libhid/libhid.hash create mode 100644 features/buildroot/package/libhid/libhid.mk create mode 100644 features/buildroot/package/libhtp/0001-fix-build-without-GNU-libiconv.patch create mode 100644 features/buildroot/package/libhtp/0002-htp.pc.in-add-lz-to-Libs.private.patch create mode 100644 features/buildroot/package/libhtp/Config.in create mode 100644 features/buildroot/package/libhtp/libhtp.hash create mode 100644 features/buildroot/package/libhtp/libhtp.mk create mode 100644 features/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch create mode 100644 features/buildroot/package/libhttpparser/Config.in create mode 100644 features/buildroot/package/libhttpparser/libhttpparser.hash create mode 100644 features/buildroot/package/libhttpparser/libhttpparser.mk create mode 100644 features/buildroot/package/libical/0001-no-tests.patch create mode 100644 features/buildroot/package/libical/Config.in create mode 100644 features/buildroot/package/libical/libical.hash create mode 100644 features/buildroot/package/libical/libical.mk create mode 100644 features/buildroot/package/libiconv/Config.in create mode 100644 features/buildroot/package/libiconv/libiconv.hash create mode 100644 features/buildroot/package/libiconv/libiconv.mk create mode 100644 features/buildroot/package/libid3tag/0001-configure-automake-foreign.patch create mode 100644 features/buildroot/package/libid3tag/Config.in create mode 100644 features/buildroot/package/libid3tag/id3tag.pc create mode 100644 features/buildroot/package/libid3tag/libid3tag.hash create mode 100644 features/buildroot/package/libid3tag/libid3tag.mk create mode 100644 features/buildroot/package/libidn/Config.in create mode 100644 features/buildroot/package/libidn/libidn.hash create mode 100644 features/buildroot/package/libidn/libidn.mk create mode 100644 features/buildroot/package/libidn2/Config.in create mode 100644 features/buildroot/package/libidn2/libidn2.hash create mode 100644 features/buildroot/package/libidn2/libidn2.mk create mode 100644 features/buildroot/package/libiio/0001-fix-install-of-binaries-with-a-static-only-library.patch create mode 100644 features/buildroot/package/libiio/Config.in create mode 100644 features/buildroot/package/libiio/S99iiod create mode 100644 features/buildroot/package/libiio/libiio.hash create mode 100644 features/buildroot/package/libiio/libiio.mk create mode 100644 features/buildroot/package/libilbc/Config.in create mode 100644 features/buildroot/package/libilbc/libilbc.hash create mode 100644 features/buildroot/package/libilbc/libilbc.mk create mode 100644 features/buildroot/package/libimxvpuapi/Config.in create mode 100644 features/buildroot/package/libimxvpuapi/libimxvpuapi.hash create mode 100644 features/buildroot/package/libimxvpuapi/libimxvpuapi.mk create mode 100644 features/buildroot/package/libinput/Config.in create mode 100644 features/buildroot/package/libinput/libinput.hash create mode 100644 features/buildroot/package/libinput/libinput.mk create mode 100644 features/buildroot/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch create mode 100644 features/buildroot/package/libiqrf/0002-use-only-c-language.patch create mode 100644 features/buildroot/package/libiqrf/Config.in create mode 100644 features/buildroot/package/libiqrf/libiqrf.hash create mode 100644 features/buildroot/package/libiqrf/libiqrf.mk create mode 100644 features/buildroot/package/libiscsi/Config.in create mode 100644 features/buildroot/package/libiscsi/libiscsi.hash create mode 100644 features/buildroot/package/libiscsi/libiscsi.mk create mode 100644 features/buildroot/package/libite/Config.in create mode 100644 features/buildroot/package/libite/libite.hash create mode 100644 features/buildroot/package/libite/libite.mk create mode 100644 features/buildroot/package/libjpeg/libjpeg.hash create mode 100644 features/buildroot/package/libjpeg/libjpeg.mk create mode 100644 features/buildroot/package/libjpeg/libjpeg.pc.in create mode 100644 features/buildroot/package/libjson/0001-fix-broken-makefile.patch create mode 100644 features/buildroot/package/libjson/Config.in create mode 100644 features/buildroot/package/libjson/libjson.hash create mode 100644 features/buildroot/package/libjson/libjson.mk create mode 100644 features/buildroot/package/libkcapi/0001-apps-kcapi-hasher.c-fix-build-with-gcc-8.2.x.patch create mode 100644 features/buildroot/package/libkcapi/Config.in create mode 100644 features/buildroot/package/libkcapi/libkcapi.hash create mode 100644 features/buildroot/package/libkcapi/libkcapi.mk create mode 100644 features/buildroot/package/libkrb5/Config.in create mode 100644 features/buildroot/package/libkrb5/libkrb5.hash create mode 100644 features/buildroot/package/libkrb5/libkrb5.mk create mode 100644 features/buildroot/package/libksba/Config.in create mode 100644 features/buildroot/package/libksba/libksba.hash create mode 100644 features/buildroot/package/libksba/libksba.mk create mode 100644 features/buildroot/package/libldns/Config.in create mode 100644 features/buildroot/package/libldns/libldns.hash create mode 100644 features/buildroot/package/libldns/libldns.mk create mode 100644 features/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch create mode 100644 features/buildroot/package/liblinear/0002-build-static-lib.patch create mode 100644 features/buildroot/package/liblinear/Config.in create mode 100644 features/buildroot/package/liblinear/liblinear.hash create mode 100644 features/buildroot/package/liblinear/liblinear.mk create mode 100644 features/buildroot/package/libllcp/Config.in create mode 100644 features/buildroot/package/libllcp/libllcp.hash create mode 100644 features/buildroot/package/libllcp/libllcp.mk create mode 100644 features/buildroot/package/liblo/Config.in create mode 100644 features/buildroot/package/liblo/liblo.hash create mode 100644 features/buildroot/package/liblo/liblo.mk create mode 100644 features/buildroot/package/liblockfile/0001-install.patch create mode 100644 features/buildroot/package/liblockfile/Config.in create mode 100644 features/buildroot/package/liblockfile/liblockfile.hash create mode 100644 features/buildroot/package/liblockfile/liblockfile.mk create mode 100644 features/buildroot/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch create mode 100644 features/buildroot/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch create mode 100644 features/buildroot/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch create mode 100644 features/buildroot/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch create mode 100644 features/buildroot/package/liblog4c-localtime/0005-Fix-C-support.patch create mode 100644 features/buildroot/package/liblog4c-localtime/Config.in create mode 100644 features/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash create mode 100644 features/buildroot/package/liblog4c-localtime/liblog4c-localtime.mk create mode 100644 features/buildroot/package/liblogging/Config.in create mode 100644 features/buildroot/package/liblogging/liblogging.hash create mode 100644 features/buildroot/package/liblogging/liblogging.mk create mode 100644 features/buildroot/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch create mode 100644 features/buildroot/package/libloki/0002-use-ln-snf.patch create mode 100644 features/buildroot/package/libloki/Config.in create mode 100644 features/buildroot/package/libloki/libloki.hash create mode 100644 features/buildroot/package/libloki/libloki.mk create mode 100644 features/buildroot/package/libmad/0001-mips-h-constraint-removal.patch create mode 100644 features/buildroot/package/libmad/0003-remove-deprecated-cflags.patch create mode 100644 features/buildroot/package/libmad/0004-thumb2-fixed-arm.patch create mode 100644 features/buildroot/package/libmad/0005-thumb2-imdct-arm.patch create mode 100644 features/buildroot/package/libmad/0006-configure-ac-automake-foreign.patch create mode 100644 features/buildroot/package/libmad/Config.in create mode 100644 features/buildroot/package/libmad/libmad.hash create mode 100644 features/buildroot/package/libmad/libmad.mk create mode 100644 features/buildroot/package/libmad/mad.pc create mode 100644 features/buildroot/package/libmatroska/Config.in create mode 100644 features/buildroot/package/libmatroska/libmatroska.hash create mode 100644 features/buildroot/package/libmatroska/libmatroska.mk create mode 100644 features/buildroot/package/libmaxminddb/0001-Add-disable-binaries.patch create mode 100644 features/buildroot/package/libmaxminddb/Config.in create mode 100644 features/buildroot/package/libmaxminddb/libmaxminddb.hash create mode 100644 features/buildroot/package/libmaxminddb/libmaxminddb.mk create mode 100644 features/buildroot/package/libmbim/Config.in create mode 100644 features/buildroot/package/libmbim/libmbim.hash create mode 100644 features/buildroot/package/libmbim/libmbim.mk create mode 100644 features/buildroot/package/libmbus/Config.in create mode 100644 features/buildroot/package/libmbus/libmbus.hash create mode 100644 features/buildroot/package/libmbus/libmbus.mk create mode 100644 features/buildroot/package/libmcrypt/0001-nocxx.patch create mode 100644 features/buildroot/package/libmcrypt/Config.in create mode 100644 features/buildroot/package/libmcrypt/libmcrypt.hash create mode 100644 features/buildroot/package/libmcrypt/libmcrypt.mk create mode 100644 features/buildroot/package/libmediaart/Config.in create mode 100644 features/buildroot/package/libmediaart/libmediaart.hash create mode 100644 features/buildroot/package/libmediaart/libmediaart.mk create mode 100644 features/buildroot/package/libmemcached/0001-disable-tests.patch create mode 100644 features/buildroot/package/libmemcached/0002-disable-sanitizer.patch create mode 100644 features/buildroot/package/libmemcached/0003-move-ac_config_aux_dir.patch create mode 100644 features/buildroot/package/libmemcached/0004-disable-doc-and-man.patch create mode 100644 features/buildroot/package/libmemcached/0005-fix-pointer-comparaison.patch create mode 100644 features/buildroot/package/libmemcached/Config.in create mode 100644 features/buildroot/package/libmemcached/libmemcached.hash create mode 100644 features/buildroot/package/libmemcached/libmemcached.mk create mode 100644 features/buildroot/package/libmhash/Config.in create mode 100644 features/buildroot/package/libmhash/libmhash.hash create mode 100644 features/buildroot/package/libmhash/libmhash.mk create mode 100644 features/buildroot/package/libmicrohttpd/Config.in create mode 100644 features/buildroot/package/libmicrohttpd/libmicrohttpd.hash create mode 100644 features/buildroot/package/libmicrohttpd/libmicrohttpd.mk create mode 100644 features/buildroot/package/libminiupnpc/Config.in create mode 100644 features/buildroot/package/libminiupnpc/libminiupnpc.hash create mode 100644 features/buildroot/package/libminiupnpc/libminiupnpc.mk create mode 100644 features/buildroot/package/libmms/Config.in create mode 100644 features/buildroot/package/libmms/libmms.hash create mode 100644 features/buildroot/package/libmms/libmms.mk create mode 100644 features/buildroot/package/libmng/0001-jpeg-9a.patch create mode 100644 features/buildroot/package/libmng/Config.in create mode 100644 features/buildroot/package/libmng/libmng.hash create mode 100644 features/buildroot/package/libmng/libmng.mk create mode 100644 features/buildroot/package/libmnl/Config.in create mode 100644 features/buildroot/package/libmnl/libmnl.hash create mode 100644 features/buildroot/package/libmnl/libmnl.mk create mode 100644 features/buildroot/package/libmodbus/Config.in create mode 100644 features/buildroot/package/libmodbus/libmodbus.hash create mode 100644 features/buildroot/package/libmodbus/libmodbus.mk create mode 100644 features/buildroot/package/libmodplug/Config.in create mode 100644 features/buildroot/package/libmodplug/libmodplug.hash create mode 100644 features/buildroot/package/libmodplug/libmodplug.mk create mode 100644 features/buildroot/package/libmpd/0001-Fix-build-on-archlinux-missing-include.patch create mode 100644 features/buildroot/package/libmpd/Config.in create mode 100644 features/buildroot/package/libmpd/libmpd.hash create mode 100644 features/buildroot/package/libmpd/libmpd.mk create mode 100644 features/buildroot/package/libmpdclient/Config.in create mode 100644 features/buildroot/package/libmpdclient/libmpdclient.hash create mode 100644 features/buildroot/package/libmpdclient/libmpdclient.mk create mode 100644 features/buildroot/package/libmpeg2/0001-altivec.patch create mode 100644 features/buildroot/package/libmpeg2/0002-armv4l.patch create mode 100644 features/buildroot/package/libmpeg2/0003-fix-arm-detection.patch create mode 100644 features/buildroot/package/libmpeg2/0004-fix-sparc.patch create mode 100644 features/buildroot/package/libmpeg2/Config.in create mode 100644 features/buildroot/package/libmpeg2/libmpeg2.hash create mode 100644 features/buildroot/package/libmpeg2/libmpeg2.mk create mode 100644 features/buildroot/package/libnatpmp/Config.in create mode 100644 features/buildroot/package/libnatpmp/libnatpmp.hash create mode 100644 features/buildroot/package/libnatpmp/libnatpmp.mk create mode 100644 features/buildroot/package/libndp/0001-ndptool.c-Fix-musl-build.patch create mode 100644 features/buildroot/package/libndp/Config.in create mode 100644 features/buildroot/package/libndp/libndp.hash create mode 100644 features/buildroot/package/libndp/libndp.mk create mode 100644 features/buildroot/package/libnet/0001-support-musl-libc.patch create mode 100644 features/buildroot/package/libnet/Config.in create mode 100644 features/buildroot/package/libnet/libnet.hash create mode 100644 features/buildroot/package/libnet/libnet.mk create mode 100644 features/buildroot/package/libnetfilter_acct/Config.in create mode 100644 features/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash create mode 100644 features/buildroot/package/libnetfilter_acct/libnetfilter_acct.mk create mode 100644 features/buildroot/package/libnetfilter_conntrack/Config.in create mode 100644 features/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.hash create mode 100644 features/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.mk create mode 100644 features/buildroot/package/libnetfilter_cthelper/0001-uclinux.patch create mode 100644 features/buildroot/package/libnetfilter_cthelper/Config.in create mode 100644 features/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash create mode 100644 features/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.mk create mode 100644 features/buildroot/package/libnetfilter_cttimeout/0001-uclinux.patch create mode 100644 features/buildroot/package/libnetfilter_cttimeout/Config.in create mode 100644 features/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash create mode 100644 features/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk create mode 100644 features/buildroot/package/libnetfilter_log/0001-uclinux.patch create mode 100644 features/buildroot/package/libnetfilter_log/Config.in create mode 100644 features/buildroot/package/libnetfilter_log/libnetfilter_log.hash create mode 100644 features/buildroot/package/libnetfilter_log/libnetfilter_log.mk create mode 100644 features/buildroot/package/libnetfilter_queue/Config.in create mode 100644 features/buildroot/package/libnetfilter_queue/libnetfilter_queue.hash create mode 100644 features/buildroot/package/libnetfilter_queue/libnetfilter_queue.mk create mode 100644 features/buildroot/package/libnfc/0001-build-systems-make-example-build-optional.patch create mode 100644 features/buildroot/package/libnfc/Config.in create mode 100644 features/buildroot/package/libnfc/libnfc.hash create mode 100644 features/buildroot/package/libnfc/libnfc.mk create mode 100644 features/buildroot/package/libnfnetlink/0001-uclinux.patch create mode 100644 features/buildroot/package/libnfnetlink/0002-musl.patch create mode 100644 features/buildroot/package/libnfnetlink/Config.in create mode 100644 features/buildroot/package/libnfnetlink/libnfnetlink.hash create mode 100644 features/buildroot/package/libnfnetlink/libnfnetlink.mk create mode 100644 features/buildroot/package/libnfs/0001-Fix-include-sys-time.h.patch create mode 100644 features/buildroot/package/libnfs/Config.in create mode 100644 features/buildroot/package/libnfs/libnfs.hash create mode 100644 features/buildroot/package/libnfs/libnfs.mk create mode 100644 features/buildroot/package/libnftnl/0001-Add-Libs.private-field-to-libnftnl.pc.patch create mode 100644 features/buildroot/package/libnftnl/Config.in create mode 100644 features/buildroot/package/libnftnl/libnftnl.hash create mode 100644 features/buildroot/package/libnftnl/libnftnl.mk create mode 100644 features/buildroot/package/libnice/Config.in create mode 100644 features/buildroot/package/libnice/libnice.hash create mode 100644 features/buildroot/package/libnice/libnice.mk create mode 100644 features/buildroot/package/libnl/0001-build-add-Libs.private-field-in-libnl-pkg-config-fil.patch create mode 100644 features/buildroot/package/libnl/0002-Add-musl-workaround-to-the-libc-compat.h-copy.patch create mode 100644 features/buildroot/package/libnl/Config.in create mode 100644 features/buildroot/package/libnl/libnl.hash create mode 100644 features/buildroot/package/libnl/libnl.mk create mode 100644 features/buildroot/package/libnpth/Config.in create mode 100644 features/buildroot/package/libnpth/libnpth.hash create mode 100644 features/buildroot/package/libnpth/libnpth.mk create mode 100644 features/buildroot/package/libnspr/0001-nios2.patch create mode 100644 features/buildroot/package/libnspr/0002-microblaze.patch create mode 100644 features/buildroot/package/libnspr/0003-nds32.patch create mode 100644 features/buildroot/package/libnspr/Config.in create mode 100644 features/buildroot/package/libnspr/libnspr.hash create mode 100644 features/buildroot/package/libnspr/libnspr.mk create mode 100644 features/buildroot/package/libnss/0001-fix-uclibc-build.patch create mode 100644 features/buildroot/package/libnss/0002-add-zlib-include-dir-variable.patch create mode 100644 features/buildroot/package/libnss/Config.in create mode 100644 features/buildroot/package/libnss/libnss.hash create mode 100644 features/buildroot/package/libnss/libnss.mk create mode 100644 features/buildroot/package/libnss/nss.pc.in create mode 100644 features/buildroot/package/liboauth/0001-Fixes-build-issue-with-OpenSSL-1.1.0.patch create mode 100644 features/buildroot/package/liboauth/Config.in create mode 100644 features/buildroot/package/liboauth/liboauth.hash create mode 100644 features/buildroot/package/liboauth/liboauth.mk create mode 100644 features/buildroot/package/libogg/Config.in create mode 100644 features/buildroot/package/libogg/libogg.hash create mode 100644 features/buildroot/package/libogg/libogg.mk create mode 100644 features/buildroot/package/libopenh264/Config.in create mode 100644 features/buildroot/package/libopenh264/libopenh264.hash create mode 100644 features/buildroot/package/libopenh264/libopenh264.mk create mode 100644 features/buildroot/package/libopenssl/0001-Dont-waste-time-building-manpages-if-we-re-not-going.patch create mode 100644 features/buildroot/package/libopenssl/0002-Reproducible-build-do-not-leak-compiler-path.patch create mode 100644 features/buildroot/package/libopenssl/0003-Introduce-the-OPENSSL_NO_MADVISE-to-disable-call-to-.patch create mode 100644 features/buildroot/package/libopenssl/libopenssl.hash create mode 100644 features/buildroot/package/libopenssl/libopenssl.mk create mode 100644 features/buildroot/package/liboping/0001-ping_host_add-Decrease-buffer-size-to-make-GCC-s-truncation-check-happy.patch create mode 100644 features/buildroot/package/liboping/Config.in create mode 100644 features/buildroot/package/liboping/liboping.hash create mode 100644 features/buildroot/package/liboping/liboping.mk create mode 100644 features/buildroot/package/libopusenc/Config.in create mode 100644 features/buildroot/package/libopusenc/libopusenc.hash create mode 100644 features/buildroot/package/libopusenc/libopusenc.mk create mode 100644 features/buildroot/package/libosip2/0001-fix-bug-report-sr-109133-Heap-buffer-overflow-in-uti.patch create mode 100644 features/buildroot/package/libosip2/Config.in create mode 100644 features/buildroot/package/libosip2/libosip2.hash create mode 100644 features/buildroot/package/libosip2/libosip2.mk create mode 100644 features/buildroot/package/libostree/Config.in create mode 100644 features/buildroot/package/libostree/libostree.hash create mode 100644 features/buildroot/package/libostree/libostree.mk create mode 100644 features/buildroot/package/libp11/Config.in create mode 100644 features/buildroot/package/libp11/Config.in.host create mode 100644 features/buildroot/package/libp11/libp11.hash create mode 100644 features/buildroot/package/libp11/libp11.mk create mode 100644 features/buildroot/package/libpagekite/0001-configure.ac-fix-handling-of-with.patch create mode 100644 features/buildroot/package/libpagekite/0002-configure.ac-use-AS_HELP_STRING-for-with-openssl.patch create mode 100644 features/buildroot/package/libpagekite/0003-configure.ac-use-pkg-config-for-openssl.patch create mode 100644 features/buildroot/package/libpagekite/Config.in create mode 100644 features/buildroot/package/libpagekite/libpagekite.hash create mode 100644 features/buildroot/package/libpagekite/libpagekite.mk create mode 100644 features/buildroot/package/libpam-radius-auth/Config.in create mode 100644 features/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash create mode 100644 features/buildroot/package/libpam-radius-auth/libpam-radius-auth.mk create mode 100644 features/buildroot/package/libpam-tacplus/0001-Fix-getrandom-call-in-magic.c.patch create mode 100644 features/buildroot/package/libpam-tacplus/0002-Fix-compilation-of-tacc.c-with-GCC-8.patch create mode 100644 features/buildroot/package/libpam-tacplus/Config.in create mode 100644 features/buildroot/package/libpam-tacplus/libpam-tacplus.hash create mode 100644 features/buildroot/package/libpam-tacplus/libpam-tacplus.mk create mode 100644 features/buildroot/package/libpcap/0001-pcap-usb-linux.c-add-missing-limits.h-for-musl-systems.patch create mode 100644 features/buildroot/package/libpcap/Config.in create mode 100644 features/buildroot/package/libpcap/libpcap.hash create mode 100644 features/buildroot/package/libpcap/libpcap.mk create mode 100644 features/buildroot/package/libpciaccess/Config.in create mode 100644 features/buildroot/package/libpciaccess/libpciaccess.hash create mode 100644 features/buildroot/package/libpciaccess/libpciaccess.mk create mode 100644 features/buildroot/package/libpfm4/Config.in create mode 100644 features/buildroot/package/libpfm4/libpfm4.hash create mode 100644 features/buildroot/package/libpfm4/libpfm4.mk create mode 100644 features/buildroot/package/libphidget/Config.in create mode 100644 features/buildroot/package/libphidget/libphidget.hash create mode 100644 features/buildroot/package/libphidget/libphidget.mk create mode 100644 features/buildroot/package/libpjsip/0001-Fixed-possible-function-name-clash.patch create mode 100644 features/buildroot/package/libpjsip/Config.in create mode 100644 features/buildroot/package/libpjsip/libpjsip.hash create mode 100644 features/buildroot/package/libpjsip/libpjsip.mk create mode 100644 features/buildroot/package/libplatform/Config.in create mode 100644 features/buildroot/package/libplatform/libplatform.hash create mode 100644 features/buildroot/package/libplatform/libplatform.mk create mode 100644 features/buildroot/package/libplayer/0001-add-fpic.patch create mode 100644 features/buildroot/package/libplayer/0002-fix-configure-cflags.patch create mode 100644 features/buildroot/package/libplayer/Config.in create mode 100644 features/buildroot/package/libplayer/libplayer.hash create mode 100644 features/buildroot/package/libplayer/libplayer.mk create mode 100644 features/buildroot/package/libplist/Config.in create mode 100644 features/buildroot/package/libplist/libplist.hash create mode 100644 features/buildroot/package/libplist/libplist.mk create mode 100644 features/buildroot/package/libpng/0001-Disable-pngfix-and-png-fix-itxt.patch create mode 100644 features/buildroot/package/libpng/Config.in create mode 100644 features/buildroot/package/libpng/libpng.hash create mode 100644 features/buildroot/package/libpng/libpng.mk create mode 100644 features/buildroot/package/libpqxx/Config.in create mode 100644 features/buildroot/package/libpqxx/libpqxx.hash create mode 100644 features/buildroot/package/libpqxx/libpqxx.mk create mode 100644 features/buildroot/package/libpri/Config.in create mode 100644 features/buildroot/package/libpri/libpri.hash create mode 100644 features/buildroot/package/libpri/libpri.mk create mode 100644 features/buildroot/package/libpthread-stubs/Config.in create mode 100644 features/buildroot/package/libpthread-stubs/libpthread-stubs.hash create mode 100644 features/buildroot/package/libpthread-stubs/libpthread-stubs.mk create mode 100644 features/buildroot/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch create mode 100644 features/buildroot/package/libpthsem/Config.in create mode 100644 features/buildroot/package/libpthsem/libpthsem.hash create mode 100644 features/buildroot/package/libpthsem/libpthsem.mk create mode 100644 features/buildroot/package/libpwquality/Config.in create mode 100644 features/buildroot/package/libpwquality/libpwquality.hash create mode 100644 features/buildroot/package/libpwquality/libpwquality.mk create mode 100644 features/buildroot/package/libqmi/0001-musl-compat-canonicalize_file_name.patch create mode 100644 features/buildroot/package/libqmi/Config.in create mode 100644 features/buildroot/package/libqmi/libqmi.hash create mode 100644 features/buildroot/package/libqmi/libqmi.mk create mode 100644 features/buildroot/package/libqrencode/Config.in create mode 100644 features/buildroot/package/libqrencode/libqrencode.hash create mode 100644 features/buildroot/package/libqrencode/libqrencode.mk create mode 100644 features/buildroot/package/libraw/Config.in create mode 100644 features/buildroot/package/libraw/libraw.hash create mode 100644 features/buildroot/package/libraw/libraw.mk create mode 100644 features/buildroot/package/libraw1394/Config.in create mode 100644 features/buildroot/package/libraw1394/libraw1394.hash create mode 100644 features/buildroot/package/libraw1394/libraw1394.mk create mode 100644 features/buildroot/package/libreplaygain/Config.in create mode 100644 features/buildroot/package/libreplaygain/libreplaygain.hash create mode 100644 features/buildroot/package/libreplaygain/libreplaygain.mk create mode 100644 features/buildroot/package/libressl/libressl.hash create mode 100644 features/buildroot/package/libressl/libressl.mk create mode 100644 features/buildroot/package/libroxml/Config.in create mode 100644 features/buildroot/package/libroxml/libroxml.hash create mode 100644 features/buildroot/package/libroxml/libroxml.mk create mode 100644 features/buildroot/package/librsvg/Config.in create mode 100644 features/buildroot/package/librsvg/librsvg.hash create mode 100644 features/buildroot/package/librsvg/librsvg.mk create mode 100644 features/buildroot/package/librsync/Config.in create mode 100644 features/buildroot/package/librsync/librsync.hash create mode 100644 features/buildroot/package/librsync/librsync.mk create mode 100644 features/buildroot/package/librtas/Config.in create mode 100644 features/buildroot/package/librtas/librtas.hash create mode 100644 features/buildroot/package/librtas/librtas.mk create mode 100644 features/buildroot/package/librtlsdr/0001-disable_shared_library_target_in_build.patch create mode 100644 features/buildroot/package/librtlsdr/Config.in create mode 100644 features/buildroot/package/librtlsdr/librtlsdr.hash create mode 100644 features/buildroot/package/librtlsdr/librtlsdr.mk create mode 100644 features/buildroot/package/libsamplerate/Config.in create mode 100644 features/buildroot/package/libsamplerate/libsamplerate.hash create mode 100644 features/buildroot/package/libsamplerate/libsamplerate.mk create mode 100644 features/buildroot/package/libscrypt/0001-Allow-adding-options-to-CFLAGS-and-LDFLAGS-variables.patch create mode 100644 features/buildroot/package/libscrypt/Config.in create mode 100644 features/buildroot/package/libscrypt/libscrypt.hash create mode 100644 features/buildroot/package/libscrypt/libscrypt.mk create mode 100644 features/buildroot/package/libseccomp/0001-remove-static.patch create mode 100644 features/buildroot/package/libseccomp/Config.in create mode 100644 features/buildroot/package/libseccomp/libseccomp.hash create mode 100644 features/buildroot/package/libseccomp/libseccomp.mk create mode 100644 features/buildroot/package/libsecret/0001-libsecret.pc-add-Libs.private-field-for-libgcrypt.patch create mode 100644 features/buildroot/package/libsecret/Config.in create mode 100644 features/buildroot/package/libsecret/libsecret.hash create mode 100644 features/buildroot/package/libsecret/libsecret.mk create mode 100644 features/buildroot/package/libselinux/0001-fix-musl-build.patch create mode 100644 features/buildroot/package/libselinux/0002-revert-ln-relative.patch create mode 100644 features/buildroot/package/libselinux/Config.in create mode 100644 features/buildroot/package/libselinux/libselinux.hash create mode 100644 features/buildroot/package/libselinux/libselinux.mk create mode 100644 features/buildroot/package/libsemanage/Config.in create mode 100644 features/buildroot/package/libsemanage/libsemanage.hash create mode 100644 features/buildroot/package/libsemanage/libsemanage.mk create mode 100644 features/buildroot/package/libsepol/0001-support-static-only.patch create mode 100644 features/buildroot/package/libsepol/0002-revert-ln-relative.patch create mode 100644 features/buildroot/package/libsepol/Config.in create mode 100644 features/buildroot/package/libsepol/libsepol.hash create mode 100644 features/buildroot/package/libsepol/libsepol.mk create mode 100644 features/buildroot/package/libserial/0001-SerialPort.cpp-fix-build-when-size_t-is-an-unsigned-.patch create mode 100644 features/buildroot/package/libserial/0002-SerialPort.cpp-don-t-use-high-baudrates-when-not-ava.patch create mode 100644 features/buildroot/package/libserial/Config.in create mode 100644 features/buildroot/package/libserial/libserial.hash create mode 100644 features/buildroot/package/libserial/libserial.mk create mode 100644 features/buildroot/package/libserialport/0001-uclinux-detection.patch create mode 100644 features/buildroot/package/libserialport/Config.in create mode 100644 features/buildroot/package/libserialport/libserialport.hash create mode 100644 features/buildroot/package/libserialport/libserialport.mk create mode 100644 features/buildroot/package/libsexy/Config.in create mode 100644 features/buildroot/package/libsexy/libsexy.hash create mode 100644 features/buildroot/package/libsexy/libsexy.mk create mode 100644 features/buildroot/package/libsha1/Config.in create mode 100644 features/buildroot/package/libsha1/libsha1.hash create mode 100644 features/buildroot/package/libsha1/libsha1.mk create mode 100644 features/buildroot/package/libshairplay/Config.in create mode 100644 features/buildroot/package/libshairplay/libshairplay.hash create mode 100644 features/buildroot/package/libshairplay/libshairplay.mk create mode 100644 features/buildroot/package/libshout/Config.in create mode 100644 features/buildroot/package/libshout/libshout.hash create mode 100644 features/buildroot/package/libshout/libshout.mk create mode 100644 features/buildroot/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch create mode 100644 features/buildroot/package/libsidplay2/0002-pkg-config.patch create mode 100644 features/buildroot/package/libsidplay2/0003-gcc6.patch create mode 100644 features/buildroot/package/libsidplay2/Config.in create mode 100644 features/buildroot/package/libsidplay2/libsidplay2.hash create mode 100644 features/buildroot/package/libsidplay2/libsidplay2.mk create mode 100644 features/buildroot/package/libsigc/Config.in create mode 100644 features/buildroot/package/libsigc/libsigc.hash create mode 100644 features/buildroot/package/libsigc/libsigc.mk create mode 100644 features/buildroot/package/libsigrok/Config.in create mode 100644 features/buildroot/package/libsigrok/libsigrok.hash create mode 100644 features/buildroot/package/libsigrok/libsigrok.mk create mode 100644 features/buildroot/package/libsigrokdecode/Config.in create mode 100644 features/buildroot/package/libsigrokdecode/libsigrokdecode.hash create mode 100644 features/buildroot/package/libsigrokdecode/libsigrokdecode.mk create mode 100644 features/buildroot/package/libsigsegv/0001-Improve-support-for-Linux-RISC-V.patch create mode 100644 features/buildroot/package/libsigsegv/0002-m4-stack-direction-RISC-V-stack-grows-downward.patch create mode 100644 features/buildroot/package/libsigsegv/Config.in create mode 100644 features/buildroot/package/libsigsegv/libsigsegv.hash create mode 100644 features/buildroot/package/libsigsegv/libsigsegv.mk create mode 100644 features/buildroot/package/libsilk/Config.in create mode 100644 features/buildroot/package/libsilk/libsilk.hash create mode 100644 features/buildroot/package/libsilk/libsilk.mk create mode 100644 features/buildroot/package/libsndfile/0001-double64_init-Check-psf-sf.channels-against-upper-bo.patch create mode 100644 features/buildroot/package/libsndfile/0002-Check-MAX_CHANNELS-in-sndfile-deinterleave.patch create mode 100644 features/buildroot/package/libsndfile/0003-a-ulaw-fix-multiple-buffer-overflows-432.patch create mode 100644 features/buildroot/package/libsndfile/Config.in create mode 100644 features/buildroot/package/libsndfile/libsndfile.hash create mode 100644 features/buildroot/package/libsndfile/libsndfile.mk create mode 100644 features/buildroot/package/libsoc/Config.in create mode 100644 features/buildroot/package/libsoc/libsoc.hash create mode 100644 features/buildroot/package/libsoc/libsoc.mk create mode 100644 features/buildroot/package/libsocketcan/Config.in create mode 100644 features/buildroot/package/libsocketcan/libsocketcan.hash create mode 100644 features/buildroot/package/libsocketcan/libsocketcan.mk create mode 100644 features/buildroot/package/libsodium/Config.in create mode 100644 features/buildroot/package/libsodium/libsodium.hash create mode 100644 features/buildroot/package/libsodium/libsodium.mk create mode 100644 features/buildroot/package/libsoil/0001-fix-makefile.patch create mode 100644 features/buildroot/package/libsoil/Config.in create mode 100644 features/buildroot/package/libsoil/libsoil.hash create mode 100644 features/buildroot/package/libsoil/libsoil.mk create mode 100644 features/buildroot/package/libsoundtouch/Config.in create mode 100644 features/buildroot/package/libsoundtouch/libsoundtouch.hash create mode 100644 features/buildroot/package/libsoundtouch/libsoundtouch.mk create mode 100644 features/buildroot/package/libsoup/0001-Revert-tld-parser-use-Python-3.patch create mode 100644 features/buildroot/package/libsoup/Config.in create mode 100644 features/buildroot/package/libsoup/libsoup.hash create mode 100644 features/buildroot/package/libsoup/libsoup.mk create mode 100644 features/buildroot/package/libsoxr/0001-Add-Libs.private-for-static-linking.patch create mode 100644 features/buildroot/package/libsoxr/Config.in create mode 100644 features/buildroot/package/libsoxr/libsoxr.hash create mode 100644 features/buildroot/package/libsoxr/libsoxr.mk create mode 100644 features/buildroot/package/libspatialindex/0001-configure.ac-do-not-force-O2.patch create mode 100644 features/buildroot/package/libspatialindex/Config.in create mode 100644 features/buildroot/package/libspatialindex/libspatialindex.hash create mode 100644 features/buildroot/package/libspatialindex/libspatialindex.mk create mode 100644 features/buildroot/package/libsquish/0001-Makefile-add-f-option-for-ln-to-remove-existing-dest.patch create mode 100644 features/buildroot/package/libsquish/Config.in create mode 100644 features/buildroot/package/libsquish/libsquish.hash create mode 100644 features/buildroot/package/libsquish/libsquish.mk create mode 100644 features/buildroot/package/libsrtp/Config.in create mode 100644 features/buildroot/package/libsrtp/libsrtp.hash create mode 100644 features/buildroot/package/libsrtp/libsrtp.mk create mode 100644 features/buildroot/package/libss7/Config.in create mode 100644 features/buildroot/package/libss7/libss7.hash create mode 100644 features/buildroot/package/libss7/libss7.mk create mode 100644 features/buildroot/package/libssh/Config.in create mode 100644 features/buildroot/package/libssh/libssh.hash create mode 100644 features/buildroot/package/libssh/libssh.mk create mode 100644 features/buildroot/package/libssh2/0001-drop-custom-buildconf-script.patch create mode 100644 features/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch create mode 100644 features/buildroot/package/libssh2/Config.in create mode 100644 features/buildroot/package/libssh2/libssh2.hash create mode 100644 features/buildroot/package/libssh2/libssh2.mk create mode 100644 features/buildroot/package/libstrophe/0001-make-autoreconfable.patch create mode 100644 features/buildroot/package/libstrophe/Config.in create mode 100644 features/buildroot/package/libstrophe/libstrophe.hash create mode 100644 features/buildroot/package/libstrophe/libstrophe.mk create mode 100644 features/buildroot/package/libsvg-cairo/Config.in create mode 100644 features/buildroot/package/libsvg-cairo/libsvg-cairo.hash create mode 100644 features/buildroot/package/libsvg-cairo/libsvg-cairo.mk create mode 100644 features/buildroot/package/libsvg/0001-fix-expat-static-declaration.patch create mode 100644 features/buildroot/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch create mode 100644 features/buildroot/package/libsvg/Config.in create mode 100644 features/buildroot/package/libsvg/libsvg.hash create mode 100644 features/buildroot/package/libsvg/libsvg.mk create mode 100644 features/buildroot/package/libsvgtiny/0001-disable-debug-printfs.patch create mode 100644 features/buildroot/package/libsvgtiny/0002-create-builddir.patch create mode 100644 features/buildroot/package/libsvgtiny/0003-Remove-Werror.patch create mode 100644 features/buildroot/package/libsvgtiny/Config.in create mode 100644 features/buildroot/package/libsvgtiny/libsvgtiny.hash create mode 100644 features/buildroot/package/libsvgtiny/libsvgtiny.mk create mode 100644 features/buildroot/package/libsysfs/Config.in create mode 100644 features/buildroot/package/libsysfs/libsysfs.hash create mode 100644 features/buildroot/package/libsysfs/libsysfs.mk create mode 100644 features/buildroot/package/libtasn1/Config.in create mode 100644 features/buildroot/package/libtasn1/libtasn1.hash create mode 100644 features/buildroot/package/libtasn1/libtasn1.mk create mode 100644 features/buildroot/package/libtheora/0001-link-libtheoradec.patch create mode 100644 features/buildroot/package/libtheora/0002-fix-autoreconf.patch create mode 100644 features/buildroot/package/libtheora/Config.in create mode 100644 features/buildroot/package/libtheora/libtheora.hash create mode 100644 features/buildroot/package/libtheora/libtheora.mk create mode 100644 features/buildroot/package/libtirpc/0001-Disable-parts-of-TIRPC-requiring-NIS-support.patch create mode 100644 features/buildroot/package/libtirpc/0002-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch create mode 100644 features/buildroot/package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch create mode 100644 features/buildroot/package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch create mode 100644 features/buildroot/package/libtirpc/0005-Disable-DES-authentification-support.patch create mode 100644 features/buildroot/package/libtirpc/0006-rpc-types.h-fix-musl-build.patch create mode 100644 features/buildroot/package/libtirpc/Config.in create mode 100644 features/buildroot/package/libtirpc/libtirpc.hash create mode 100644 features/buildroot/package/libtirpc/libtirpc.mk create mode 100644 features/buildroot/package/libtomcrypt/Config.in create mode 100644 features/buildroot/package/libtomcrypt/libtomcrypt.hash create mode 100644 features/buildroot/package/libtomcrypt/libtomcrypt.mk create mode 100644 features/buildroot/package/libtommath/Config.in create mode 100644 features/buildroot/package/libtommath/libtommath.hash create mode 100644 features/buildroot/package/libtommath/libtommath.mk create mode 100644 features/buildroot/package/libtool/Config.in create mode 100644 features/buildroot/package/libtool/libtool.hash create mode 100644 features/buildroot/package/libtool/libtool.mk create mode 100644 features/buildroot/package/libtorrent-rasterbar/Config.in create mode 100644 features/buildroot/package/libtorrent-rasterbar/libtorrent-rasterbar.hash create mode 100644 features/buildroot/package/libtorrent-rasterbar/libtorrent-rasterbar.mk create mode 100644 features/buildroot/package/libtorrent/Config.in create mode 100644 features/buildroot/package/libtorrent/libtorrent.hash create mode 100644 features/buildroot/package/libtorrent/libtorrent.mk create mode 100644 features/buildroot/package/libtpl/Config.in create mode 100644 features/buildroot/package/libtpl/libtpl.hash create mode 100644 features/buildroot/package/libtpl/libtpl.mk create mode 100644 features/buildroot/package/libubootenv/0001-fw_printenv-remove-declaration-in-for-loop.patch create mode 100644 features/buildroot/package/libubootenv/0002-src-CMakeLists.txt-do-not-force-the-build-of-a-share.patch create mode 100644 features/buildroot/package/libubootenv/0003-uboot_env-fix-build-with-musl-libc.patch create mode 100644 features/buildroot/package/libubootenv/0004-uboot_env-fix-compilation-for-glibc-version-2.28.patch create mode 100644 features/buildroot/package/libubootenv/0005-uboot_env-remove-pthread.h-header-file.patch create mode 100644 features/buildroot/package/libubootenv/Config.in create mode 100644 features/buildroot/package/libubootenv/libubootenv.hash create mode 100644 features/buildroot/package/libubootenv/libubootenv.mk create mode 100644 features/buildroot/package/libubox/Config.in create mode 100644 features/buildroot/package/libubox/libubox.mk create mode 100644 features/buildroot/package/libuci/Config.in create mode 100644 features/buildroot/package/libuci/libuci.hash create mode 100644 features/buildroot/package/libuci/libuci.mk create mode 100644 features/buildroot/package/libucl/Config.in create mode 100644 features/buildroot/package/libucl/libucl.hash create mode 100644 features/buildroot/package/libucl/libucl.mk create mode 100644 features/buildroot/package/libuecc/Config.in create mode 100644 features/buildroot/package/libuecc/libuecc.hash create mode 100644 features/buildroot/package/libuecc/libuecc.mk create mode 100644 features/buildroot/package/libuio/0001-configure-remove-po-Makefile.in.patch create mode 100644 features/buildroot/package/libuio/0002-fix-build-with-musl.patch create mode 100644 features/buildroot/package/libuio/Config.in create mode 100644 features/buildroot/package/libuio/libuio.hash create mode 100644 features/buildroot/package/libuio/libuio.mk create mode 100644 features/buildroot/package/libunistring/Config.in create mode 100644 features/buildroot/package/libunistring/libunistring.hash create mode 100644 features/buildroot/package/libunistring/libunistring.mk create mode 100644 features/buildroot/package/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch create mode 100644 features/buildroot/package/libunwind/Config.in create mode 100644 features/buildroot/package/libunwind/libunwind.hash create mode 100644 features/buildroot/package/libunwind/libunwind.mk create mode 100644 features/buildroot/package/libupnp/Config.in create mode 100644 features/buildroot/package/libupnp/libupnp.hash create mode 100644 features/buildroot/package/libupnp/libupnp.mk create mode 100644 features/buildroot/package/libupnp18/0001-configure.ac-fix-build-with-openssl.patch create mode 100644 features/buildroot/package/libupnp18/0002-Do-not-try-to-detach-detached-thread-the-result-is-u.patch create mode 100644 features/buildroot/package/libupnp18/Config.in create mode 100644 features/buildroot/package/libupnp18/libupnp18.hash create mode 100644 features/buildroot/package/libupnp18/libupnp18.mk create mode 100644 features/buildroot/package/libupnpp/Config.in create mode 100644 features/buildroot/package/libupnpp/libupnpp.hash create mode 100644 features/buildroot/package/libupnpp/libupnpp.mk create mode 100644 features/buildroot/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch create mode 100644 features/buildroot/package/liburcu/Config.in create mode 100644 features/buildroot/package/liburcu/liburcu.hash create mode 100644 features/buildroot/package/liburcu/liburcu.mk create mode 100644 features/buildroot/package/liburiparser/0001-CMakeLists.txt-fix-build-without-C.patch create mode 100644 features/buildroot/package/liburiparser/Config.in create mode 100644 features/buildroot/package/liburiparser/liburiparser.hash create mode 100644 features/buildroot/package/liburiparser/liburiparser.mk create mode 100644 features/buildroot/package/libusb-compat/0001-Use-C99-standard-fixed-width-integer-types-in-usb.h.patch create mode 100644 features/buildroot/package/libusb-compat/0002-fix-a-build-issue-on-linux.patch create mode 100644 features/buildroot/package/libusb-compat/Config.in create mode 100644 features/buildroot/package/libusb-compat/libusb-compat.hash create mode 100644 features/buildroot/package/libusb-compat/libusb-compat.mk create mode 100644 features/buildroot/package/libusb/0001-configure.ac-fix-detection-of-clock_gettime-library.patch create mode 100644 features/buildroot/package/libusb/Config.in create mode 100644 features/buildroot/package/libusb/libusb.hash create mode 100644 features/buildroot/package/libusb/libusb.mk create mode 100644 features/buildroot/package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch create mode 100644 features/buildroot/package/libusbgx/Config.in create mode 100644 features/buildroot/package/libusbgx/libusbgx.hash create mode 100644 features/buildroot/package/libusbgx/libusbgx.mk create mode 100644 features/buildroot/package/libuv/Config.in create mode 100644 features/buildroot/package/libuv/libuv.hash create mode 100644 features/buildroot/package/libuv/libuv.mk create mode 100644 features/buildroot/package/libv4l/0001-fixup-lfs-mismatch-in-preload-libraries.patch create mode 100644 features/buildroot/package/libv4l/0002-keytable-fix-EVIOCSCLOCKID-related-compile-failure.patch create mode 100644 features/buildroot/package/libv4l/0003-Build-sdlcam-only-if-jpeg-is-enabled.patch create mode 100644 features/buildroot/package/libv4l/0004-v4l2-compliance-needs-fork.patch create mode 100644 features/buildroot/package/libv4l/Config.in create mode 100644 features/buildroot/package/libv4l/libv4l.hash create mode 100644 features/buildroot/package/libv4l/libv4l.mk create mode 100644 features/buildroot/package/libva-intel-driver/0001-Check-the-interface-from-libva-first.patch create mode 100644 features/buildroot/package/libva-intel-driver/Config.in create mode 100644 features/buildroot/package/libva-intel-driver/libva-intel-driver.hash create mode 100644 features/buildroot/package/libva-intel-driver/libva-intel-driver.mk create mode 100644 features/buildroot/package/libva-utils/Config.in create mode 100644 features/buildroot/package/libva-utils/libva-utils.hash create mode 100644 features/buildroot/package/libva-utils/libva-utils.mk create mode 100644 features/buildroot/package/libva/Config.in create mode 100644 features/buildroot/package/libva/libva.hash create mode 100644 features/buildroot/package/libva/libva.mk create mode 100644 features/buildroot/package/libvdpau/0002-link-with-libx11.patch create mode 100644 features/buildroot/package/libvdpau/0003-vdpau-module-searchpath.patch create mode 100644 features/buildroot/package/libvdpau/Config.in create mode 100644 features/buildroot/package/libvdpau/libvdpau.hash create mode 100644 features/buildroot/package/libvdpau/libvdpau.mk create mode 100644 features/buildroot/package/libvips/0001-fix-no-gtk-doc.patch create mode 100644 features/buildroot/package/libvips/Config.in create mode 100644 features/buildroot/package/libvips/libvips.hash create mode 100644 features/buildroot/package/libvips/libvips.mk create mode 100644 features/buildroot/package/libvncserver/0001-CMakeLists.txt-fix-build-without-C.patch create mode 100644 features/buildroot/package/libvncserver/Config.in create mode 100644 features/buildroot/package/libvncserver/libvncserver.hash create mode 100644 features/buildroot/package/libvncserver/libvncserver.mk create mode 100644 features/buildroot/package/libvorbis/0001-CVE-2017-14160-fix-bounds-check-on-very-low-sample-rates.patch create mode 100644 features/buildroot/package/libvorbis/Config.in create mode 100644 features/buildroot/package/libvorbis/libvorbis.hash create mode 100644 features/buildroot/package/libvorbis/libvorbis.mk create mode 100644 features/buildroot/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch create mode 100644 features/buildroot/package/libvpx/Config.in create mode 100644 features/buildroot/package/libvpx/libvpx.hash create mode 100644 features/buildroot/package/libvpx/libvpx.mk create mode 100644 features/buildroot/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch create mode 100644 features/buildroot/package/libwebsock/0002-fix-ssl.patch create mode 100644 features/buildroot/package/libwebsock/0003-fix-incorrect-inline.patch create mode 100644 features/buildroot/package/libwebsock/Config.in create mode 100644 features/buildroot/package/libwebsock/libwebsock.hash create mode 100644 features/buildroot/package/libwebsock/libwebsock.mk create mode 100644 features/buildroot/package/libwebsockets/Config.in create mode 100644 features/buildroot/package/libwebsockets/libwebsockets.hash create mode 100644 features/buildroot/package/libwebsockets/libwebsockets.mk create mode 100644 features/buildroot/package/libwpe/Config.in create mode 100644 features/buildroot/package/libwpe/libwpe.hash create mode 100644 features/buildroot/package/libwpe/libwpe.mk create mode 100644 features/buildroot/package/libxkbcommon/Config.in create mode 100644 features/buildroot/package/libxkbcommon/libxkbcommon.hash create mode 100644 features/buildroot/package/libxkbcommon/libxkbcommon.mk create mode 100644 features/buildroot/package/libxml-parser-perl/libxml-parser-perl.hash create mode 100644 features/buildroot/package/libxml-parser-perl/libxml-parser-perl.mk create mode 100644 features/buildroot/package/libxml2/Config.in create mode 100644 features/buildroot/package/libxml2/libxml2.hash create mode 100644 features/buildroot/package/libxml2/libxml2.mk create mode 100644 features/buildroot/package/libxmlpp/Config.in create mode 100644 features/buildroot/package/libxmlpp/libxmlpp.hash create mode 100644 features/buildroot/package/libxmlpp/libxmlpp.mk create mode 100644 features/buildroot/package/libxmlrpc/0001-use-correct-curl-config.patch create mode 100644 features/buildroot/package/libxmlrpc/Config.in create mode 100644 features/buildroot/package/libxmlrpc/libxmlrpc.hash create mode 100644 features/buildroot/package/libxmlrpc/libxmlrpc.mk create mode 100644 features/buildroot/package/libxslt/0001-Fix-security-framework-bypass.patch create mode 100644 features/buildroot/package/libxslt/Config.in create mode 100644 features/buildroot/package/libxslt/libxslt.hash create mode 100644 features/buildroot/package/libxslt/libxslt.mk create mode 100644 features/buildroot/package/libyaml/Config.in create mode 100644 features/buildroot/package/libyaml/libyaml.hash create mode 100644 features/buildroot/package/libyaml/libyaml.mk create mode 100644 features/buildroot/package/libyuv/0001-i386-sse2.patch create mode 100644 features/buildroot/package/libyuv/Config.in create mode 100644 features/buildroot/package/libyuv/libyuv.hash create mode 100644 features/buildroot/package/libyuv/libyuv.mk create mode 100644 features/buildroot/package/libzip/Config.in create mode 100644 features/buildroot/package/libzip/libzip.hash create mode 100644 features/buildroot/package/libzip/libzip.mk create mode 100644 features/buildroot/package/libzlib/libzlib.hash create mode 100644 features/buildroot/package/libzlib/libzlib.mk create mode 100644 features/buildroot/package/lightning/Config.in create mode 100644 features/buildroot/package/lightning/lightning.hash create mode 100644 features/buildroot/package/lightning/lightning.mk create mode 100644 features/buildroot/package/lighttpd/0001-Fix-default-config-file.patch create mode 100644 features/buildroot/package/lighttpd/Config.in create mode 100644 features/buildroot/package/lighttpd/S50lighttpd create mode 100644 features/buildroot/package/lighttpd/lighttpd.hash create mode 100644 features/buildroot/package/lighttpd/lighttpd.mk create mode 100644 features/buildroot/package/lighttpd/lighttpd_tmpfiles.conf create mode 100644 features/buildroot/package/linenoise/Config.in create mode 100644 features/buildroot/package/linenoise/linenoise.hash create mode 100644 features/buildroot/package/linenoise/linenoise.mk create mode 100644 features/buildroot/package/linknx/0001-Link-with-libiconv-if-needed.patch create mode 100644 features/buildroot/package/linknx/0002-configure.ac-always-define-CPPUNIT.patch create mode 100644 features/buildroot/package/linknx/0003-src-Makefile.am-fix-linking-with-log4cpp.patch create mode 100644 features/buildroot/package/linknx/Config.in create mode 100644 features/buildroot/package/linknx/linknx.hash create mode 100644 features/buildroot/package/linknx/linknx.mk create mode 100644 features/buildroot/package/links/Config.in create mode 100644 features/buildroot/package/links/links.hash create mode 100644 features/buildroot/package/links/links.mk create mode 100644 features/buildroot/package/linphone/Config.in create mode 100644 features/buildroot/package/linphone/linphone.hash create mode 100644 features/buildroot/package/linphone/linphone.mk create mode 100644 features/buildroot/package/linux-backports/Config.in create mode 100644 features/buildroot/package/linux-backports/linux-backports.hash create mode 100644 features/buildroot/package/linux-backports/linux-backports.mk create mode 100644 features/buildroot/package/linux-firmware/Config.in create mode 100644 features/buildroot/package/linux-firmware/linux-firmware.hash create mode 100644 features/buildroot/package/linux-firmware/linux-firmware.mk create mode 100644 features/buildroot/package/linux-fusion/0001-fix-for-linux-4-and-above.patch create mode 100644 features/buildroot/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch create mode 100644 features/buildroot/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch create mode 100644 features/buildroot/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch create mode 100644 features/buildroot/package/linux-fusion/40-fusion.rules create mode 100644 features/buildroot/package/linux-fusion/Config.in create mode 100644 features/buildroot/package/linux-fusion/linux-fusion.hash create mode 100644 features/buildroot/package/linux-fusion/linux-fusion.mk create mode 100644 features/buildroot/package/linux-headers/Config.in create mode 100644 features/buildroot/package/linux-headers/Config.in.host create mode 120000 features/buildroot/package/linux-headers/linux-headers.hash create mode 100644 features/buildroot/package/linux-headers/linux-headers.mk create mode 100644 features/buildroot/package/linux-pam/0001-doc-makefile-am.patch create mode 100644 features/buildroot/package/linux-pam/0002-Conditionally-compile-per-ruserok-availability.patch create mode 100644 features/buildroot/package/linux-pam/Config.in create mode 100644 features/buildroot/package/linux-pam/linux-pam.hash create mode 100644 features/buildroot/package/linux-pam/linux-pam.mk create mode 100644 features/buildroot/package/linux-pam/login.pam create mode 100644 features/buildroot/package/linux-pam/other.pam create mode 100644 features/buildroot/package/linux-syscall-support/Config.in create mode 100644 features/buildroot/package/linux-syscall-support/linux-syscall-support.hash create mode 100644 features/buildroot/package/linux-syscall-support/linux-syscall-support.mk create mode 100644 features/buildroot/package/linux-tools/Config.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-cpupower.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-gpio.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-iio.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-pci.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-perf.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-selftests.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tool-tmon.mk.in create mode 100644 features/buildroot/package/linux-tools/linux-tools.mk create mode 100644 features/buildroot/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch create mode 100644 features/buildroot/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch create mode 100644 features/buildroot/package/linux-zigbee/Config.in create mode 100644 features/buildroot/package/linux-zigbee/linux-zigbee.mk create mode 100644 features/buildroot/package/linuxconsoletools/0001-conditional-build.patch create mode 100644 features/buildroot/package/linuxconsoletools/0002-sdl-config.patch create mode 100644 features/buildroot/package/linuxconsoletools/Config.in create mode 100644 features/buildroot/package/linuxconsoletools/linuxconsoletools.hash create mode 100644 features/buildroot/package/linuxconsoletools/linuxconsoletools.mk create mode 100644 features/buildroot/package/linuxptp/0001-missing.h-drop-clock_nanosleep-replacement.patch create mode 100644 features/buildroot/package/linuxptp/0002-fix-building-with-new-kernel-headers.patch create mode 100644 features/buildroot/package/linuxptp/Config.in create mode 100644 features/buildroot/package/linuxptp/S65linuxptp create mode 100644 features/buildroot/package/linuxptp/linuxptp-system-clock.service create mode 100644 features/buildroot/package/linuxptp/linuxptp.cfg create mode 100644 features/buildroot/package/linuxptp/linuxptp.hash create mode 100644 features/buildroot/package/linuxptp/linuxptp.mk create mode 100644 features/buildroot/package/linuxptp/linuxptp.service create mode 100644 features/buildroot/package/liquid-dsp/Config.in create mode 100644 features/buildroot/package/liquid-dsp/liquid-dsp.hash create mode 100644 features/buildroot/package/liquid-dsp/liquid-dsp.mk create mode 100644 features/buildroot/package/lirc-tools/0001-Fix-build-without-Python.patch create mode 100644 features/buildroot/package/lirc-tools/0002-Fix-python-client-cross-compile.patch create mode 100644 features/buildroot/package/lirc-tools/0003-python-pkg-Fix-lirc-version-detection-when-cross-com.patch create mode 100644 features/buildroot/package/lirc-tools/Config.in create mode 100644 features/buildroot/package/lirc-tools/S25lircd create mode 100644 features/buildroot/package/lirc-tools/lirc-tools.hash create mode 100644 features/buildroot/package/lirc-tools/lirc-tools.mk create mode 100644 features/buildroot/package/lite/0001-dfbspy-stat.patch create mode 100644 features/buildroot/package/lite/0002-no-tests.patch create mode 100644 features/buildroot/package/lite/0003-pkg-config.patch create mode 100644 features/buildroot/package/lite/Config.in create mode 100644 features/buildroot/package/lite/lite.hash create mode 100644 features/buildroot/package/lite/lite.mk create mode 100644 features/buildroot/package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch create mode 100644 features/buildroot/package/live555/Config.in create mode 100644 features/buildroot/package/live555/live555.hash create mode 100644 features/buildroot/package/live555/live555.mk create mode 100644 features/buildroot/package/ljlinenoise/Config.in create mode 100644 features/buildroot/package/ljlinenoise/ljlinenoise.hash create mode 100644 features/buildroot/package/ljlinenoise/ljlinenoise.mk create mode 100644 features/buildroot/package/ljsyscall/Config.in create mode 100644 features/buildroot/package/ljsyscall/ljsyscall.hash create mode 100644 features/buildroot/package/ljsyscall/ljsyscall.mk create mode 100644 features/buildroot/package/lksctp-tools/Config.in create mode 100644 features/buildroot/package/lksctp-tools/lksctp-tools.hash create mode 100644 features/buildroot/package/lksctp-tools/lksctp-tools.mk create mode 100644 features/buildroot/package/lldpd/0001-build-fix-compilation-with--enable-fdp--disable-cdp.patch create mode 100644 features/buildroot/package/lldpd/Config.in create mode 100644 features/buildroot/package/lldpd/S60lldpd create mode 100644 features/buildroot/package/lldpd/lldpd.hash create mode 100644 features/buildroot/package/lldpd/lldpd.mk create mode 100644 features/buildroot/package/llvm/Config.in create mode 100644 features/buildroot/package/llvm/llvm.hash create mode 100644 features/buildroot/package/llvm/llvm.mk create mode 100644 features/buildroot/package/lm-sensors/0001-static-build.patch create mode 100644 features/buildroot/package/lm-sensors/0002-no-host-ldconfig.patch create mode 100644 features/buildroot/package/lm-sensors/Config.in create mode 100644 features/buildroot/package/lm-sensors/lm-sensors.hash create mode 100644 features/buildroot/package/lm-sensors/lm-sensors.mk create mode 100644 features/buildroot/package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch create mode 100644 features/buildroot/package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch create mode 100644 features/buildroot/package/lmbench/Config.in create mode 100644 features/buildroot/package/lmbench/lmbench.hash create mode 100644 features/buildroot/package/lmbench/lmbench.mk create mode 100644 features/buildroot/package/localedef/2.29-11-ge28ad442e73b00ae2047d89c8cc7f9b2a0de5436/0001-HACK-only-build-and-install-localedef.patch create mode 100644 features/buildroot/package/localedef/2.29-11-ge28ad442e73b00ae2047d89c8cc7f9b2a0de5436/localedef.hash create mode 100644 features/buildroot/package/localedef/localedef.hash create mode 100644 features/buildroot/package/localedef/localedef.mk create mode 100644 features/buildroot/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch create mode 100644 features/buildroot/package/lockdev/Config.in create mode 100644 features/buildroot/package/lockdev/lockdev.hash create mode 100644 features/buildroot/package/lockdev/lockdev.mk create mode 100644 features/buildroot/package/lockfile-progs/0001-sus3v-legacy.patch create mode 100644 features/buildroot/package/lockfile-progs/Config.in create mode 100644 features/buildroot/package/lockfile-progs/lockfile-progs.hash create mode 100644 features/buildroot/package/lockfile-progs/lockfile-progs.mk create mode 100644 features/buildroot/package/log4cplus/Config.in create mode 100644 features/buildroot/package/log4cplus/log4cplus.hash create mode 100644 features/buildroot/package/log4cplus/log4cplus.mk create mode 100644 features/buildroot/package/log4cpp/Config.in create mode 100644 features/buildroot/package/log4cpp/log4cpp.hash create mode 100644 features/buildroot/package/log4cpp/log4cpp.mk create mode 100644 features/buildroot/package/log4cxx/0001-charset-fixes.patch create mode 100644 features/buildroot/package/log4cxx/0002-missing-includes.patch create mode 100644 features/buildroot/package/log4cxx/0003-missing-includes.patch create mode 100644 features/buildroot/package/log4cxx/0004-Applied-patch-for-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch create mode 100644 features/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch create mode 100644 features/buildroot/package/log4cxx/Config.in create mode 100644 features/buildroot/package/log4cxx/log4cxx.hash create mode 100644 features/buildroot/package/log4cxx/log4cxx.mk create mode 100644 features/buildroot/package/logrotate/Config.in create mode 100644 features/buildroot/package/logrotate/logrotate.conf create mode 100644 features/buildroot/package/logrotate/logrotate.hash create mode 100644 features/buildroot/package/logrotate/logrotate.mk create mode 100644 features/buildroot/package/logsurfer/Config.in create mode 100644 features/buildroot/package/logsurfer/logsurfer.hash create mode 100644 features/buildroot/package/logsurfer/logsurfer.mk create mode 100644 features/buildroot/package/lpc3250loader/Config.in.host create mode 100644 features/buildroot/package/lpc3250loader/lpc3250loader.hash create mode 100644 features/buildroot/package/lpc3250loader/lpc3250loader.mk create mode 100644 features/buildroot/package/lpeg/Config.in create mode 100644 features/buildroot/package/lpeg/lpeg.hash create mode 100644 features/buildroot/package/lpeg/lpeg.mk create mode 100644 features/buildroot/package/lpty/Config.in create mode 100644 features/buildroot/package/lpty/lpty.hash create mode 100644 features/buildroot/package/lpty/lpty.mk create mode 100644 features/buildroot/package/lrandom/Config.in create mode 100644 features/buildroot/package/lrandom/lrandom.hash create mode 100644 features/buildroot/package/lrandom/lrandom.mk create mode 100644 features/buildroot/package/lrzsz/Config.in create mode 100644 features/buildroot/package/lrzsz/lrzsz.hash create mode 100644 features/buildroot/package/lrzsz/lrzsz.mk create mode 100644 features/buildroot/package/lshw/0001-Makefile-allow-to-pass-additional-LIBS.patch create mode 100644 features/buildroot/package/lshw/0002-Fix-musl-build-basename-is-in-libgen.h.patch create mode 100644 features/buildroot/package/lshw/0003-Fix-use-of-LONG_BIT.patch create mode 100644 features/buildroot/package/lshw/Config.in create mode 100644 features/buildroot/package/lshw/lshw.hash create mode 100644 features/buildroot/package/lshw/lshw.mk create mode 100644 features/buildroot/package/lsof/0001-makefile.patch create mode 100644 features/buildroot/package/lsof/0002-noportmap.patch create mode 100644 features/buildroot/package/lsof/0003-override-cflags.patch create mode 100644 features/buildroot/package/lsof/0004-remove-susvlegacy-funcs.patch create mode 100644 features/buildroot/package/lsof/Config.in create mode 100644 features/buildroot/package/lsof/lsof.hash create mode 100644 features/buildroot/package/lsof/lsof.mk create mode 100644 features/buildroot/package/lsqlite3/Config.in create mode 100644 features/buildroot/package/lsqlite3/lsqlite3.hash create mode 100644 features/buildroot/package/lsqlite3/lsqlite3.mk create mode 100644 features/buildroot/package/lsscsi/Config.in create mode 100644 features/buildroot/package/lsscsi/lsscsi.hash create mode 100644 features/buildroot/package/lsscsi/lsscsi.mk create mode 100644 features/buildroot/package/lsuio/Config.in create mode 100644 features/buildroot/package/lsuio/lsuio.hash create mode 100644 features/buildroot/package/lsuio/lsuio.mk create mode 100644 features/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch create mode 100644 features/buildroot/package/ltp-testsuite/Config.in create mode 100644 features/buildroot/package/ltp-testsuite/ltp-testsuite.hash create mode 100644 features/buildroot/package/ltp-testsuite/ltp-testsuite.mk create mode 100644 features/buildroot/package/ltrace/0001-arm-plt.patch create mode 100644 features/buildroot/package/ltrace/0002-sparc-add-missing-library.h-include.patch create mode 100644 features/buildroot/package/ltrace/Config.in create mode 100644 features/buildroot/package/ltrace/ltrace.hash create mode 100644 features/buildroot/package/ltrace/ltrace.mk create mode 100644 features/buildroot/package/ltris/0001-fix-gcc5-build.patch create mode 100644 features/buildroot/package/ltris/Config.in create mode 100644 features/buildroot/package/ltris/ltris.hash create mode 100644 features/buildroot/package/ltris/ltris.mk create mode 100644 features/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch create mode 100644 features/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch create mode 100644 features/buildroot/package/lttng-babeltrace/Config.in create mode 100644 features/buildroot/package/lttng-babeltrace/Config.in.host create mode 100644 features/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash create mode 100644 features/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk create mode 100644 features/buildroot/package/lttng-libust/0001-configure.ac-add-disable-examples-option-to-not-buil.patch create mode 100644 features/buildroot/package/lttng-libust/Config.in create mode 100644 features/buildroot/package/lttng-libust/lttng-libust.hash create mode 100644 features/buildroot/package/lttng-libust/lttng-libust.mk create mode 100644 features/buildroot/package/lttng-modules/Config.in create mode 100644 features/buildroot/package/lttng-modules/lttng-modules.hash create mode 100644 features/buildroot/package/lttng-modules/lttng-modules.mk create mode 100644 features/buildroot/package/lttng-tools/Config.in create mode 100644 features/buildroot/package/lttng-tools/lttng-tools.hash create mode 100644 features/buildroot/package/lttng-tools/lttng-tools.mk create mode 100644 features/buildroot/package/lua-basexx/Config.in create mode 100644 features/buildroot/package/lua-basexx/lua-basexx.hash create mode 100644 features/buildroot/package/lua-basexx/lua-basexx.mk create mode 100644 features/buildroot/package/lua-binaryheap/Config.in create mode 100644 features/buildroot/package/lua-binaryheap/lua-binaryheap.hash create mode 100644 features/buildroot/package/lua-binaryheap/lua-binaryheap.mk create mode 100644 features/buildroot/package/lua-bit32/Config.in create mode 100644 features/buildroot/package/lua-bit32/lua-bit32.hash create mode 100644 features/buildroot/package/lua-bit32/lua-bit32.mk create mode 100644 features/buildroot/package/lua-cjson/Config.in create mode 100644 features/buildroot/package/lua-cjson/lua-cjson.hash create mode 100644 features/buildroot/package/lua-cjson/lua-cjson.mk create mode 100644 features/buildroot/package/lua-coat/Config.in create mode 100644 features/buildroot/package/lua-coat/lua-coat.hash create mode 100644 features/buildroot/package/lua-coat/lua-coat.mk create mode 100644 features/buildroot/package/lua-coatpersistent/Config.in create mode 100644 features/buildroot/package/lua-coatpersistent/lua-coatpersistent.hash create mode 100644 features/buildroot/package/lua-coatpersistent/lua-coatpersistent.mk create mode 100644 features/buildroot/package/lua-compat53/Config.in create mode 100644 features/buildroot/package/lua-compat53/lua-compat53.hash create mode 100644 features/buildroot/package/lua-compat53/lua-compat53.mk create mode 100644 features/buildroot/package/lua-cqueues/Config.in create mode 100644 features/buildroot/package/lua-cqueues/lua-cqueues.hash create mode 100644 features/buildroot/package/lua-cqueues/lua-cqueues.mk create mode 100644 features/buildroot/package/lua-csnappy/Config.in create mode 100644 features/buildroot/package/lua-csnappy/lua-csnappy.hash create mode 100644 features/buildroot/package/lua-csnappy/lua-csnappy.mk create mode 100644 features/buildroot/package/lua-curl/Config.in create mode 100644 features/buildroot/package/lua-curl/lua-curl.hash create mode 100644 features/buildroot/package/lua-curl/lua-curl.mk create mode 100644 features/buildroot/package/lua-datafile/Config.in create mode 100644 features/buildroot/package/lua-datafile/lua-datafile.hash create mode 100644 features/buildroot/package/lua-datafile/lua-datafile.mk create mode 100644 features/buildroot/package/lua-ev/Config.in create mode 100644 features/buildroot/package/lua-ev/lua-ev.hash create mode 100644 features/buildroot/package/lua-ev/lua-ev.mk create mode 100644 features/buildroot/package/lua-fifo/Config.in create mode 100644 features/buildroot/package/lua-fifo/lua-fifo.hash create mode 100644 features/buildroot/package/lua-fifo/lua-fifo.mk create mode 100644 features/buildroot/package/lua-flu/Config.in create mode 100644 features/buildroot/package/lua-flu/lua-flu.hash create mode 100644 features/buildroot/package/lua-flu/lua-flu.mk create mode 100644 features/buildroot/package/lua-gd/0001-Protect-declaration-of-LgdImageCreateFromPng-with-GD.patch create mode 100644 features/buildroot/package/lua-gd/Config.in create mode 100644 features/buildroot/package/lua-gd/lua-gd.hash create mode 100644 features/buildroot/package/lua-gd/lua-gd.mk create mode 100644 features/buildroot/package/lua-http/Config.in create mode 100644 features/buildroot/package/lua-http/lua-http.hash create mode 100644 features/buildroot/package/lua-http/lua-http.mk create mode 100644 features/buildroot/package/lua-iconv/Config.in create mode 100644 features/buildroot/package/lua-iconv/lua-iconv.hash create mode 100644 features/buildroot/package/lua-iconv/lua-iconv.mk create mode 100644 features/buildroot/package/lua-lpeg-patterns/Config.in create mode 100644 features/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.hash create mode 100644 features/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.mk create mode 100644 features/buildroot/package/lua-lunitx/Config.in create mode 100644 features/buildroot/package/lua-lunitx/lua-lunitx.hash create mode 100644 features/buildroot/package/lua-lunitx/lua-lunitx.mk create mode 100644 features/buildroot/package/lua-markdown/Config.in create mode 100644 features/buildroot/package/lua-markdown/lua-markdown.hash create mode 100644 features/buildroot/package/lua-markdown/lua-markdown.mk create mode 100644 features/buildroot/package/lua-messagepack/Config.in create mode 100644 features/buildroot/package/lua-messagepack/lua-messagepack.hash create mode 100644 features/buildroot/package/lua-messagepack/lua-messagepack.mk create mode 100644 features/buildroot/package/lua-msgpack-native/Config.in create mode 100644 features/buildroot/package/lua-msgpack-native/lua-msgpack-native.hash create mode 100644 features/buildroot/package/lua-msgpack-native/lua-msgpack-native.mk create mode 100644 features/buildroot/package/lua-periphery/Config.in create mode 100644 features/buildroot/package/lua-periphery/lua-periphery.hash create mode 100644 features/buildroot/package/lua-periphery/lua-periphery.mk create mode 100644 features/buildroot/package/lua-resty-http/Config.in create mode 100644 features/buildroot/package/lua-resty-http/lua-resty-http.hash create mode 100644 features/buildroot/package/lua-resty-http/lua-resty-http.mk create mode 100644 features/buildroot/package/lua-sailor/Config.in create mode 100644 features/buildroot/package/lua-sailor/lua-sailor.hash create mode 100644 features/buildroot/package/lua-sailor/lua-sailor.mk create mode 100644 features/buildroot/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch create mode 100644 features/buildroot/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch create mode 100644 features/buildroot/package/lua-sdl2/Config.in create mode 100644 features/buildroot/package/lua-sdl2/lua-sdl2.hash create mode 100644 features/buildroot/package/lua-sdl2/lua-sdl2.mk create mode 100644 features/buildroot/package/lua-std-debug/Config.in create mode 100644 features/buildroot/package/lua-std-debug/lua-std-debug.hash create mode 100644 features/buildroot/package/lua-std-debug/lua-std-debug.mk create mode 100644 features/buildroot/package/lua-std-normalize/Config.in create mode 100644 features/buildroot/package/lua-std-normalize/lua-std-normalize.hash create mode 100644 features/buildroot/package/lua-std-normalize/lua-std-normalize.mk create mode 100644 features/buildroot/package/lua-stdlib/Config.in create mode 100644 features/buildroot/package/lua-stdlib/lua-stdlib.hash create mode 100644 features/buildroot/package/lua-stdlib/lua-stdlib.mk create mode 100644 features/buildroot/package/lua-testmore/Config.in create mode 100644 features/buildroot/package/lua-testmore/lua-testmore.hash create mode 100644 features/buildroot/package/lua-testmore/lua-testmore.mk create mode 100644 features/buildroot/package/lua-utf8/Config.in create mode 100644 features/buildroot/package/lua-utf8/lua-utf8.hash create mode 100644 features/buildroot/package/lua-utf8/lua-utf8.mk create mode 100644 features/buildroot/package/lua-valua/Config.in create mode 100644 features/buildroot/package/lua-valua/lua-valua.hash create mode 100644 features/buildroot/package/lua-valua/lua-valua.mk create mode 100644 features/buildroot/package/lua/5.1.5/0001-root-path.patch create mode 100644 features/buildroot/package/lua/5.1.5/0002-shared-libs-for-lua.patch create mode 100644 features/buildroot/package/lua/5.1.5/0011-linenoise.patch create mode 100644 features/buildroot/package/lua/5.1.5/0012-fix-reader-at-eoz.patch create mode 100644 features/buildroot/package/lua/5.3.5/0001-root-path.patch create mode 100644 features/buildroot/package/lua/5.3.5/0002-shared-libs-for-lua.patch create mode 100644 features/buildroot/package/lua/5.3.5/0003-fix-revision-number.patch create mode 100644 features/buildroot/package/lua/5.3.5/0011-linenoise.patch create mode 100644 features/buildroot/package/lua/Config.in create mode 100644 features/buildroot/package/lua/lua.hash create mode 100644 features/buildroot/package/lua/lua.mk create mode 100644 features/buildroot/package/lua/lua.pc.in create mode 100644 features/buildroot/package/luabitop/Config.in create mode 100644 features/buildroot/package/luabitop/luabitop.hash create mode 100644 features/buildroot/package/luabitop/luabitop.mk create mode 100644 features/buildroot/package/luadbi-sqlite3/Config.in create mode 100644 features/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.hash create mode 100644 features/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.mk create mode 100644 features/buildroot/package/luadbi/Config.in create mode 100644 features/buildroot/package/luadbi/luadbi.hash create mode 100644 features/buildroot/package/luadbi/luadbi.mk create mode 100644 features/buildroot/package/luaexpat/0001-restore-getcurrentbytecount.patch create mode 100644 features/buildroot/package/luaexpat/Config.in create mode 100644 features/buildroot/package/luaexpat/luaexpat.hash create mode 100644 features/buildroot/package/luaexpat/luaexpat.mk create mode 100644 features/buildroot/package/luaexpatutils/Config.in create mode 100644 features/buildroot/package/luaexpatutils/luaexpatutils.hash create mode 100644 features/buildroot/package/luaexpatutils/luaexpatutils.mk create mode 100644 features/buildroot/package/luafilesystem/Config.in create mode 100644 features/buildroot/package/luafilesystem/luafilesystem.hash create mode 100644 features/buildroot/package/luafilesystem/luafilesystem.mk create mode 100644 features/buildroot/package/luainterpreter/Config.in create mode 100644 features/buildroot/package/luainterpreter/luainterpreter.mk create mode 100644 features/buildroot/package/luajit/0001-no-bin-symlink.patch create mode 100644 features/buildroot/package/luajit/0002-install-inc.patch create mode 100644 features/buildroot/package/luajit/Config.in create mode 100644 features/buildroot/package/luajit/luajit.hash create mode 100644 features/buildroot/package/luajit/luajit.mk create mode 100644 features/buildroot/package/luajson/Config.in create mode 100644 features/buildroot/package/luajson/luajson.hash create mode 100644 features/buildroot/package/luajson/luajson.mk create mode 100644 features/buildroot/package/lualogging/Config.in create mode 100644 features/buildroot/package/lualogging/lualogging.hash create mode 100644 features/buildroot/package/lualogging/lualogging.mk create mode 100644 features/buildroot/package/luaossl/Config.in create mode 100644 features/buildroot/package/luaossl/luaossl.hash create mode 100644 features/buildroot/package/luaossl/luaossl.mk create mode 100644 features/buildroot/package/luaposix/Config.in create mode 100644 features/buildroot/package/luaposix/luaposix.hash create mode 100644 features/buildroot/package/luaposix/luaposix.mk create mode 100644 features/buildroot/package/luarocks/0001-allow-libluajit-detection.patch create mode 100644 features/buildroot/package/luarocks/buildroot.lua create mode 100644 features/buildroot/package/luarocks/luarocks-br-config.lua create mode 100644 features/buildroot/package/luarocks/luarocks.hash create mode 100644 features/buildroot/package/luarocks/luarocks.mk create mode 100644 features/buildroot/package/luasec/Config.in create mode 100644 features/buildroot/package/luasec/luasec.hash create mode 100644 features/buildroot/package/luasec/luasec.mk create mode 100644 features/buildroot/package/luasocket/Config.in create mode 100644 features/buildroot/package/luasocket/luasocket.hash create mode 100644 features/buildroot/package/luasocket/luasocket.mk create mode 100644 features/buildroot/package/luasql-sqlite3/Config.in create mode 100644 features/buildroot/package/luasql-sqlite3/luasql-sqlite3.hash create mode 100644 features/buildroot/package/luasql-sqlite3/luasql-sqlite3.mk create mode 100644 features/buildroot/package/luasyslog/0001-compat-Lua-5.3.patch create mode 100644 features/buildroot/package/luasyslog/Config.in create mode 100644 features/buildroot/package/luasyslog/luasyslog.hash create mode 100644 features/buildroot/package/luasyslog/luasyslog.mk create mode 100644 features/buildroot/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch create mode 100644 features/buildroot/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch create mode 100644 features/buildroot/package/lugaru/Config.in create mode 100644 features/buildroot/package/lugaru/lugaru.hash create mode 100644 features/buildroot/package/lugaru/lugaru.mk create mode 100644 features/buildroot/package/luksmeta/Config.in create mode 100644 features/buildroot/package/luksmeta/luksmeta.hash create mode 100644 features/buildroot/package/luksmeta/luksmeta.mk create mode 100644 features/buildroot/package/lutok/Config.in create mode 100644 features/buildroot/package/lutok/lutok.hash create mode 100644 features/buildroot/package/lutok/lutok.mk create mode 100644 features/buildroot/package/luv/Config.in create mode 100644 features/buildroot/package/luv/luv.hash create mode 100644 features/buildroot/package/luv/luv.mk create mode 100644 features/buildroot/package/luvi/Config.in create mode 100644 features/buildroot/package/luvi/luvi.hash create mode 100644 features/buildroot/package/luvi/luvi.mk create mode 100644 features/buildroot/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch create mode 100644 features/buildroot/package/lvm2/Config.in create mode 100644 features/buildroot/package/lvm2/lvm2.hash create mode 100644 features/buildroot/package/lvm2/lvm2.mk create mode 100644 features/buildroot/package/lxc/Config.in create mode 100644 features/buildroot/package/lxc/lxc.hash create mode 100644 features/buildroot/package/lxc/lxc.mk create mode 100644 features/buildroot/package/lynx/Config.in create mode 100644 features/buildroot/package/lynx/lynx.hash create mode 100644 features/buildroot/package/lynx/lynx.mk create mode 100644 features/buildroot/package/lz4/Config.in create mode 100644 features/buildroot/package/lz4/lz4.hash create mode 100644 features/buildroot/package/lz4/lz4.mk create mode 100644 features/buildroot/package/lzip/Config.in create mode 100644 features/buildroot/package/lzip/lzip.hash create mode 100644 features/buildroot/package/lzip/lzip.mk create mode 100644 features/buildroot/package/lzlib/Config.in create mode 100644 features/buildroot/package/lzlib/lzlib.hash create mode 100644 features/buildroot/package/lzlib/lzlib.mk create mode 100644 features/buildroot/package/lzma/0001-Remove-static-from-LDFLAGS.patch create mode 100644 features/buildroot/package/lzma/lzma.hash create mode 100644 features/buildroot/package/lzma/lzma.mk create mode 100644 features/buildroot/package/lzo/Config.in create mode 100644 features/buildroot/package/lzo/lzo.hash create mode 100644 features/buildroot/package/lzo/lzo.mk create mode 100644 features/buildroot/package/lzop/0001-build-with-gcc6.patch create mode 100644 features/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch create mode 100644 features/buildroot/package/lzop/Config.in create mode 100644 features/buildroot/package/lzop/lzop.hash create mode 100644 features/buildroot/package/lzop/lzop.mk create mode 100644 features/buildroot/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch create mode 100644 features/buildroot/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch create mode 100644 features/buildroot/package/m4/m4.hash create mode 100644 features/buildroot/package/m4/m4.mk create mode 100644 features/buildroot/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch create mode 100644 features/buildroot/package/macchanger/Config.in create mode 100644 features/buildroot/package/macchanger/macchanger.hash create mode 100644 features/buildroot/package/macchanger/macchanger.mk create mode 100644 features/buildroot/package/madplay/0001-switch-to-new-alsa-api.patch create mode 100644 features/buildroot/package/madplay/0002-configure-ac-automake-foreign.patch create mode 100644 features/buildroot/package/madplay/0003-configure-ac-use-pkg-config-to-find-id3tag.patch create mode 100644 features/buildroot/package/madplay/0004-configure-ac-call-AM_MKINSTALLDIRS.patch create mode 100644 features/buildroot/package/madplay/Config.in create mode 100644 features/buildroot/package/madplay/madplay.hash create mode 100644 features/buildroot/package/madplay/madplay.mk create mode 100644 features/buildroot/package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch create mode 100644 features/buildroot/package/make/0001-glob-Do-not-assume-glibc-glob-internals.patch create mode 100644 features/buildroot/package/make/Config.in create mode 100644 features/buildroot/package/make/make.hash create mode 100644 features/buildroot/package/make/make.mk create mode 100644 features/buildroot/package/makedevs/README create mode 100644 features/buildroot/package/makedevs/makedevs.c create mode 100644 features/buildroot/package/makedevs/makedevs.mk create mode 100644 features/buildroot/package/mali-t76x/Config.in create mode 100644 features/buildroot/package/mali-t76x/egl.pc create mode 100644 features/buildroot/package/mali-t76x/glesv2.pc create mode 100644 features/buildroot/package/mali-t76x/mali-t76x.hash create mode 100644 features/buildroot/package/mali-t76x/mali-t76x.mk create mode 100644 features/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch create mode 100644 features/buildroot/package/mariadb/S97mysqld create mode 100644 features/buildroot/package/mariadb/mariadb.hash create mode 100644 features/buildroot/package/mariadb/mariadb.mk create mode 100644 features/buildroot/package/mariadb/mysqld.service create mode 100644 features/buildroot/package/matchbox-common/Config.in create mode 100644 features/buildroot/package/matchbox-common/matchbox-common.hash create mode 100644 features/buildroot/package/matchbox-common/matchbox-common.mk create mode 100644 features/buildroot/package/matchbox-desktop/Config.in create mode 100644 features/buildroot/package/matchbox-desktop/matchbox-desktop.hash create mode 100644 features/buildroot/package/matchbox-desktop/matchbox-desktop.mk create mode 100644 features/buildroot/package/matchbox-fakekey/Config.in create mode 100644 features/buildroot/package/matchbox-fakekey/matchbox-fakekey.hash create mode 100644 features/buildroot/package/matchbox-fakekey/matchbox-fakekey.mk create mode 100644 features/buildroot/package/matchbox-keyboard/Config.in create mode 100644 features/buildroot/package/matchbox-keyboard/matchbox-keyboard.hash create mode 100644 features/buildroot/package/matchbox-keyboard/matchbox-keyboard.mk create mode 100644 features/buildroot/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh create mode 100644 features/buildroot/package/matchbox-lib/0001-index-is-legacy.patch create mode 100644 features/buildroot/package/matchbox-lib/0002-libpng15.patch create mode 100644 features/buildroot/package/matchbox-lib/0003-include-setjmp-h.patch create mode 100644 features/buildroot/package/matchbox-lib/Config.in create mode 100644 features/buildroot/package/matchbox-lib/matchbox-lib.hash create mode 100644 features/buildroot/package/matchbox-lib/matchbox-lib.mk create mode 100644 features/buildroot/package/matchbox-panel/0001-index-is-legacy.patch create mode 100644 features/buildroot/package/matchbox-panel/0002-mb-applet-wireless.patch create mode 100644 features/buildroot/package/matchbox-panel/0003-mb-applet-battery.patch create mode 100644 features/buildroot/package/matchbox-panel/Config.in create mode 100644 features/buildroot/package/matchbox-panel/matchbox-panel.hash create mode 100644 features/buildroot/package/matchbox-panel/matchbox-panel.mk create mode 100644 features/buildroot/package/matchbox-startup-monitor/0001-true-false.patch create mode 100644 features/buildroot/package/matchbox-startup-monitor/Config.in create mode 100644 features/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.hash create mode 100644 features/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.mk create mode 100644 features/buildroot/package/matchbox/0001-defaulttheme.patch create mode 100644 features/buildroot/package/matchbox/Config.in create mode 100644 features/buildroot/package/matchbox/matchbox.hash create mode 100644 features/buildroot/package/matchbox/matchbox.mk create mode 100644 features/buildroot/package/mbedtls/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch create mode 100644 features/buildroot/package/mbedtls/0002-bn_mul.h-require-at-least-ARMv6-to-enable-the-ARM-DS.patch create mode 100644 features/buildroot/package/mbedtls/Config.in create mode 100644 features/buildroot/package/mbedtls/mbedtls.hash create mode 100644 features/buildroot/package/mbedtls/mbedtls.mk create mode 100644 features/buildroot/package/mc/Config.in create mode 100644 features/buildroot/package/mc/mc.hash create mode 100644 features/buildroot/package/mc/mc.mk create mode 100644 features/buildroot/package/mcelog/Config.in create mode 100644 features/buildroot/package/mcelog/mcelog.hash create mode 100644 features/buildroot/package/mcelog/mcelog.mk create mode 100644 features/buildroot/package/mcrypt/0001-CVE-2012-4409.patch create mode 100644 features/buildroot/package/mcrypt/0002-CVE-2012-4426.patch create mode 100644 features/buildroot/package/mcrypt/0003-CVE-2012-4527.patch create mode 100644 features/buildroot/package/mcrypt/0004-no-rpath.patch create mode 100644 features/buildroot/package/mcrypt/Config.in create mode 100644 features/buildroot/package/mcrypt/mcrypt.hash create mode 100644 features/buildroot/package/mcrypt/mcrypt.mk create mode 100644 features/buildroot/package/mdadm/0001-add-install-targets-for-mdadm-and-mdmon.patch create mode 100644 features/buildroot/package/mdadm/Config.in create mode 100644 features/buildroot/package/mdadm/mdadm.hash create mode 100644 features/buildroot/package/mdadm/mdadm.mk create mode 100644 features/buildroot/package/mediastreamer/0001-fix-compilation-issue-with-latest-bctoobox.patch create mode 100644 features/buildroot/package/mediastreamer/0002-Use-AV_INPUT_BUFFER_PADDING_SIZE-to-determine-paddin.patch create mode 100644 features/buildroot/package/mediastreamer/0002-m4-fix-local-ffmpeg-and-avcodec-function-conflict.patch create mode 100644 features/buildroot/package/mediastreamer/Config.in create mode 100644 features/buildroot/package/mediastreamer/mediastreamer.hash create mode 100644 features/buildroot/package/mediastreamer/mediastreamer.mk create mode 100644 features/buildroot/package/memcached/Config.in create mode 100644 features/buildroot/package/memcached/memcached.hash create mode 100644 features/buildroot/package/memcached/memcached.mk create mode 100644 features/buildroot/package/memstat/0001-PATH_MAX.patch create mode 100644 features/buildroot/package/memstat/Config.in create mode 100644 features/buildroot/package/memstat/memstat.hash create mode 100644 features/buildroot/package/memstat/memstat.mk create mode 100644 features/buildroot/package/memtest86/Config.in create mode 100644 features/buildroot/package/memtest86/memtest86.hash create mode 100644 features/buildroot/package/memtest86/memtest86.mk create mode 100644 features/buildroot/package/memtester/0001-makefile-fix.patch create mode 100644 features/buildroot/package/memtester/Config.in create mode 100644 features/buildroot/package/memtester/memtester.hash create mode 100644 features/buildroot/package/memtester/memtester.mk create mode 100644 features/buildroot/package/memtool/Config.in create mode 100644 features/buildroot/package/memtool/memtool.hash create mode 100644 features/buildroot/package/memtool/memtool.mk create mode 100644 features/buildroot/package/mender-artifact/Config.in.host create mode 100644 features/buildroot/package/mender-artifact/mender-artifact.hash create mode 100644 features/buildroot/package/mender-artifact/mender-artifact.mk create mode 100644 features/buildroot/package/mender-grubenv/Config.in create mode 100644 features/buildroot/package/mender-grubenv/mender-grubenv.hash create mode 100644 features/buildroot/package/mender-grubenv/mender-grubenv.mk create mode 100644 features/buildroot/package/mender/Config.in create mode 100644 features/buildroot/package/mender/S42mender create mode 100644 features/buildroot/package/mender/artifact_info create mode 100644 features/buildroot/package/mender/device_type create mode 100644 features/buildroot/package/mender/mender.conf create mode 100644 features/buildroot/package/mender/mender.hash create mode 100644 features/buildroot/package/mender/mender.mk create mode 100644 features/buildroot/package/mender/mender.service create mode 100644 features/buildroot/package/mender/readme.txt create mode 100644 features/buildroot/package/mender/server.crt create mode 100644 features/buildroot/package/menu-cache/Config.in create mode 100644 features/buildroot/package/menu-cache/menu-cache.hash create mode 100644 features/buildroot/package/menu-cache/menu-cache.mk create mode 100644 features/buildroot/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch create mode 100644 features/buildroot/package/mesa3d-demos/Config.in create mode 100644 features/buildroot/package/mesa3d-demos/mesa3d-demos.hash create mode 100644 features/buildroot/package/mesa3d-demos/mesa3d-demos.mk create mode 100644 features/buildroot/package/mesa3d-headers/Config.in create mode 120000 features/buildroot/package/mesa3d-headers/mesa3d-headers.hash create mode 100644 features/buildroot/package/mesa3d-headers/mesa3d-headers.mk create mode 100644 features/buildroot/package/mesa3d/0001-musl.patch create mode 100644 features/buildroot/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch create mode 100644 features/buildroot/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch create mode 100644 features/buildroot/package/mesa3d/Config.in create mode 100644 features/buildroot/package/mesa3d/mesa3d.hash create mode 100644 features/buildroot/package/mesa3d/mesa3d.mk create mode 100644 features/buildroot/package/meson/0001-Only-fix-RPATH-if-install_rpath-is-not-empty.patch create mode 100644 features/buildroot/package/meson/cross-compilation.conf.in create mode 100644 features/buildroot/package/meson/meson.hash create mode 100644 features/buildroot/package/meson/meson.mk create mode 100644 features/buildroot/package/metacity/0001-add-libm-reference.patch create mode 100644 features/buildroot/package/metacity/0002-gconf.patch create mode 100644 features/buildroot/package/metacity/0003-mag-add-libm-reference.patch create mode 100644 features/buildroot/package/metacity/Config.in create mode 100755 features/buildroot/package/metacity/Xsession create mode 100644 features/buildroot/package/metacity/metacity.hash create mode 100644 features/buildroot/package/metacity/metacity.mk create mode 100644 features/buildroot/package/mfgtools/Config.in.host create mode 100644 features/buildroot/package/mfgtools/mfgtools.hash create mode 100644 features/buildroot/package/mfgtools/mfgtools.mk create mode 100644 features/buildroot/package/mfgtools/readme.txt create mode 100644 features/buildroot/package/micropython-lib/Config.in create mode 100644 features/buildroot/package/micropython-lib/micropython-lib.hash create mode 100644 features/buildroot/package/micropython-lib/micropython-lib.mk create mode 100644 features/buildroot/package/micropython/0001-fix-version.patch create mode 100644 features/buildroot/package/micropython/Config.in create mode 100644 features/buildroot/package/micropython/micropython.hash create mode 100644 features/buildroot/package/micropython/micropython.mk create mode 100644 features/buildroot/package/midori/0001-fix-bug-1492932.patch create mode 100644 features/buildroot/package/midori/0002-gcr-for-x11-only.patch create mode 100644 features/buildroot/package/midori/Config.in create mode 100644 features/buildroot/package/midori/midori.hash create mode 100644 features/buildroot/package/midori/midori.mk create mode 100644 features/buildroot/package/mii-diag/0001-strchr.patch create mode 100644 features/buildroot/package/mii-diag/Config.in create mode 100644 features/buildroot/package/mii-diag/mii-diag.hash create mode 100644 features/buildroot/package/mii-diag/mii-diag.mk create mode 100644 features/buildroot/package/mimic/Config.in create mode 100644 features/buildroot/package/mimic/mimic.hash create mode 100644 features/buildroot/package/mimic/mimic.mk create mode 100644 features/buildroot/package/minetest-game/Config.in create mode 100644 features/buildroot/package/minetest-game/minetest-game.hash create mode 100644 features/buildroot/package/minetest-game/minetest-game.mk create mode 100644 features/buildroot/package/minetest/Config.in create mode 100644 features/buildroot/package/minetest/minetest.hash create mode 100644 features/buildroot/package/minetest/minetest.mk create mode 100644 features/buildroot/package/mini-snmpd/0001-Prepend-zero-byte-before-unsigned-integers.patch create mode 100644 features/buildroot/package/mini-snmpd/0002-mib.c-allow-unsigned-integers-to-have-an-extra-byte.patch create mode 100644 features/buildroot/package/mini-snmpd/Config.in create mode 100644 features/buildroot/package/mini-snmpd/mini-snmpd.hash create mode 100644 features/buildroot/package/mini-snmpd/mini-snmpd.mk create mode 100644 features/buildroot/package/mini-snmpd/mini-snmpd.service create mode 100644 features/buildroot/package/minicom/Config.in create mode 100644 features/buildroot/package/minicom/minicom.hash create mode 100644 features/buildroot/package/minicom/minicom.mk create mode 100644 features/buildroot/package/minidlna/Config.in create mode 100644 features/buildroot/package/minidlna/S60minidlnad create mode 100644 features/buildroot/package/minidlna/minidlna.hash create mode 100644 features/buildroot/package/minidlna/minidlna.mk create mode 100644 features/buildroot/package/minidlna/minidlnad.service create mode 100644 features/buildroot/package/minissdpd/Config.in create mode 100644 features/buildroot/package/minissdpd/S50minissdpd create mode 100644 features/buildroot/package/minissdpd/minissdpd.hash create mode 100644 features/buildroot/package/minissdpd/minissdpd.mk create mode 100644 features/buildroot/package/minissdpd/minissdpd.service create mode 100644 features/buildroot/package/minizip/Config.in create mode 100644 features/buildroot/package/minizip/minizip.hash create mode 100644 features/buildroot/package/minizip/minizip.mk create mode 100644 features/buildroot/package/miraclecast/Config.in create mode 100644 features/buildroot/package/miraclecast/miraclecast.hash create mode 100644 features/buildroot/package/miraclecast/miraclecast.mk create mode 100644 features/buildroot/package/mjpegtools/Config.in create mode 100644 features/buildroot/package/mjpegtools/mjpegtools.hash create mode 100644 features/buildroot/package/mjpegtools/mjpegtools.mk create mode 100644 features/buildroot/package/mjpg-streamer/Config.in create mode 100644 features/buildroot/package/mjpg-streamer/mjpg-streamer.hash create mode 100644 features/buildroot/package/mjpg-streamer/mjpg-streamer.mk create mode 100644 features/buildroot/package/mkpasswd/Config.in.host create mode 100644 features/buildroot/package/mkpasswd/config.h create mode 100644 features/buildroot/package/mkpasswd/mkpasswd.c create mode 100644 features/buildroot/package/mkpasswd/mkpasswd.mk create mode 100644 features/buildroot/package/mkpasswd/utils.c create mode 100644 features/buildroot/package/mkpasswd/utils.h create mode 100644 features/buildroot/package/mkpimage/mkpimage.c create mode 100644 features/buildroot/package/mkpimage/mkpimage.mk create mode 100644 features/buildroot/package/mksh/Config.in create mode 100644 features/buildroot/package/mksh/mksh.hash create mode 100644 features/buildroot/package/mksh/mksh.mk create mode 100644 features/buildroot/package/mmc-utils/0001-fix-mmc-h-includes.patch create mode 100644 features/buildroot/package/mmc-utils/0002-fix-overlapping-with-strncpy.patch create mode 100644 features/buildroot/package/mmc-utils/Config.in create mode 100644 features/buildroot/package/mmc-utils/mmc-utils.hash create mode 100644 features/buildroot/package/mmc-utils/mmc-utils.mk create mode 100644 features/buildroot/package/moarvm/Config.in create mode 100644 features/buildroot/package/moarvm/moarvm.hash create mode 100644 features/buildroot/package/moarvm/moarvm.mk create mode 100644 features/buildroot/package/mobile-broadband-provider-info/Config.in create mode 100644 features/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash create mode 100644 features/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk create mode 100644 features/buildroot/package/modem-manager/Config.in create mode 100644 features/buildroot/package/modem-manager/S44modem-manager create mode 100644 features/buildroot/package/modem-manager/modem-manager.hash create mode 100644 features/buildroot/package/modem-manager/modem-manager.mk create mode 100644 features/buildroot/package/modplugtools/Config.in create mode 100644 features/buildroot/package/modplugtools/modplugtools.hash create mode 100644 features/buildroot/package/modplugtools/modplugtools.mk create mode 100644 features/buildroot/package/mongodb/0001-ssl_manager.cpp-fix-build-with-gcc-7-and-fpermissive.patch create mode 100644 features/buildroot/package/mongodb/Config.in create mode 100644 features/buildroot/package/mongodb/mongodb.hash create mode 100644 features/buildroot/package/mongodb/mongodb.mk create mode 100644 features/buildroot/package/mongoose/Config.in create mode 100644 features/buildroot/package/mongoose/mongoose.hash create mode 100644 features/buildroot/package/mongoose/mongoose.mk create mode 100644 features/buildroot/package/mongrel2/0002-Do-not-run-tests.patch create mode 100644 features/buildroot/package/mongrel2/0003-Fix-Makefiles-for-cross-compilation.patch create mode 100644 features/buildroot/package/mongrel2/0004-Rename-symbol-to-prevent-conflict.patch create mode 100644 features/buildroot/package/mongrel2/Config.in create mode 100644 features/buildroot/package/mongrel2/mongrel2.hash create mode 100644 features/buildroot/package/mongrel2/mongrel2.mk create mode 100644 features/buildroot/package/monit/0001-no-force-static.patch create mode 100644 features/buildroot/package/monit/Config.in create mode 100644 features/buildroot/package/monit/monit.hash create mode 100644 features/buildroot/package/monit/monit.mk create mode 100644 features/buildroot/package/monkey/Config.in create mode 100644 features/buildroot/package/monkey/monkey.hash create mode 100644 features/buildroot/package/monkey/monkey.mk create mode 100644 features/buildroot/package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch create mode 100644 features/buildroot/package/mono-gtksharp3/Config.in create mode 100644 features/buildroot/package/mono-gtksharp3/mono-gtksharp3.hash create mode 100644 features/buildroot/package/mono-gtksharp3/mono-gtksharp3.mk create mode 100644 features/buildroot/package/mono/0001-Disable-backtrace-on-not-supported-uclibc.patch create mode 100644 features/buildroot/package/mono/0002-Adjust-libc.so-path-depending-on-C-library-being-use.patch create mode 100644 features/buildroot/package/mono/Config.in create mode 100644 features/buildroot/package/mono/mono.hash create mode 100644 features/buildroot/package/mono/mono.mk create mode 100644 features/buildroot/package/monolite/monolite.hash create mode 100644 features/buildroot/package/monolite/monolite.mk create mode 100644 features/buildroot/package/mosh/Config.in create mode 100644 features/buildroot/package/mosh/mosh.hash create mode 100644 features/buildroot/package/mosh/mosh.mk create mode 100644 features/buildroot/package/mosquitto/Config.in create mode 100644 features/buildroot/package/mosquitto/S50mosquitto create mode 100644 features/buildroot/package/mosquitto/mosquitto.hash create mode 100644 features/buildroot/package/mosquitto/mosquitto.mk create mode 100644 features/buildroot/package/mosquitto/mosquitto.service create mode 100644 features/buildroot/package/most/Config.in create mode 100644 features/buildroot/package/most/most.hash create mode 100644 features/buildroot/package/most/most.mk create mode 100644 features/buildroot/package/motion/Config.in create mode 100644 features/buildroot/package/motion/S99motion create mode 100644 features/buildroot/package/motion/motion.hash create mode 100644 features/buildroot/package/motion/motion.mk create mode 100644 features/buildroot/package/motion/motion.service create mode 100644 features/buildroot/package/mp4v2/0001-Fix-GCC7-build.patch create mode 100644 features/buildroot/package/mp4v2/Config.in create mode 100644 features/buildroot/package/mp4v2/mp4v2.hash create mode 100644 features/buildroot/package/mp4v2/mp4v2.mk create mode 100644 features/buildroot/package/mpc/Config.in create mode 100644 features/buildroot/package/mpc/mpc.hash create mode 100644 features/buildroot/package/mpc/mpc.mk create mode 100644 features/buildroot/package/mpd-mpc/Config.in create mode 100644 features/buildroot/package/mpd-mpc/mpd-mpc.hash create mode 100644 features/buildroot/package/mpd-mpc/mpd-mpc.mk create mode 100644 features/buildroot/package/mpd/Config.in create mode 100644 features/buildroot/package/mpd/S95mpd create mode 100644 features/buildroot/package/mpd/mpd.conf create mode 100644 features/buildroot/package/mpd/mpd.hash create mode 100644 features/buildroot/package/mpd/mpd.mk create mode 100644 features/buildroot/package/mpdecimal/0001-Add-minimal-support-for-enable-disable-shared-static.patch create mode 100644 features/buildroot/package/mpdecimal/Config.in create mode 100644 features/buildroot/package/mpdecimal/mpdecimal.hash create mode 100644 features/buildroot/package/mpdecimal/mpdecimal.mk create mode 100644 features/buildroot/package/mpfr/Config.in create mode 100644 features/buildroot/package/mpfr/mpfr.hash create mode 100644 features/buildroot/package/mpfr/mpfr.mk create mode 100644 features/buildroot/package/mpg123/Config.in create mode 100644 features/buildroot/package/mpg123/mpg123.hash create mode 100644 features/buildroot/package/mpg123/mpg123.mk create mode 100644 features/buildroot/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch create mode 100644 features/buildroot/package/mpir/Config.in create mode 100644 features/buildroot/package/mpir/mpir.hash create mode 100644 features/buildroot/package/mpir/mpir.mk create mode 100644 features/buildroot/package/mpv/0001-wscript-don-t-check-for-fork-on-POSIX-checks.patch create mode 100644 features/buildroot/package/mpv/0002-fix-powerpc64-altivec.patch create mode 100644 features/buildroot/package/mpv/0003-rpi-fix-linking-errors.patch create mode 100644 features/buildroot/package/mpv/0004-libva20.patch create mode 100644 features/buildroot/package/mpv/Config.in create mode 100644 features/buildroot/package/mpv/mpv.hash create mode 100644 features/buildroot/package/mpv/mpv.mk create mode 100644 features/buildroot/package/mraa/Config.in create mode 100644 features/buildroot/package/mraa/mraa.hash create mode 100644 features/buildroot/package/mraa/mraa.mk create mode 100644 features/buildroot/package/mrouted/Config.in create mode 100644 features/buildroot/package/mrouted/mrouted.hash create mode 100644 features/buildroot/package/mrouted/mrouted.mk create mode 100644 features/buildroot/package/msgpack/Config.in create mode 100644 features/buildroot/package/msgpack/msgpack.hash create mode 100644 features/buildroot/package/msgpack/msgpack.mk create mode 100644 features/buildroot/package/msmtp/Config.in create mode 100644 features/buildroot/package/msmtp/msmtp.hash create mode 100644 features/buildroot/package/msmtp/msmtp.mk create mode 100644 features/buildroot/package/msr-tools/Config.in create mode 100644 features/buildroot/package/msr-tools/msr-tools.hash create mode 100644 features/buildroot/package/msr-tools/msr-tools.mk create mode 100644 features/buildroot/package/mtd/Config.in create mode 100644 features/buildroot/package/mtd/Config.in.host create mode 100644 features/buildroot/package/mtd/mtd.hash create mode 100644 features/buildroot/package/mtd/mtd.mk create mode 100644 features/buildroot/package/mtdev/Config.in create mode 100644 features/buildroot/package/mtdev/mtdev.hash create mode 100644 features/buildroot/package/mtdev/mtdev.mk create mode 100644 features/buildroot/package/mtdev2tuio/0001-Fix-build-with-musl-libc.patch create mode 100644 features/buildroot/package/mtdev2tuio/Config.in create mode 100644 features/buildroot/package/mtdev2tuio/mtdev2tuio.hash create mode 100644 features/buildroot/package/mtdev2tuio/mtdev2tuio.mk create mode 100644 features/buildroot/package/mtools/Config.in create mode 100644 features/buildroot/package/mtools/Config.in.host create mode 100644 features/buildroot/package/mtools/mtools.hash create mode 100644 features/buildroot/package/mtools/mtools.mk create mode 100644 features/buildroot/package/mtr/Config.in create mode 100644 features/buildroot/package/mtr/mtr.hash create mode 100644 features/buildroot/package/mtr/mtr.mk create mode 100644 features/buildroot/package/multicat/Config.in create mode 100644 features/buildroot/package/multicat/multicat.hash create mode 100644 features/buildroot/package/multicat/multicat.mk create mode 100644 features/buildroot/package/murata-cyw-fw/Config.in create mode 100644 features/buildroot/package/murata-cyw-fw/murata-cyw-fw.hash create mode 100644 features/buildroot/package/murata-cyw-fw/murata-cyw-fw.mk create mode 100644 features/buildroot/package/musepack/0001-shared.patch create mode 100644 features/buildroot/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch create mode 100644 features/buildroot/package/musepack/0003-include-fpu-control-with-glibc-only.patch create mode 100644 features/buildroot/package/musepack/0004-missing-sys-select.patch create mode 100644 features/buildroot/package/musepack/Config.in create mode 100644 features/buildroot/package/musepack/musepack.hash create mode 100644 features/buildroot/package/musepack/musepack.mk create mode 100644 features/buildroot/package/musl-compat-headers/Config.in create mode 100644 features/buildroot/package/musl-compat-headers/cdefs.h create mode 100644 features/buildroot/package/musl-compat-headers/musl-compat-headers.hash create mode 100644 features/buildroot/package/musl-compat-headers/musl-compat-headers.mk create mode 100644 features/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch create mode 100644 features/buildroot/package/musl/Config.in create mode 100644 features/buildroot/package/musl/musl.hash create mode 100644 features/buildroot/package/musl/musl.mk create mode 100644 features/buildroot/package/mutt/0001-configure.ac-fix-static-build-with-idn2-and-unistrin.patch create mode 100644 features/buildroot/package/mutt/0002-Fix-unistring-library-configure-test.patch create mode 100644 features/buildroot/package/mutt/Config.in create mode 100644 features/buildroot/package/mutt/mutt.hash create mode 100644 features/buildroot/package/mutt/mutt.mk create mode 100644 features/buildroot/package/mxml/Config.in create mode 100644 features/buildroot/package/mxml/mxml.hash create mode 100644 features/buildroot/package/mxml/mxml.mk create mode 100644 features/buildroot/package/mxsldr/Config.in.host create mode 100644 features/buildroot/package/mxsldr/mxsldr.mk create mode 100644 features/buildroot/package/mysql/Config.in create mode 100644 features/buildroot/package/mysql/mysql.mk create mode 100644 features/buildroot/package/nano/Config.in create mode 100644 features/buildroot/package/nano/nano.hash create mode 100644 features/buildroot/package/nano/nano.mk create mode 100644 features/buildroot/package/nanocom/Config.in create mode 100644 features/buildroot/package/nanocom/nanocom.hash create mode 100644 features/buildroot/package/nanocom/nanocom.mk create mode 100644 features/buildroot/package/nanomsg/Config.in create mode 100644 features/buildroot/package/nanomsg/nanomsg.hash create mode 100644 features/buildroot/package/nanomsg/nanomsg.mk create mode 100644 features/buildroot/package/nasm/nasm.hash create mode 100644 features/buildroot/package/nasm/nasm.mk create mode 100644 features/buildroot/package/nbd/0001-avoid-name-clashing.patch create mode 100644 features/buildroot/package/nbd/Config.in create mode 100644 features/buildroot/package/nbd/nbd.hash create mode 100644 features/buildroot/package/nbd/nbd.mk create mode 100644 features/buildroot/package/ncdu/Config.in create mode 100644 features/buildroot/package/ncdu/ncdu.hash create mode 100644 features/buildroot/package/ncdu/ncdu.mk create mode 100644 features/buildroot/package/ncftp/Config.in create mode 100644 features/buildroot/package/ncftp/ncftp.hash create mode 100644 features/buildroot/package/ncftp/ncftp.mk create mode 100644 features/buildroot/package/ncmpc/0001-meson.build-add-atomic-dependency-for-sparc.patch create mode 100644 features/buildroot/package/ncmpc/0002-meson.build-link-with-lintl-if-needed.patch create mode 100644 features/buildroot/package/ncmpc/Config.in create mode 100644 features/buildroot/package/ncmpc/ncmpc.hash create mode 100644 features/buildroot/package/ncmpc/ncmpc.mk create mode 100644 features/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch create mode 100644 features/buildroot/package/ncurses/Config.in create mode 100644 features/buildroot/package/ncurses/ncurses.hash create mode 100644 features/buildroot/package/ncurses/ncurses.mk create mode 100644 features/buildroot/package/ndisc6/Config.in create mode 100644 features/buildroot/package/ndisc6/ndisc6.hash create mode 100644 features/buildroot/package/ndisc6/ndisc6.mk create mode 100644 features/buildroot/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch create mode 100644 features/buildroot/package/ne10/Config.in create mode 100644 features/buildroot/package/ne10/ne10.hash create mode 100644 features/buildroot/package/ne10/ne10.mk create mode 100644 features/buildroot/package/neard/Config.in create mode 100644 features/buildroot/package/neard/S53neard create mode 100644 features/buildroot/package/neard/neard.hash create mode 100644 features/buildroot/package/neard/neard.mk create mode 100644 features/buildroot/package/neardal/Config.in create mode 100644 features/buildroot/package/neardal/neardal.hash create mode 100644 features/buildroot/package/neardal/neardal.mk create mode 100644 features/buildroot/package/neon/Config.in create mode 100644 features/buildroot/package/neon/neon.hash create mode 100644 features/buildroot/package/neon/neon.mk create mode 100644 features/buildroot/package/net-tools/Config.in create mode 100644 features/buildroot/package/net-tools/net-tools.hash create mode 100644 features/buildroot/package/net-tools/net-tools.mk create mode 100644 features/buildroot/package/netatalk/0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch create mode 100644 features/buildroot/package/netatalk/Config.in create mode 100644 features/buildroot/package/netatalk/S50netatalk create mode 100644 features/buildroot/package/netatalk/netatalk.hash create mode 100644 features/buildroot/package/netatalk/netatalk.mk create mode 100644 features/buildroot/package/netcat-openbsd/Config.in create mode 100644 features/buildroot/package/netcat-openbsd/netcat-openbsd.hash create mode 100644 features/buildroot/package/netcat-openbsd/netcat-openbsd.mk create mode 100644 features/buildroot/package/netcat/0001-signed-bit-counting.patch create mode 100644 features/buildroot/package/netcat/Config.in create mode 100644 features/buildroot/package/netcat/netcat.hash create mode 100644 features/buildroot/package/netcat/netcat.mk create mode 100644 features/buildroot/package/netperf/Config.in create mode 100644 features/buildroot/package/netperf/netperf.hash create mode 100644 features/buildroot/package/netperf/netperf.mk create mode 100644 features/buildroot/package/netplug/0001-makefile-flags.patch create mode 100644 features/buildroot/package/netplug/0002-add-missing-time-include.patch create mode 100644 features/buildroot/package/netplug/0003-remove-assert-fail.patch create mode 100644 features/buildroot/package/netplug/Config.in create mode 100644 features/buildroot/package/netplug/S29netplug create mode 100755 features/buildroot/package/netplug/netplug-script create mode 100644 features/buildroot/package/netplug/netplug.hash create mode 100644 features/buildroot/package/netplug/netplug.mk create mode 100644 features/buildroot/package/netplug/netplug.service create mode 100644 features/buildroot/package/netsniff-ng/Config.in create mode 100644 features/buildroot/package/netsniff-ng/netsniff-ng.hash create mode 100644 features/buildroot/package/netsniff-ng/netsniff-ng.mk create mode 100644 features/buildroot/package/netsnmp/0001-configure-static-linking-Fix-SSL-checks.patch create mode 100644 features/buildroot/package/netsnmp/0002-configure-Fix-lcrypto-lz-test.patch create mode 100644 features/buildroot/package/netsnmp/0003-configure-fix-AC_CHECK_FUNCS-EVP_sha224-EVP_sha384-..patch create mode 100644 features/buildroot/package/netsnmp/0004-configure-fix-AC_CHECK_FUNCS-TLS_method-TLSv1_method.patch create mode 100644 features/buildroot/package/netsnmp/Config.in create mode 100644 features/buildroot/package/netsnmp/S59snmpd create mode 100644 features/buildroot/package/netsnmp/netsnmp.hash create mode 100644 features/buildroot/package/netsnmp/netsnmp.mk create mode 100644 features/buildroot/package/netstat-nat/Config.in create mode 100644 features/buildroot/package/netstat-nat/netstat-nat.hash create mode 100644 features/buildroot/package/netstat-nat/netstat-nat.mk create mode 100644 features/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.hash create mode 100644 features/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.mk create mode 100644 features/buildroot/package/netsurf/0001-avoid-system-perl-dependencies.patch create mode 100644 features/buildroot/package/netsurf/0003-do-not-cross-compile-nsgenbind.patch create mode 100644 features/buildroot/package/netsurf/0004-fix-compilation-without-curl.patch create mode 100644 features/buildroot/package/netsurf/Config.in create mode 100644 features/buildroot/package/netsurf/netsurf.hash create mode 100644 features/buildroot/package/netsurf/netsurf.mk create mode 100644 features/buildroot/package/nettle/0001-disable-testsuite-examples.patch create mode 100644 features/buildroot/package/nettle/Config.in create mode 100644 features/buildroot/package/nettle/nettle.hash create mode 100644 features/buildroot/package/nettle/nettle.mk create mode 100644 features/buildroot/package/network-manager/Config.in create mode 100644 features/buildroot/package/network-manager/S45network-manager create mode 100644 features/buildroot/package/network-manager/network-manager.hash create mode 100644 features/buildroot/package/network-manager/network-manager.mk create mode 100644 features/buildroot/package/newt/Config.in create mode 100644 features/buildroot/package/newt/newt.hash create mode 100644 features/buildroot/package/newt/newt.mk create mode 100644 features/buildroot/package/nfacct/Config.in create mode 100644 features/buildroot/package/nfacct/nfacct.hash create mode 100644 features/buildroot/package/nfacct/nfacct.mk create mode 100644 features/buildroot/package/nfs-utils/0001-Patch-taken-from-Gentoo.patch create mode 100644 features/buildroot/package/nfs-utils/0002-Switch-legacy-index-in-favour-of-strchr.patch create mode 100644 features/buildroot/package/nfs-utils/0003-Let-the-configure-script-find-getrpcbynumber-in-libt.patch create mode 100644 features/buildroot/package/nfs-utils/0004-mountd-Add-check-for-struct-file_handle.patch create mode 100644 features/buildroot/package/nfs-utils/0005-nfs-utils-add-missing-include-of-stdint.h.patch create mode 100644 features/buildroot/package/nfs-utils/0006-Include-sys-sysmacros.h-where-appropriate.patch create mode 100644 features/buildroot/package/nfs-utils/Config.in create mode 100644 features/buildroot/package/nfs-utils/S60nfs create mode 100644 features/buildroot/package/nfs-utils/nfs-utils.hash create mode 100644 features/buildroot/package/nfs-utils/nfs-utils.mk create mode 100755 features/buildroot/package/nfs-utils/nfs-utils_env.sh create mode 100644 features/buildroot/package/nfs-utils/nfs-utils_tmpfiles.conf create mode 100644 features/buildroot/package/nftables/Config.in create mode 100644 features/buildroot/package/nftables/nftables.hash create mode 100644 features/buildroot/package/nftables/nftables.mk create mode 100644 features/buildroot/package/nghttp2/Config.in create mode 100644 features/buildroot/package/nghttp2/nghttp2.hash create mode 100644 features/buildroot/package/nghttp2/nghttp2.mk create mode 100644 features/buildroot/package/nginx-dav-ext/Config.in create mode 100644 features/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash create mode 100644 features/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk create mode 100644 features/buildroot/package/nginx-naxsi/Config.in create mode 100644 features/buildroot/package/nginx-naxsi/nginx-naxsi.hash create mode 100644 features/buildroot/package/nginx-naxsi/nginx-naxsi.mk create mode 100644 features/buildroot/package/nginx-upload/0001-nginx-upload-module-add-openssl-lib-dependency.patch create mode 100644 features/buildroot/package/nginx-upload/Config.in create mode 100644 features/buildroot/package/nginx-upload/nginx-upload.hash create mode 100644 features/buildroot/package/nginx-upload/nginx-upload.mk create mode 100644 features/buildroot/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch create mode 100644 features/buildroot/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch create mode 100644 features/buildroot/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch create mode 100644 features/buildroot/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch create mode 100644 features/buildroot/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch create mode 100644 features/buildroot/package/nginx/0006-auto-lib-openssl-conf-use-pkg-config.patch create mode 100644 features/buildroot/package/nginx/0007-auto-lib-libgd-conf-use-pkg-config.patch create mode 100644 features/buildroot/package/nginx/0008-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch create mode 100644 features/buildroot/package/nginx/Config.in create mode 100644 features/buildroot/package/nginx/S50nginx create mode 100644 features/buildroot/package/nginx/nginx.hash create mode 100644 features/buildroot/package/nginx/nginx.logrotate create mode 100644 features/buildroot/package/nginx/nginx.mk create mode 100644 features/buildroot/package/nginx/nginx.service create mode 100644 features/buildroot/package/ngircd/Config.in create mode 100644 features/buildroot/package/ngircd/ngircd.hash create mode 100644 features/buildroot/package/ngircd/ngircd.mk create mode 100644 features/buildroot/package/ngrep/0001-Fix-typo-in-configure-in-when-testing-for-use_pcre.patch create mode 100644 features/buildroot/package/ngrep/0002-Check-for-libnet_init-in-configure-in.patch create mode 100644 features/buildroot/package/ngrep/0003-fix-disable-tcpkill.patch create mode 100644 features/buildroot/package/ngrep/Config.in create mode 100644 features/buildroot/package/ngrep/ngrep.hash create mode 100644 features/buildroot/package/ngrep/ngrep.mk create mode 100644 features/buildroot/package/nilfs-utils/0001-nilfs-utils-use-_POSIX_MAX_INPUT.patch create mode 100644 features/buildroot/package/nilfs-utils/0002-nilfs_cleanerd-link-dynamically.patch create mode 100644 features/buildroot/package/nilfs-utils/0003-mount.nilfs-drop-include-rpc-types.h.patch create mode 100644 features/buildroot/package/nilfs-utils/0004-autoconf-use-PKG_CHECK_MODULES-for-libmount-and-libb.patch create mode 100644 features/buildroot/package/nilfs-utils/Config.in create mode 100644 features/buildroot/package/nilfs-utils/nilfs-utils.hash create mode 100644 features/buildroot/package/nilfs-utils/nilfs-utils.mk create mode 100644 features/buildroot/package/ninja/ninja.hash create mode 100644 features/buildroot/package/ninja/ninja.mk create mode 100644 features/buildroot/package/nload/Config.in create mode 100644 features/buildroot/package/nload/nload.hash create mode 100644 features/buildroot/package/nload/nload.mk create mode 100644 features/buildroot/package/nmap/0001-libdnet-wrapper-configure.patch create mode 100644 features/buildroot/package/nmap/Config.in create mode 100644 features/buildroot/package/nmap/nmap.hash create mode 100644 features/buildroot/package/nmap/nmap.mk create mode 100644 features/buildroot/package/nmon/Config.in create mode 100644 features/buildroot/package/nmon/nmon.hash create mode 100644 features/buildroot/package/nmon/nmon.mk create mode 100644 features/buildroot/package/nodejs/0001-check-if-uclibc-has-backtrace-support.patch create mode 100644 features/buildroot/package/nodejs/Config.in create mode 100644 features/buildroot/package/nodejs/nodejs.hash create mode 100644 features/buildroot/package/nodejs/nodejs.mk create mode 100644 features/buildroot/package/nodm/Config.in create mode 100644 features/buildroot/package/nodm/S90nodm create mode 100644 features/buildroot/package/nodm/nodm.hash create mode 100644 features/buildroot/package/nodm/nodm.mk create mode 100644 features/buildroot/package/nodm/nodm.pam create mode 100644 features/buildroot/package/noip/Config.in create mode 100644 features/buildroot/package/noip/noip.hash create mode 100644 features/buildroot/package/noip/noip.mk create mode 100644 features/buildroot/package/norm/0001-protolib-drop-linux-version-check.patch create mode 100644 features/buildroot/package/norm/Config.in create mode 100644 features/buildroot/package/norm/norm.hash create mode 100644 features/buildroot/package/norm/norm.mk create mode 100644 features/buildroot/package/nss-mdns/Config.in create mode 100644 features/buildroot/package/nss-mdns/nss-mdns.hash create mode 100644 features/buildroot/package/nss-mdns/nss-mdns.mk create mode 100644 features/buildroot/package/nss-myhostname/Config.in create mode 100644 features/buildroot/package/nss-myhostname/nss-myhostname.hash create mode 100644 features/buildroot/package/nss-myhostname/nss-myhostname.mk create mode 100644 features/buildroot/package/nss-pam-ldapd/Config.in create mode 100644 features/buildroot/package/nss-pam-ldapd/S45nslcd create mode 100644 features/buildroot/package/nss-pam-ldapd/nslcd.service create mode 100644 features/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.hash create mode 100644 features/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.mk create mode 100644 features/buildroot/package/ntfs-3g/Config.in create mode 100644 features/buildroot/package/ntfs-3g/ntfs-3g.hash create mode 100644 features/buildroot/package/ntfs-3g/ntfs-3g.mk create mode 100644 features/buildroot/package/ntp/0001-nano.patch create mode 100644 features/buildroot/package/ntp/0002-ntp-syscalls-fallback.patch create mode 100644 features/buildroot/package/ntp/Config.in create mode 100644 features/buildroot/package/ntp/S48sntp create mode 100644 features/buildroot/package/ntp/S49ntp create mode 100644 features/buildroot/package/ntp/ntp.hash create mode 100644 features/buildroot/package/ntp/ntp.mk create mode 100644 features/buildroot/package/ntp/ntpd.etc.conf create mode 100644 features/buildroot/package/ntp/ntpd.service create mode 100644 features/buildroot/package/numactl/Config.in create mode 100644 features/buildroot/package/numactl/numactl.hash create mode 100644 features/buildroot/package/numactl/numactl.mk create mode 100644 features/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch create mode 100644 features/buildroot/package/nut/0002-client-ups-add-missing-include.patch create mode 100644 features/buildroot/package/nut/0003-Add-compatibility-with-openssl-1.1.0.patch create mode 100644 features/buildroot/package/nut/Config.in create mode 100644 features/buildroot/package/nut/nut.hash create mode 100644 features/buildroot/package/nut/nut.mk create mode 100644 features/buildroot/package/nuttcp/0001-susv3-legacy.patch create mode 100644 features/buildroot/package/nuttcp/Config.in create mode 100644 features/buildroot/package/nuttcp/nuttcp.hash create mode 100644 features/buildroot/package/nuttcp/nuttcp.mk create mode 100644 features/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch create mode 100644 features/buildroot/package/nvidia-driver/Config.in create mode 100644 features/buildroot/package/nvidia-driver/egl.pc create mode 100644 features/buildroot/package/nvidia-driver/gl.pc create mode 100644 features/buildroot/package/nvidia-driver/nvidia-driver.hash create mode 100644 features/buildroot/package/nvidia-driver/nvidia-driver.mk create mode 100644 features/buildroot/package/nvidia-tegra23/Config.in create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/egl.pc create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/gles.pc create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/glesv2.pc create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk create mode 100644 features/buildroot/package/nvidia-tegra23/nvidia-tegra23.mk create mode 100644 features/buildroot/package/nvme/0001-Fix-CFLAGS-parameter.patch create mode 100644 features/buildroot/package/nvme/Config.in create mode 100644 features/buildroot/package/nvme/nvme.hash create mode 100644 features/buildroot/package/nvme/nvme.mk create mode 100644 features/buildroot/package/obsidian-cursors/Config.in create mode 100644 features/buildroot/package/obsidian-cursors/obsidian-cursors.hash create mode 100644 features/buildroot/package/obsidian-cursors/obsidian-cursors.mk create mode 100644 features/buildroot/package/ocf-linux/ocf-linux.hash create mode 100644 features/buildroot/package/ocf-linux/ocf-linux.mk create mode 100644 features/buildroot/package/ocrad/Config.in create mode 100644 features/buildroot/package/ocrad/ocrad.hash create mode 100644 features/buildroot/package/ocrad/ocrad.mk create mode 100644 features/buildroot/package/odhcp6c/Config.in create mode 100644 features/buildroot/package/odhcp6c/odhcp6c.hash create mode 100644 features/buildroot/package/odhcp6c/odhcp6c.mk create mode 100644 features/buildroot/package/odhcploc/Config.in create mode 100644 features/buildroot/package/odhcploc/odhcploc.hash create mode 100644 features/buildroot/package/odhcploc/odhcploc.mk create mode 100644 features/buildroot/package/odroid-mali/Config.in create mode 100644 features/buildroot/package/odroid-mali/odroid-mali.hash create mode 100644 features/buildroot/package/odroid-mali/odroid-mali.mk create mode 100644 features/buildroot/package/odroid-scripts/Config.in create mode 100644 features/buildroot/package/odroid-scripts/S02odroidc2_fb create mode 100644 features/buildroot/package/odroid-scripts/odroid-scripts.hash create mode 100644 features/buildroot/package/odroid-scripts/odroid-scripts.mk create mode 100644 features/buildroot/package/ofono/0001-uclibc-backtrace.patch create mode 100644 features/buildroot/package/ofono/0002-fix-musl-compile.patch create mode 100644 features/buildroot/package/ofono/0003-build-Add-check-for-explicit_bzero-support.patch create mode 100644 features/buildroot/package/ofono/Config.in create mode 100644 features/buildroot/package/ofono/S46ofono create mode 100644 features/buildroot/package/ofono/ofono.hash create mode 100644 features/buildroot/package/ofono/ofono.mk create mode 100644 features/buildroot/package/olsr/0001-configurable-ldconfig.patch create mode 100644 features/buildroot/package/olsr/Config.in create mode 100644 features/buildroot/package/olsr/S50olsr create mode 100644 features/buildroot/package/olsr/olsr.hash create mode 100644 features/buildroot/package/olsr/olsr.mk create mode 100644 features/buildroot/package/olsr/olsr.service create mode 100644 features/buildroot/package/omap-u-boot-utils/Config.in.host create mode 100644 features/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.hash create mode 100644 features/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk create mode 100644 features/buildroot/package/omniorb/Config.in create mode 100644 features/buildroot/package/omniorb/omniorb.hash create mode 100644 features/buildroot/package/omniorb/omniorb.mk create mode 100644 features/buildroot/package/omxplayer/0001-Update-Makefile-to-be-compatible-with-buildroot.patch create mode 100644 features/buildroot/package/omxplayer/Config.in create mode 100644 features/buildroot/package/omxplayer/omxplayer.hash create mode 100644 features/buildroot/package/omxplayer/omxplayer.mk create mode 100644 features/buildroot/package/on2-8170-libs/Config.in create mode 100644 features/buildroot/package/on2-8170-libs/on2-8170-libs.hash create mode 100644 features/buildroot/package/on2-8170-libs/on2-8170-libs.mk create mode 100644 features/buildroot/package/on2-8170-modules/Config.in create mode 100644 features/buildroot/package/on2-8170-modules/on2-8170-modules.hash create mode 100644 features/buildroot/package/on2-8170-modules/on2-8170-modules.mk create mode 100644 features/buildroot/package/oniguruma/Config.in create mode 100644 features/buildroot/package/oniguruma/oniguruma.hash create mode 100644 features/buildroot/package/oniguruma/oniguruma.mk create mode 100644 features/buildroot/package/open-lldp/0001-vdptool-fixed-compile-error-for-getline.patch create mode 100644 features/buildroot/package/open-lldp/0002-get-inline-functions-work-with-both-gnu11-and-gnu89.patch create mode 100644 features/buildroot/package/open-lldp/0003-Makefile.am-disable-Werror.patch create mode 100644 features/buildroot/package/open-lldp/0004-fixed-unknown-type-pid_t.patch create mode 100644 features/buildroot/package/open-lldp/Config.in create mode 100644 features/buildroot/package/open-lldp/open-lldp.hash create mode 100644 features/buildroot/package/open-lldp/open-lldp.mk create mode 100644 features/buildroot/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch create mode 100644 features/buildroot/package/open-plc-utils/Config.in create mode 100644 features/buildroot/package/open-plc-utils/open-plc-utils.hash create mode 100644 features/buildroot/package/open-plc-utils/open-plc-utils.mk create mode 100644 features/buildroot/package/open2300/0001-fix-makefile.patch create mode 100644 features/buildroot/package/open2300/Config.in create mode 100644 features/buildroot/package/open2300/open2300.mk create mode 100644 features/buildroot/package/openal/Config.in create mode 100644 features/buildroot/package/openal/openal.hash create mode 100644 features/buildroot/package/openal/openal.mk create mode 100644 features/buildroot/package/openblas/0001-Makefile.arm-remove-march-flags.patch create mode 100644 features/buildroot/package/openblas/0002-Correct-argument-of-CPU_ISSET-for-glibc-2-5.patch create mode 100644 features/buildroot/package/openblas/Config.in create mode 100644 features/buildroot/package/openblas/openblas.hash create mode 100644 features/buildroot/package/openblas/openblas.mk create mode 100644 features/buildroot/package/openbox/Config.in create mode 100644 features/buildroot/package/openbox/openbox.hash create mode 100644 features/buildroot/package/openbox/openbox.mk create mode 100644 features/buildroot/package/opencore-amr/Config.in create mode 100644 features/buildroot/package/opencore-amr/opencore-amr.hash create mode 100644 features/buildroot/package/opencore-amr/opencore-amr.mk create mode 100644 features/buildroot/package/opencv/0001-atomic.patch create mode 100644 features/buildroot/package/opencv/0002-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch create mode 100644 features/buildroot/package/opencv/Config.in create mode 100644 features/buildroot/package/opencv/opencv.hash create mode 100644 features/buildroot/package/opencv/opencv.mk create mode 100644 features/buildroot/package/opencv3/Config.in create mode 100644 features/buildroot/package/opencv3/opencv3.hash create mode 100644 features/buildroot/package/opencv3/opencv3.mk create mode 100644 features/buildroot/package/opengl/Config.in create mode 100644 features/buildroot/package/opengl/libegl/Config.in create mode 100644 features/buildroot/package/opengl/libegl/libegl.mk create mode 100644 features/buildroot/package/opengl/libgl/Config.in create mode 100644 features/buildroot/package/opengl/libgl/libgl.mk create mode 100644 features/buildroot/package/opengl/libgles/Config.in create mode 100644 features/buildroot/package/opengl/libgles/libgles.mk create mode 100644 features/buildroot/package/opengl/libopencl/Config.in create mode 100644 features/buildroot/package/opengl/libopencl/libopencl.mk create mode 100644 features/buildroot/package/opengl/libopenmax/Config.in create mode 100644 features/buildroot/package/opengl/libopenmax/libopenmax.mk create mode 100644 features/buildroot/package/opengl/libopenvg/Config.in create mode 100644 features/buildroot/package/opengl/libopenvg/libopenvg.mk create mode 100644 features/buildroot/package/opengl/opengl.mk create mode 100644 features/buildroot/package/openipmi/0001-Avoid-searching-host-library-path.patch create mode 100644 features/buildroot/package/openipmi/Config.in create mode 100644 features/buildroot/package/openipmi/openipmi.hash create mode 100644 features/buildroot/package/openipmi/openipmi.mk create mode 100644 features/buildroot/package/openjdk-bin/openjdk-bin.hash create mode 100644 features/buildroot/package/openjdk-bin/openjdk-bin.mk create mode 100644 features/buildroot/package/openjdk/Config.in create mode 100644 features/buildroot/package/openjdk/openjdk.hash create mode 100644 features/buildroot/package/openjdk/openjdk.mk create mode 100644 features/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch create mode 100644 features/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch create mode 100644 features/buildroot/package/openjpeg/0003-CMakeLists.txt-Don-t-require-a-C-compiler.patch create mode 100644 features/buildroot/package/openjpeg/Config.in create mode 100644 features/buildroot/package/openjpeg/openjpeg.hash create mode 100644 features/buildroot/package/openjpeg/openjpeg.mk create mode 100644 features/buildroot/package/openldap/0001-fix_cross_strip.patch create mode 100644 features/buildroot/package/openldap/0002-fix-bignum.patch create mode 100644 features/buildroot/package/openldap/0003-disable-docs.patch create mode 100644 features/buildroot/package/openldap/0004-revert-ITS-3977-fix-libtool-static-behavior-to-match.patch create mode 100644 features/buildroot/package/openldap/Config.in create mode 100644 features/buildroot/package/openldap/openldap.hash create mode 100644 features/buildroot/package/openldap/openldap.mk create mode 100644 features/buildroot/package/openmpi/Config.in create mode 100644 features/buildroot/package/openmpi/openmpi-mips32-fortran.cache create mode 100644 features/buildroot/package/openmpi/openmpi-mips64-fortran.cache create mode 100644 features/buildroot/package/openmpi/openmpi.hash create mode 100644 features/buildroot/package/openmpi/openmpi.mk create mode 100644 features/buildroot/package/openntpd/0001-fix-musl.patch create mode 100644 features/buildroot/package/openntpd/Config.in create mode 100644 features/buildroot/package/openntpd/S49ntp create mode 100644 features/buildroot/package/openntpd/ntpd.service create mode 100644 features/buildroot/package/openntpd/openntpd.hash create mode 100644 features/buildroot/package/openntpd/openntpd.mk create mode 100644 features/buildroot/package/openobex/Config.in create mode 100644 features/buildroot/package/openobex/openobex.hash create mode 100644 features/buildroot/package/openobex/openobex.mk create mode 100644 features/buildroot/package/openocd/0001-Fix-jimtcl-auto-configuration-to-force-static-librar.patch create mode 100644 features/buildroot/package/openocd/0002-configure-enable-build-on-uclinux.patch create mode 100644 features/buildroot/package/openocd/0003-CVE-2018-5704-Prevent-some-forms-of-Cross-Protocol-S.patch create mode 100644 features/buildroot/package/openocd/Config.in create mode 100644 features/buildroot/package/openocd/Config.in.host create mode 100644 features/buildroot/package/openocd/openocd.hash create mode 100644 features/buildroot/package/openocd/openocd.mk create mode 100644 features/buildroot/package/openpgm/0001-version_generator.py-make-it-python3-compliant.patch create mode 100644 features/buildroot/package/openpgm/0002-cross-compile.patch create mode 100644 features/buildroot/package/openpgm/0003-Rework-headers-includes-to-fix-build-with-musl-libc.patch create mode 100644 features/buildroot/package/openpgm/Config.in create mode 100644 features/buildroot/package/openpgm/openpgm.hash create mode 100644 features/buildroot/package/openpgm/openpgm.mk create mode 100644 features/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch create mode 100644 features/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch create mode 100644 features/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch create mode 100644 features/buildroot/package/openpowerlink/Config.in create mode 100644 features/buildroot/package/openpowerlink/openpowerlink.hash create mode 100644 features/buildroot/package/openpowerlink/openpowerlink.mk create mode 100644 features/buildroot/package/openrc/0001-init.d-sysctl.in-add-support-for-busybox-sysctl.patch create mode 100644 features/buildroot/package/openrc/0002-sh-init.sh.Linux.in-change-run-lock-from-root-uucp-t.patch create mode 100644 features/buildroot/package/openrc/Config.in create mode 100644 features/buildroot/package/openrc/openrc.hash create mode 100644 features/buildroot/package/openrc/openrc.mk create mode 100644 features/buildroot/package/openresolv/Config.in create mode 100644 features/buildroot/package/openresolv/openresolv.hash create mode 100644 features/buildroot/package/openresolv/openresolv.mk create mode 100644 features/buildroot/package/openssh/Config.in create mode 100644 features/buildroot/package/openssh/S50sshd create mode 100644 features/buildroot/package/openssh/openssh.hash create mode 100644 features/buildroot/package/openssh/openssh.mk create mode 100644 features/buildroot/package/openssh/sshd-sysusers.conf create mode 100644 features/buildroot/package/openssh/sshd.service create mode 100644 features/buildroot/package/openssl/Config.in create mode 100644 features/buildroot/package/openssl/openssl.mk create mode 100644 features/buildroot/package/openswan/Config.in create mode 100644 features/buildroot/package/openswan/openswan.hash create mode 100644 features/buildroot/package/openswan/openswan.mk create mode 100644 features/buildroot/package/opentracing-cpp/Config.in create mode 100644 features/buildroot/package/opentracing-cpp/opentracing-cpp.hash create mode 100644 features/buildroot/package/opentracing-cpp/opentracing-cpp.mk create mode 100644 features/buildroot/package/opentyrian-data/Config.in create mode 100644 features/buildroot/package/opentyrian-data/opentyrian-data.hash create mode 100644 features/buildroot/package/opentyrian-data/opentyrian-data.mk create mode 100644 features/buildroot/package/opentyrian/Config.in create mode 100644 features/buildroot/package/opentyrian/opentyrian.mk create mode 100644 features/buildroot/package/openvmtools/0001-no_cflags_werror.patch create mode 100644 features/buildroot/package/openvmtools/0002-dont-force-cppflags.patch create mode 100644 features/buildroot/package/openvmtools/Config.in create mode 100644 features/buildroot/package/openvmtools/S10vmtoolsd create mode 100644 features/buildroot/package/openvmtools/openvmtools.hash create mode 100644 features/buildroot/package/openvmtools/openvmtools.mk create mode 100644 features/buildroot/package/openvmtools/shutdown create mode 100644 features/buildroot/package/openvmtools/vmtoolsd.service create mode 100644 features/buildroot/package/openvpn/Config.in create mode 100644 features/buildroot/package/openvpn/S60openvpn create mode 100644 features/buildroot/package/openvpn/openvpn.hash create mode 100644 features/buildroot/package/openvpn/openvpn.mk create mode 100644 features/buildroot/package/openzwave/0001-Fix-issue-1783-Most-Compilers-Get-it-Some-need-a-little-help.patch create mode 100644 features/buildroot/package/openzwave/0002-update-spec-files.patch create mode 100644 features/buildroot/package/openzwave/Config.in create mode 100644 features/buildroot/package/openzwave/openzwave.hash create mode 100644 features/buildroot/package/openzwave/openzwave.mk create mode 100644 features/buildroot/package/opkg-utils/Config.in.host create mode 100644 features/buildroot/package/opkg-utils/opkg-utils.hash create mode 100644 features/buildroot/package/opkg-utils/opkg-utils.mk create mode 100644 features/buildroot/package/opkg/Config.in create mode 100644 features/buildroot/package/opkg/opkg.hash create mode 100644 features/buildroot/package/opkg/opkg.mk create mode 100644 features/buildroot/package/oprofile/0001-musl.patch create mode 100644 features/buildroot/package/oprofile/Config.in create mode 100644 features/buildroot/package/oprofile/oprofile.hash create mode 100644 features/buildroot/package/oprofile/oprofile.mk create mode 100644 features/buildroot/package/optee-benchmark/Config.in create mode 100644 features/buildroot/package/optee-benchmark/optee-benchmark.hash create mode 100644 features/buildroot/package/optee-benchmark/optee-benchmark.mk create mode 100644 features/buildroot/package/optee-client/Config.in create mode 100644 features/buildroot/package/optee-client/S30optee create mode 100644 features/buildroot/package/optee-client/optee-client.hash create mode 100644 features/buildroot/package/optee-client/optee-client.mk create mode 100644 features/buildroot/package/optee-examples/Config.in create mode 100644 features/buildroot/package/optee-examples/optee-examples.hash create mode 100644 features/buildroot/package/optee-examples/optee-examples.mk create mode 100644 features/buildroot/package/optee-test/0001-regression-41xx-prevent-unsafe-loop-optimizations-bu.patch create mode 100644 features/buildroot/package/optee-test/Config.in create mode 100644 features/buildroot/package/optee-test/optee-test.hash create mode 100644 features/buildroot/package/optee-test/optee-test.mk create mode 100644 features/buildroot/package/opus-tools/Config.in create mode 100644 features/buildroot/package/opus-tools/opus-tools.hash create mode 100644 features/buildroot/package/opus-tools/opus-tools.mk create mode 100644 features/buildroot/package/opus/Config.in create mode 100644 features/buildroot/package/opus/opus.hash create mode 100644 features/buildroot/package/opus/opus.mk create mode 100644 features/buildroot/package/opusfile/Config.in create mode 100644 features/buildroot/package/opusfile/opusfile.hash create mode 100644 features/buildroot/package/opusfile/opusfile.mk create mode 100644 features/buildroot/package/oracle-mysql/0000-ac_cache_check.patch create mode 100644 features/buildroot/package/oracle-mysql/0001-configure-ps-cache-check.patch create mode 100644 features/buildroot/package/oracle-mysql/0002-use-new-readline-iface.patch create mode 100644 features/buildroot/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch create mode 100644 features/buildroot/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch create mode 100644 features/buildroot/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch create mode 100644 features/buildroot/package/oracle-mysql/0006-no-force-static-build.patch create mode 100644 features/buildroot/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch create mode 100644 features/buildroot/package/oracle-mysql/0008-fix-type-conversion.patch create mode 100644 features/buildroot/package/oracle-mysql/0008-gcc7.patch create mode 100644 features/buildroot/package/oracle-mysql/S97mysqld create mode 100644 features/buildroot/package/oracle-mysql/mysqld.service create mode 100644 features/buildroot/package/oracle-mysql/oracle-mysql.hash create mode 100644 features/buildroot/package/oracle-mysql/oracle-mysql.mk create mode 100644 features/buildroot/package/orbit/Config.in create mode 100644 features/buildroot/package/orbit/orbit.hash create mode 100644 features/buildroot/package/orbit/orbit.mk create mode 100644 features/buildroot/package/orc/Config.in create mode 100644 features/buildroot/package/orc/orc.hash create mode 100644 features/buildroot/package/orc/orc.mk create mode 100644 features/buildroot/package/ortp/Config.in create mode 100644 features/buildroot/package/ortp/ortp.hash create mode 100644 features/buildroot/package/ortp/ortp.mk create mode 100644 features/buildroot/package/owfs/0001-include-sys-sysmacros.h-for-major.patch create mode 100644 features/buildroot/package/owfs/Config.in create mode 100644 features/buildroot/package/owfs/S55owserver create mode 100644 features/buildroot/package/owfs/S60owfs create mode 100644 features/buildroot/package/owfs/owfs.hash create mode 100644 features/buildroot/package/owfs/owfs.mk create mode 100644 features/buildroot/package/owl-linux/0001-fix-for-linux-3.3.x.patch create mode 100644 features/buildroot/package/owl-linux/Config.in create mode 100644 features/buildroot/package/owl-linux/owl-linux.hash create mode 100644 features/buildroot/package/owl-linux/owl-linux.mk create mode 100644 features/buildroot/package/p11-kit/0001-Fix-build-against-older-pthreads-implementations.patch create mode 100644 features/buildroot/package/p11-kit/Config.in create mode 100644 features/buildroot/package/p11-kit/p11-kit.hash create mode 100644 features/buildroot/package/p11-kit/p11-kit.mk create mode 100644 features/buildroot/package/p7zip/Config.in create mode 100644 features/buildroot/package/p7zip/p7zip.hash create mode 100644 features/buildroot/package/p7zip/p7zip.mk create mode 100644 features/buildroot/package/p910nd/Config.in create mode 100644 features/buildroot/package/p910nd/p910nd.hash create mode 100644 features/buildroot/package/p910nd/p910nd.mk create mode 100644 features/buildroot/package/paho-mqtt-c/Config.in create mode 100644 features/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash create mode 100644 features/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk create mode 100644 features/buildroot/package/paho-mqtt-cpp/Config.in create mode 100644 features/buildroot/package/paho-mqtt-cpp/paho-mqtt-cpp.hash create mode 100644 features/buildroot/package/paho-mqtt-cpp/paho-mqtt-cpp.mk create mode 100644 features/buildroot/package/pamtester/Config.in create mode 100644 features/buildroot/package/pamtester/pamtester.hash create mode 100644 features/buildroot/package/pamtester/pamtester.mk create mode 100644 features/buildroot/package/pango/0001-build-disable-tests-from-building.patch create mode 100644 features/buildroot/package/pango/0002-Prevent-an-assertion-with-invalid-Unicode-sequences.patch create mode 100644 features/buildroot/package/pango/0002-no-gtk-doc.patch create mode 100644 features/buildroot/package/pango/Config.in create mode 100644 features/buildroot/package/pango/pango.hash create mode 100644 features/buildroot/package/pango/pango.mk create mode 100644 features/buildroot/package/pangomm/Config.in create mode 100644 features/buildroot/package/pangomm/pangomm.hash create mode 100644 features/buildroot/package/pangomm/pangomm.mk create mode 100644 features/buildroot/package/parted/0001-libparted-arch-linux.c-Compile-without-ENABLE_DEVICE.patch create mode 100644 features/buildroot/package/parted/0002-configure.ac-uclinux-is-also-linux.patch create mode 100644 features/buildroot/package/parted/0003-Include-fcntl.h-to-get-loff_t-definition.patch create mode 100644 features/buildroot/package/parted/0004-libparted-labels-link-with-libiconv-if-needed.patch create mode 100644 features/buildroot/package/parted/0005-linux-Include-sys-sysmacros.h-for-major-macro.patch create mode 100644 features/buildroot/package/parted/Config.in create mode 100644 features/buildroot/package/parted/Config.in.host create mode 100644 features/buildroot/package/parted/parted.hash create mode 100644 features/buildroot/package/parted/parted.mk create mode 100644 features/buildroot/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch create mode 100644 features/buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch create mode 100644 features/buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch create mode 100644 features/buildroot/package/patch/Config.in create mode 100644 features/buildroot/package/patch/patch.hash create mode 100644 features/buildroot/package/patch/patch.mk create mode 100644 features/buildroot/package/patchelf/0001-Remove-apparently-incorrect-usage-of-static.patch create mode 100644 features/buildroot/package/patchelf/0002-Extract-a-function-for-splitting-a-colon-separated-s.patch create mode 100644 features/buildroot/package/patchelf/0003-Add-option-to-make-the-rpath-relative-under-a-specif.patch create mode 100644 features/buildroot/package/patchelf/0004-patchelf-Check-ELF-endianness-before-writing-new-run.patch create mode 100644 features/buildroot/package/patchelf/Config.in.host create mode 100644 features/buildroot/package/patchelf/patchelf.hash create mode 100644 features/buildroot/package/patchelf/patchelf.mk create mode 100644 features/buildroot/package/pax-utils/Config.in create mode 100644 features/buildroot/package/pax-utils/pax-utils.hash create mode 100644 features/buildroot/package/pax-utils/pax-utils.mk create mode 100644 features/buildroot/package/paxtest/0001-genpaxtest-move-log-location.patch create mode 100644 features/buildroot/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch create mode 100644 features/buildroot/package/paxtest/Config.in create mode 100644 features/buildroot/package/paxtest/paxtest.hash create mode 100644 features/buildroot/package/paxtest/paxtest.mk create mode 100644 features/buildroot/package/pciutils/Config.in create mode 100644 features/buildroot/package/pciutils/pciutils.hash create mode 100644 features/buildroot/package/pciutils/pciutils.mk create mode 100644 features/buildroot/package/pcm-tools/0001-Look-for-pcm-core-at-the-default-path.patch create mode 100644 features/buildroot/package/pcm-tools/Config.in create mode 100644 features/buildroot/package/pcm-tools/pcm-tools.hash create mode 100644 features/buildroot/package/pcm-tools/pcm-tools.mk create mode 100644 features/buildroot/package/pcmanfm/Config.in create mode 100644 features/buildroot/package/pcmanfm/pcmanfm.hash create mode 100644 features/buildroot/package/pcmanfm/pcmanfm.mk create mode 100644 features/buildroot/package/pcre/0001-Kill-compatibility-bits.patch create mode 100644 features/buildroot/package/pcre/0002-Disable-C-unit-tests.patch create mode 100644 features/buildroot/package/pcre/Config.in create mode 100644 features/buildroot/package/pcre/pcre.hash create mode 100644 features/buildroot/package/pcre/pcre.mk create mode 100644 features/buildroot/package/pcre2/Config.in create mode 100644 features/buildroot/package/pcre2/pcre2.hash create mode 100644 features/buildroot/package/pcre2/pcre2.mk create mode 100644 features/buildroot/package/pcsc-lite/0001-Add-disable-documentation-option.patch create mode 100644 features/buildroot/package/pcsc-lite/Config.in create mode 100644 features/buildroot/package/pcsc-lite/pcsc-lite.hash create mode 100644 features/buildroot/package/pcsc-lite/pcsc-lite.mk create mode 100644 features/buildroot/package/pdbg/Config.in create mode 100644 features/buildroot/package/pdbg/pdbg.hash create mode 100644 features/buildroot/package/pdbg/pdbg.mk create mode 100644 features/buildroot/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch create mode 100644 features/buildroot/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch create mode 100644 features/buildroot/package/pdmenu/Config.in create mode 100644 features/buildroot/package/pdmenu/pdmenu.hash create mode 100644 features/buildroot/package/pdmenu/pdmenu.mk create mode 100644 features/buildroot/package/perl-apache-logformat-compiler/Config.in create mode 100644 features/buildroot/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.hash create mode 100644 features/buildroot/package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.mk create mode 100644 features/buildroot/package/perl-appconfig/Config.in create mode 100644 features/buildroot/package/perl-appconfig/perl-appconfig.hash create mode 100644 features/buildroot/package/perl-appconfig/perl-appconfig.mk create mode 100644 features/buildroot/package/perl-astro-suntime/Config.in create mode 100644 features/buildroot/package/perl-astro-suntime/perl-astro-suntime.hash create mode 100644 features/buildroot/package/perl-astro-suntime/perl-astro-suntime.mk create mode 100644 features/buildroot/package/perl-class-inspector/Config.in create mode 100644 features/buildroot/package/perl-class-inspector/perl-class-inspector.hash create mode 100644 features/buildroot/package/perl-class-inspector/perl-class-inspector.mk create mode 100644 features/buildroot/package/perl-class-load/Config.in create mode 100644 features/buildroot/package/perl-class-load/perl-class-load.hash create mode 100644 features/buildroot/package/perl-class-load/perl-class-load.mk create mode 100644 features/buildroot/package/perl-class-method-modifiers/Config.in create mode 100644 features/buildroot/package/perl-class-method-modifiers/perl-class-method-modifiers.hash create mode 100644 features/buildroot/package/perl-class-method-modifiers/perl-class-method-modifiers.mk create mode 100644 features/buildroot/package/perl-class-std-fast/Config.in create mode 100644 features/buildroot/package/perl-class-std-fast/perl-class-std-fast.hash create mode 100644 features/buildroot/package/perl-class-std-fast/perl-class-std-fast.mk create mode 100644 features/buildroot/package/perl-class-std/Config.in create mode 100644 features/buildroot/package/perl-class-std/perl-class-std.hash create mode 100644 features/buildroot/package/perl-class-std/perl-class-std.mk create mode 100644 features/buildroot/package/perl-convert-asn1/Config.in create mode 100644 features/buildroot/package/perl-convert-asn1/perl-convert-asn1.hash create mode 100644 features/buildroot/package/perl-convert-asn1/perl-convert-asn1.mk create mode 100644 features/buildroot/package/perl-cookie-baker/Config.in create mode 100644 features/buildroot/package/perl-cookie-baker/perl-cookie-baker.hash create mode 100644 features/buildroot/package/perl-cookie-baker/perl-cookie-baker.mk create mode 100644 features/buildroot/package/perl-crypt-blowfish/Config.in create mode 100644 features/buildroot/package/perl-crypt-blowfish/perl-crypt-blowfish.hash create mode 100644 features/buildroot/package/perl-crypt-blowfish/perl-crypt-blowfish.mk create mode 100644 features/buildroot/package/perl-crypt-cbc/Config.in create mode 100644 features/buildroot/package/perl-crypt-cbc/perl-crypt-cbc.hash create mode 100644 features/buildroot/package/perl-crypt-cbc/perl-crypt-cbc.mk create mode 100644 features/buildroot/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.hash create mode 100644 features/buildroot/package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.mk create mode 100644 features/buildroot/package/perl-crypt-openssl-random/Config.in create mode 100644 features/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash create mode 100644 features/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk create mode 100644 features/buildroot/package/perl-crypt-openssl-rsa/Config.in create mode 100644 features/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash create mode 100644 features/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk create mode 100644 features/buildroot/package/perl-data-dump/Config.in create mode 100644 features/buildroot/package/perl-data-dump/perl-data-dump.hash create mode 100644 features/buildroot/package/perl-data-dump/perl-data-dump.mk create mode 100644 features/buildroot/package/perl-data-optlist/Config.in create mode 100644 features/buildroot/package/perl-data-optlist/perl-data-optlist.hash create mode 100644 features/buildroot/package/perl-data-optlist/perl-data-optlist.mk create mode 100644 features/buildroot/package/perl-data-uuid/Config.in create mode 100644 features/buildroot/package/perl-data-uuid/perl-data-uuid.hash create mode 100644 features/buildroot/package/perl-data-uuid/perl-data-uuid.mk create mode 100644 features/buildroot/package/perl-date-manip/Config.in create mode 100644 features/buildroot/package/perl-date-manip/perl-date-manip.hash create mode 100644 features/buildroot/package/perl-date-manip/perl-date-manip.mk create mode 100644 features/buildroot/package/perl-datetime-tiny/Config.in create mode 100644 features/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.hash create mode 100644 features/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.mk create mode 100644 features/buildroot/package/perl-dbd-mysql/Config.in create mode 100644 features/buildroot/package/perl-dbd-mysql/perl-dbd-mysql.hash create mode 100644 features/buildroot/package/perl-dbd-mysql/perl-dbd-mysql.mk create mode 100644 features/buildroot/package/perl-dbi/Config.in create mode 100644 features/buildroot/package/perl-dbi/perl-dbi.hash create mode 100644 features/buildroot/package/perl-dbi/perl-dbi.mk create mode 100644 features/buildroot/package/perl-devel-globaldestruction/Config.in create mode 100644 features/buildroot/package/perl-devel-globaldestruction/perl-devel-globaldestruction.hash create mode 100644 features/buildroot/package/perl-devel-globaldestruction/perl-devel-globaldestruction.mk create mode 100644 features/buildroot/package/perl-devel-stacktrace-ashtml/Config.in create mode 100644 features/buildroot/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.hash create mode 100644 features/buildroot/package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.mk create mode 100644 features/buildroot/package/perl-devel-stacktrace/Config.in create mode 100644 features/buildroot/package/perl-devel-stacktrace/perl-devel-stacktrace.hash create mode 100644 features/buildroot/package/perl-devel-stacktrace/perl-devel-stacktrace.mk create mode 100644 features/buildroot/package/perl-device-serialport/Config.in create mode 100644 features/buildroot/package/perl-device-serialport/perl-device-serialport.hash create mode 100644 features/buildroot/package/perl-device-serialport/perl-device-serialport.mk create mode 100644 features/buildroot/package/perl-digest-hmac/Config.in create mode 100644 features/buildroot/package/perl-digest-hmac/perl-digest-hmac.hash create mode 100644 features/buildroot/package/perl-digest-hmac/perl-digest-hmac.mk create mode 100644 features/buildroot/package/perl-digest-md5/Config.in create mode 100644 features/buildroot/package/perl-digest-md5/perl-digest-md5.hash create mode 100644 features/buildroot/package/perl-digest-md5/perl-digest-md5.mk create mode 100644 features/buildroot/package/perl-digest-sha1/Config.in create mode 100644 features/buildroot/package/perl-digest-sha1/perl-digest-sha1.hash create mode 100644 features/buildroot/package/perl-digest-sha1/perl-digest-sha1.mk create mode 100644 features/buildroot/package/perl-dist-checkconflicts/Config.in create mode 100644 features/buildroot/package/perl-dist-checkconflicts/perl-dist-checkconflicts.hash create mode 100644 features/buildroot/package/perl-dist-checkconflicts/perl-dist-checkconflicts.mk create mode 100644 features/buildroot/package/perl-encode-detect/Config.in create mode 100644 features/buildroot/package/perl-encode-detect/perl-encode-detect.hash create mode 100644 features/buildroot/package/perl-encode-detect/perl-encode-detect.mk create mode 100644 features/buildroot/package/perl-encode-locale/Config.in create mode 100644 features/buildroot/package/perl-encode-locale/perl-encode-locale.hash create mode 100644 features/buildroot/package/perl-encode-locale/perl-encode-locale.mk create mode 100644 features/buildroot/package/perl-exporter-tiny/Config.in create mode 100644 features/buildroot/package/perl-exporter-tiny/perl-exporter-tiny.hash create mode 100644 features/buildroot/package/perl-exporter-tiny/perl-exporter-tiny.mk create mode 100644 features/buildroot/package/perl-extutils-config/perl-extutils-config.hash create mode 100644 features/buildroot/package/perl-extutils-config/perl-extutils-config.mk create mode 100644 features/buildroot/package/perl-extutils-helpers/perl-extutils-helpers.hash create mode 100644 features/buildroot/package/perl-extutils-helpers/perl-extutils-helpers.mk create mode 100644 features/buildroot/package/perl-extutils-installpaths/perl-extutils-installpaths.hash create mode 100644 features/buildroot/package/perl-extutils-installpaths/perl-extutils-installpaths.mk create mode 100644 features/buildroot/package/perl-file-listing/Config.in create mode 100644 features/buildroot/package/perl-file-listing/perl-file-listing.hash create mode 100644 features/buildroot/package/perl-file-listing/perl-file-listing.mk create mode 100644 features/buildroot/package/perl-file-sharedir-install/perl-file-sharedir-install.hash create mode 100644 features/buildroot/package/perl-file-sharedir-install/perl-file-sharedir-install.mk create mode 100644 features/buildroot/package/perl-file-sharedir/Config.in create mode 100644 features/buildroot/package/perl-file-sharedir/perl-file-sharedir.hash create mode 100644 features/buildroot/package/perl-file-sharedir/perl-file-sharedir.mk create mode 100644 features/buildroot/package/perl-file-slurp/Config.in create mode 100644 features/buildroot/package/perl-file-slurp/perl-file-slurp.hash create mode 100644 features/buildroot/package/perl-file-slurp/perl-file-slurp.mk create mode 100644 features/buildroot/package/perl-file-util/Config.in create mode 100644 features/buildroot/package/perl-file-util/perl-file-util.hash create mode 100644 features/buildroot/package/perl-file-util/perl-file-util.mk create mode 100644 features/buildroot/package/perl-filesys-notify-simple/Config.in create mode 100644 features/buildroot/package/perl-filesys-notify-simple/perl-filesys-notify-simple.hash create mode 100644 features/buildroot/package/perl-filesys-notify-simple/perl-filesys-notify-simple.mk create mode 100644 features/buildroot/package/perl-gd/Config.in create mode 100644 features/buildroot/package/perl-gd/perl-gd.hash create mode 100644 features/buildroot/package/perl-gd/perl-gd.mk create mode 100644 features/buildroot/package/perl-gdgraph/Config.in create mode 100644 features/buildroot/package/perl-gdgraph/perl-gdgraph.hash create mode 100644 features/buildroot/package/perl-gdgraph/perl-gdgraph.mk create mode 100644 features/buildroot/package/perl-gdtextutil/Config.in create mode 100644 features/buildroot/package/perl-gdtextutil/perl-gdtextutil.hash create mode 100644 features/buildroot/package/perl-gdtextutil/perl-gdtextutil.mk create mode 100644 features/buildroot/package/perl-hash-multivalue/Config.in create mode 100644 features/buildroot/package/perl-hash-multivalue/perl-hash-multivalue.hash create mode 100644 features/buildroot/package/perl-hash-multivalue/perl-hash-multivalue.mk create mode 100644 features/buildroot/package/perl-html-parser/Config.in create mode 100644 features/buildroot/package/perl-html-parser/perl-html-parser.hash create mode 100644 features/buildroot/package/perl-html-parser/perl-html-parser.mk create mode 100644 features/buildroot/package/perl-html-tagset/Config.in create mode 100644 features/buildroot/package/perl-html-tagset/perl-html-tagset.hash create mode 100644 features/buildroot/package/perl-html-tagset/perl-html-tagset.mk create mode 100644 features/buildroot/package/perl-http-cookies/Config.in create mode 100644 features/buildroot/package/perl-http-cookies/perl-http-cookies.hash create mode 100644 features/buildroot/package/perl-http-cookies/perl-http-cookies.mk create mode 100644 features/buildroot/package/perl-http-daemon/Config.in create mode 100644 features/buildroot/package/perl-http-daemon/perl-http-daemon.hash create mode 100644 features/buildroot/package/perl-http-daemon/perl-http-daemon.mk create mode 100644 features/buildroot/package/perl-http-date/Config.in create mode 100644 features/buildroot/package/perl-http-date/perl-http-date.hash create mode 100644 features/buildroot/package/perl-http-date/perl-http-date.mk create mode 100644 features/buildroot/package/perl-http-entity-parser/Config.in create mode 100644 features/buildroot/package/perl-http-entity-parser/perl-http-entity-parser.hash create mode 100644 features/buildroot/package/perl-http-entity-parser/perl-http-entity-parser.mk create mode 100644 features/buildroot/package/perl-http-headers-fast/Config.in create mode 100644 features/buildroot/package/perl-http-headers-fast/perl-http-headers-fast.hash create mode 100644 features/buildroot/package/perl-http-headers-fast/perl-http-headers-fast.mk create mode 100644 features/buildroot/package/perl-http-message/Config.in create mode 100644 features/buildroot/package/perl-http-message/perl-http-message.hash create mode 100644 features/buildroot/package/perl-http-message/perl-http-message.mk create mode 100644 features/buildroot/package/perl-http-multipartparser/Config.in create mode 100644 features/buildroot/package/perl-http-multipartparser/perl-http-multipartparser.hash create mode 100644 features/buildroot/package/perl-http-multipartparser/perl-http-multipartparser.mk create mode 100644 features/buildroot/package/perl-http-negotiate/Config.in create mode 100644 features/buildroot/package/perl-http-negotiate/perl-http-negotiate.hash create mode 100644 features/buildroot/package/perl-http-negotiate/perl-http-negotiate.mk create mode 100644 features/buildroot/package/perl-io-html/Config.in create mode 100644 features/buildroot/package/perl-io-html/perl-io-html.hash create mode 100644 features/buildroot/package/perl-io-html/perl-io-html.mk create mode 100644 features/buildroot/package/perl-io-interface/Config.in create mode 100644 features/buildroot/package/perl-io-interface/perl-io-interface.hash create mode 100644 features/buildroot/package/perl-io-interface/perl-io-interface.mk create mode 100644 features/buildroot/package/perl-io-socket-multicast/Config.in create mode 100644 features/buildroot/package/perl-io-socket-multicast/perl-io-socket-multicast.hash create mode 100644 features/buildroot/package/perl-io-socket-multicast/perl-io-socket-multicast.mk create mode 100644 features/buildroot/package/perl-io-socket-ssl/Config.in create mode 100644 features/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.hash create mode 100644 features/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.mk create mode 100644 features/buildroot/package/perl-json-maybexs/Config.in create mode 100644 features/buildroot/package/perl-json-maybexs/perl-json-maybexs.hash create mode 100644 features/buildroot/package/perl-json-maybexs/perl-json-maybexs.mk create mode 100644 features/buildroot/package/perl-json-tiny/Config.in create mode 100644 features/buildroot/package/perl-json-tiny/perl-json-tiny.hash create mode 100644 features/buildroot/package/perl-json-tiny/perl-json-tiny.mk create mode 100644 features/buildroot/package/perl-libwww-perl/Config.in create mode 100644 features/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash create mode 100644 features/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk create mode 100644 features/buildroot/package/perl-lwp-mediatypes/Config.in create mode 100644 features/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash create mode 100644 features/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk create mode 100644 features/buildroot/package/perl-mail-dkim/Config.in create mode 100644 features/buildroot/package/perl-mail-dkim/perl-mail-dkim.hash create mode 100644 features/buildroot/package/perl-mail-dkim/perl-mail-dkim.mk create mode 100644 features/buildroot/package/perl-mailtools/Config.in create mode 100644 features/buildroot/package/perl-mailtools/perl-mailtools.hash create mode 100644 features/buildroot/package/perl-mailtools/perl-mailtools.mk create mode 100644 features/buildroot/package/perl-mime-base64-urlsafe/Config.in create mode 100644 features/buildroot/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.hash create mode 100644 features/buildroot/package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.mk create mode 100644 features/buildroot/package/perl-mime-base64/Config.in create mode 100644 features/buildroot/package/perl-mime-base64/perl-mime-base64.hash create mode 100644 features/buildroot/package/perl-mime-base64/perl-mime-base64.mk create mode 100644 features/buildroot/package/perl-mime-tools/Config.in create mode 100644 features/buildroot/package/perl-mime-tools/perl-mime-tools.hash create mode 100644 features/buildroot/package/perl-mime-tools/perl-mime-tools.mk create mode 100644 features/buildroot/package/perl-module-build-tiny/perl-module-build-tiny.hash create mode 100644 features/buildroot/package/perl-module-build-tiny/perl-module-build-tiny.mk create mode 100644 features/buildroot/package/perl-module-build/perl-module-build.hash create mode 100644 features/buildroot/package/perl-module-build/perl-module-build.mk create mode 100644 features/buildroot/package/perl-module-implementation/Config.in create mode 100644 features/buildroot/package/perl-module-implementation/perl-module-implementation.hash create mode 100644 features/buildroot/package/perl-module-implementation/perl-module-implementation.mk create mode 100644 features/buildroot/package/perl-module-runtime/Config.in create mode 100644 features/buildroot/package/perl-module-runtime/perl-module-runtime.hash create mode 100644 features/buildroot/package/perl-module-runtime/perl-module-runtime.mk create mode 100644 features/buildroot/package/perl-mojolicious-plugin-authentication/Config.in create mode 100644 features/buildroot/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.hash create mode 100644 features/buildroot/package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk create mode 100644 features/buildroot/package/perl-mojolicious/Config.in create mode 100644 features/buildroot/package/perl-mojolicious/perl-mojolicious.hash create mode 100644 features/buildroot/package/perl-mojolicious/perl-mojolicious.mk create mode 100644 features/buildroot/package/perl-moo/Config.in create mode 100644 features/buildroot/package/perl-moo/perl-moo.hash create mode 100644 features/buildroot/package/perl-moo/perl-moo.mk create mode 100644 features/buildroot/package/perl-net-dns/Config.in create mode 100644 features/buildroot/package/perl-net-dns/perl-net-dns.hash create mode 100644 features/buildroot/package/perl-net-dns/perl-net-dns.mk create mode 100644 features/buildroot/package/perl-net-http/Config.in create mode 100644 features/buildroot/package/perl-net-http/perl-net-http.hash create mode 100644 features/buildroot/package/perl-net-http/perl-net-http.mk create mode 100644 features/buildroot/package/perl-net-ping/Config.in create mode 100644 features/buildroot/package/perl-net-ping/perl-net-ping.hash create mode 100644 features/buildroot/package/perl-net-ping/perl-net-ping.mk create mode 100644 features/buildroot/package/perl-net-snmp/Config.in create mode 100644 features/buildroot/package/perl-net-snmp/perl-net-snmp.hash create mode 100644 features/buildroot/package/perl-net-snmp/perl-net-snmp.mk create mode 100644 features/buildroot/package/perl-net-ssh2/Config.in create mode 100644 features/buildroot/package/perl-net-ssh2/perl-net-ssh2.hash create mode 100644 features/buildroot/package/perl-net-ssh2/perl-net-ssh2.mk create mode 100644 features/buildroot/package/perl-net-ssleay/0001-fix-build-system.patch create mode 100644 features/buildroot/package/perl-net-ssleay/Config.in create mode 100644 features/buildroot/package/perl-net-ssleay/perl-net-ssleay.hash create mode 100644 features/buildroot/package/perl-net-ssleay/perl-net-ssleay.mk create mode 100644 features/buildroot/package/perl-net-telnet/Config.in create mode 100644 features/buildroot/package/perl-net-telnet/perl-net-telnet.hash create mode 100644 features/buildroot/package/perl-net-telnet/perl-net-telnet.mk create mode 100644 features/buildroot/package/perl-netaddr-ip/Config.in create mode 100644 features/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash create mode 100644 features/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk create mode 100644 features/buildroot/package/perl-number-bytes-human/Config.in create mode 100644 features/buildroot/package/perl-number-bytes-human/perl-number-bytes-human.hash create mode 100644 features/buildroot/package/perl-number-bytes-human/perl-number-bytes-human.mk create mode 100644 features/buildroot/package/perl-package-stash/Config.in create mode 100644 features/buildroot/package/perl-package-stash/perl-package-stash.hash create mode 100644 features/buildroot/package/perl-package-stash/perl-package-stash.mk create mode 100644 features/buildroot/package/perl-params-util/Config.in create mode 100644 features/buildroot/package/perl-params-util/perl-params-util.hash create mode 100644 features/buildroot/package/perl-params-util/perl-params-util.mk create mode 100644 features/buildroot/package/perl-path-tiny/Config.in create mode 100644 features/buildroot/package/perl-path-tiny/perl-path-tiny.hash create mode 100644 features/buildroot/package/perl-path-tiny/perl-path-tiny.mk create mode 100644 features/buildroot/package/perl-plack/Config.in create mode 100644 features/buildroot/package/perl-plack/perl-plack.hash create mode 100644 features/buildroot/package/perl-plack/perl-plack.mk create mode 100644 features/buildroot/package/perl-posix-strftime-compiler/Config.in create mode 100644 features/buildroot/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.hash create mode 100644 features/buildroot/package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.mk create mode 100644 features/buildroot/package/perl-role-tiny/Config.in create mode 100644 features/buildroot/package/perl-role-tiny/perl-role-tiny.hash create mode 100644 features/buildroot/package/perl-role-tiny/perl-role-tiny.mk create mode 100644 features/buildroot/package/perl-stream-buffered/Config.in create mode 100644 features/buildroot/package/perl-stream-buffered/perl-stream-buffered.hash create mode 100644 features/buildroot/package/perl-stream-buffered/perl-stream-buffered.mk create mode 100644 features/buildroot/package/perl-sub-exporter-progressive/Config.in create mode 100644 features/buildroot/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.hash create mode 100644 features/buildroot/package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.mk create mode 100644 features/buildroot/package/perl-sub-install/Config.in create mode 100644 features/buildroot/package/perl-sub-install/perl-sub-install.hash create mode 100644 features/buildroot/package/perl-sub-install/perl-sub-install.mk create mode 100644 features/buildroot/package/perl-sub-quote/Config.in create mode 100644 features/buildroot/package/perl-sub-quote/perl-sub-quote.hash create mode 100644 features/buildroot/package/perl-sub-quote/perl-sub-quote.mk create mode 100644 features/buildroot/package/perl-sys-cpu/0001-remove-extraneous-include.patch create mode 100644 features/buildroot/package/perl-sys-cpu/Config.in create mode 100644 features/buildroot/package/perl-sys-cpu/perl-sys-cpu.hash create mode 100644 features/buildroot/package/perl-sys-cpu/perl-sys-cpu.mk create mode 100644 features/buildroot/package/perl-sys-meminfo/Config.in create mode 100644 features/buildroot/package/perl-sys-meminfo/perl-sys-meminfo.hash create mode 100644 features/buildroot/package/perl-sys-meminfo/perl-sys-meminfo.mk create mode 100644 features/buildroot/package/perl-sys-mmap/Config.in create mode 100644 features/buildroot/package/perl-sys-mmap/perl-sys-mmap.hash create mode 100644 features/buildroot/package/perl-sys-mmap/perl-sys-mmap.mk create mode 100644 features/buildroot/package/perl-time-parsedate/Config.in create mode 100644 features/buildroot/package/perl-time-parsedate/perl-time-parsedate.hash create mode 100644 features/buildroot/package/perl-time-parsedate/perl-time-parsedate.mk create mode 100644 features/buildroot/package/perl-timedate/Config.in create mode 100644 features/buildroot/package/perl-timedate/perl-timedate.hash create mode 100644 features/buildroot/package/perl-timedate/perl-timedate.mk create mode 100644 features/buildroot/package/perl-try-tiny/Config.in create mode 100644 features/buildroot/package/perl-try-tiny/perl-try-tiny.hash create mode 100644 features/buildroot/package/perl-try-tiny/perl-try-tiny.mk create mode 100644 features/buildroot/package/perl-type-tiny/Config.in create mode 100644 features/buildroot/package/perl-type-tiny/perl-type-tiny.hash create mode 100644 features/buildroot/package/perl-type-tiny/perl-type-tiny.mk create mode 100644 features/buildroot/package/perl-uri/Config.in create mode 100644 features/buildroot/package/perl-uri/perl-uri.hash create mode 100644 features/buildroot/package/perl-uri/perl-uri.mk create mode 100644 features/buildroot/package/perl-www-form-urlencoded/Config.in create mode 100644 features/buildroot/package/perl-www-form-urlencoded/perl-www-form-urlencoded.hash create mode 100644 features/buildroot/package/perl-www-form-urlencoded/perl-www-form-urlencoded.mk create mode 100644 features/buildroot/package/perl-www-robotrules/Config.in create mode 100644 features/buildroot/package/perl-www-robotrules/perl-www-robotrules.hash create mode 100644 features/buildroot/package/perl-www-robotrules/perl-www-robotrules.mk create mode 100644 features/buildroot/package/perl-x10/Config.in create mode 100644 features/buildroot/package/perl-x10/perl-x10.hash create mode 100644 features/buildroot/package/perl-x10/perl-x10.mk create mode 100644 features/buildroot/package/perl-xml-libxml/0001-Makefile-PL.patch create mode 100644 features/buildroot/package/perl-xml-libxml/Config.in create mode 100644 features/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash create mode 100644 features/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk create mode 100644 features/buildroot/package/perl-xml-namespacesupport/Config.in create mode 100644 features/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash create mode 100644 features/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk create mode 100644 features/buildroot/package/perl-xml-sax-base/Config.in create mode 100644 features/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.hash create mode 100644 features/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.mk create mode 100644 features/buildroot/package/perl-xml-sax/Config.in create mode 100644 features/buildroot/package/perl-xml-sax/perl-xml-sax.hash create mode 100644 features/buildroot/package/perl-xml-sax/perl-xml-sax.mk create mode 100644 features/buildroot/package/perl/0001-fix-the-generated-subdirectory-Makefiles.patch create mode 100644 features/buildroot/package/perl/Config.in create mode 100644 features/buildroot/package/perl/perl.hash create mode 100644 features/buildroot/package/perl/perl.mk create mode 100644 features/buildroot/package/phidgetwebservice/Config.in create mode 100644 features/buildroot/package/phidgetwebservice/phidgetwebservice.hash create mode 100644 features/buildroot/package/phidgetwebservice/phidgetwebservice.mk create mode 100644 features/buildroot/package/php-amqp/Config.in create mode 100644 features/buildroot/package/php-amqp/php-amqp.hash create mode 100644 features/buildroot/package/php-amqp/php-amqp.mk create mode 100644 features/buildroot/package/php-geoip/Config.in create mode 100644 features/buildroot/package/php-geoip/php-geoip.hash create mode 100644 features/buildroot/package/php-geoip/php-geoip.mk create mode 100644 features/buildroot/package/php-gnupg/Config.in create mode 100644 features/buildroot/package/php-gnupg/php-gnupg.hash create mode 100644 features/buildroot/package/php-gnupg/php-gnupg.mk create mode 100644 features/buildroot/package/php-imagick/Config.in create mode 100644 features/buildroot/package/php-imagick/php-imagick.hash create mode 100644 features/buildroot/package/php-imagick/php-imagick.mk create mode 100644 features/buildroot/package/php-memcached/Config.in create mode 100644 features/buildroot/package/php-memcached/php-memcached.hash create mode 100644 features/buildroot/package/php-memcached/php-memcached.mk create mode 100644 features/buildroot/package/php-ssh2/0001-fix-php_url-fields-usage-for-PHP-7-3.patch create mode 100644 features/buildroot/package/php-ssh2/0002-dstogov-Fixed-PHP7-port-Restored-commented-reference-counting.patch create mode 100644 features/buildroot/package/php-ssh2/Config.in create mode 100644 features/buildroot/package/php-ssh2/php-ssh2.hash create mode 100644 features/buildroot/package/php-ssh2/php-ssh2.mk create mode 100644 features/buildroot/package/php-yaml/Config.in create mode 100644 features/buildroot/package/php-yaml/php-yaml.hash create mode 100644 features/buildroot/package/php-yaml/php-yaml.mk create mode 100644 features/buildroot/package/php-zmq/0001-PHP-7.3-compatibility-and-bugfixes.patch create mode 100644 features/buildroot/package/php-zmq/Config.in create mode 100644 features/buildroot/package/php-zmq/php-zmq.hash create mode 100644 features/buildroot/package/php-zmq/php-zmq.mk create mode 100644 features/buildroot/package/php/0001-acinclude.m4-don-t-unset-variables.patch create mode 100644 features/buildroot/package/php/0002-iconv-tweak-iconv-detection.patch create mode 100644 features/buildroot/package/php/0003-configure-disable-the-phar-tool.patch create mode 100644 features/buildroot/package/php/0004-Call-apxs-with-correct-prefix.patch create mode 100644 features/buildroot/package/php/0006-ext-pcre-config0.m4-add-ac_cv_have_pcre2_jit-variabl.patch create mode 100644 features/buildroot/package/php/Config.ext create mode 100644 features/buildroot/package/php/Config.in create mode 100644 features/buildroot/package/php/php-fpm.conf create mode 100644 features/buildroot/package/php/php.hash create mode 100644 features/buildroot/package/php/php.mk create mode 100644 features/buildroot/package/physfs/Config.in create mode 100644 features/buildroot/package/physfs/physfs.hash create mode 100644 features/buildroot/package/physfs/physfs.mk create mode 100644 features/buildroot/package/phytool/Config.in create mode 100644 features/buildroot/package/phytool/phytool.hash create mode 100644 features/buildroot/package/phytool/phytool.mk create mode 100644 features/buildroot/package/picocom/0001-Compile-with-libc-s-without-cispeed-cospeed.patch create mode 100644 features/buildroot/package/picocom/Config.in create mode 100644 features/buildroot/package/picocom/picocom.hash create mode 100644 features/buildroot/package/picocom/picocom.mk create mode 100644 features/buildroot/package/pifmrds/0001-Makefile-cross-compile-friendly.patch create mode 100644 features/buildroot/package/pifmrds/0002-Makefile-use-LDFLAGS.patch create mode 100644 features/buildroot/package/pifmrds/0003-Makefile-fix-static-link.patch create mode 100644 features/buildroot/package/pifmrds/Config.in create mode 100644 features/buildroot/package/pifmrds/pifmrds.hash create mode 100644 features/buildroot/package/pifmrds/pifmrds.mk create mode 100644 features/buildroot/package/pigpio/Config.in create mode 100644 features/buildroot/package/pigpio/pigpio.hash create mode 100644 features/buildroot/package/pigpio/pigpio.mk create mode 100644 features/buildroot/package/pigz/Config.in create mode 100644 features/buildroot/package/pigz/pigz.hash create mode 100644 features/buildroot/package/pigz/pigz.mk create mode 100644 features/buildroot/package/pimd/Config.in create mode 100644 features/buildroot/package/pimd/pimd.hash create mode 100644 features/buildroot/package/pimd/pimd.mk create mode 100644 features/buildroot/package/pinentry/Config.in create mode 100644 features/buildroot/package/pinentry/pinentry.hash create mode 100644 features/buildroot/package/pinentry/pinentry.mk create mode 100644 features/buildroot/package/pixiewps/Config.in create mode 100644 features/buildroot/package/pixiewps/pixiewps.hash create mode 100644 features/buildroot/package/pixiewps/pixiewps.mk create mode 100644 features/buildroot/package/pixman/0001-Disable-tests.patch create mode 100644 features/buildroot/package/pixman/Config.in create mode 100644 features/buildroot/package/pixman/pixman.hash create mode 100644 features/buildroot/package/pixman/pixman.mk create mode 100644 features/buildroot/package/pixz/Config.in create mode 100644 features/buildroot/package/pixz/pixz.hash create mode 100644 features/buildroot/package/pixz/pixz.mk create mode 100644 features/buildroot/package/pkg-autotools.mk create mode 100644 features/buildroot/package/pkg-cmake.mk create mode 100644 features/buildroot/package/pkg-conan.mk create mode 100644 features/buildroot/package/pkg-download.mk create mode 100644 features/buildroot/package/pkg-generic.mk create mode 100644 features/buildroot/package/pkg-golang.mk create mode 100644 features/buildroot/package/pkg-kconfig.mk create mode 100644 features/buildroot/package/pkg-kernel-module.mk create mode 100644 features/buildroot/package/pkg-luarocks.mk create mode 100644 features/buildroot/package/pkg-meson.mk create mode 100644 features/buildroot/package/pkg-perl.mk create mode 100644 features/buildroot/package/pkg-python.mk create mode 100644 features/buildroot/package/pkg-rebar.mk create mode 100644 features/buildroot/package/pkg-utils.mk create mode 100644 features/buildroot/package/pkg-virtual.mk create mode 100644 features/buildroot/package/pkg-waf.mk create mode 100644 features/buildroot/package/pkgconf/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch create mode 100644 features/buildroot/package/pkgconf/0002-Revert-main-assume-modversion-insted-of-version-if-o.patch create mode 100644 features/buildroot/package/pkgconf/Config.in create mode 100644 features/buildroot/package/pkgconf/Config.in.host create mode 100644 features/buildroot/package/pkgconf/pkg-config.in create mode 100644 features/buildroot/package/pkgconf/pkgconf.hash create mode 100644 features/buildroot/package/pkgconf/pkgconf.mk create mode 100644 features/buildroot/package/pngquant/Config.in create mode 100644 features/buildroot/package/pngquant/pngquant.hash create mode 100644 features/buildroot/package/pngquant/pngquant.mk create mode 100644 features/buildroot/package/poco/0001-poco-add-the-staging-path-to-search-path.patch create mode 100644 features/buildroot/package/poco/0002-Add-support-for-m68000-1856.patch create mode 100644 features/buildroot/package/poco/0003-Foundation-src-utils.h-backport-double-conversion-ch.patch create mode 100644 features/buildroot/package/poco/Config.in create mode 100644 features/buildroot/package/poco/poco.hash create mode 100644 features/buildroot/package/poco/poco.mk create mode 100644 features/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch create mode 100644 features/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch create mode 100644 features/buildroot/package/policycoreutils/Config.in create mode 100644 features/buildroot/package/policycoreutils/policycoreutils.hash create mode 100644 features/buildroot/package/policycoreutils/policycoreutils.mk create mode 100644 features/buildroot/package/polkit/Config.in create mode 100644 features/buildroot/package/polkit/polkit.hash create mode 100644 features/buildroot/package/polkit/polkit.mk create mode 100644 features/buildroot/package/poppler/Config.in create mode 100644 features/buildroot/package/poppler/poppler.hash create mode 100644 features/buildroot/package/poppler/poppler.mk create mode 100644 features/buildroot/package/popt/0001-no-wchar.patch create mode 100644 features/buildroot/package/popt/0002-fix-autoreconf.patch create mode 100644 features/buildroot/package/popt/0003-glob-detection.patch create mode 100644 features/buildroot/package/popt/0004-add-libiconv-to-popt.pc.patch create mode 100644 features/buildroot/package/popt/Config.in create mode 100644 features/buildroot/package/popt/popt.hash create mode 100644 features/buildroot/package/popt/popt.mk create mode 100644 features/buildroot/package/portaudio/Config.in create mode 100644 features/buildroot/package/portaudio/portaudio.hash create mode 100644 features/buildroot/package/portaudio/portaudio.mk create mode 100644 features/buildroot/package/postgresql/Config.in create mode 100644 features/buildroot/package/postgresql/S50postgresql create mode 100644 features/buildroot/package/postgresql/pg_config create mode 100644 features/buildroot/package/postgresql/postgresql.hash create mode 100644 features/buildroot/package/postgresql/postgresql.mk create mode 100644 features/buildroot/package/postgresql/postgresql.service create mode 100644 features/buildroot/package/pound/0001-fix-openssl-1.0.2.patch create mode 100644 features/buildroot/package/pound/0002-fix-openssl-1.1.0.patch create mode 100644 features/buildroot/package/pound/0003-Support-for-libressl-coexisting-with-openssl-1.1.x.patch create mode 100644 features/buildroot/package/pound/Config.in create mode 100644 features/buildroot/package/pound/pound.hash create mode 100644 features/buildroot/package/pound/pound.mk create mode 100644 features/buildroot/package/powerpc-utils/Config.in create mode 100644 features/buildroot/package/powerpc-utils/powerpc-utils.hash create mode 100644 features/buildroot/package/powerpc-utils/powerpc-utils.mk create mode 100644 features/buildroot/package/powertop/0001-dont-force-stack-smashing-protection.patch create mode 100644 features/buildroot/package/powertop/0002-wakeup_xxx.h-include-limits.h.patch create mode 100644 features/buildroot/package/powertop/Config.in create mode 100644 features/buildroot/package/powertop/powertop.hash create mode 100644 features/buildroot/package/powertop/powertop.mk create mode 100644 features/buildroot/package/powervr/Config.in create mode 100644 features/buildroot/package/powervr/powervr.mk create mode 100644 features/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch create mode 100644 features/buildroot/package/pppd/0002-pppd-Use-openssl-for-the-DES-instead-of-the-libcrypt-glibc.patch create mode 100644 features/buildroot/package/pppd/0003-Add-OPENSSL_INCLUDE_DIR.patch create mode 100644 features/buildroot/package/pppd/Config.in create mode 100644 features/buildroot/package/pppd/pppd.hash create mode 100644 features/buildroot/package/pppd/pppd.mk create mode 100644 features/buildroot/package/pps-tools/Config.in create mode 100644 features/buildroot/package/pps-tools/pps-tools.hash create mode 100644 features/buildroot/package/pps-tools/pps-tools.mk create mode 100644 features/buildroot/package/pptp-linux/0001-susv3-legacy.patch create mode 100644 features/buildroot/package/pptp-linux/0002-fix-parallel-build.patch create mode 100644 features/buildroot/package/pptp-linux/Config.in create mode 100644 features/buildroot/package/pptp-linux/pptp-linux.hash create mode 100644 features/buildroot/package/pptp-linux/pptp-linux.mk create mode 100644 features/buildroot/package/prboom/0001-libpng-1.4.patch create mode 100644 features/buildroot/package/prboom/Config.in create mode 100644 features/buildroot/package/prboom/prboom.hash create mode 100644 features/buildroot/package/prboom/prboom.mk create mode 100644 features/buildroot/package/privoxy/Config.in create mode 100644 features/buildroot/package/privoxy/privoxy.hash create mode 100644 features/buildroot/package/privoxy/privoxy.mk create mode 100644 features/buildroot/package/procps-ng/Config.in create mode 100644 features/buildroot/package/procps-ng/procps-ng.hash create mode 100644 features/buildroot/package/procps-ng/procps-ng.mk create mode 100644 features/buildroot/package/procrank_linux/Config.in create mode 100644 features/buildroot/package/procrank_linux/procrank_linux.hash create mode 100644 features/buildroot/package/procrank_linux/procrank_linux.mk create mode 100644 features/buildroot/package/proftpd/0001-fix-kernel-header-capability-version.patch create mode 100644 features/buildroot/package/proftpd/0002-fix-CVE-2019-12815.patch create mode 100644 features/buildroot/package/proftpd/Config.in create mode 100644 features/buildroot/package/proftpd/S50proftpd create mode 100644 features/buildroot/package/proftpd/proftpd.hash create mode 100644 features/buildroot/package/proftpd/proftpd.mk create mode 100644 features/buildroot/package/proftpd/proftpd.service create mode 100644 features/buildroot/package/proj/Config.in create mode 100644 features/buildroot/package/proj/proj.hash create mode 100644 features/buildroot/package/proj/proj.mk create mode 100644 features/buildroot/package/prosody/0001-enable-syslog.patch create mode 100644 features/buildroot/package/prosody/0002-add-pidfile.patch create mode 100644 features/buildroot/package/prosody/Config.in create mode 100644 features/buildroot/package/prosody/S50prosody create mode 100644 features/buildroot/package/prosody/prosody.hash create mode 100644 features/buildroot/package/prosody/prosody.mk create mode 100644 features/buildroot/package/protobuf-c/0001-Add-std-to-some-types.patch create mode 100644 features/buildroot/package/protobuf-c/0002-Fix-build-with-protobuf-3.6.x.patch create mode 100644 features/buildroot/package/protobuf-c/Config.in create mode 100644 features/buildroot/package/protobuf-c/protobuf-c.hash create mode 100644 features/buildroot/package/protobuf-c/protobuf-c.mk create mode 100644 features/buildroot/package/protobuf/0001-Fix-to-allow-a-compilation-under-mips-big-endian-wit.patch create mode 100644 features/buildroot/package/protobuf/Config.in create mode 100644 features/buildroot/package/protobuf/protobuf.hash create mode 100644 features/buildroot/package/protobuf/protobuf.mk create mode 100644 features/buildroot/package/proxychains-ng/Config.in create mode 100644 features/buildroot/package/proxychains-ng/proxychains-ng.hash create mode 100644 features/buildroot/package/proxychains-ng/proxychains-ng.mk create mode 100644 features/buildroot/package/pru-software-support/Config.in create mode 100644 features/buildroot/package/pru-software-support/Config.in.host create mode 100644 features/buildroot/package/pru-software-support/pru-software-support.hash create mode 100644 features/buildroot/package/pru-software-support/pru-software-support.mk create mode 100644 features/buildroot/package/pru-software-support/readme.txt create mode 100644 features/buildroot/package/psmisc/Config.in create mode 100644 features/buildroot/package/psmisc/psmisc.hash create mode 100644 features/buildroot/package/psmisc/psmisc.mk create mode 100644 features/buildroot/package/psplash/Config.in create mode 100644 features/buildroot/package/psplash/psplash-quit.service create mode 100644 features/buildroot/package/psplash/psplash-start.service create mode 100644 features/buildroot/package/psplash/psplash.hash create mode 100644 features/buildroot/package/psplash/psplash.mk create mode 100644 features/buildroot/package/ptpd/Config.in create mode 100644 features/buildroot/package/ptpd/S65ptpd create mode 100644 features/buildroot/package/ptpd/ptpd.hash create mode 100644 features/buildroot/package/ptpd/ptpd.mk create mode 100644 features/buildroot/package/ptpd/ptpd.service create mode 100644 features/buildroot/package/ptpd2/0001-musl.patch create mode 100644 features/buildroot/package/ptpd2/0002-ntp_isc_md5-rename-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch create mode 100644 features/buildroot/package/ptpd2/0003-Solve-issue-25-Removing-type-U64-from-net-snmp-relat.patch create mode 100644 features/buildroot/package/ptpd2/Config.in create mode 100644 features/buildroot/package/ptpd2/S65ptpd2 create mode 100644 features/buildroot/package/ptpd2/ptpd2.hash create mode 100644 features/buildroot/package/ptpd2/ptpd2.mk create mode 100644 features/buildroot/package/ptpd2/ptpd2.service create mode 100644 features/buildroot/package/pugixml/Config.in create mode 100644 features/buildroot/package/pugixml/pugixml.hash create mode 100644 features/buildroot/package/pugixml/pugixml.mk create mode 100644 features/buildroot/package/pulseaudio/Config.in create mode 100644 features/buildroot/package/pulseaudio/S50pulseaudio create mode 100644 features/buildroot/package/pulseaudio/pulseaudio.hash create mode 100644 features/buildroot/package/pulseaudio/pulseaudio.mk create mode 100644 features/buildroot/package/pulseaudio/pulseaudio.service create mode 100644 features/buildroot/package/pulseview/0001-mainbar-fix-build-without-libsigrokdecode.patch create mode 100644 features/buildroot/package/pulseview/Config.in create mode 100644 features/buildroot/package/pulseview/pulseview.hash create mode 100644 features/buildroot/package/pulseview/pulseview.mk create mode 100644 features/buildroot/package/pure-ftpd/Config.in create mode 100644 features/buildroot/package/pure-ftpd/pure-ftpd.hash create mode 100644 features/buildroot/package/pure-ftpd/pure-ftpd.mk create mode 100644 features/buildroot/package/putty/Config.in create mode 100644 features/buildroot/package/putty/putty.hash create mode 100644 features/buildroot/package/putty/putty.mk create mode 100644 features/buildroot/package/pv/0001-configure.in-tighten-AIX-test.patch create mode 100644 features/buildroot/package/pv/Config.in create mode 100644 features/buildroot/package/pv/pv.hash create mode 100644 features/buildroot/package/pv/pv.mk create mode 100644 features/buildroot/package/pwgen/Config.in create mode 100644 features/buildroot/package/pwgen/Config.in.host create mode 100644 features/buildroot/package/pwgen/pwgen.hash create mode 100644 features/buildroot/package/pwgen/pwgen.mk create mode 100644 features/buildroot/package/python-aioblescan/Config.in create mode 100644 features/buildroot/package/python-aioblescan/python-aioblescan.hash create mode 100644 features/buildroot/package/python-aioblescan/python-aioblescan.mk create mode 100644 features/buildroot/package/python-aiocoap/Config.in create mode 100644 features/buildroot/package/python-aiocoap/python-aiocoap.hash create mode 100644 features/buildroot/package/python-aiocoap/python-aiocoap.mk create mode 100644 features/buildroot/package/python-aioconsole/Config.in create mode 100644 features/buildroot/package/python-aioconsole/python-aioconsole.hash create mode 100644 features/buildroot/package/python-aioconsole/python-aioconsole.mk create mode 100644 features/buildroot/package/python-aiodns/Config.in create mode 100644 features/buildroot/package/python-aiodns/python-aiodns.hash create mode 100644 features/buildroot/package/python-aiodns/python-aiodns.mk create mode 100644 features/buildroot/package/python-aiohttp-cors/Config.in create mode 100644 features/buildroot/package/python-aiohttp-cors/python-aiohttp-cors.hash create mode 100644 features/buildroot/package/python-aiohttp-cors/python-aiohttp-cors.mk create mode 100644 features/buildroot/package/python-aiohttp-jinja2/Config.in create mode 100644 features/buildroot/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash create mode 100644 features/buildroot/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk create mode 100644 features/buildroot/package/python-aiohttp-remotes/Config.in create mode 100644 features/buildroot/package/python-aiohttp-remotes/python-aiohttp-remotes.hash create mode 100644 features/buildroot/package/python-aiohttp-remotes/python-aiohttp-remotes.mk create mode 100644 features/buildroot/package/python-aiohttp-security/Config.in create mode 100644 features/buildroot/package/python-aiohttp-security/python-aiohttp-security.hash create mode 100644 features/buildroot/package/python-aiohttp-security/python-aiohttp-security.mk create mode 100644 features/buildroot/package/python-aiohttp-session/Config.in create mode 100644 features/buildroot/package/python-aiohttp-session/python-aiohttp-session.hash create mode 100644 features/buildroot/package/python-aiohttp-session/python-aiohttp-session.mk create mode 100644 features/buildroot/package/python-aiohttp-sse/Config.in create mode 100644 features/buildroot/package/python-aiohttp-sse/python-aiohttp-sse.hash create mode 100644 features/buildroot/package/python-aiohttp-sse/python-aiohttp-sse.mk create mode 100644 features/buildroot/package/python-aiohttp/Config.in create mode 100644 features/buildroot/package/python-aiohttp/python-aiohttp.hash create mode 100644 features/buildroot/package/python-aiohttp/python-aiohttp.mk create mode 100644 features/buildroot/package/python-aiojobs/Config.in create mode 100644 features/buildroot/package/python-aiojobs/python-aiojobs.hash create mode 100644 features/buildroot/package/python-aiojobs/python-aiojobs.mk create mode 100644 features/buildroot/package/python-aiomonitor/Config.in create mode 100644 features/buildroot/package/python-aiomonitor/python-aiomonitor.hash create mode 100644 features/buildroot/package/python-aiomonitor/python-aiomonitor.mk create mode 100644 features/buildroot/package/python-aiorwlock/Config.in create mode 100644 features/buildroot/package/python-aiorwlock/python-aiorwlock.hash create mode 100644 features/buildroot/package/python-aiorwlock/python-aiorwlock.mk create mode 100644 features/buildroot/package/python-alsaaudio/Config.in create mode 100644 features/buildroot/package/python-alsaaudio/python-alsaaudio.hash create mode 100644 features/buildroot/package/python-alsaaudio/python-alsaaudio.mk create mode 100644 features/buildroot/package/python-argh/Config.in create mode 100644 features/buildroot/package/python-argh/python-argh.hash create mode 100644 features/buildroot/package/python-argh/python-argh.mk create mode 100644 features/buildroot/package/python-arrow/Config.in create mode 100644 features/buildroot/package/python-arrow/python-arrow.hash create mode 100644 features/buildroot/package/python-arrow/python-arrow.mk create mode 100644 features/buildroot/package/python-asn1crypto/Config.in create mode 100644 features/buildroot/package/python-asn1crypto/python-asn1crypto.hash create mode 100644 features/buildroot/package/python-asn1crypto/python-asn1crypto.mk create mode 100644 features/buildroot/package/python-async-timeout/Config.in create mode 100644 features/buildroot/package/python-async-timeout/python-async-timeout.hash create mode 100644 features/buildroot/package/python-async-timeout/python-async-timeout.mk create mode 100644 features/buildroot/package/python-attrs/Config.in create mode 100644 features/buildroot/package/python-attrs/python-attrs.hash create mode 100644 features/buildroot/package/python-attrs/python-attrs.mk create mode 100644 features/buildroot/package/python-autobahn/Config.in create mode 100644 features/buildroot/package/python-autobahn/python-autobahn.hash create mode 100644 features/buildroot/package/python-autobahn/python-autobahn.mk create mode 100644 features/buildroot/package/python-automat/Config.in create mode 100644 features/buildroot/package/python-automat/python-automat.hash create mode 100644 features/buildroot/package/python-automat/python-automat.mk create mode 100644 features/buildroot/package/python-babel/Config.in create mode 100644 features/buildroot/package/python-babel/python-babel.hash create mode 100644 features/buildroot/package/python-babel/python-babel.mk create mode 100644 features/buildroot/package/python-backcall/Config.in create mode 100644 features/buildroot/package/python-backcall/python-backcall.hash create mode 100644 features/buildroot/package/python-backcall/python-backcall.mk create mode 100644 features/buildroot/package/python-backports-abc/Config.in create mode 100644 features/buildroot/package/python-backports-abc/python-backports-abc.hash create mode 100644 features/buildroot/package/python-backports-abc/python-backports-abc.mk create mode 100644 features/buildroot/package/python-backports-shutil-get-terminal-size/Config.in create mode 100644 features/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.hash create mode 100644 features/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.mk create mode 100644 features/buildroot/package/python-backports-ssl-match-hostname/Config.in create mode 100644 features/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.hash create mode 100644 features/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.mk create mode 100644 features/buildroot/package/python-bcrypt/Config.in create mode 100644 features/buildroot/package/python-bcrypt/python-bcrypt.hash create mode 100644 features/buildroot/package/python-bcrypt/python-bcrypt.mk create mode 100644 features/buildroot/package/python-beautifulsoup4/Config.in create mode 100644 features/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash create mode 100644 features/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk create mode 100644 features/buildroot/package/python-bitstring/Config.in create mode 100644 features/buildroot/package/python-bitstring/python-bitstring.hash create mode 100644 features/buildroot/package/python-bitstring/python-bitstring.mk create mode 100644 features/buildroot/package/python-bottle/Config.in create mode 100644 features/buildroot/package/python-bottle/python-bottle.hash create mode 100644 features/buildroot/package/python-bottle/python-bottle.mk create mode 100644 features/buildroot/package/python-cached-property/Config.in create mode 100644 features/buildroot/package/python-cached-property/python-cached-property.hash create mode 100644 features/buildroot/package/python-cached-property/python-cached-property.mk create mode 100644 features/buildroot/package/python-can/Config.in create mode 100644 features/buildroot/package/python-can/python-can.hash create mode 100644 features/buildroot/package/python-can/python-can.mk create mode 100644 features/buildroot/package/python-cbor/Config.in create mode 100644 features/buildroot/package/python-cbor/python-cbor.hash create mode 100644 features/buildroot/package/python-cbor/python-cbor.mk create mode 100644 features/buildroot/package/python-cchardet/Config.in create mode 100644 features/buildroot/package/python-cchardet/python-cchardet.hash create mode 100644 features/buildroot/package/python-cchardet/python-cchardet.mk create mode 100644 features/buildroot/package/python-certifi/Config.in create mode 100644 features/buildroot/package/python-certifi/python-certifi.hash create mode 100644 features/buildroot/package/python-certifi/python-certifi.mk create mode 100644 features/buildroot/package/python-cffi/Config.in create mode 100644 features/buildroot/package/python-cffi/python-cffi.hash create mode 100644 features/buildroot/package/python-cffi/python-cffi.mk create mode 100644 features/buildroot/package/python-characteristic/Config.in create mode 100644 features/buildroot/package/python-characteristic/python-characteristic.hash create mode 100644 features/buildroot/package/python-characteristic/python-characteristic.mk create mode 100644 features/buildroot/package/python-chardet/Config.in create mode 100644 features/buildroot/package/python-chardet/python-chardet.hash create mode 100644 features/buildroot/package/python-chardet/python-chardet.mk create mode 100644 features/buildroot/package/python-cheetah/Config.in create mode 100644 features/buildroot/package/python-cheetah/python-cheetah.hash create mode 100644 features/buildroot/package/python-cheetah/python-cheetah.mk create mode 100644 features/buildroot/package/python-cheroot/Config.in create mode 100644 features/buildroot/package/python-cheroot/python-cheroot.hash create mode 100644 features/buildroot/package/python-cheroot/python-cheroot.mk create mode 100644 features/buildroot/package/python-cherrypy/Config.in create mode 100644 features/buildroot/package/python-cherrypy/python-cherrypy.hash create mode 100644 features/buildroot/package/python-cherrypy/python-cherrypy.mk create mode 100644 features/buildroot/package/python-click/Config.in create mode 100644 features/buildroot/package/python-click/python-click.hash create mode 100644 features/buildroot/package/python-click/python-click.mk create mode 100644 features/buildroot/package/python-coherence/0001-Fix-twisted-detection.patch create mode 100644 features/buildroot/package/python-coherence/Config.in create mode 100644 features/buildroot/package/python-coherence/python-coherence.hash create mode 100644 features/buildroot/package/python-coherence/python-coherence.mk create mode 100644 features/buildroot/package/python-colorama/Config.in create mode 100644 features/buildroot/package/python-colorama/python-colorama.hash create mode 100644 features/buildroot/package/python-colorama/python-colorama.mk create mode 100644 features/buildroot/package/python-conan/Config.in.host create mode 100644 features/buildroot/package/python-conan/python-conan.hash create mode 100644 features/buildroot/package/python-conan/python-conan.mk create mode 100644 features/buildroot/package/python-configobj/Config.in create mode 100644 features/buildroot/package/python-configobj/python-configobj.hash create mode 100644 features/buildroot/package/python-configobj/python-configobj.mk create mode 100644 features/buildroot/package/python-configshell-fb/Config.in create mode 100644 features/buildroot/package/python-configshell-fb/python-configshell-fb.hash create mode 100644 features/buildroot/package/python-configshell-fb/python-configshell-fb.mk create mode 100644 features/buildroot/package/python-constantly/Config.in create mode 100644 features/buildroot/package/python-constantly/python-constantly.hash create mode 100644 features/buildroot/package/python-constantly/python-constantly.mk create mode 100644 features/buildroot/package/python-couchdb/Config.in create mode 100644 features/buildroot/package/python-couchdb/python-couchdb.hash create mode 100644 features/buildroot/package/python-couchdb/python-couchdb.mk create mode 100644 features/buildroot/package/python-crc16/Config.in create mode 100644 features/buildroot/package/python-crc16/python-crc16.hash create mode 100644 features/buildroot/package/python-crc16/python-crc16.mk create mode 100644 features/buildroot/package/python-crcmod/Config.in create mode 100644 features/buildroot/package/python-crcmod/python-crcmod.hash create mode 100644 features/buildroot/package/python-crcmod/python-crcmod.mk create mode 100644 features/buildroot/package/python-crossbar/0001-Avoid-intentional-syntax-error.patch create mode 100644 features/buildroot/package/python-crossbar/0002-Remove-idna-requirement.patch create mode 100644 features/buildroot/package/python-crossbar/Config.in create mode 100644 features/buildroot/package/python-crossbar/python-crossbar.hash create mode 100644 features/buildroot/package/python-crossbar/python-crossbar.mk create mode 100644 features/buildroot/package/python-cryptography/Config.in create mode 100644 features/buildroot/package/python-cryptography/python-cryptography.hash create mode 100644 features/buildroot/package/python-cryptography/python-cryptography.mk create mode 100644 features/buildroot/package/python-cssselect/Config.in create mode 100644 features/buildroot/package/python-cssselect/python-cssselect.hash create mode 100644 features/buildroot/package/python-cssselect/python-cssselect.mk create mode 100644 features/buildroot/package/python-cssutils/Config.in create mode 100644 features/buildroot/package/python-cssutils/python-cssutils.hash create mode 100644 features/buildroot/package/python-cssutils/python-cssutils.mk create mode 100644 features/buildroot/package/python-cycler/Config.in create mode 100644 features/buildroot/package/python-cycler/python-cycler.hash create mode 100644 features/buildroot/package/python-cycler/python-cycler.mk create mode 100644 features/buildroot/package/python-cython/Config.in.host create mode 100644 features/buildroot/package/python-cython/python-cython.hash create mode 100644 features/buildroot/package/python-cython/python-cython.mk create mode 100644 features/buildroot/package/python-daemon/Config.in create mode 100644 features/buildroot/package/python-daemon/python-daemon.hash create mode 100644 features/buildroot/package/python-daemon/python-daemon.mk create mode 100644 features/buildroot/package/python-daemonize/Config.in create mode 100644 features/buildroot/package/python-daemonize/python-daemonize.hash create mode 100644 features/buildroot/package/python-daemonize/python-daemonize.mk create mode 100644 features/buildroot/package/python-dataproperty/Config.in create mode 100644 features/buildroot/package/python-dataproperty/python-dataproperty.hash create mode 100644 features/buildroot/package/python-dataproperty/python-dataproperty.mk create mode 100644 features/buildroot/package/python-dateutil/Config.in create mode 100644 features/buildroot/package/python-dateutil/python-dateutil.hash create mode 100644 features/buildroot/package/python-dateutil/python-dateutil.mk create mode 100644 features/buildroot/package/python-decorator/Config.in create mode 100644 features/buildroot/package/python-decorator/python-decorator.hash create mode 100644 features/buildroot/package/python-decorator/python-decorator.mk create mode 100644 features/buildroot/package/python-dialog/Config.in create mode 100644 features/buildroot/package/python-dialog/python-dialog.hash create mode 100644 features/buildroot/package/python-dialog/python-dialog.mk create mode 100644 features/buildroot/package/python-dialog3/Config.in create mode 100644 features/buildroot/package/python-dialog3/python-dialog3.hash create mode 100644 features/buildroot/package/python-dialog3/python-dialog3.mk create mode 100644 features/buildroot/package/python-dicttoxml/Config.in create mode 100644 features/buildroot/package/python-dicttoxml/python-dicttoxml.hash create mode 100644 features/buildroot/package/python-dicttoxml/python-dicttoxml.mk create mode 100644 features/buildroot/package/python-django/Config.in create mode 100644 features/buildroot/package/python-django/python-django.hash create mode 100644 features/buildroot/package/python-django/python-django.mk create mode 100644 features/buildroot/package/python-docker-pycreds/Config.in create mode 100644 features/buildroot/package/python-docker-pycreds/python-docker-pycreds.hash create mode 100644 features/buildroot/package/python-docker-pycreds/python-docker-pycreds.mk create mode 100644 features/buildroot/package/python-docker/Config.in create mode 100644 features/buildroot/package/python-docker/python-docker.hash create mode 100644 features/buildroot/package/python-docker/python-docker.mk create mode 100644 features/buildroot/package/python-dockerpty/Config.in create mode 100644 features/buildroot/package/python-dockerpty/python-dockerpty.hash create mode 100644 features/buildroot/package/python-dockerpty/python-dockerpty.mk create mode 100644 features/buildroot/package/python-docopt/Config.in create mode 100644 features/buildroot/package/python-docopt/python-docopt.hash create mode 100644 features/buildroot/package/python-docopt/python-docopt.mk create mode 100644 features/buildroot/package/python-docutils/Config.in create mode 100644 features/buildroot/package/python-docutils/python-docutils.hash create mode 100644 features/buildroot/package/python-docutils/python-docutils.mk create mode 100644 features/buildroot/package/python-dominate/Config.in create mode 100644 features/buildroot/package/python-dominate/python-dominate.hash create mode 100644 features/buildroot/package/python-dominate/python-dominate.mk create mode 100644 features/buildroot/package/python-dpkt/Config.in create mode 100644 features/buildroot/package/python-dpkt/python-dpkt.hash create mode 100644 features/buildroot/package/python-dpkt/python-dpkt.mk create mode 100644 features/buildroot/package/python-ecdsa/Config.in create mode 100644 features/buildroot/package/python-ecdsa/python-ecdsa.hash create mode 100644 features/buildroot/package/python-ecdsa/python-ecdsa.mk create mode 100644 features/buildroot/package/python-engineio/Config.in create mode 100644 features/buildroot/package/python-engineio/python-engineio.hash create mode 100644 features/buildroot/package/python-engineio/python-engineio.mk create mode 100644 features/buildroot/package/python-enum/Config.in create mode 100644 features/buildroot/package/python-enum/python-enum.hash create mode 100644 features/buildroot/package/python-enum/python-enum.mk create mode 100644 features/buildroot/package/python-enum34/Config.in create mode 100644 features/buildroot/package/python-enum34/python-enum34.hash create mode 100644 features/buildroot/package/python-enum34/python-enum34.mk create mode 100644 features/buildroot/package/python-falcon/Config.in create mode 100644 features/buildroot/package/python-falcon/python-falcon.hash create mode 100644 features/buildroot/package/python-falcon/python-falcon.mk create mode 100644 features/buildroot/package/python-fastentrypoints/Config.in.host create mode 100644 features/buildroot/package/python-fastentrypoints/python-fastentrypoints.hash create mode 100644 features/buildroot/package/python-fastentrypoints/python-fastentrypoints.mk create mode 100644 features/buildroot/package/python-fire/Config.in create mode 100644 features/buildroot/package/python-fire/python-fire.hash create mode 100644 features/buildroot/package/python-fire/python-fire.mk create mode 100644 features/buildroot/package/python-flask-babel/Config.in create mode 100644 features/buildroot/package/python-flask-babel/python-flask-babel.hash create mode 100644 features/buildroot/package/python-flask-babel/python-flask-babel.mk create mode 100644 features/buildroot/package/python-flask-cors/Config.in create mode 100644 features/buildroot/package/python-flask-cors/python-flask-cors.hash create mode 100644 features/buildroot/package/python-flask-cors/python-flask-cors.mk create mode 100644 features/buildroot/package/python-flask-jsonrpc/Config.in create mode 100644 features/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash create mode 100644 features/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk create mode 100644 features/buildroot/package/python-flask-login/Config.in create mode 100644 features/buildroot/package/python-flask-login/python-flask-login.hash create mode 100644 features/buildroot/package/python-flask-login/python-flask-login.mk create mode 100644 features/buildroot/package/python-flask-sqlalchemy/Config.in create mode 100644 features/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash create mode 100644 features/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk create mode 100644 features/buildroot/package/python-flask/Config.in create mode 100644 features/buildroot/package/python-flask/python-flask.hash create mode 100644 features/buildroot/package/python-flask/python-flask.mk create mode 100644 features/buildroot/package/python-flup/Config.in create mode 100644 features/buildroot/package/python-flup/python-flup.hash create mode 100644 features/buildroot/package/python-flup/python-flup.mk create mode 100644 features/buildroot/package/python-functools32/Config.in create mode 100644 features/buildroot/package/python-functools32/python-functools32.hash create mode 100644 features/buildroot/package/python-functools32/python-functools32.mk create mode 100644 features/buildroot/package/python-futures/Config.in create mode 100644 features/buildroot/package/python-futures/python-futures.hash create mode 100644 features/buildroot/package/python-futures/python-futures.mk create mode 100644 features/buildroot/package/python-gobject/0001-add-PYTHON_INCLUDES-override.patch create mode 100644 features/buildroot/package/python-gobject/Config.in create mode 100644 features/buildroot/package/python-gobject/python-gobject.hash create mode 100644 features/buildroot/package/python-gobject/python-gobject.mk create mode 100644 features/buildroot/package/python-gunicorn/Config.in create mode 100644 features/buildroot/package/python-gunicorn/python-gunicorn.hash create mode 100644 features/buildroot/package/python-gunicorn/python-gunicorn.mk create mode 100644 features/buildroot/package/python-h2/Config.in create mode 100644 features/buildroot/package/python-h2/python-h2.hash create mode 100644 features/buildroot/package/python-h2/python-h2.mk create mode 100644 features/buildroot/package/python-hpack/0001-Convert-HISTORY.rst-from-UTF-8-format-to-ASCII.patch create mode 100644 features/buildroot/package/python-hpack/Config.in create mode 100644 features/buildroot/package/python-hpack/python-hpack.hash create mode 100644 features/buildroot/package/python-hpack/python-hpack.mk create mode 100644 features/buildroot/package/python-html5lib/Config.in create mode 100644 features/buildroot/package/python-html5lib/python-html5lib.hash create mode 100644 features/buildroot/package/python-html5lib/python-html5lib.mk create mode 100644 features/buildroot/package/python-httplib2/Config.in create mode 100644 features/buildroot/package/python-httplib2/python-httplib2.hash create mode 100644 features/buildroot/package/python-httplib2/python-httplib2.mk create mode 100644 features/buildroot/package/python-humanize/Config.in create mode 100644 features/buildroot/package/python-humanize/python-humanize.hash create mode 100644 features/buildroot/package/python-humanize/python-humanize.mk create mode 100644 features/buildroot/package/python-hyperframe/Config.in create mode 100644 features/buildroot/package/python-hyperframe/python-hyperframe.hash create mode 100644 features/buildroot/package/python-hyperframe/python-hyperframe.mk create mode 100644 features/buildroot/package/python-hyperlink/Config.in create mode 100644 features/buildroot/package/python-hyperlink/python-hyperlink.hash create mode 100644 features/buildroot/package/python-hyperlink/python-hyperlink.mk create mode 100644 features/buildroot/package/python-ibmiotf/Config.in create mode 100644 features/buildroot/package/python-ibmiotf/python-ibmiotf.hash create mode 100644 features/buildroot/package/python-ibmiotf/python-ibmiotf.mk create mode 100644 features/buildroot/package/python-id3/Config.in create mode 100644 features/buildroot/package/python-id3/python-id3.hash create mode 100644 features/buildroot/package/python-id3/python-id3.mk create mode 100644 features/buildroot/package/python-idna/Config.in create mode 100644 features/buildroot/package/python-idna/python-idna.hash create mode 100644 features/buildroot/package/python-idna/python-idna.mk create mode 100644 features/buildroot/package/python-incremental/Config.in create mode 100644 features/buildroot/package/python-incremental/python-incremental.hash create mode 100644 features/buildroot/package/python-incremental/python-incremental.mk create mode 100644 features/buildroot/package/python-inflection/Config.in create mode 100644 features/buildroot/package/python-inflection/python-inflection.hash create mode 100644 features/buildroot/package/python-inflection/python-inflection.mk create mode 100644 features/buildroot/package/python-influxdb/Config.in create mode 100644 features/buildroot/package/python-influxdb/python-influxdb.hash create mode 100644 features/buildroot/package/python-influxdb/python-influxdb.mk create mode 100644 features/buildroot/package/python-iniparse/Config.in create mode 100644 features/buildroot/package/python-iniparse/python-iniparse.hash create mode 100644 features/buildroot/package/python-iniparse/python-iniparse.mk create mode 100644 features/buildroot/package/python-iowait/Config.in create mode 100644 features/buildroot/package/python-iowait/python-iowait.hash create mode 100644 features/buildroot/package/python-iowait/python-iowait.mk create mode 100644 features/buildroot/package/python-ipaddr/Config.in create mode 100644 features/buildroot/package/python-ipaddr/python-ipaddr.hash create mode 100644 features/buildroot/package/python-ipaddr/python-ipaddr.mk create mode 100644 features/buildroot/package/python-ipaddress/Config.in create mode 100644 features/buildroot/package/python-ipaddress/python-ipaddress.hash create mode 100644 features/buildroot/package/python-ipaddress/python-ipaddress.mk create mode 100644 features/buildroot/package/python-iptables/Config.in create mode 100644 features/buildroot/package/python-iptables/python-iptables.hash create mode 100644 features/buildroot/package/python-iptables/python-iptables.mk create mode 100644 features/buildroot/package/python-ipy/Config.in create mode 100644 features/buildroot/package/python-ipy/python-ipy.hash create mode 100644 features/buildroot/package/python-ipy/python-ipy.mk create mode 100644 features/buildroot/package/python-ipython-genutils/Config.in create mode 100644 features/buildroot/package/python-ipython-genutils/python-ipython-genutils.hash create mode 100644 features/buildroot/package/python-ipython-genutils/python-ipython-genutils.mk create mode 100644 features/buildroot/package/python-ipython/0001-set-correct-python-executable-path.patch create mode 100644 features/buildroot/package/python-ipython/Config.in create mode 100644 features/buildroot/package/python-ipython/python-ipython.hash create mode 100644 features/buildroot/package/python-ipython/python-ipython.mk create mode 100644 features/buildroot/package/python-iso8601/Config.in create mode 100644 features/buildroot/package/python-iso8601/python-iso8601.hash create mode 100644 features/buildroot/package/python-iso8601/python-iso8601.mk create mode 100644 features/buildroot/package/python-itsdangerous/Config.in create mode 100644 features/buildroot/package/python-itsdangerous/python-itsdangerous.hash create mode 100644 features/buildroot/package/python-itsdangerous/python-itsdangerous.mk create mode 100644 features/buildroot/package/python-jaraco-classes/Config.in create mode 100644 features/buildroot/package/python-jaraco-classes/python-jaraco-classes.hash create mode 100644 features/buildroot/package/python-jaraco-classes/python-jaraco-classes.mk create mode 100644 features/buildroot/package/python-jedi/Config.in create mode 100644 features/buildroot/package/python-jedi/python-jedi.hash create mode 100644 features/buildroot/package/python-jedi/python-jedi.mk create mode 100644 features/buildroot/package/python-jinja2/Config.in create mode 100644 features/buildroot/package/python-jinja2/python-jinja2.hash create mode 100644 features/buildroot/package/python-jinja2/python-jinja2.mk create mode 100644 features/buildroot/package/python-json-schema-validator/Config.in create mode 100644 features/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash create mode 100644 features/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk create mode 100644 features/buildroot/package/python-jsonmodels/Config.in create mode 100644 features/buildroot/package/python-jsonmodels/python-jsonmodels.hash create mode 100644 features/buildroot/package/python-jsonmodels/python-jsonmodels.mk create mode 100644 features/buildroot/package/python-jsonschema/Config.in create mode 100644 features/buildroot/package/python-jsonschema/python-jsonschema.hash create mode 100644 features/buildroot/package/python-jsonschema/python-jsonschema.mk create mode 100644 features/buildroot/package/python-keyring/Config.in create mode 100644 features/buildroot/package/python-keyring/python-keyring.hash create mode 100644 features/buildroot/package/python-keyring/python-keyring.mk create mode 100644 features/buildroot/package/python-libconfig/0001-Determine-boost_python-name-depending-on-current-Pyt.patch create mode 100644 features/buildroot/package/python-libconfig/Config.in create mode 100644 features/buildroot/package/python-libconfig/python-libconfig.hash create mode 100644 features/buildroot/package/python-libconfig/python-libconfig.mk create mode 100644 features/buildroot/package/python-libusb1/Config.in create mode 100644 features/buildroot/package/python-libusb1/python-libusb1.hash create mode 100644 features/buildroot/package/python-libusb1/python-libusb1.mk create mode 100644 features/buildroot/package/python-lmdb/Config.in create mode 100644 features/buildroot/package/python-lmdb/python-lmdb.hash create mode 100644 features/buildroot/package/python-lmdb/python-lmdb.mk create mode 100644 features/buildroot/package/python-logbook/Config.in create mode 100644 features/buildroot/package/python-logbook/python-logbook.hash create mode 100644 features/buildroot/package/python-logbook/python-logbook.mk create mode 100644 features/buildroot/package/python-lxml/Config.in create mode 100644 features/buildroot/package/python-lxml/Config.in.host create mode 100644 features/buildroot/package/python-lxml/python-lxml.hash create mode 100644 features/buildroot/package/python-lxml/python-lxml.mk create mode 100644 features/buildroot/package/python-m2r/Config.in create mode 100644 features/buildroot/package/python-m2r/python-m2r.hash create mode 100644 features/buildroot/package/python-m2r/python-m2r.mk create mode 100644 features/buildroot/package/python-mad/Config.in create mode 100644 features/buildroot/package/python-mad/python-mad.hash create mode 100644 features/buildroot/package/python-mad/python-mad.mk create mode 100644 features/buildroot/package/python-mako/Config.in create mode 100644 features/buildroot/package/python-mako/python-mako.hash create mode 100644 features/buildroot/package/python-mako/python-mako.mk create mode 100644 features/buildroot/package/python-markdown/Config.in create mode 100644 features/buildroot/package/python-markdown/python-markdown.hash create mode 100644 features/buildroot/package/python-markdown/python-markdown.mk create mode 100644 features/buildroot/package/python-markdown2/Config.in create mode 100644 features/buildroot/package/python-markdown2/python-markdown2.hash create mode 100644 features/buildroot/package/python-markdown2/python-markdown2.mk create mode 100644 features/buildroot/package/python-markupsafe/Config.in create mode 100644 features/buildroot/package/python-markupsafe/python-markupsafe.hash create mode 100644 features/buildroot/package/python-markupsafe/python-markupsafe.mk create mode 100644 features/buildroot/package/python-matplotlib/0001-Fix-invalid-inclusion-headers.patch create mode 100644 features/buildroot/package/python-matplotlib/Config.in create mode 100644 features/buildroot/package/python-matplotlib/python-matplotlib.hash create mode 100644 features/buildroot/package/python-matplotlib/python-matplotlib.mk create mode 100644 features/buildroot/package/python-mbstrdecoder/Config.in create mode 100644 features/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash create mode 100644 features/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk create mode 100644 features/buildroot/package/python-meld3/Config.in create mode 100644 features/buildroot/package/python-meld3/python-meld3.hash create mode 100644 features/buildroot/package/python-meld3/python-meld3.mk create mode 100644 features/buildroot/package/python-mimeparse/Config.in create mode 100644 features/buildroot/package/python-mimeparse/python-mimeparse.hash create mode 100644 features/buildroot/package/python-mimeparse/python-mimeparse.mk create mode 100644 features/buildroot/package/python-mistune/Config.in create mode 100644 features/buildroot/package/python-mistune/python-mistune.hash create mode 100644 features/buildroot/package/python-mistune/python-mistune.mk create mode 100644 features/buildroot/package/python-more-itertools/Config.in create mode 100644 features/buildroot/package/python-more-itertools/python-more-itertools.hash create mode 100644 features/buildroot/package/python-more-itertools/python-more-itertools.mk create mode 100644 features/buildroot/package/python-msgpack/Config.in create mode 100644 features/buildroot/package/python-msgpack/python-msgpack.hash create mode 100644 features/buildroot/package/python-msgpack/python-msgpack.mk create mode 100644 features/buildroot/package/python-multidict/Config.in create mode 100644 features/buildroot/package/python-multidict/python-multidict.hash create mode 100644 features/buildroot/package/python-multidict/python-multidict.mk create mode 100644 features/buildroot/package/python-mutagen/Config.in create mode 100644 features/buildroot/package/python-mutagen/python-mutagen.hash create mode 100644 features/buildroot/package/python-mutagen/python-mutagen.mk create mode 100644 features/buildroot/package/python-mwclient/Config.in create mode 100644 features/buildroot/package/python-mwclient/python-mwclient.hash create mode 100644 features/buildroot/package/python-mwclient/python-mwclient.mk create mode 100644 features/buildroot/package/python-mwscrape/Config.in create mode 100644 features/buildroot/package/python-mwscrape/python-mwscrape.hash create mode 100644 features/buildroot/package/python-mwscrape/python-mwscrape.mk create mode 100644 features/buildroot/package/python-mwscrape2slob/Config.in create mode 100644 features/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash create mode 100644 features/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk create mode 100644 features/buildroot/package/python-netaddr/Config.in create mode 100644 features/buildroot/package/python-netaddr/python-netaddr.hash create mode 100644 features/buildroot/package/python-netaddr/python-netaddr.mk create mode 100644 features/buildroot/package/python-netifaces/Config.in create mode 100644 features/buildroot/package/python-netifaces/python-netifaces.hash create mode 100644 features/buildroot/package/python-netifaces/python-netifaces.mk create mode 100644 features/buildroot/package/python-networkmanager/Config.in create mode 100644 features/buildroot/package/python-networkmanager/python-networkmanager.hash create mode 100644 features/buildroot/package/python-networkmanager/python-networkmanager.mk create mode 100644 features/buildroot/package/python-networkx/Config.in create mode 100644 features/buildroot/package/python-networkx/python-networkx.hash create mode 100644 features/buildroot/package/python-networkx/python-networkx.mk create mode 100644 features/buildroot/package/python-nfc/Config.in create mode 100644 features/buildroot/package/python-nfc/python-nfc.hash create mode 100644 features/buildroot/package/python-nfc/python-nfc.mk create mode 100644 features/buildroot/package/python-numpy/0001-Don-t-use-fenv.h-on-uClibc.patch create mode 100644 features/buildroot/package/python-numpy/0002-FIX-no-FPU-exceptions-bits-on-ARC-glibc.patch create mode 100644 features/buildroot/package/python-numpy/Config.in create mode 100644 features/buildroot/package/python-numpy/python-numpy.hash create mode 100644 features/buildroot/package/python-numpy/python-numpy.mk create mode 100644 features/buildroot/package/python-oauthlib/Config.in create mode 100644 features/buildroot/package/python-oauthlib/python-oauthlib.hash create mode 100644 features/buildroot/package/python-oauthlib/python-oauthlib.mk create mode 100644 features/buildroot/package/python-paho-mqtt/Config.in create mode 100644 features/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash create mode 100644 features/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk create mode 100644 features/buildroot/package/python-pam/0001-dealloc.patch create mode 100644 features/buildroot/package/python-pam/0002-nofree.patch create mode 100644 features/buildroot/package/python-pam/0003-memory-errors-CVE2012-1502.patch create mode 100644 features/buildroot/package/python-pam/Config.in create mode 100644 features/buildroot/package/python-pam/python-pam.hash create mode 100644 features/buildroot/package/python-pam/python-pam.mk create mode 100644 features/buildroot/package/python-paramiko/Config.in create mode 100644 features/buildroot/package/python-paramiko/python-paramiko.hash create mode 100644 features/buildroot/package/python-paramiko/python-paramiko.mk create mode 100644 features/buildroot/package/python-parso/Config.in create mode 100644 features/buildroot/package/python-parso/python-parso.hash create mode 100644 features/buildroot/package/python-parso/python-parso.mk create mode 100644 features/buildroot/package/python-passlib/Config.in create mode 100644 features/buildroot/package/python-passlib/python-passlib.hash create mode 100644 features/buildroot/package/python-passlib/python-passlib.mk create mode 100644 features/buildroot/package/python-patch/Config.in create mode 100644 features/buildroot/package/python-patch/python-patch.hash create mode 100644 features/buildroot/package/python-patch/python-patch.mk create mode 100644 features/buildroot/package/python-pathlib2/Config.in create mode 100644 features/buildroot/package/python-pathlib2/python-pathlib2.hash create mode 100644 features/buildroot/package/python-pathlib2/python-pathlib2.mk create mode 100644 features/buildroot/package/python-pathpy/Config.in create mode 100644 features/buildroot/package/python-pathpy/python-pathpy.hash create mode 100644 features/buildroot/package/python-pathpy/python-pathpy.mk create mode 100644 features/buildroot/package/python-pathtools/Config.in create mode 100644 features/buildroot/package/python-pathtools/python-pathtools.hash create mode 100644 features/buildroot/package/python-pathtools/python-pathtools.mk create mode 100644 features/buildroot/package/python-pathvalidate/Config.in create mode 100644 features/buildroot/package/python-pathvalidate/python-pathvalidate.hash create mode 100644 features/buildroot/package/python-pathvalidate/python-pathvalidate.mk create mode 100644 features/buildroot/package/python-periphery/Config.in create mode 100644 features/buildroot/package/python-periphery/python-periphery.hash create mode 100644 features/buildroot/package/python-periphery/python-periphery.mk create mode 100644 features/buildroot/package/python-pexpect/Config.in create mode 100644 features/buildroot/package/python-pexpect/python-pexpect.hash create mode 100644 features/buildroot/package/python-pexpect/python-pexpect.mk create mode 100644 features/buildroot/package/python-pickleshare/Config.in create mode 100644 features/buildroot/package/python-pickleshare/python-pickleshare.hash create mode 100644 features/buildroot/package/python-pickleshare/python-pickleshare.mk create mode 100644 features/buildroot/package/python-pigpio/Config.in create mode 100644 features/buildroot/package/python-pigpio/python-pigpio.hash create mode 100644 features/buildroot/package/python-pigpio/python-pigpio.mk create mode 100644 features/buildroot/package/python-pillow/Config.in create mode 100644 features/buildroot/package/python-pillow/python-pillow.hash create mode 100644 features/buildroot/package/python-pillow/python-pillow.mk create mode 100644 features/buildroot/package/python-pip/Config.in create mode 100644 features/buildroot/package/python-pip/python-pip.hash create mode 100644 features/buildroot/package/python-pip/python-pip.mk create mode 100644 features/buildroot/package/python-pluginbase/Config.in create mode 100644 features/buildroot/package/python-pluginbase/Config.in.host create mode 100644 features/buildroot/package/python-pluginbase/python-pluginbase.hash create mode 100644 features/buildroot/package/python-pluginbase/python-pluginbase.mk create mode 100644 features/buildroot/package/python-ply/Config.in create mode 100644 features/buildroot/package/python-ply/python-ply.hash create mode 100644 features/buildroot/package/python-ply/python-ply.mk create mode 100644 features/buildroot/package/python-portend/Config.in create mode 100644 features/buildroot/package/python-portend/python-portend.hash create mode 100644 features/buildroot/package/python-portend/python-portend.mk create mode 100644 features/buildroot/package/python-posix-ipc/Config.in create mode 100644 features/buildroot/package/python-posix-ipc/python-posix-ipc.hash create mode 100644 features/buildroot/package/python-posix-ipc/python-posix-ipc.mk create mode 100644 features/buildroot/package/python-priority/Config.in create mode 100644 features/buildroot/package/python-priority/python-priority.hash create mode 100644 features/buildroot/package/python-priority/python-priority.mk create mode 100644 features/buildroot/package/python-prompt-toolkit/Config.in create mode 100644 features/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash create mode 100644 features/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk create mode 100644 features/buildroot/package/python-protobuf/Config.in create mode 100644 features/buildroot/package/python-protobuf/python-protobuf.hash create mode 100644 features/buildroot/package/python-protobuf/python-protobuf.mk create mode 100644 features/buildroot/package/python-psutil/Config.in create mode 100644 features/buildroot/package/python-psutil/python-psutil.hash create mode 100644 features/buildroot/package/python-psutil/python-psutil.mk create mode 100644 features/buildroot/package/python-psycopg2/Config.in create mode 100644 features/buildroot/package/python-psycopg2/python-psycopg2.hash create mode 100644 features/buildroot/package/python-psycopg2/python-psycopg2.mk create mode 100644 features/buildroot/package/python-ptyprocess/Config.in create mode 100644 features/buildroot/package/python-ptyprocess/python-ptyprocess.hash create mode 100644 features/buildroot/package/python-ptyprocess/python-ptyprocess.mk create mode 100644 features/buildroot/package/python-pudb/Config.in create mode 100644 features/buildroot/package/python-pudb/python-pudb.hash create mode 100644 features/buildroot/package/python-pudb/python-pudb.mk create mode 100644 features/buildroot/package/python-py/Config.in create mode 100644 features/buildroot/package/python-py/python-py.hash create mode 100644 features/buildroot/package/python-py/python-py.mk create mode 100644 features/buildroot/package/python-pyasn-modules/Config.in create mode 100644 features/buildroot/package/python-pyasn-modules/python-pyasn-modules.hash create mode 100644 features/buildroot/package/python-pyasn-modules/python-pyasn-modules.mk create mode 100644 features/buildroot/package/python-pyasn/Config.in create mode 100644 features/buildroot/package/python-pyasn/python-pyasn.hash create mode 100644 features/buildroot/package/python-pyasn/python-pyasn.mk create mode 100644 features/buildroot/package/python-pyasn1-modules/Config.in create mode 100644 features/buildroot/package/python-pyasn1-modules/python-pyasn1-modules.hash create mode 100644 features/buildroot/package/python-pyasn1-modules/python-pyasn1-modules.mk create mode 100644 features/buildroot/package/python-pyasn1/Config.in create mode 100644 features/buildroot/package/python-pyasn1/python-pyasn1.hash create mode 100644 features/buildroot/package/python-pyasn1/python-pyasn1.mk create mode 100644 features/buildroot/package/python-pycairo/Config.in create mode 100644 features/buildroot/package/python-pycairo/python-pycairo.hash create mode 100644 features/buildroot/package/python-pycairo/python-pycairo.mk create mode 100644 features/buildroot/package/python-pycares/Config.in create mode 100644 features/buildroot/package/python-pycares/python-pycares.hash create mode 100644 features/buildroot/package/python-pycares/python-pycares.mk create mode 100644 features/buildroot/package/python-pycli/Config.in create mode 100644 features/buildroot/package/python-pycli/python-pycli.hash create mode 100644 features/buildroot/package/python-pycli/python-pycli.mk create mode 100644 features/buildroot/package/python-pycparser/Config.in create mode 100644 features/buildroot/package/python-pycparser/python-pycparser.hash create mode 100644 features/buildroot/package/python-pycparser/python-pycparser.mk create mode 100644 features/buildroot/package/python-pycrypto/0001-remove-incorrect-header-path.patch create mode 100644 features/buildroot/package/python-pycrypto/Config.in create mode 100644 features/buildroot/package/python-pycrypto/python-pycrypto.hash create mode 100644 features/buildroot/package/python-pycrypto/python-pycrypto.mk create mode 100644 features/buildroot/package/python-pycryptodomex/Config.in create mode 100644 features/buildroot/package/python-pycryptodomex/python-pycryptodomex.hash create mode 100644 features/buildroot/package/python-pycryptodomex/python-pycryptodomex.mk create mode 100644 features/buildroot/package/python-pydal/Config.in create mode 100644 features/buildroot/package/python-pydal/python-pydal.hash create mode 100644 features/buildroot/package/python-pydal/python-pydal.mk create mode 100644 features/buildroot/package/python-pyelftools/Config.in create mode 100644 features/buildroot/package/python-pyelftools/python-pyelftools.hash create mode 100644 features/buildroot/package/python-pyelftools/python-pyelftools.mk create mode 100644 features/buildroot/package/python-pyftpdlib/Config.in create mode 100644 features/buildroot/package/python-pyftpdlib/python-pyftpdlib.hash create mode 100644 features/buildroot/package/python-pyftpdlib/python-pyftpdlib.mk create mode 100644 features/buildroot/package/python-pygame/Config.in create mode 100644 features/buildroot/package/python-pygame/python-pygame.mk create mode 100644 features/buildroot/package/python-pygments/Config.in create mode 100644 features/buildroot/package/python-pygments/python-pygments.hash create mode 100644 features/buildroot/package/python-pygments/python-pygments.mk create mode 100644 features/buildroot/package/python-pyhamcrest/Config.in create mode 100644 features/buildroot/package/python-pyhamcrest/python-pyhamcrest.hash create mode 100644 features/buildroot/package/python-pyhamcrest/python-pyhamcrest.mk create mode 100644 features/buildroot/package/python-pyicu/Config.in create mode 100644 features/buildroot/package/python-pyicu/python-pyicu.hash create mode 100644 features/buildroot/package/python-pyicu/python-pyicu.mk create mode 100644 features/buildroot/package/python-pyinotify/Config.in create mode 100644 features/buildroot/package/python-pyinotify/python-pyinotify.hash create mode 100644 features/buildroot/package/python-pyinotify/python-pyinotify.mk create mode 100644 features/buildroot/package/python-pyjwt/Config.in create mode 100644 features/buildroot/package/python-pyjwt/python-pyjwt.hash create mode 100644 features/buildroot/package/python-pyjwt/python-pyjwt.mk create mode 100644 features/buildroot/package/python-pylibftdi/0001-do-not-use-find-library.patch create mode 100644 features/buildroot/package/python-pylibftdi/Config.in create mode 100644 features/buildroot/package/python-pylibftdi/python-pylibftdi.hash create mode 100644 features/buildroot/package/python-pylibftdi/python-pylibftdi.mk create mode 100644 features/buildroot/package/python-pylru/Config.in create mode 100644 features/buildroot/package/python-pylru/python-pylru.hash create mode 100644 features/buildroot/package/python-pylru/python-pylru.mk create mode 100644 features/buildroot/package/python-pymodbus/Config.in create mode 100644 features/buildroot/package/python-pymodbus/python-pymodbus.hash create mode 100644 features/buildroot/package/python-pymodbus/python-pymodbus.mk create mode 100644 features/buildroot/package/python-pymysql/Config.in create mode 100644 features/buildroot/package/python-pymysql/python-pymysql.hash create mode 100644 features/buildroot/package/python-pymysql/python-pymysql.mk create mode 100644 features/buildroot/package/python-pynacl/Config.in create mode 100644 features/buildroot/package/python-pynacl/python-pynacl.hash create mode 100644 features/buildroot/package/python-pynacl/python-pynacl.mk create mode 100644 features/buildroot/package/python-pyopenssl/Config.in create mode 100644 features/buildroot/package/python-pyopenssl/python-pyopenssl.hash create mode 100644 features/buildroot/package/python-pyopenssl/python-pyopenssl.mk create mode 100644 features/buildroot/package/python-pyparsing/Config.in create mode 100644 features/buildroot/package/python-pyparsing/python-pyparsing.hash create mode 100644 features/buildroot/package/python-pyparsing/python-pyparsing.mk create mode 100644 features/buildroot/package/python-pyparted/Config.in create mode 100644 features/buildroot/package/python-pyparted/python-pyparted.hash create mode 100644 features/buildroot/package/python-pyparted/python-pyparted.mk create mode 100644 features/buildroot/package/python-pypcap/Config.in create mode 100644 features/buildroot/package/python-pypcap/python-pypcap.hash create mode 100644 features/buildroot/package/python-pypcap/python-pypcap.mk create mode 100644 features/buildroot/package/python-pyqrcode/Config.in create mode 100644 features/buildroot/package/python-pyqrcode/python-pyqrcode.hash create mode 100644 features/buildroot/package/python-pyqrcode/python-pyqrcode.mk create mode 100644 features/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch create mode 100644 features/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch create mode 100644 features/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch create mode 100644 features/buildroot/package/python-pyqt5/0004-drop-qttest-qtestmouse-waitforevents.patch create mode 100644 features/buildroot/package/python-pyqt5/Config.in create mode 100644 features/buildroot/package/python-pyqt5/python-pyqt5.hash create mode 100644 features/buildroot/package/python-pyqt5/python-pyqt5.mk create mode 100644 features/buildroot/package/python-pyratemp/Config.in create mode 100644 features/buildroot/package/python-pyratemp/python-pyratemp.hash create mode 100644 features/buildroot/package/python-pyratemp/python-pyratemp.mk create mode 100644 features/buildroot/package/python-pyrex/python-pyrex.hash create mode 100644 features/buildroot/package/python-pyrex/python-pyrex.mk create mode 100644 features/buildroot/package/python-pyro/Config.in create mode 100644 features/buildroot/package/python-pyro/python-pyro.hash create mode 100644 features/buildroot/package/python-pyro/python-pyro.mk create mode 100644 features/buildroot/package/python-pyroute2/Config.in create mode 100644 features/buildroot/package/python-pyroute2/python-pyroute2.hash create mode 100644 features/buildroot/package/python-pyroute2/python-pyroute2.mk create mode 100644 features/buildroot/package/python-pysendfile/Config.in create mode 100644 features/buildroot/package/python-pysendfile/python-pysendfile.hash create mode 100644 features/buildroot/package/python-pysendfile/python-pysendfile.mk create mode 100644 features/buildroot/package/python-pysmb/Config.in create mode 100644 features/buildroot/package/python-pysmb/python-pysmb.hash create mode 100644 features/buildroot/package/python-pysmb/python-pysmb.mk create mode 100644 features/buildroot/package/python-pysmi/Config.in create mode 100644 features/buildroot/package/python-pysmi/python-pysmi.hash create mode 100644 features/buildroot/package/python-pysmi/python-pysmi.mk create mode 100644 features/buildroot/package/python-pysnmp-apps/Config.in create mode 100644 features/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash create mode 100644 features/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk create mode 100644 features/buildroot/package/python-pysnmp-mibs/Config.in create mode 100644 features/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash create mode 100644 features/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk create mode 100644 features/buildroot/package/python-pysnmp/Config.in create mode 100644 features/buildroot/package/python-pysnmp/python-pysnmp.hash create mode 100644 features/buildroot/package/python-pysnmp/python-pysnmp.mk create mode 100644 features/buildroot/package/python-pysocks/Config.in create mode 100644 features/buildroot/package/python-pysocks/python-pysocks.hash create mode 100644 features/buildroot/package/python-pysocks/python-pysocks.mk create mode 100644 features/buildroot/package/python-pytablereader/Config.in create mode 100644 features/buildroot/package/python-pytablereader/python-pytablereader.hash create mode 100644 features/buildroot/package/python-pytablereader/python-pytablereader.mk create mode 100644 features/buildroot/package/python-pytablewriter/Config.in create mode 100644 features/buildroot/package/python-pytablewriter/python-pytablewriter.hash create mode 100644 features/buildroot/package/python-pytablewriter/python-pytablewriter.mk create mode 100644 features/buildroot/package/python-pytrie/Config.in create mode 100644 features/buildroot/package/python-pytrie/python-pytrie.hash create mode 100644 features/buildroot/package/python-pytrie/python-pytrie.mk create mode 100644 features/buildroot/package/python-pytz/Config.in create mode 100644 features/buildroot/package/python-pytz/python-pytz.hash create mode 100644 features/buildroot/package/python-pytz/python-pytz.mk create mode 100644 features/buildroot/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch create mode 100644 features/buildroot/package/python-pyudev/Config.in create mode 100644 features/buildroot/package/python-pyudev/python-pyudev.hash create mode 100644 features/buildroot/package/python-pyudev/python-pyudev.mk create mode 100644 features/buildroot/package/python-pyusb/Config.in create mode 100644 features/buildroot/package/python-pyusb/python-pyusb.hash create mode 100644 features/buildroot/package/python-pyusb/python-pyusb.mk create mode 100644 features/buildroot/package/python-pyxb/Config.in create mode 100644 features/buildroot/package/python-pyxb/python-pyxb.hash create mode 100644 features/buildroot/package/python-pyxb/python-pyxb.mk create mode 100644 features/buildroot/package/python-pyyaml/Config.in create mode 100644 features/buildroot/package/python-pyyaml/python-pyyaml.hash create mode 100644 features/buildroot/package/python-pyyaml/python-pyyaml.mk create mode 100644 features/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch create mode 100644 features/buildroot/package/python-pyzmq/Config.in create mode 100644 features/buildroot/package/python-pyzmq/python-pyzmq.hash create mode 100644 features/buildroot/package/python-pyzmq/python-pyzmq.mk create mode 100644 features/buildroot/package/python-raven/Config.in create mode 100644 features/buildroot/package/python-raven/python-raven.hash create mode 100644 features/buildroot/package/python-raven/python-raven.mk create mode 100644 features/buildroot/package/python-reentry/Config.in create mode 100644 features/buildroot/package/python-reentry/python-reentry.hash create mode 100644 features/buildroot/package/python-reentry/python-reentry.mk create mode 100644 features/buildroot/package/python-remi/Config.in create mode 100644 features/buildroot/package/python-remi/python-remi.hash create mode 100644 features/buildroot/package/python-remi/python-remi.mk create mode 100644 features/buildroot/package/python-request-id/Config.in create mode 100644 features/buildroot/package/python-request-id/python-request-id.hash create mode 100644 features/buildroot/package/python-request-id/python-request-id.mk create mode 100644 features/buildroot/package/python-requests-oauthlib/Config.in create mode 100644 features/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.hash create mode 100644 features/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.mk create mode 100644 features/buildroot/package/python-requests-toolbelt/Config.in create mode 100644 features/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash create mode 100644 features/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk create mode 100644 features/buildroot/package/python-requests/Config.in create mode 100644 features/buildroot/package/python-requests/python-requests.hash create mode 100644 features/buildroot/package/python-requests/python-requests.mk create mode 100644 features/buildroot/package/python-rpi-gpio/Config.in create mode 100644 features/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash create mode 100644 features/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk create mode 100644 features/buildroot/package/python-rtslib-fb/Config.in create mode 100644 features/buildroot/package/python-rtslib-fb/python-rtslib-fb.hash create mode 100644 features/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk create mode 100644 features/buildroot/package/python-scandir/Config.in create mode 100644 features/buildroot/package/python-scandir/python-scandir.hash create mode 100644 features/buildroot/package/python-scandir/python-scandir.mk create mode 100644 features/buildroot/package/python-scapy/Config.in create mode 100644 features/buildroot/package/python-scapy/python-scapy.hash create mode 100644 features/buildroot/package/python-scapy/python-scapy.mk create mode 100644 features/buildroot/package/python-scapy3k/Config.in create mode 100644 features/buildroot/package/python-scapy3k/python-scapy3k.hash create mode 100644 features/buildroot/package/python-scapy3k/python-scapy3k.mk create mode 100644 features/buildroot/package/python-schedule/Config.in create mode 100644 features/buildroot/package/python-schedule/python-schedule.hash create mode 100644 features/buildroot/package/python-schedule/python-schedule.mk create mode 100644 features/buildroot/package/python-sdnotify/Config.in create mode 100644 features/buildroot/package/python-sdnotify/python-sdnotify.hash create mode 100644 features/buildroot/package/python-sdnotify/python-sdnotify.mk create mode 100644 features/buildroot/package/python-secretstorage/Config.in create mode 100644 features/buildroot/package/python-secretstorage/python-secretstorage.hash create mode 100644 features/buildroot/package/python-secretstorage/python-secretstorage.mk create mode 100644 features/buildroot/package/python-see/Config.in create mode 100644 features/buildroot/package/python-see/python-see.hash create mode 100644 features/buildroot/package/python-see/python-see.mk create mode 100644 features/buildroot/package/python-semver/Config.in create mode 100644 features/buildroot/package/python-semver/python-semver.hash create mode 100644 features/buildroot/package/python-semver/python-semver.mk create mode 100644 features/buildroot/package/python-sentry-sdk/Config.in create mode 100644 features/buildroot/package/python-sentry-sdk/python-sentry-sdk.hash create mode 100644 features/buildroot/package/python-sentry-sdk/python-sentry-sdk.mk create mode 100644 features/buildroot/package/python-serial-asyncio/Config.in create mode 100644 features/buildroot/package/python-serial-asyncio/python-serial-asyncio.hash create mode 100644 features/buildroot/package/python-serial-asyncio/python-serial-asyncio.mk create mode 100644 features/buildroot/package/python-serial/Config.in create mode 100644 features/buildroot/package/python-serial/python-serial.hash create mode 100644 features/buildroot/package/python-serial/python-serial.mk create mode 100644 features/buildroot/package/python-service-identity/Config.in create mode 100644 features/buildroot/package/python-service-identity/python-service-identity.hash create mode 100644 features/buildroot/package/python-service-identity/python-service-identity.mk create mode 100644 features/buildroot/package/python-setproctitle/Config.in create mode 100644 features/buildroot/package/python-setproctitle/python-setproctitle.hash create mode 100644 features/buildroot/package/python-setproctitle/python-setproctitle.mk create mode 100644 features/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash create mode 100644 features/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk create mode 100644 features/buildroot/package/python-setuptools/0001-add-executable.patch create mode 100644 features/buildroot/package/python-setuptools/Config.in create mode 100644 features/buildroot/package/python-setuptools/python-setuptools.hash create mode 100644 features/buildroot/package/python-setuptools/python-setuptools.mk create mode 100644 features/buildroot/package/python-sh/Config.in create mode 100644 features/buildroot/package/python-sh/python-sh.hash create mode 100644 features/buildroot/package/python-sh/python-sh.mk create mode 100644 features/buildroot/package/python-shutilwhich/Config.in create mode 100644 features/buildroot/package/python-shutilwhich/python-shutilwhich.hash create mode 100644 features/buildroot/package/python-shutilwhich/python-shutilwhich.mk create mode 100644 features/buildroot/package/python-simpleaudio/Config.in create mode 100644 features/buildroot/package/python-simpleaudio/python-simpleaudio.hash create mode 100644 features/buildroot/package/python-simpleaudio/python-simpleaudio.mk create mode 100644 features/buildroot/package/python-simplegeneric/Config.in create mode 100644 features/buildroot/package/python-simplegeneric/python-simplegeneric.hash create mode 100644 features/buildroot/package/python-simplegeneric/python-simplegeneric.mk create mode 100644 features/buildroot/package/python-simplejson/Config.in create mode 100644 features/buildroot/package/python-simplejson/python-simplejson.hash create mode 100644 features/buildroot/package/python-simplejson/python-simplejson.mk create mode 100644 features/buildroot/package/python-simplesqlite/Config.in create mode 100644 features/buildroot/package/python-simplesqlite/python-simplesqlite.hash create mode 100644 features/buildroot/package/python-simplesqlite/python-simplesqlite.mk create mode 100644 features/buildroot/package/python-singledispatch/Config.in create mode 100644 features/buildroot/package/python-singledispatch/python-singledispatch.hash create mode 100644 features/buildroot/package/python-singledispatch/python-singledispatch.mk create mode 100644 features/buildroot/package/python-sip/Config.in create mode 100644 features/buildroot/package/python-sip/python-sip.hash create mode 100644 features/buildroot/package/python-sip/python-sip.mk create mode 100644 features/buildroot/package/python-six/Config.in create mode 100644 features/buildroot/package/python-six/Config.in.host create mode 100644 features/buildroot/package/python-six/python-six.hash create mode 100644 features/buildroot/package/python-six/python-six.mk create mode 100644 features/buildroot/package/python-slob/Config.in create mode 100644 features/buildroot/package/python-slob/python-slob.hash create mode 100644 features/buildroot/package/python-slob/python-slob.mk create mode 100644 features/buildroot/package/python-smbus-cffi/Config.in create mode 100644 features/buildroot/package/python-smbus-cffi/python-smbus-cffi.hash create mode 100644 features/buildroot/package/python-smbus-cffi/python-smbus-cffi.mk create mode 100644 features/buildroot/package/python-socketio/Config.in create mode 100644 features/buildroot/package/python-socketio/python-socketio.hash create mode 100644 features/buildroot/package/python-socketio/python-socketio.mk create mode 100644 features/buildroot/package/python-sortedcontainers/Config.in create mode 100644 features/buildroot/package/python-sortedcontainers/python-sortedcontainers.hash create mode 100644 features/buildroot/package/python-sortedcontainers/python-sortedcontainers.mk create mode 100644 features/buildroot/package/python-spidev/Config.in create mode 100644 features/buildroot/package/python-spidev/python-spidev.hash create mode 100644 features/buildroot/package/python-spidev/python-spidev.mk create mode 100644 features/buildroot/package/python-sqlalchemy/Config.in create mode 100644 features/buildroot/package/python-sqlalchemy/python-sqlalchemy.hash create mode 100644 features/buildroot/package/python-sqlalchemy/python-sqlalchemy.mk create mode 100644 features/buildroot/package/python-subprocess32/Config.in create mode 100644 features/buildroot/package/python-subprocess32/python-subprocess32.hash create mode 100644 features/buildroot/package/python-subprocess32/python-subprocess32.mk create mode 100644 features/buildroot/package/python-systemd/Config.in create mode 100644 features/buildroot/package/python-systemd/python-systemd.hash create mode 100644 features/buildroot/package/python-systemd/python-systemd.mk create mode 100644 features/buildroot/package/python-tabledata/Config.in create mode 100644 features/buildroot/package/python-tabledata/python-tabledata.hash create mode 100644 features/buildroot/package/python-tabledata/python-tabledata.mk create mode 100644 features/buildroot/package/python-tempora/Config.in create mode 100644 features/buildroot/package/python-tempora/python-tempora.hash create mode 100644 features/buildroot/package/python-tempora/python-tempora.mk create mode 100644 features/buildroot/package/python-termcolor/Config.in create mode 100644 features/buildroot/package/python-termcolor/python-termcolor.hash create mode 100644 features/buildroot/package/python-termcolor/python-termcolor.mk create mode 100644 features/buildroot/package/python-terminaltables/Config.in create mode 100644 features/buildroot/package/python-terminaltables/python-terminaltables.hash create mode 100644 features/buildroot/package/python-terminaltables/python-terminaltables.mk create mode 100644 features/buildroot/package/python-texttable/Config.in create mode 100644 features/buildroot/package/python-texttable/python-texttable.hash create mode 100644 features/buildroot/package/python-texttable/python-texttable.mk create mode 100644 features/buildroot/package/python-thrift/Config.in create mode 100644 features/buildroot/package/python-thrift/python-thrift.hash create mode 100644 features/buildroot/package/python-thrift/python-thrift.mk create mode 100644 features/buildroot/package/python-tinyrpc/Config.in create mode 100644 features/buildroot/package/python-tinyrpc/python-tinyrpc.hash create mode 100644 features/buildroot/package/python-tinyrpc/python-tinyrpc.mk create mode 100644 features/buildroot/package/python-tomako/Config.in create mode 100644 features/buildroot/package/python-tomako/python-tomako.hash create mode 100644 features/buildroot/package/python-tomako/python-tomako.mk create mode 100644 features/buildroot/package/python-toml/Config.in create mode 100644 features/buildroot/package/python-toml/python-toml.hash create mode 100644 features/buildroot/package/python-toml/python-toml.mk create mode 100644 features/buildroot/package/python-tornado/Config.in create mode 100644 features/buildroot/package/python-tornado/python-tornado.hash create mode 100644 features/buildroot/package/python-tornado/python-tornado.mk create mode 100644 features/buildroot/package/python-traitlets/Config.in create mode 100644 features/buildroot/package/python-traitlets/python-traitlets.hash create mode 100644 features/buildroot/package/python-traitlets/python-traitlets.mk create mode 100644 features/buildroot/package/python-treq/Config.in create mode 100644 features/buildroot/package/python-treq/python-treq.hash create mode 100644 features/buildroot/package/python-treq/python-treq.mk create mode 100644 features/buildroot/package/python-twisted/Config.in create mode 100644 features/buildroot/package/python-twisted/python-twisted.hash create mode 100644 features/buildroot/package/python-twisted/python-twisted.mk create mode 100644 features/buildroot/package/python-txaio/Config.in create mode 100644 features/buildroot/package/python-txaio/python-txaio.hash create mode 100644 features/buildroot/package/python-txaio/python-txaio.mk create mode 100644 features/buildroot/package/python-txdbus/Config.in create mode 100644 features/buildroot/package/python-txdbus/python-txdbus.hash create mode 100644 features/buildroot/package/python-txdbus/python-txdbus.mk create mode 100644 features/buildroot/package/python-txtorcon/Config.in create mode 100644 features/buildroot/package/python-txtorcon/python-txtorcon.hash create mode 100644 features/buildroot/package/python-txtorcon/python-txtorcon.mk create mode 100644 features/buildroot/package/python-typepy/Config.in create mode 100644 features/buildroot/package/python-typepy/python-typepy.hash create mode 100644 features/buildroot/package/python-typepy/python-typepy.mk create mode 100644 features/buildroot/package/python-typing/Config.in create mode 100644 features/buildroot/package/python-typing/python-typing.hash create mode 100644 features/buildroot/package/python-typing/python-typing.mk create mode 100644 features/buildroot/package/python-u-msgpack/Config.in create mode 100644 features/buildroot/package/python-u-msgpack/python-u-msgpack.hash create mode 100644 features/buildroot/package/python-u-msgpack/python-u-msgpack.mk create mode 100644 features/buildroot/package/python-ubjson/Config.in create mode 100644 features/buildroot/package/python-ubjson/python-ubjson.hash create mode 100644 features/buildroot/package/python-ubjson/python-ubjson.mk create mode 100644 features/buildroot/package/python-ujson/Config.in create mode 100644 features/buildroot/package/python-ujson/python-ujson.hash create mode 100644 features/buildroot/package/python-ujson/python-ujson.mk create mode 100644 features/buildroot/package/python-urllib3/Config.in create mode 100644 features/buildroot/package/python-urllib3/python-urllib3.hash create mode 100644 features/buildroot/package/python-urllib3/python-urllib3.mk create mode 100644 features/buildroot/package/python-urwid/Config.in create mode 100644 features/buildroot/package/python-urwid/python-urwid.hash create mode 100644 features/buildroot/package/python-urwid/python-urwid.mk create mode 100644 features/buildroot/package/python-uvloop/Config.in create mode 100644 features/buildroot/package/python-uvloop/python-uvloop.hash create mode 100644 features/buildroot/package/python-uvloop/python-uvloop.mk create mode 100644 features/buildroot/package/python-validators/Config.in create mode 100644 features/buildroot/package/python-validators/python-validators.hash create mode 100644 features/buildroot/package/python-validators/python-validators.mk create mode 100644 features/buildroot/package/python-vcversioner/python-vcversioner.hash create mode 100644 features/buildroot/package/python-vcversioner/python-vcversioner.mk create mode 100644 features/buildroot/package/python-versiontools/Config.in create mode 100644 features/buildroot/package/python-versiontools/python-versiontools.hash create mode 100644 features/buildroot/package/python-versiontools/python-versiontools.mk create mode 100644 features/buildroot/package/python-visitor/Config.in create mode 100644 features/buildroot/package/python-visitor/python-visitor.hash create mode 100644 features/buildroot/package/python-visitor/python-visitor.mk create mode 100644 features/buildroot/package/python-watchdog/Config.in create mode 100644 features/buildroot/package/python-watchdog/python-watchdog.hash create mode 100644 features/buildroot/package/python-watchdog/python-watchdog.mk create mode 100644 features/buildroot/package/python-wcwidth/Config.in create mode 100644 features/buildroot/package/python-wcwidth/python-wcwidth.hash create mode 100644 features/buildroot/package/python-wcwidth/python-wcwidth.mk create mode 100644 features/buildroot/package/python-web2py/Config.in create mode 100644 features/buildroot/package/python-web2py/S51web2py create mode 100644 features/buildroot/package/python-web2py/python-web2py.hash create mode 100644 features/buildroot/package/python-web2py/python-web2py.mk create mode 100644 features/buildroot/package/python-web2py/web2py.service create mode 100644 features/buildroot/package/python-webob/Config.in create mode 100644 features/buildroot/package/python-webob/python-webob.hash create mode 100644 features/buildroot/package/python-webob/python-webob.mk create mode 100644 features/buildroot/package/python-webpy/Config.in create mode 100644 features/buildroot/package/python-webpy/python-webpy.hash create mode 100644 features/buildroot/package/python-webpy/python-webpy.mk create mode 100644 features/buildroot/package/python-websocket-client/Config.in create mode 100644 features/buildroot/package/python-websocket-client/python-websocket-client.hash create mode 100644 features/buildroot/package/python-websocket-client/python-websocket-client.mk create mode 100644 features/buildroot/package/python-websockets/Config.in create mode 100644 features/buildroot/package/python-websockets/python-websockets.hash create mode 100644 features/buildroot/package/python-websockets/python-websockets.mk create mode 100644 features/buildroot/package/python-werkzeug/Config.in create mode 100644 features/buildroot/package/python-werkzeug/python-werkzeug.hash create mode 100644 features/buildroot/package/python-werkzeug/python-werkzeug.mk create mode 100644 features/buildroot/package/python-whoosh/Config.in create mode 100644 features/buildroot/package/python-whoosh/python-whoosh.hash create mode 100644 features/buildroot/package/python-whoosh/python-whoosh.mk create mode 100644 features/buildroot/package/python-wrapt/Config.in create mode 100644 features/buildroot/package/python-wrapt/python-wrapt.hash create mode 100644 features/buildroot/package/python-wrapt/python-wrapt.mk create mode 100644 features/buildroot/package/python-ws4py/Config.in create mode 100644 features/buildroot/package/python-ws4py/python-ws4py.hash create mode 100644 features/buildroot/package/python-ws4py/python-ws4py.mk create mode 100644 features/buildroot/package/python-wsaccel/Config.in create mode 100644 features/buildroot/package/python-wsaccel/python-wsaccel.hash create mode 100644 features/buildroot/package/python-wsaccel/python-wsaccel.mk create mode 100644 features/buildroot/package/python-wtforms/Config.in create mode 100644 features/buildroot/package/python-wtforms/python-wtforms.hash create mode 100644 features/buildroot/package/python-wtforms/python-wtforms.mk create mode 100644 features/buildroot/package/python-xlib/Config.in create mode 100644 features/buildroot/package/python-xlib/python-xlib.hash create mode 100644 features/buildroot/package/python-xlib/python-xlib.mk create mode 100644 features/buildroot/package/python-xlrd/Config.in create mode 100644 features/buildroot/package/python-xlrd/Config.in.host create mode 100644 features/buildroot/package/python-xlrd/python-xlrd.hash create mode 100644 features/buildroot/package/python-xlrd/python-xlrd.mk create mode 100644 features/buildroot/package/python-xlsxwriter/Config.in create mode 100644 features/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash create mode 100644 features/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk create mode 100644 features/buildroot/package/python-xlutils/Config.in create mode 100644 features/buildroot/package/python-xlutils/python-xlutils.hash create mode 100644 features/buildroot/package/python-xlutils/python-xlutils.mk create mode 100644 features/buildroot/package/python-xlwt/Config.in create mode 100644 features/buildroot/package/python-xlwt/python-xlwt.hash create mode 100644 features/buildroot/package/python-xlwt/python-xlwt.mk create mode 100644 features/buildroot/package/python-xmltodict/Config.in create mode 100644 features/buildroot/package/python-xmltodict/python-xmltodict.hash create mode 100644 features/buildroot/package/python-xmltodict/python-xmltodict.mk create mode 100644 features/buildroot/package/python-yarl/Config.in create mode 100644 features/buildroot/package/python-yarl/python-yarl.hash create mode 100644 features/buildroot/package/python-yarl/python-yarl.mk create mode 100644 features/buildroot/package/python-yieldfrom/Config.in create mode 100644 features/buildroot/package/python-yieldfrom/python-yieldfrom.hash create mode 100644 features/buildroot/package/python-yieldfrom/python-yieldfrom.mk create mode 100644 features/buildroot/package/python-zeroconf/Config.in create mode 100644 features/buildroot/package/python-zeroconf/python-zeroconf.hash create mode 100644 features/buildroot/package/python-zeroconf/python-zeroconf.mk create mode 100644 features/buildroot/package/python-zope-interface/Config.in create mode 100644 features/buildroot/package/python-zope-interface/python-zope-interface.hash create mode 100644 features/buildroot/package/python-zope-interface/python-zope-interface.mk create mode 100644 features/buildroot/package/python/0001-setup.py-do-not-add-invalid-header-locations.patch create mode 100644 features/buildroot/package/python/0002-Fix-get_python_inc-for-cross-compilation.patch create mode 100644 features/buildroot/package/python/0003-Change-the-install-location-of-_sysconfigdata.py.patch create mode 100644 features/buildroot/package/python/0004-Make-the-compilation-of-.pyc-and-.pyo-conditional.patch create mode 100644 features/buildroot/package/python/0005-Adjust-getaddrinfo-test-for-cross-compilation.patch create mode 100644 features/buildroot/package/python/0006-Add-minimal-infrastructure-to-be-able-to-disable-ext.patch create mode 100644 features/buildroot/package/python/0007-Adjust-library-header-paths-for-cross-compilation.patch create mode 100644 features/buildroot/package/python/0008-Don-t-look-in-usr-lib-termcap-for-libraries.patch create mode 100644 features/buildroot/package/python/0009-Fix-python-config-for-cross-builds.patch create mode 100644 features/buildroot/package/python/0010-Remove-the-python-symlink-install-rules.patch create mode 100644 features/buildroot/package/python/0011-Don-t-add-multiarch-paths.patch create mode 100644 features/buildroot/package/python/0012-Abort-on-failed-module-build.patch create mode 100644 features/buildroot/package/python/0013-sqlite3-fix-build-when-threads-are-not-used-availabl.patch create mode 100644 features/buildroot/package/python/0014-Serial-ioctl-workaround.patch create mode 100644 features/buildroot/package/python/0015-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch create mode 100644 features/buildroot/package/python/0016-Add-an-option-to-disable-installation-of-test-module.patch create mode 100644 features/buildroot/package/python/0017-Add-an-option-to-disable-pydoc.patch create mode 100644 features/buildroot/package/python/0018-Add-an-option-to-disable-lib2to3.patch create mode 100644 features/buildroot/package/python/0019-Add-option-to-disable-the-sqlite3-module.patch create mode 100644 features/buildroot/package/python/0020-Add-an-option-to-disable-the-tk-module.patch create mode 100644 features/buildroot/package/python/0021-Add-an-option-to-disable-the-curses-module.patch create mode 100644 features/buildroot/package/python/0022-Add-an-option-to-disable-expat.patch create mode 100644 features/buildroot/package/python/0023-Add-an-option-to-disable-CJK-codecs.patch create mode 100644 features/buildroot/package/python/0024-Add-an-option-to-disable-NIS.patch create mode 100644 features/buildroot/package/python/0025-Add-an-option-to-disable-unicodedata.patch create mode 100644 features/buildroot/package/python/0026-Add-an-option-to-disable-bsddb.patch create mode 100644 features/buildroot/package/python/0027-Add-an-option-to-disable-the-ssl-module.patch create mode 100644 features/buildroot/package/python/0028-Add-an-option-to-disable-the-bz2-module.patch create mode 100644 features/buildroot/package/python/0029-Add-an-option-to-disable-the-zlib-module.patch create mode 100644 features/buildroot/package/python/0030-Do-not-install-the-idle-editor.patch create mode 100644 features/buildroot/package/python/0031-Add-an-option-to-disable-the-ossaudiodev-module.patch create mode 100644 features/buildroot/package/python/0032-Add-option-to-disable-the-hashlib-module.patch create mode 100644 features/buildroot/package/python/0033-Add-an-option-to-disable-readline-module.patch create mode 100644 features/buildroot/package/python/0034-Override-system-locale-and-set-to-default-when-addin.patch create mode 100644 features/buildroot/package/python/0035-bpo-35907-CVE-2019-9948-urllib-rejects-local_file-sc.patch create mode 100644 features/buildroot/package/python/0036-bpo-36216-Add-check-for-characters-in-netloc-that-no.patch create mode 100644 features/buildroot/package/python/0037-3.7-bpo-36216-Only-print-test-messages-when-verbose-.patch create mode 100644 features/buildroot/package/python/0038-bpo-36742-Fixes-handling-of-pre-normalization-charac.patch create mode 100644 features/buildroot/package/python/0039-bpo-36742-Corrects-fix-to-handle-decomposition-in-us.patch create mode 100644 features/buildroot/package/python/0040-2.7-bpo-36742-Fix-urlparse.urlsplit-error-message-fo.patch create mode 100644 features/buildroot/package/python/Config.in create mode 100644 features/buildroot/package/python/python.hash create mode 100644 features/buildroot/package/python/python.mk create mode 120000 features/buildroot/package/python3-setuptools/0001-add-executable.patch create mode 120000 features/buildroot/package/python3-setuptools/python3-setuptools.hash create mode 100644 features/buildroot/package/python3-setuptools/python3-setuptools.mk create mode 100644 features/buildroot/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch create mode 100644 features/buildroot/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch create mode 100644 features/buildroot/package/python3/0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch create mode 100644 features/buildroot/package/python3/0004-Adjust-library-header-paths-for-cross-compilation.patch create mode 100644 features/buildroot/package/python3/0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch create mode 100644 features/buildroot/package/python3/0006-Don-t-add-multiarch-paths.patch create mode 100644 features/buildroot/package/python3/0007-Abort-on-failed-module-build.patch create mode 100644 features/buildroot/package/python3/0008-Serial-ioctl-workaround.patch create mode 100644 features/buildroot/package/python3/0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch create mode 100644 features/buildroot/package/python3/0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch create mode 100644 features/buildroot/package/python3/0011-Override-system-locale-and-set-to-default-when-addin.patch create mode 100644 features/buildroot/package/python3/0012-Add-importlib-fix-for-PEP-3147-issue.patch create mode 100644 features/buildroot/package/python3/0013-Add-an-option-to-disable-installation-of-test-module.patch create mode 100644 features/buildroot/package/python3/0014-Add-an-option-to-disable-pydoc.patch create mode 100644 features/buildroot/package/python3/0015-Add-an-option-to-disable-lib2to3.patch create mode 100644 features/buildroot/package/python3/0016-Add-option-to-disable-the-sqlite3-module.patch create mode 100644 features/buildroot/package/python3/0017-Add-an-option-to-disable-the-tk-module.patch create mode 100644 features/buildroot/package/python3/0018-Add-an-option-to-disable-the-curses-module.patch create mode 100644 features/buildroot/package/python3/0019-Add-an-option-to-disable-expat.patch create mode 100644 features/buildroot/package/python3/0020-Add-an-option-to-disable-CJK-codecs.patch create mode 100644 features/buildroot/package/python3/0021-Add-an-option-to-disable-NIS.patch create mode 100644 features/buildroot/package/python3/0022-Add-an-option-to-disable-unicodedata.patch create mode 100644 features/buildroot/package/python3/0023-Add-an-option-to-disable-IDLE.patch create mode 100644 features/buildroot/package/python3/0024-Add-an-option-to-disable-decimal.patch create mode 100644 features/buildroot/package/python3/0025-Add-an-option-to-disable-the-ossaudiodev-module.patch create mode 100644 features/buildroot/package/python3/0026-Add-an-option-to-disable-openssl-support.patch create mode 100644 features/buildroot/package/python3/0027-Add-an-option-to-disable-the-readline-module.patch create mode 100644 features/buildroot/package/python3/0028-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch create mode 100644 features/buildroot/package/python3/0029-python-config.sh-don-t-reassign-prefix.patch create mode 100644 features/buildroot/package/python3/0030-Fix-cross-compiling-the-uuid-module.patch create mode 100644 features/buildroot/package/python3/0031-Add-an-option-to-disable-uuid-module.patch create mode 100644 features/buildroot/package/python3/0032-fix-building-on-older-distributions.patch create mode 100644 features/buildroot/package/python3/Config.in create mode 100644 features/buildroot/package/python3/python3.hash create mode 100644 features/buildroot/package/python3/python3.mk create mode 100644 features/buildroot/package/qdecoder/Config.in create mode 100644 features/buildroot/package/qdecoder/qdecoder.hash create mode 100644 features/buildroot/package/qdecoder/qdecoder.mk create mode 100644 features/buildroot/package/qemu/3.1.0/0001-user-exec-fix-usage-of-mcontext-structure-on-ARM-uCl.patch create mode 100644 features/buildroot/package/qemu/3.1.0/0002-configure-improve-usbfs-check.patch create mode 100644 features/buildroot/package/qemu/Config.in create mode 100644 features/buildroot/package/qemu/Config.in.host create mode 100644 features/buildroot/package/qemu/qemu.hash create mode 100644 features/buildroot/package/qemu/qemu.mk create mode 100644 features/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch create mode 100644 features/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch create mode 100644 features/buildroot/package/qextserialport/Config.in create mode 100644 features/buildroot/package/qextserialport/qextserialport.hash create mode 100644 features/buildroot/package/qextserialport/qextserialport.mk create mode 100644 features/buildroot/package/qhull/Config.in create mode 100644 features/buildroot/package/qhull/qhull.hash create mode 100644 features/buildroot/package/qhull/qhull.mk create mode 100644 features/buildroot/package/qjson/Config.in create mode 100644 features/buildroot/package/qjson/qjson.hash create mode 100644 features/buildroot/package/qjson/qjson.mk create mode 100644 features/buildroot/package/qlibc/Config.in create mode 100644 features/buildroot/package/qlibc/qlibc.hash create mode 100644 features/buildroot/package/qlibc/qlibc.mk create mode 100644 features/buildroot/package/qpdf/Config.in create mode 100644 features/buildroot/package/qpdf/qpdf.hash create mode 100644 features/buildroot/package/qpdf/qpdf.mk create mode 100644 features/buildroot/package/qpid-proton/0001-PROTON-1381-PROTON-1326-Modify-openssl-DH-code-to-wo.patch create mode 100644 features/buildroot/package/qpid-proton/0002-PROTON-1326-restore-anonymous-cyphers-by-lowering-Op.patch create mode 100644 features/buildroot/package/qpid-proton/0003-PROTON-1587-fix-openssl-error-handling-causing-spuri.patch create mode 100644 features/buildroot/package/qpid-proton/0004-src-ssl-openssl-add-libressl-compatibility.patch create mode 100644 features/buildroot/package/qpid-proton/Config.in create mode 100644 features/buildroot/package/qpid-proton/qpid-proton.hash create mode 100644 features/buildroot/package/qpid-proton/qpid-proton.mk create mode 100644 features/buildroot/package/qt-webkit-kiosk/Config.in create mode 100644 features/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.hash create mode 100644 features/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.mk create mode 100644 features/buildroot/package/qt5/Config.in create mode 100644 features/buildroot/package/qt5/qt5.mk create mode 100644 features/buildroot/package/qt5/qt53d/Config.in create mode 100644 features/buildroot/package/qt5/qt53d/qt53d.hash create mode 100644 features/buildroot/package/qt5/qt53d/qt53d.mk create mode 100644 features/buildroot/package/qt5/qt5base/5.12.4/0001-qtbase-Fix-build-error-when-using-EGL.patch create mode 100644 features/buildroot/package/qt5/qt5base/5.12.4/0004-double-conversion-enable-for-microblaze.patch create mode 100644 features/buildroot/package/qt5/qt5base/5.12.4/qt5base.hash create mode 100644 features/buildroot/package/qt5/qt5base/5.6.3/0001-eglfs-rasp-pi-header-inclusion.patch create mode 100644 features/buildroot/package/qt5/qt5base/5.6.3/0002-qtbase-Fix-build-error-when-using-EGL.patch create mode 100644 features/buildroot/package/qt5/qt5base/5.6.3/0003-libressl-add-fpermissive-gcc-flag-to-allow-compilati.patch create mode 100644 features/buildroot/package/qt5/qt5base/5.6.3/qt5base.hash create mode 100644 features/buildroot/package/qt5/qt5base/Config.in create mode 100644 features/buildroot/package/qt5/qt5base/qmake.conf.in create mode 100644 features/buildroot/package/qt5/qt5base/qplatformdefs.h create mode 100644 features/buildroot/package/qt5/qt5base/qt.conf.in create mode 100644 features/buildroot/package/qt5/qt5base/qt5base.hash create mode 100644 features/buildroot/package/qt5/qt5base/qt5base.mk create mode 100644 features/buildroot/package/qt5/qt5canvas3d/Config.in create mode 100644 features/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash create mode 100644 features/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk create mode 100644 features/buildroot/package/qt5/qt5charts/Config.in create mode 100644 features/buildroot/package/qt5/qt5charts/qt5charts.hash create mode 100644 features/buildroot/package/qt5/qt5charts/qt5charts.mk create mode 100644 features/buildroot/package/qt5/qt5connectivity/5.12.4/qt5connectivity.hash create mode 100644 features/buildroot/package/qt5/qt5connectivity/5.6.3/qt5connectivity.hash create mode 100644 features/buildroot/package/qt5/qt5connectivity/Config.in create mode 100644 features/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash create mode 100644 features/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk create mode 100644 features/buildroot/package/qt5/qt5declarative/5.12.4/0001-qsgtexture-fix-debug-build-with-uclibc.patch create mode 100644 features/buildroot/package/qt5/qt5declarative/5.6.3/0001-examples-photoviewer-needs-widgets-support.patch create mode 100644 features/buildroot/package/qt5/qt5declarative/5.6.3/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch create mode 100644 features/buildroot/package/qt5/qt5declarative/Config.in create mode 100644 features/buildroot/package/qt5/qt5declarative/qt5declarative.hash create mode 100644 features/buildroot/package/qt5/qt5declarative/qt5declarative.mk create mode 100644 features/buildroot/package/qt5/qt5enginio/Config.in create mode 100644 features/buildroot/package/qt5/qt5enginio/qt5enginio.hash create mode 100644 features/buildroot/package/qt5/qt5enginio/qt5enginio.mk create mode 100644 features/buildroot/package/qt5/qt5graphicaleffects/Config.in create mode 100644 features/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash create mode 100644 features/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk create mode 100644 features/buildroot/package/qt5/qt5imageformats/Config.in create mode 100644 features/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash create mode 100644 features/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk create mode 100644 features/buildroot/package/qt5/qt5location/Config.in create mode 100644 features/buildroot/package/qt5/qt5location/qt5location.hash create mode 100644 features/buildroot/package/qt5/qt5location/qt5location.mk create mode 100644 features/buildroot/package/qt5/qt5multimedia/Config.in create mode 100644 features/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash create mode 100644 features/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk create mode 100644 features/buildroot/package/qt5/qt5quickcontrols/Config.in create mode 100644 features/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash create mode 100644 features/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk create mode 100644 features/buildroot/package/qt5/qt5quickcontrols2/5.12.4/qt5quickcontrols2.hash create mode 100644 features/buildroot/package/qt5/qt5quickcontrols2/5.6.3/qt5quickcontrols2.hash create mode 100644 features/buildroot/package/qt5/qt5quickcontrols2/Config.in create mode 100644 features/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash create mode 100644 features/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk create mode 100644 features/buildroot/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch create mode 100644 features/buildroot/package/qt5/qt5script/Config.in create mode 100644 features/buildroot/package/qt5/qt5script/qt5script.hash create mode 100644 features/buildroot/package/qt5/qt5script/qt5script.mk create mode 100644 features/buildroot/package/qt5/qt5scxml/Config.in create mode 100644 features/buildroot/package/qt5/qt5scxml/qt5scxml.hash create mode 100644 features/buildroot/package/qt5/qt5scxml/qt5scxml.mk create mode 100644 features/buildroot/package/qt5/qt5sensors/Config.in create mode 100644 features/buildroot/package/qt5/qt5sensors/qt5sensors.hash create mode 100644 features/buildroot/package/qt5/qt5sensors/qt5sensors.mk create mode 100644 features/buildroot/package/qt5/qt5serialbus/5.12.4/qt5serialbus.hash create mode 100644 features/buildroot/package/qt5/qt5serialbus/5.6.3/qt5serialbus.hash create mode 100644 features/buildroot/package/qt5/qt5serialbus/Config.in create mode 100644 features/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash create mode 100644 features/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk create mode 100644 features/buildroot/package/qt5/qt5serialport/5.12.4/qt5serialport.hash create mode 100644 features/buildroot/package/qt5/qt5serialport/5.6.3/qt5serialport.hash create mode 100644 features/buildroot/package/qt5/qt5serialport/Config.in create mode 100644 features/buildroot/package/qt5/qt5serialport/qt5serialport.hash create mode 100644 features/buildroot/package/qt5/qt5serialport/qt5serialport.mk create mode 100644 features/buildroot/package/qt5/qt5svg/Config.in create mode 100644 features/buildroot/package/qt5/qt5svg/qt5svg.hash create mode 100644 features/buildroot/package/qt5/qt5svg/qt5svg.mk create mode 100644 features/buildroot/package/qt5/qt5tools/Config.in create mode 100644 features/buildroot/package/qt5/qt5tools/qt5tools.hash create mode 100644 features/buildroot/package/qt5/qt5tools/qt5tools.mk create mode 100644 features/buildroot/package/qt5/qt5virtualkeyboard/2.0/0001-remove-weird-install-path-for-example.patch create mode 100644 features/buildroot/package/qt5/qt5virtualkeyboard/2.0/qt5virtualkeyboard.hash create mode 100644 features/buildroot/package/qt5/qt5virtualkeyboard/5.12.4/qt5virtualkeyboard.hash create mode 100644 features/buildroot/package/qt5/qt5virtualkeyboard/Config.in create mode 100644 features/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash create mode 100644 features/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk create mode 100644 features/buildroot/package/qt5/qt5wayland/Config.in create mode 100644 features/buildroot/package/qt5/qt5wayland/qt5wayland.hash create mode 100644 features/buildroot/package/qt5/qt5wayland/qt5wayland.mk create mode 100644 features/buildroot/package/qt5/qt5webchannel/Config.in create mode 100644 features/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash create mode 100644 features/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk create mode 100644 features/buildroot/package/qt5/qt5webengine/5.12.4/qt5webengine.hash create mode 100644 features/buildroot/package/qt5/qt5webengine/5.6.3/0001-Change-default-SSL-directory.patch create mode 100644 features/buildroot/package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch create mode 100644 features/buildroot/package/qt5/qt5webengine/5.6.3/qt5webengine.hash create mode 100644 features/buildroot/package/qt5/qt5webengine/Config.in create mode 100644 features/buildroot/package/qt5/qt5webengine/chromium-latest.inc create mode 100644 features/buildroot/package/qt5/qt5webengine/chromium-lts.inc create mode 100644 features/buildroot/package/qt5/qt5webengine/host-pkg-config.in create mode 100644 features/buildroot/package/qt5/qt5webengine/qt5webengine.mk create mode 100644 features/buildroot/package/qt5/qt5webkit-examples/0001-Build-examples.patch create mode 100644 features/buildroot/package/qt5/qt5webkit-examples/0002-Fix-QWebView-path.patch create mode 100644 features/buildroot/package/qt5/qt5webkit-examples/Config.in create mode 100644 features/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.hash create mode 100644 features/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk create mode 100644 features/buildroot/package/qt5/qt5webkit/5.6.3/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.6.3/0002-Remove-TEXTREL-tag-in-x86.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.6.3/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.6.3/0004-Fix-compilation-with-ICU-59.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.9.1/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.9.1/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/5.9.1/0005-Fix-installation-of-class-headers.patch create mode 100644 features/buildroot/package/qt5/qt5webkit/Config.in create mode 100644 features/buildroot/package/qt5/qt5webkit/qt5webkit.hash create mode 100644 features/buildroot/package/qt5/qt5webkit/qt5webkit.mk create mode 100644 features/buildroot/package/qt5/qt5websockets/Config.in create mode 100644 features/buildroot/package/qt5/qt5websockets/qt5websockets.hash create mode 100644 features/buildroot/package/qt5/qt5websockets/qt5websockets.mk create mode 100644 features/buildroot/package/qt5/qt5x11extras/5.12.4/qt5x11extras.hash create mode 100644 features/buildroot/package/qt5/qt5x11extras/5.6.3/qt5x11extras.hash create mode 100644 features/buildroot/package/qt5/qt5x11extras/Config.in create mode 100644 features/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk create mode 100644 features/buildroot/package/qt5/qt5xmlpatterns/Config.in create mode 100644 features/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash create mode 100644 features/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk create mode 100644 features/buildroot/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch create mode 100755 features/buildroot/package/qt5cinex/CinematicExperience-demo create mode 100644 features/buildroot/package/qt5cinex/Config.in create mode 100644 features/buildroot/package/qt5cinex/qt5cinex.hash create mode 100644 features/buildroot/package/qt5cinex/qt5cinex.mk create mode 100644 features/buildroot/package/quagga/0001-fix-ipctl-forwarding.patch create mode 100644 features/buildroot/package/quagga/Config.in create mode 100644 features/buildroot/package/quagga/quagga.hash create mode 100644 features/buildroot/package/quagga/quagga.mk create mode 100644 features/buildroot/package/quagga/quagga@.service create mode 100644 features/buildroot/package/quagga/quagga_tmpfiles.conf create mode 100644 features/buildroot/package/quazip/Config.in create mode 100644 features/buildroot/package/quazip/quazip.hash create mode 100644 features/buildroot/package/quazip/quazip.mk create mode 100644 features/buildroot/package/quota/0001-configure.ac-add-disable-pie-option.patch create mode 100644 features/buildroot/package/quota/Config.in create mode 100644 features/buildroot/package/quota/quota.hash create mode 100644 features/buildroot/package/quota/quota.mk create mode 100644 features/buildroot/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch create mode 100644 features/buildroot/package/quotatool/Config.in create mode 100644 features/buildroot/package/quotatool/quotatool.hash create mode 100644 features/buildroot/package/quotatool/quotatool.mk create mode 100644 features/buildroot/package/qwt/Config.in create mode 100644 features/buildroot/package/qwt/qwt.hash create mode 100644 features/buildroot/package/qwt/qwt.mk create mode 100644 features/buildroot/package/rabbitmq-c/Config.in create mode 100644 features/buildroot/package/rabbitmq-c/rabbitmq-c.hash create mode 100644 features/buildroot/package/rabbitmq-c/rabbitmq-c.mk create mode 100644 features/buildroot/package/rabbitmq-server/Config.in create mode 100644 features/buildroot/package/rabbitmq-server/S50rabbitmq-server create mode 100644 features/buildroot/package/rabbitmq-server/rabbitmq-server.hash create mode 100644 features/buildroot/package/rabbitmq-server/rabbitmq-server.mk create mode 100644 features/buildroot/package/rabbitmq-server/rabbitmq-server.service create mode 100644 features/buildroot/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch create mode 100644 features/buildroot/package/racehound/Config.in create mode 100644 features/buildroot/package/racehound/racehound.hash create mode 100644 features/buildroot/package/racehound/racehound.mk create mode 100644 features/buildroot/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch create mode 100644 features/buildroot/package/radvd/Config.in create mode 100644 features/buildroot/package/radvd/S50radvd create mode 100644 features/buildroot/package/radvd/radvd.hash create mode 100644 features/buildroot/package/radvd/radvd.mk create mode 100644 features/buildroot/package/ramsmp/Config.in create mode 100644 features/buildroot/package/ramsmp/Makefile create mode 100644 features/buildroot/package/ramsmp/ramsmp.hash create mode 100644 features/buildroot/package/ramsmp/ramsmp.mk create mode 100644 features/buildroot/package/ramspeed/Config.in create mode 100644 features/buildroot/package/ramspeed/Makefile create mode 100644 features/buildroot/package/ramspeed/ramspeed.hash create mode 100644 features/buildroot/package/ramspeed/ramspeed.mk create mode 100644 features/buildroot/package/ranger/0001-colorscheme-check-for-compiled-python-files.patch create mode 100644 features/buildroot/package/ranger/Config.in create mode 100644 features/buildroot/package/ranger/ranger.hash create mode 100644 features/buildroot/package/ranger/ranger.mk create mode 100644 features/buildroot/package/rapidjson/Config.in create mode 100644 features/buildroot/package/rapidjson/rapidjson.hash create mode 100644 features/buildroot/package/rapidjson/rapidjson.mk create mode 100644 features/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch create mode 100644 features/buildroot/package/rapidxml/Config.in create mode 100644 features/buildroot/package/rapidxml/rapidxml.hash create mode 100644 features/buildroot/package/rapidxml/rapidxml.mk create mode 100644 features/buildroot/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch create mode 100644 features/buildroot/package/raptor/Config.in create mode 100644 features/buildroot/package/raptor/raptor.hash create mode 100644 features/buildroot/package/raptor/raptor.mk create mode 100644 features/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch create mode 100644 features/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch create mode 100644 features/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch create mode 100644 features/buildroot/package/raspberrypi-usbboot/Config.in.host create mode 100644 features/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash create mode 100644 features/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk create mode 100644 features/buildroot/package/ratpoison/Config.in create mode 100644 features/buildroot/package/ratpoison/ratpoison.hash create mode 100644 features/buildroot/package/ratpoison/ratpoison.mk create mode 100644 features/buildroot/package/rauc/Config.in create mode 100644 features/buildroot/package/rauc/Config.in.host create mode 100644 features/buildroot/package/rauc/rauc.hash create mode 100644 features/buildroot/package/rauc/rauc.mk create mode 100644 features/buildroot/package/rcw/Config.in.host create mode 100644 features/buildroot/package/rcw/rcw.hash create mode 100644 features/buildroot/package/rcw/rcw.mk create mode 100644 features/buildroot/package/rdesktop/0001-8bit-colors.patch create mode 100644 features/buildroot/package/rdesktop/Config.in create mode 100644 features/buildroot/package/rdesktop/rdesktop.hash create mode 100644 features/buildroot/package/rdesktop/rdesktop.mk create mode 100644 features/buildroot/package/read-edid/0001-Fix-install-file-list.patch create mode 100644 features/buildroot/package/read-edid/0002-Fix-compiler-check.patch create mode 100644 features/buildroot/package/read-edid/Config.in create mode 100644 features/buildroot/package/read-edid/read-edid.hash create mode 100644 features/buildroot/package/read-edid/read-edid.mk create mode 100644 features/buildroot/package/readline/0000-curses-link.patch create mode 100644 features/buildroot/package/readline/Config.in create mode 100644 features/buildroot/package/readline/inputrc create mode 100644 features/buildroot/package/readline/readline.hash create mode 100644 features/buildroot/package/readline/readline.mk create mode 100644 features/buildroot/package/reaver/0001-fix-271.patch create mode 100644 features/buildroot/package/reaver/Config.in create mode 100644 features/buildroot/package/reaver/reaver.hash create mode 100644 features/buildroot/package/reaver/reaver.mk create mode 100644 features/buildroot/package/redis/0001-uclibc.patch create mode 100644 features/buildroot/package/redis/0002-largefile-conditional-define.patch create mode 100644 features/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch create mode 100644 features/buildroot/package/redis/Config.in create mode 100644 features/buildroot/package/redis/S50redis create mode 100644 features/buildroot/package/redis/redis.hash create mode 100644 features/buildroot/package/redis/redis.mk create mode 100644 features/buildroot/package/redis/redis.service create mode 100644 features/buildroot/package/refpolicy/Config.in create mode 100644 features/buildroot/package/refpolicy/config create mode 100644 features/buildroot/package/refpolicy/refpolicy.hash create mode 100644 features/buildroot/package/refpolicy/refpolicy.mk create mode 100644 features/buildroot/package/restorecond/Config.in create mode 100644 features/buildroot/package/restorecond/restorecond.hash create mode 100644 features/buildroot/package/restorecond/restorecond.mk create mode 100644 features/buildroot/package/rhash/Config.in create mode 100644 features/buildroot/package/rhash/rhash.hash create mode 100644 features/buildroot/package/rhash/rhash.mk create mode 100644 features/buildroot/package/riemann-c-client/Config.in create mode 100644 features/buildroot/package/riemann-c-client/riemann-c-client.hash create mode 100644 features/buildroot/package/riemann-c-client/riemann-c-client.mk create mode 100644 features/buildroot/package/rings/Config.in create mode 100644 features/buildroot/package/rings/rings.hash create mode 100644 features/buildroot/package/rings/rings.mk create mode 100644 features/buildroot/package/rng-tools/0001-rngd-exit-code.patch create mode 100644 features/buildroot/package/rng-tools/Config.in create mode 100644 features/buildroot/package/rng-tools/S21rngd create mode 100644 features/buildroot/package/rng-tools/rng-tools.hash create mode 100644 features/buildroot/package/rng-tools/rng-tools.mk create mode 100644 features/buildroot/package/rng-tools/rngd.service create mode 100644 features/buildroot/package/rp-pppoe/0002-krn-plugin.patch create mode 100644 features/buildroot/package/rp-pppoe/Config.in create mode 100644 features/buildroot/package/rp-pppoe/rp-pppoe.hash create mode 100644 features/buildroot/package/rp-pppoe/rp-pppoe.mk create mode 100644 features/buildroot/package/rpcbind/0001-Remove-yellow-pages-support.patch create mode 100644 features/buildroot/package/rpcbind/0002-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch create mode 100644 features/buildroot/package/rpcbind/0003-src-remove-use-of-the-__P-macro.patch create mode 100644 features/buildroot/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch create mode 100644 features/buildroot/package/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch create mode 100644 features/buildroot/package/rpcbind/0006-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch create mode 100644 features/buildroot/package/rpcbind/Config.in create mode 100644 features/buildroot/package/rpcbind/S30rpcbind create mode 100644 features/buildroot/package/rpcbind/rpcbind.hash create mode 100644 features/buildroot/package/rpcbind/rpcbind.mk create mode 100644 features/buildroot/package/rpcbind/rpcbind.service create mode 100644 features/buildroot/package/rpcbind/rpcbind.socket create mode 100644 features/buildroot/package/rpi-bt-firmware/Config.in create mode 100644 features/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash create mode 100644 features/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk create mode 100644 features/buildroot/package/rpi-firmware/Config.in create mode 100644 features/buildroot/package/rpi-firmware/cmdline.txt create mode 100644 features/buildroot/package/rpi-firmware/config.txt create mode 100644 features/buildroot/package/rpi-firmware/rpi-firmware.hash create mode 100644 features/buildroot/package/rpi-firmware/rpi-firmware.mk create mode 100644 features/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch create mode 100644 features/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch create mode 100644 features/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch create mode 100644 features/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch create mode 100644 features/buildroot/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch create mode 100644 features/buildroot/package/rpi-userland/Config.in create mode 100644 features/buildroot/package/rpi-userland/S94vcfiled create mode 100644 features/buildroot/package/rpi-userland/rpi-userland.hash create mode 100644 features/buildroot/package/rpi-userland/rpi-userland.mk create mode 100644 features/buildroot/package/rpi-userland/vcfiled.service create mode 100644 features/buildroot/package/rpi-wifi-firmware/Config.in create mode 100644 features/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash create mode 100644 features/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk create mode 100644 features/buildroot/package/rpm/0001-Rip-out-partial-support-for-unused-MD2-and-RIPEMD160-digests.patch create mode 100644 features/buildroot/package/rpm/0002-rpmio-digest_nss.c-fix-build-on-musl.patch create mode 100644 features/buildroot/package/rpm/Config.in create mode 100644 features/buildroot/package/rpm/rpm.hash create mode 100644 features/buildroot/package/rpm/rpm.mk create mode 100644 features/buildroot/package/rrdtool/Config.in create mode 100644 features/buildroot/package/rrdtool/rrdtool.hash create mode 100644 features/buildroot/package/rrdtool/rrdtool.mk create mode 100644 features/buildroot/package/rs485conf/Config.in create mode 100644 features/buildroot/package/rs485conf/rs485conf.hash create mode 100644 features/buildroot/package/rs485conf/rs485conf.mk create mode 100644 features/buildroot/package/rsh-redone/Config.in create mode 100644 features/buildroot/package/rsh-redone/rsh-redone.hash create mode 100644 features/buildroot/package/rsh-redone/rsh-redone.mk create mode 100644 features/buildroot/package/rsync/Config.in create mode 100644 features/buildroot/package/rsync/rsync.hash create mode 100644 features/buildroot/package/rsync/rsync.mk create mode 100644 features/buildroot/package/rsyslog/Config.in create mode 100644 features/buildroot/package/rsyslog/S01rsyslogd create mode 100644 features/buildroot/package/rsyslog/rsyslog.hash create mode 100644 features/buildroot/package/rsyslog/rsyslog.mk create mode 100644 features/buildroot/package/rt-tests/0001-Fix-various-minor-issues-with-rt-tests-build-system.patch create mode 100644 features/buildroot/package/rt-tests/0002-Fix-a-build-issue-with-uClibc-ng.patch create mode 100644 features/buildroot/package/rt-tests/0003-Add-syscall-number-for-sched_-gs-etattr-for-SH4.patch create mode 100644 features/buildroot/package/rt-tests/Config.in create mode 100644 features/buildroot/package/rt-tests/rt-tests.hash create mode 100644 features/buildroot/package/rt-tests/rt-tests.mk create mode 100644 features/buildroot/package/rtai/Config.in create mode 100644 features/buildroot/package/rtai/rtai.hash create mode 100644 features/buildroot/package/rtai/rtai.mk create mode 100644 features/buildroot/package/rtc-tools/Config.in create mode 100644 features/buildroot/package/rtc-tools/rtc-tools.hash create mode 100644 features/buildroot/package/rtc-tools/rtc-tools.mk create mode 100644 features/buildroot/package/rtl8188eu/Config.in create mode 100644 features/buildroot/package/rtl8188eu/rtl8188eu.hash create mode 100644 features/buildroot/package/rtl8188eu/rtl8188eu.mk create mode 100644 features/buildroot/package/rtl8189fs/Config.in create mode 100644 features/buildroot/package/rtl8189fs/rtl8189fs.hash create mode 100644 features/buildroot/package/rtl8189fs/rtl8189fs.mk create mode 100644 features/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch create mode 100644 features/buildroot/package/rtl8723bs/Config.in create mode 100644 features/buildroot/package/rtl8723bs/rtl8723bs.mk create mode 100644 features/buildroot/package/rtl8723bu/Config.in create mode 100644 features/buildroot/package/rtl8723bu/rtl8723bu.hash create mode 100644 features/buildroot/package/rtl8723bu/rtl8723bu.mk create mode 100644 features/buildroot/package/rtl8821au/Config.in create mode 100644 features/buildroot/package/rtl8821au/rtl8821au.hash create mode 100644 features/buildroot/package/rtl8821au/rtl8821au.mk create mode 100644 features/buildroot/package/rtmpdump/0001-include-limits.h.patch create mode 100644 features/buildroot/package/rtmpdump/Config.in create mode 100644 features/buildroot/package/rtmpdump/rtmpdump.hash create mode 100644 features/buildroot/package/rtmpdump/rtmpdump.mk create mode 100644 features/buildroot/package/rtorrent/Config.in create mode 100644 features/buildroot/package/rtorrent/rtorrent.hash create mode 100644 features/buildroot/package/rtorrent/rtorrent.mk create mode 100644 features/buildroot/package/rtptools/Config.in create mode 100644 features/buildroot/package/rtptools/rtptools.hash create mode 100644 features/buildroot/package/rtptools/rtptools.mk create mode 100644 features/buildroot/package/rubix/0001-dont-use-legacy-functions.patch create mode 100644 features/buildroot/package/rubix/0002-misc-fixes.patch create mode 100644 features/buildroot/package/rubix/Config.in create mode 100644 features/buildroot/package/rubix/rubix.hash create mode 100644 features/buildroot/package/rubix/rubix.mk create mode 100644 features/buildroot/package/ruby/Config.in create mode 100644 features/buildroot/package/ruby/ruby.hash create mode 100644 features/buildroot/package/ruby/ruby.mk create mode 100644 features/buildroot/package/runc/Config.in create mode 100644 features/buildroot/package/runc/runc.hash create mode 100644 features/buildroot/package/runc/runc.mk create mode 100644 features/buildroot/package/rust-bin/rust-bin.hash create mode 100644 features/buildroot/package/rust-bin/rust-bin.mk create mode 100644 features/buildroot/package/rust/0001-Workaround-presence-of-LLVM-library-in-stage0-lib.patch create mode 100644 features/buildroot/package/rust/rust.hash create mode 100644 features/buildroot/package/rust/rust.mk create mode 100644 features/buildroot/package/rustc/Config.in.host create mode 100644 features/buildroot/package/rustc/rustc.mk create mode 100644 features/buildroot/package/rygel/Config.in create mode 100644 features/buildroot/package/rygel/S99rygel create mode 100644 features/buildroot/package/rygel/rygel.hash create mode 100644 features/buildroot/package/rygel/rygel.mk create mode 100644 features/buildroot/package/rygel/rygel.service create mode 100644 features/buildroot/package/s6-dns/Config.in create mode 100644 features/buildroot/package/s6-dns/s6-dns.hash create mode 100644 features/buildroot/package/s6-dns/s6-dns.mk create mode 100644 features/buildroot/package/s6-linux-init/Config.in create mode 100644 features/buildroot/package/s6-linux-init/s6-linux-init.hash create mode 100644 features/buildroot/package/s6-linux-init/s6-linux-init.mk create mode 100644 features/buildroot/package/s6-linux-utils/Config.in create mode 100644 features/buildroot/package/s6-linux-utils/s6-linux-utils.hash create mode 100644 features/buildroot/package/s6-linux-utils/s6-linux-utils.mk create mode 100644 features/buildroot/package/s6-networking/Config.in create mode 100644 features/buildroot/package/s6-networking/s6-networking.hash create mode 100644 features/buildroot/package/s6-networking/s6-networking.mk create mode 100644 features/buildroot/package/s6-portable-utils/Config.in create mode 100644 features/buildroot/package/s6-portable-utils/s6-portable-utils.hash create mode 100644 features/buildroot/package/s6-portable-utils/s6-portable-utils.mk create mode 100644 features/buildroot/package/s6-rc/Config.in create mode 100644 features/buildroot/package/s6-rc/Config.in.host create mode 100644 features/buildroot/package/s6-rc/s6-rc.hash create mode 100644 features/buildroot/package/s6-rc/s6-rc.mk create mode 100644 features/buildroot/package/s6/Config.in create mode 100644 features/buildroot/package/s6/s6.hash create mode 100644 features/buildroot/package/s6/s6.mk create mode 100644 features/buildroot/package/safeclib/0001-Add-disable-doc-option.patch create mode 100644 features/buildroot/package/safeclib/0002-add-pic_flag-to-RETPOLINE-cflags-and-ldflags.patch create mode 100644 features/buildroot/package/safeclib/Config.in create mode 100644 features/buildroot/package/safeclib/safeclib.hash create mode 100644 features/buildroot/package/safeclib/safeclib.mk create mode 100644 features/buildroot/package/sam-ba/Config.in.host create mode 100644 features/buildroot/package/sam-ba/sam-ba.hash create mode 100644 features/buildroot/package/sam-ba/sam-ba.mk create mode 100644 features/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch create mode 100644 features/buildroot/package/samba4/0002-Fix-uClibc-build-on-64bit-platforms-by-including-std.patch create mode 100644 features/buildroot/package/samba4/0003-test_regfio.c-include-stdint.h-before-cmoka.h.patch create mode 100644 features/buildroot/package/samba4/0004-cross_compile-fix.patch create mode 100644 features/buildroot/package/samba4/0005-disable_gnutls_build_fix.patch create mode 100644 features/buildroot/package/samba4/0006-fix_unistd_incl.patch create mode 100644 features/buildroot/package/samba4/0007-heimdal_build-wscript_build-do-not-add-host-include-.patch create mode 100644 features/buildroot/package/samba4/Config.in create mode 100644 features/buildroot/package/samba4/S91smb create mode 100644 features/buildroot/package/samba4/samba4-cache.txt create mode 100644 features/buildroot/package/samba4/samba4.hash create mode 100644 features/buildroot/package/samba4/samba4.mk create mode 100644 features/buildroot/package/sane-backends/0001-sane_backend-add-missing-config.h.patch create mode 100644 features/buildroot/package/sane-backends/Config.in create mode 100644 features/buildroot/package/sane-backends/sane-backends.hash create mode 100644 features/buildroot/package/sane-backends/sane-backends.mk create mode 100644 features/buildroot/package/sane-backends/saned.socket create mode 100644 features/buildroot/package/sane-backends/saned@.service create mode 100644 features/buildroot/package/sbc/Config.in create mode 100644 features/buildroot/package/sbc/sbc.hash create mode 100644 features/buildroot/package/sbc/sbc.mk create mode 100644 features/buildroot/package/sconeserver/Config.in create mode 100644 features/buildroot/package/sconeserver/sconeserver.hash create mode 100644 features/buildroot/package/sconeserver/sconeserver.mk create mode 100644 features/buildroot/package/scons/scons.hash create mode 100644 features/buildroot/package/scons/scons.mk create mode 100644 features/buildroot/package/screen/0001-compiler-sanity-checks.patch create mode 100644 features/buildroot/package/screen/0002-no-memcpy-fallback.patch create mode 100644 features/buildroot/package/screen/0003-cross-compilation-AC_TRY_RUN.patch create mode 100644 features/buildroot/package/screen/0004-cross-compilation-ignore-host-fs.patch create mode 100644 features/buildroot/package/screen/0005-avoid-identifying-as-SVR4.patch create mode 100644 features/buildroot/package/screen/0006-install-no-backup-binary.patch create mode 100644 features/buildroot/package/screen/0007-install-always-chmod.patch create mode 100644 features/buildroot/package/screen/0008-install-nonversioned-binary.patch create mode 100644 features/buildroot/package/screen/0009-rename-sched_h.patch create mode 100644 features/buildroot/package/screen/0010-comm-h-now-depends-on-term-h.patch create mode 100644 features/buildroot/package/screen/0011-comm.h-needed-for-list_-display-generic-.o.patch create mode 100644 features/buildroot/package/screen/Config.in create mode 100644 features/buildroot/package/screen/screen.hash create mode 100644 features/buildroot/package/screen/screen.mk create mode 100644 features/buildroot/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch create mode 100644 features/buildroot/package/scrub/Config.in create mode 100644 features/buildroot/package/scrub/scrub.hash create mode 100644 features/buildroot/package/scrub/scrub.mk create mode 100644 features/buildroot/package/scrypt/Config.in create mode 100644 features/buildroot/package/scrypt/scrypt.hash create mode 100644 features/buildroot/package/scrypt/scrypt.mk create mode 100644 features/buildroot/package/sdl/0001-use-correct-directfb-config.patch create mode 100644 features/buildroot/package/sdl/0002-fix-compilation-with-libx11.patch create mode 100644 features/buildroot/package/sdl/Config.in create mode 100644 features/buildroot/package/sdl/sdl.hash create mode 100644 features/buildroot/package/sdl/sdl.mk create mode 100644 features/buildroot/package/sdl2/0001-fix-build-with-disable-threads.patch create mode 100644 features/buildroot/package/sdl2/Config.in create mode 100644 features/buildroot/package/sdl2/sdl2.hash create mode 100644 features/buildroot/package/sdl2/sdl2.mk create mode 100644 features/buildroot/package/sdl2_gfx/Config.in create mode 100644 features/buildroot/package/sdl2_gfx/sdl2_gfx.hash create mode 100644 features/buildroot/package/sdl2_gfx/sdl2_gfx.mk create mode 100644 features/buildroot/package/sdl2_image/Config.in create mode 100644 features/buildroot/package/sdl2_image/sdl2_image.hash create mode 100644 features/buildroot/package/sdl2_image/sdl2_image.mk create mode 100644 features/buildroot/package/sdl2_mixer/Config.in create mode 100644 features/buildroot/package/sdl2_mixer/sdl2_mixer.hash create mode 100644 features/buildroot/package/sdl2_mixer/sdl2_mixer.mk create mode 100644 features/buildroot/package/sdl2_net/Config.in create mode 100644 features/buildroot/package/sdl2_net/sdl2_net.hash create mode 100644 features/buildroot/package/sdl2_net/sdl2_net.mk create mode 100644 features/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch create mode 100644 features/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch create mode 100644 features/buildroot/package/sdl2_ttf/Config.in create mode 100644 features/buildroot/package/sdl2_ttf/sdl2_ttf.hash create mode 100644 features/buildroot/package/sdl2_ttf/sdl2_ttf.mk create mode 100644 features/buildroot/package/sdl_gfx/Config.in create mode 100644 features/buildroot/package/sdl_gfx/sdl_gfx.hash create mode 100644 features/buildroot/package/sdl_gfx/sdl_gfx.mk create mode 100644 features/buildroot/package/sdl_image/Config.in create mode 100644 features/buildroot/package/sdl_image/sdl_image.hash create mode 100644 features/buildroot/package/sdl_image/sdl_image.mk create mode 100644 features/buildroot/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch create mode 100644 features/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch create mode 100644 features/buildroot/package/sdl_mixer/Config.in create mode 100644 features/buildroot/package/sdl_mixer/sdl_mixer.hash create mode 100644 features/buildroot/package/sdl_mixer/sdl_mixer.mk create mode 100644 features/buildroot/package/sdl_net/Config.in create mode 100644 features/buildroot/package/sdl_net/sdl_net.hash create mode 100644 features/buildroot/package/sdl_net/sdl_net.mk create mode 100644 features/buildroot/package/sdl_sound/0001-fix-constness.patch create mode 100644 features/buildroot/package/sdl_sound/0002-remove-werror.patch create mode 100644 features/buildroot/package/sdl_sound/0003-renamed-physfs-export.patch create mode 100644 features/buildroot/package/sdl_sound/Config.in create mode 100644 features/buildroot/package/sdl_sound/sdl_sound.hash create mode 100644 features/buildroot/package/sdl_sound/sdl_sound.mk create mode 100644 features/buildroot/package/sdl_ttf/Config.in create mode 100644 features/buildroot/package/sdl_ttf/sdl_ttf.hash create mode 100644 features/buildroot/package/sdl_ttf/sdl_ttf.mk create mode 100644 features/buildroot/package/sdparm/Config.in create mode 100644 features/buildroot/package/sdparm/sdparm.hash create mode 100644 features/buildroot/package/sdparm/sdparm.mk create mode 100644 features/buildroot/package/sed/Config.in create mode 100644 features/buildroot/package/sed/sed.hash create mode 100644 features/buildroot/package/sed/sed.mk create mode 100644 features/buildroot/package/sedutil/0001-Common-log.h-time-2-needs-time.h.patch create mode 100644 features/buildroot/package/sedutil/Config.in create mode 100644 features/buildroot/package/sedutil/sedutil.hash create mode 100644 features/buildroot/package/sedutil/sedutil.mk create mode 100644 features/buildroot/package/selinux-python/Config.in create mode 100644 features/buildroot/package/selinux-python/selinux-python.hash create mode 100644 features/buildroot/package/selinux-python/selinux-python.mk create mode 100644 features/buildroot/package/semodule-utils/Config.in create mode 100644 features/buildroot/package/semodule-utils/semodule-utils.hash create mode 100644 features/buildroot/package/semodule-utils/semodule-utils.mk create mode 100644 features/buildroot/package/ser2net/Config.in create mode 100644 features/buildroot/package/ser2net/S50ser2net create mode 100644 features/buildroot/package/ser2net/ser2net.hash create mode 100644 features/buildroot/package/ser2net/ser2net.mk create mode 100644 features/buildroot/package/setools/0001-remove-werror-flag-from-setup.patch create mode 100644 features/buildroot/package/setools/0002-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch create mode 100644 features/buildroot/package/setools/0003-setup.py-drop-path-prefix-from-man-install.patch create mode 100644 features/buildroot/package/setools/Config.in create mode 100644 features/buildroot/package/setools/setools.hash create mode 100644 features/buildroot/package/setools/setools.mk create mode 100644 features/buildroot/package/setserial/0001-build-system-fix.patch create mode 100644 features/buildroot/package/setserial/0002-tiocghayesesp-build-fix.patch create mode 100644 features/buildroot/package/setserial/Config.in create mode 100644 features/buildroot/package/setserial/setserial.hash create mode 100644 features/buildroot/package/setserial/setserial.mk create mode 100644 features/buildroot/package/sg3_utils/0001-support-uclinux-as-a-linux.patch create mode 100644 features/buildroot/package/sg3_utils/0002-src-Makefile.am-add-missing-RT_LIB-for-sg_turs.patch create mode 100644 features/buildroot/package/sg3_utils/Config.in create mode 100644 features/buildroot/package/sg3_utils/sg3_utils.hash create mode 100644 features/buildroot/package/sg3_utils/sg3_utils.mk create mode 100644 features/buildroot/package/shadowsocks-libev/Config.in create mode 100644 features/buildroot/package/shadowsocks-libev/shadowsocks-libev.hash create mode 100644 features/buildroot/package/shadowsocks-libev/shadowsocks-libev.mk create mode 100644 features/buildroot/package/shairport-sync/Config.in create mode 100644 features/buildroot/package/shairport-sync/S99shairport-sync create mode 100644 features/buildroot/package/shairport-sync/shairport-sync.hash create mode 100644 features/buildroot/package/shairport-sync/shairport-sync.mk create mode 100644 features/buildroot/package/shapelib/Config.in create mode 100644 features/buildroot/package/shapelib/shapelib.hash create mode 100644 features/buildroot/package/shapelib/shapelib.mk create mode 100644 features/buildroot/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch create mode 100644 features/buildroot/package/shared-mime-info/Config.in create mode 100644 features/buildroot/package/shared-mime-info/shared-mime-info.hash create mode 100644 features/buildroot/package/shared-mime-info/shared-mime-info.mk create mode 100644 features/buildroot/package/shellinabox/0001-Makefile-disable-always-building-statically.patch create mode 100644 features/buildroot/package/shellinabox/Config.in create mode 100644 features/buildroot/package/shellinabox/shellinabox.hash create mode 100644 features/buildroot/package/shellinabox/shellinabox.mk create mode 100644 features/buildroot/package/sigrok-cli/Config.in create mode 100644 features/buildroot/package/sigrok-cli/sigrok-cli.hash create mode 100644 features/buildroot/package/sigrok-cli/sigrok-cli.mk create mode 100644 features/buildroot/package/sispmctl/0001-configure-add-pkg-config-support.patch create mode 100644 features/buildroot/package/sispmctl/Config.in create mode 100644 features/buildroot/package/sispmctl/sispmctl.hash create mode 100644 features/buildroot/package/sispmctl/sispmctl.mk create mode 100644 features/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch create mode 100644 features/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch create mode 100644 features/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch create mode 100644 features/buildroot/package/skalibs/Config.in create mode 100644 features/buildroot/package/skalibs/skalibs.hash create mode 100644 features/buildroot/package/skalibs/skalibs.mk create mode 100644 features/buildroot/package/skeleton-custom/Config.in create mode 100644 features/buildroot/package/skeleton-custom/skeleton-custom.mk create mode 100644 features/buildroot/package/skeleton-init-common/Config.in create mode 100644 features/buildroot/package/skeleton-init-common/skeleton-init-common.mk create mode 100644 features/buildroot/package/skeleton-init-none/Config.in create mode 100644 features/buildroot/package/skeleton-init-none/skeleton-init-none.mk create mode 100644 features/buildroot/package/skeleton-init-openrc/Config.in create mode 100644 features/buildroot/package/skeleton-init-openrc/skeleton-init-openrc.mk create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/dev/log create mode 100644 features/buildroot/package/skeleton-init-openrc/skeleton/etc/fstab create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/cache create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/lib/misc create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/lock create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/log create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/run create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/spool create mode 120000 features/buildroot/package/skeleton-init-openrc/skeleton/var/tmp create mode 100644 features/buildroot/package/skeleton-init-systemd/Config.in create mode 100644 features/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk create mode 100644 features/buildroot/package/skeleton-init-sysv/Config.in create mode 100644 features/buildroot/package/skeleton-init-sysv/skeleton-init-sysv.mk create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/dev/log create mode 100644 features/buildroot/package/skeleton-init-sysv/skeleton/dev/pts/.empty create mode 100644 features/buildroot/package/skeleton-init-sysv/skeleton/dev/shm/.empty create mode 100644 features/buildroot/package/skeleton-init-sysv/skeleton/etc/fstab create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/cache create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/lib/misc create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/lock create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/log create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/run create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/spool create mode 120000 features/buildroot/package/skeleton-init-sysv/skeleton/var/tmp create mode 100644 features/buildroot/package/skeleton/Config.in create mode 100644 features/buildroot/package/skeleton/skeleton.mk create mode 100644 features/buildroot/package/sl/Config.in create mode 100644 features/buildroot/package/sl/sl.hash create mode 100644 features/buildroot/package/sl/sl.mk create mode 100644 features/buildroot/package/slang/0001-slsh-libs.patch create mode 100644 features/buildroot/package/slang/Config.in create mode 100644 features/buildroot/package/slang/slang.hash create mode 100644 features/buildroot/package/slang/slang.mk create mode 100644 features/buildroot/package/slirp/Config.in create mode 100644 features/buildroot/package/slirp/slirp.mk create mode 100644 features/buildroot/package/smack/Config.in create mode 100644 features/buildroot/package/smack/smack.hash create mode 100644 features/buildroot/package/smack/smack.mk create mode 100644 features/buildroot/package/smartmontools/Config.in create mode 100644 features/buildroot/package/smartmontools/smartmontools.hash create mode 100644 features/buildroot/package/smartmontools/smartmontools.mk create mode 100644 features/buildroot/package/smcroute/Config.in create mode 100644 features/buildroot/package/smcroute/smcroute.hash create mode 100644 features/buildroot/package/smcroute/smcroute.mk create mode 100644 features/buildroot/package/smstools3/0001-fix-Makefile.patch create mode 100644 features/buildroot/package/smstools3/Config.in create mode 100644 features/buildroot/package/smstools3/S50smsd create mode 100644 features/buildroot/package/smstools3/smstools3.hash create mode 100644 features/buildroot/package/smstools3/smstools3.mk create mode 100644 features/buildroot/package/snappy/Config.in create mode 100644 features/buildroot/package/snappy/snappy.hash create mode 100644 features/buildroot/package/snappy/snappy.mk create mode 100644 features/buildroot/package/sngrep/0001-capture-fix-typo-in-FILE-object.patch create mode 100644 features/buildroot/package/sngrep/Config.in create mode 100644 features/buildroot/package/sngrep/sngrep.hash create mode 100644 features/buildroot/package/sngrep/sngrep.mk create mode 100644 features/buildroot/package/snmppp/Config.in create mode 100644 features/buildroot/package/snmppp/snmppp.hash create mode 100644 features/buildroot/package/snmppp/snmppp.mk create mode 100644 features/buildroot/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch create mode 100644 features/buildroot/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch create mode 100644 features/buildroot/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch create mode 100644 features/buildroot/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch create mode 100644 features/buildroot/package/snort/0005-fix-sparc.patch create mode 100644 features/buildroot/package/snort/0006-Fix-compile-error-when-building-against-uclibc-or-mu.patch create mode 100644 features/buildroot/package/snort/Config.in create mode 100644 features/buildroot/package/snort/snort.hash create mode 100644 features/buildroot/package/snort/snort.mk create mode 100644 features/buildroot/package/socat/0001-no-documentation.patch create mode 100644 features/buildroot/package/socat/0002-ptrdiff_t-is-defined-in-stddef.h.patch create mode 100644 features/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch create mode 100644 features/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch create mode 100644 features/buildroot/package/socat/Config.in create mode 100644 features/buildroot/package/socat/socat.hash create mode 100644 features/buildroot/package/socat/socat.mk create mode 100644 features/buildroot/package/socketcand/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch create mode 100644 features/buildroot/package/socketcand/Config.in create mode 100644 features/buildroot/package/socketcand/socketcand.hash create mode 100644 features/buildroot/package/socketcand/socketcand.mk create mode 100644 features/buildroot/package/sofia-sip/0001-soa_tag.h-reintroduce-soatag_local_sdp_str_ref.patch create mode 100644 features/buildroot/package/sofia-sip/Config.in create mode 100644 features/buildroot/package/sofia-sip/sofia-sip.hash create mode 100644 features/buildroot/package/sofia-sip/sofia-sip.mk create mode 100644 features/buildroot/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch create mode 100644 features/buildroot/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch create mode 100644 features/buildroot/package/softether/0003-use-fhs-install-directories.patch create mode 100644 features/buildroot/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch create mode 100644 features/buildroot/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch create mode 100644 features/buildroot/package/softether/0006-cross-compile.patch create mode 100644 features/buildroot/package/softether/0007-iconv.patch create mode 100644 features/buildroot/package/softether/0008-librt.patch create mode 100644 features/buildroot/package/softether/0009-uclibc-ai-addrconfig.patch create mode 100644 features/buildroot/package/softether/0010-Encrypt-set-default-RSA-key-size-to-1024-everywhere-.patch create mode 100644 features/buildroot/package/softether/Config.in create mode 100644 features/buildroot/package/softether/softether.hash create mode 100644 features/buildroot/package/softether/softether.mk create mode 100644 features/buildroot/package/solarus/0001-cmake-remove-Werror.patch create mode 100644 features/buildroot/package/solarus/Config.in create mode 100644 features/buildroot/package/solarus/solarus.hash create mode 100644 features/buildroot/package/solarus/solarus.mk create mode 100644 features/buildroot/package/sound-theme-borealis/Config.in create mode 100644 features/buildroot/package/sound-theme-borealis/sound-theme-borealis.hash create mode 100644 features/buildroot/package/sound-theme-borealis/sound-theme-borealis.mk create mode 100644 features/buildroot/package/sound-theme-freedesktop/Config.in create mode 100644 features/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.hash create mode 100644 features/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.mk create mode 100644 features/buildroot/package/sox/0001-uclibc.patch create mode 100644 features/buildroot/package/sox/Config.in create mode 100644 features/buildroot/package/sox/sox.hash create mode 100644 features/buildroot/package/sox/sox.mk create mode 100644 features/buildroot/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch create mode 100644 features/buildroot/package/sp-oops-extract/0002-stdint-cleanup.patch create mode 100644 features/buildroot/package/sp-oops-extract/Config.in create mode 100644 features/buildroot/package/sp-oops-extract/sp-oops-extract.hash create mode 100644 features/buildroot/package/sp-oops-extract/sp-oops-extract.mk create mode 100644 features/buildroot/package/spandsp/Config.in create mode 100644 features/buildroot/package/spandsp/spandsp.hash create mode 100644 features/buildroot/package/spandsp/spandsp.mk create mode 100644 features/buildroot/package/spawn-fcgi/Config.in create mode 100644 features/buildroot/package/spawn-fcgi/spawn-fcgi.hash create mode 100644 features/buildroot/package/spawn-fcgi/spawn-fcgi.mk create mode 100644 features/buildroot/package/speex/0001-thumb2-support.patch create mode 100644 features/buildroot/package/speex/Config.in create mode 100644 features/buildroot/package/speex/speex.hash create mode 100644 features/buildroot/package/speex/speex.mk create mode 100644 features/buildroot/package/speexdsp/Config.in create mode 100644 features/buildroot/package/speexdsp/speexdsp.hash create mode 100644 features/buildroot/package/speexdsp/speexdsp.mk create mode 100644 features/buildroot/package/sphinxbase/Config.in create mode 100644 features/buildroot/package/sphinxbase/sphinxbase.hash create mode 100644 features/buildroot/package/sphinxbase/sphinxbase.mk create mode 100644 features/buildroot/package/spi-tools/Config.in create mode 100644 features/buildroot/package/spi-tools/spi-tools.hash create mode 100644 features/buildroot/package/spi-tools/spi-tools.mk create mode 100644 features/buildroot/package/spice-protocol/Config.in create mode 100644 features/buildroot/package/spice-protocol/spice-protocol.hash create mode 100644 features/buildroot/package/spice-protocol/spice-protocol.mk create mode 100644 features/buildroot/package/spice/Config.in create mode 100644 features/buildroot/package/spice/spice.hash create mode 100644 features/buildroot/package/spice/spice.mk create mode 100644 features/buildroot/package/spidev_test/Config.in create mode 100644 features/buildroot/package/spidev_test/spidev_test.hash create mode 100644 features/buildroot/package/spidev_test/spidev_test.mk create mode 100644 features/buildroot/package/sqlcipher/Config.in create mode 100644 features/buildroot/package/sqlcipher/sqlcipher.hash create mode 100644 features/buildroot/package/sqlcipher/sqlcipher.mk create mode 100644 features/buildroot/package/sqlite/Config.in create mode 100644 features/buildroot/package/sqlite/sqlite.hash create mode 100644 features/buildroot/package/sqlite/sqlite.mk create mode 100644 features/buildroot/package/squashfs/0001-include-sysmacros.patch create mode 100644 features/buildroot/package/squashfs/Config.in create mode 100644 features/buildroot/package/squashfs/Config.in.host create mode 100644 features/buildroot/package/squashfs/squashfs.hash create mode 100644 features/buildroot/package/squashfs/squashfs.mk create mode 100644 features/buildroot/package/squeezelite/Config.in create mode 100644 features/buildroot/package/squeezelite/squeezelite.hash create mode 100644 features/buildroot/package/squeezelite/squeezelite.mk create mode 100644 features/buildroot/package/squid/Config.in create mode 100644 features/buildroot/package/squid/S97squid create mode 100644 features/buildroot/package/squid/squid.hash create mode 100644 features/buildroot/package/squid/squid.mk create mode 100644 features/buildroot/package/sredird/0001-termio.patch create mode 100644 features/buildroot/package/sredird/Config.in create mode 100644 features/buildroot/package/sredird/sredird.hash create mode 100644 features/buildroot/package/sredird/sredird.mk create mode 100644 features/buildroot/package/sshfs/Config.in create mode 100644 features/buildroot/package/sshfs/sshfs.hash create mode 100644 features/buildroot/package/sshfs/sshfs.mk create mode 100644 features/buildroot/package/sshpass/Config.in create mode 100644 features/buildroot/package/sshpass/sshpass.hash create mode 100644 features/buildroot/package/sshpass/sshpass.mk create mode 100644 features/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch create mode 100644 features/buildroot/package/sslh/Config.in create mode 100644 features/buildroot/package/sslh/S35sslh create mode 100644 features/buildroot/package/sslh/sslh.hash create mode 100644 features/buildroot/package/sslh/sslh.mk create mode 100644 features/buildroot/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch create mode 100644 features/buildroot/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch create mode 100644 features/buildroot/package/start-stop-daemon/Config.in create mode 100644 features/buildroot/package/start-stop-daemon/start-stop-daemon.hash create mode 100644 features/buildroot/package/start-stop-daemon/start-stop-daemon.mk create mode 100644 features/buildroot/package/startup-notification/Config.in create mode 100644 features/buildroot/package/startup-notification/startup-notification.hash create mode 100644 features/buildroot/package/startup-notification/startup-notification.mk create mode 100644 features/buildroot/package/statserial/0001-ncurses-link.patch create mode 100644 features/buildroot/package/statserial/Config.in create mode 100644 features/buildroot/package/statserial/statserial.hash create mode 100644 features/buildroot/package/statserial/statserial.mk create mode 100644 features/buildroot/package/stella/0001-Add-cross-compilation-support.patch create mode 100644 features/buildroot/package/stella/0002-Do-not-strip-when-installing.patch create mode 100644 features/buildroot/package/stella/0003-undef-PAGE_SIZE.patch create mode 100644 features/buildroot/package/stella/Config.in create mode 100644 features/buildroot/package/stella/stella.hash create mode 100644 features/buildroot/package/stella/stella.mk create mode 100644 features/buildroot/package/stm32flash/Config.in create mode 100644 features/buildroot/package/stm32flash/stm32flash.hash create mode 100644 features/buildroot/package/stm32flash/stm32flash.mk create mode 100644 features/buildroot/package/strace/Config.in create mode 100644 features/buildroot/package/strace/strace.hash create mode 100644 features/buildroot/package/strace/strace.mk create mode 100644 features/buildroot/package/stress-ng/Config.in create mode 100644 features/buildroot/package/stress-ng/stress-ng.hash create mode 100644 features/buildroot/package/stress-ng/stress-ng.mk create mode 100644 features/buildroot/package/stress/Config.in create mode 100644 features/buildroot/package/stress/stress.hash create mode 100644 features/buildroot/package/stress/stress.mk create mode 100644 features/buildroot/package/strongswan/Config.in create mode 100644 features/buildroot/package/strongswan/strongswan.hash create mode 100644 features/buildroot/package/strongswan/strongswan.mk create mode 100644 features/buildroot/package/stunnel/Config.in create mode 100644 features/buildroot/package/stunnel/S50stunnel create mode 100644 features/buildroot/package/stunnel/stunnel.hash create mode 100644 features/buildroot/package/stunnel/stunnel.mk create mode 100644 features/buildroot/package/subversion/0001-dont-mangle-cflags.patch create mode 100644 features/buildroot/package/subversion/0002-disable-macos-specific-features.patch create mode 100644 features/buildroot/package/subversion/Config.in create mode 100644 features/buildroot/package/subversion/subversion.hash create mode 100644 features/buildroot/package/subversion/subversion.mk create mode 100644 features/buildroot/package/sudo/Config.in create mode 100644 features/buildroot/package/sudo/sudo.hash create mode 100644 features/buildroot/package/sudo/sudo.mk create mode 100644 features/buildroot/package/sudo/sudo.pam create mode 100644 features/buildroot/package/sunxi-boards/Config.in create mode 100644 features/buildroot/package/sunxi-boards/sunxi-boards.hash create mode 100644 features/buildroot/package/sunxi-boards/sunxi-boards.mk create mode 100644 features/buildroot/package/sunxi-cedarx/Config.in create mode 100644 features/buildroot/package/sunxi-cedarx/sunxi-cedarx.hash create mode 100644 features/buildroot/package/sunxi-cedarx/sunxi-cedarx.mk create mode 100644 features/buildroot/package/sunxi-mali-mainline-driver/Config.in create mode 100644 features/buildroot/package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.hash create mode 100644 features/buildroot/package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.mk create mode 100644 features/buildroot/package/sunxi-mali-mainline/Config.in create mode 100644 features/buildroot/package/sunxi-mali-mainline/egl.pc create mode 100644 features/buildroot/package/sunxi-mali-mainline/glesv2.pc create mode 100644 features/buildroot/package/sunxi-mali-mainline/sunxi-mali-mainline.hash create mode 100644 features/buildroot/package/sunxi-mali-mainline/sunxi-mali-mainline.mk create mode 100644 features/buildroot/package/sunxi-tools/0001-meminfo-Access-to-io-memory-via-pointers.patch create mode 100644 features/buildroot/package/sunxi-tools/Config.in create mode 100644 features/buildroot/package/sunxi-tools/Config.in.host create mode 100644 features/buildroot/package/sunxi-tools/sunxi-tools.hash create mode 100644 features/buildroot/package/sunxi-tools/sunxi-tools.mk create mode 100644 features/buildroot/package/supertux/0001-Fix-build-on-PowerPC.patch create mode 100644 features/buildroot/package/supertux/Config.in create mode 100644 features/buildroot/package/supertux/supertux.hash create mode 100644 features/buildroot/package/supertux/supertux.mk create mode 100644 features/buildroot/package/supertuxkart/Config.in create mode 100644 features/buildroot/package/supertuxkart/supertuxkart.hash create mode 100644 features/buildroot/package/supertuxkart/supertuxkart.mk create mode 100644 features/buildroot/package/supervisor/Config.in create mode 100644 features/buildroot/package/supervisor/S99supervisord create mode 100644 features/buildroot/package/supervisor/supervisor.hash create mode 100644 features/buildroot/package/supervisor/supervisor.mk create mode 100644 features/buildroot/package/supervisor/supervisord.conf create mode 100644 features/buildroot/package/supervisor/supervisord.service create mode 100644 features/buildroot/package/suricata/0001-configure.ac-fix-static-build-with-pcap.patch create mode 100644 features/buildroot/package/suricata/0002-af-packet-fix-build-on-recent-Linux-kernels.patch create mode 100644 features/buildroot/package/suricata/Config.in create mode 100644 features/buildroot/package/suricata/S99suricata create mode 100644 features/buildroot/package/suricata/suricata.hash create mode 100644 features/buildroot/package/suricata/suricata.mk create mode 100644 features/buildroot/package/suricata/suricata.service create mode 100644 features/buildroot/package/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch create mode 100644 features/buildroot/package/swig/0002-Remove-warnings-on-Node-6.x-aka-V8-5.0-and-5.1.patch create mode 100644 features/buildroot/package/swig/Config.in.host create mode 100644 features/buildroot/package/swig/swig.hash create mode 100644 features/buildroot/package/swig/swig.mk create mode 100644 features/buildroot/package/swupdate/0001-archive-handler-set-locale-for-libarchive.patch create mode 100644 features/buildroot/package/swupdate/0002-Lua-fix-segfault-in-image-property-handling.patch create mode 100644 features/buildroot/package/swupdate/0003-u-boot-fix-script-format-when-CONFIG_UBOOT_NEWAPI.patch create mode 100644 features/buildroot/package/swupdate/Config.in create mode 100644 features/buildroot/package/swupdate/swupdate.config create mode 100644 features/buildroot/package/swupdate/swupdate.hash create mode 100644 features/buildroot/package/swupdate/swupdate.mk create mode 100644 features/buildroot/package/sylpheed/Config.in create mode 100644 features/buildroot/package/sylpheed/sylpheed.hash create mode 100644 features/buildroot/package/sylpheed/sylpheed.mk create mode 100644 features/buildroot/package/synergy/Config.in create mode 100644 features/buildroot/package/synergy/synergy.hash create mode 100644 features/buildroot/package/synergy/synergy.mk create mode 100644 features/buildroot/package/sysdig/Config.in create mode 100644 features/buildroot/package/sysdig/sysdig.hash create mode 100644 features/buildroot/package/sysdig/sysdig.mk create mode 100644 features/buildroot/package/sysklogd/Config.in create mode 100644 features/buildroot/package/sysklogd/S01syslogd create mode 100644 features/buildroot/package/sysklogd/S02klogd create mode 100644 features/buildroot/package/sysklogd/klogd.service create mode 100644 features/buildroot/package/sysklogd/sysklogd.hash create mode 100644 features/buildroot/package/sysklogd/sysklogd.mk create mode 100644 features/buildroot/package/sysklogd/syslog.conf create mode 100644 features/buildroot/package/sysklogd/syslogd.service create mode 100644 features/buildroot/package/syslog-ng/0001-fix-build-on-uclibc.patch create mode 100644 features/buildroot/package/syslog-ng/0002-build-make-dlsym-optional.patch create mode 100644 features/buildroot/package/syslog-ng/0003-look-for-pthread-atfork-also-in-libc-nonshared.patch create mode 100644 features/buildroot/package/syslog-ng/Config.in create mode 100644 features/buildroot/package/syslog-ng/S01syslog-ng create mode 100644 features/buildroot/package/syslog-ng/syslog-ng.conf create mode 100644 features/buildroot/package/syslog-ng/syslog-ng.hash create mode 100644 features/buildroot/package/syslog-ng/syslog-ng.mk create mode 100644 features/buildroot/package/syslog-ng/syslog-ng@default create mode 100644 features/buildroot/package/sysprof/0001-define-NT_GNU_BUILD_ID.patch create mode 100644 features/buildroot/package/sysprof/Config.in create mode 100644 features/buildroot/package/sysprof/sysprof.hash create mode 100644 features/buildroot/package/sysprof/sysprof.mk create mode 100644 features/buildroot/package/sysstat/Config.in create mode 100644 features/buildroot/package/sysstat/sysstat.hash create mode 100644 features/buildroot/package/sysstat/sysstat.mk create mode 100644 features/buildroot/package/systemd-bootchart/Config.in create mode 100644 features/buildroot/package/systemd-bootchart/systemd-bootchart.hash create mode 100644 features/buildroot/package/systemd-bootchart/systemd-bootchart.mk create mode 100644 features/buildroot/package/systemd/0001-install-don-t-use-ln-relative.patch create mode 100644 features/buildroot/package/systemd/0002-Refuse-dbus-message-paths-longer-than-BUS_PATH_SIZE_.patch create mode 100644 features/buildroot/package/systemd/0003-Allocate-temporary-strings-to-hold-dbus-paths-on-the.patch create mode 100644 features/buildroot/package/systemd/0004-meson-drop-misplaced-Wl-undefined-argument.patch create mode 100644 features/buildroot/package/systemd/Config.in create mode 100644 features/buildroot/package/systemd/boot-files/buildroot.conf create mode 100644 features/buildroot/package/systemd/boot-files/loader.conf create mode 100644 features/buildroot/package/systemd/dhcp.network create mode 100644 features/buildroot/package/systemd/systemd.hash create mode 100644 features/buildroot/package/systemd/systemd.mk create mode 100644 features/buildroot/package/sysvinit/Config.in create mode 100644 features/buildroot/package/sysvinit/inittab create mode 100644 features/buildroot/package/sysvinit/sysvinit.hash create mode 100644 features/buildroot/package/sysvinit/sysvinit.mk create mode 100644 features/buildroot/package/szip/Config.in create mode 100644 features/buildroot/package/szip/szip.hash create mode 100644 features/buildroot/package/szip/szip.mk create mode 100644 features/buildroot/package/taglib/0001-fix-taglib-config-file-for-cross-compiling-906.patch create mode 100644 features/buildroot/package/taglib/Config.in create mode 100644 features/buildroot/package/taglib/taglib.hash create mode 100644 features/buildroot/package/taglib/taglib.mk create mode 100644 features/buildroot/package/tar/Config.in create mode 100644 features/buildroot/package/tar/tar.hash create mode 100644 features/buildroot/package/tar/tar.mk create mode 100644 features/buildroot/package/targetcli-fb/Config.in create mode 100644 features/buildroot/package/targetcli-fb/S50target create mode 100644 features/buildroot/package/targetcli-fb/target.service create mode 100644 features/buildroot/package/targetcli-fb/targetcli-fb.hash create mode 100644 features/buildroot/package/targetcli-fb/targetcli-fb.mk create mode 100644 features/buildroot/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch create mode 100644 features/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch create mode 100644 features/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch create mode 100644 features/buildroot/package/taskd/Config.in create mode 100644 features/buildroot/package/taskd/taskd.hash create mode 100644 features/buildroot/package/taskd/taskd.mk create mode 100644 features/buildroot/package/tcf-agent/Config.in create mode 100644 features/buildroot/package/tcf-agent/S55tcf-agent create mode 100644 features/buildroot/package/tcf-agent/tcf-agent.hash create mode 100644 features/buildroot/package/tcf-agent/tcf-agent.mk create mode 100644 features/buildroot/package/tcf-agent/tcf-agent.service create mode 100644 features/buildroot/package/tcl/0001-dont-build-compat.patch create mode 100644 features/buildroot/package/tcl/Config.in create mode 100644 features/buildroot/package/tcl/tcl.hash create mode 100644 features/buildroot/package/tcl/tcl.mk create mode 100644 features/buildroot/package/tclap/Config.in create mode 100644 features/buildroot/package/tclap/tclap.hash create mode 100644 features/buildroot/package/tclap/tclap.mk create mode 100644 features/buildroot/package/tcllib/Config.in create mode 100644 features/buildroot/package/tcllib/tcllib.hash create mode 100644 features/buildroot/package/tcllib/tcllib.mk create mode 100644 features/buildroot/package/tcpdump/Config.in create mode 100644 features/buildroot/package/tcpdump/tcpdump.hash create mode 100644 features/buildroot/package/tcpdump/tcpdump.mk create mode 100644 features/buildroot/package/tcping/Config.in create mode 100644 features/buildroot/package/tcping/tcping.hash create mode 100644 features/buildroot/package/tcping/tcping.mk create mode 100644 features/buildroot/package/tcpreplay/Config.in create mode 100644 features/buildroot/package/tcpreplay/tcpreplay.hash create mode 100644 features/buildroot/package/tcpreplay/tcpreplay.mk create mode 100644 features/buildroot/package/tegrarcm/Config.in.host create mode 100644 features/buildroot/package/tegrarcm/tegrarcm.hash create mode 100644 features/buildroot/package/tegrarcm/tegrarcm.mk create mode 100644 features/buildroot/package/tekui/Config.in create mode 100644 features/buildroot/package/tekui/tekui.hash create mode 100644 features/buildroot/package/tekui/tekui.mk create mode 100644 features/buildroot/package/terminology/Config.in create mode 100644 features/buildroot/package/terminology/terminology.hash create mode 100644 features/buildroot/package/terminology/terminology.mk create mode 100644 features/buildroot/package/tesseract-ocr/0001-Fix-timeval-structure-build-failure.patch create mode 100644 features/buildroot/package/tesseract-ocr/0001-Use-long-instead-of-off_t-for-result-from-ftell.patch create mode 100644 features/buildroot/package/tesseract-ocr/Config.in create mode 100644 features/buildroot/package/tesseract-ocr/tesseract-ocr.hash create mode 100644 features/buildroot/package/tesseract-ocr/tesseract-ocr.mk create mode 100644 features/buildroot/package/tftpd/Config.in create mode 100644 features/buildroot/package/tftpd/S80tftpd-hpa create mode 100644 features/buildroot/package/tftpd/tftpd.hash create mode 100644 features/buildroot/package/tftpd/tftpd.mk create mode 100644 features/buildroot/package/thrift/0001-Force-to-keep-TPipedTransport-peek-to-avoid-linker-e.patch create mode 100644 features/buildroot/package/thrift/Config.in create mode 100644 features/buildroot/package/thrift/thrift.hash create mode 100644 features/buildroot/package/thrift/thrift.mk create mode 100644 features/buildroot/package/thttpd/Config.in create mode 100644 features/buildroot/package/thttpd/thttpd.hash create mode 100644 features/buildroot/package/thttpd/thttpd.mk create mode 100644 features/buildroot/package/thttpd/thttpd.service create mode 100644 features/buildroot/package/ti-cgt-pru/Config.in.host create mode 100644 features/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash create mode 100644 features/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk create mode 100644 features/buildroot/package/ti-gfx/0001-newclkapi.patch create mode 100644 features/buildroot/package/ti-gfx/0002-fix-build-omaplfb-linux.patch create mode 100644 features/buildroot/package/ti-gfx/0003-km_install_modules.patch create mode 100644 features/buildroot/package/ti-gfx/Config.in create mode 100644 features/buildroot/package/ti-gfx/S80ti-gfx create mode 100644 features/buildroot/package/ti-gfx/egl.pc create mode 100644 features/buildroot/package/ti-gfx/esrev.sh create mode 100644 features/buildroot/package/ti-gfx/glesv2.pc create mode 100644 features/buildroot/package/ti-gfx/powervr.ini create mode 100644 features/buildroot/package/ti-gfx/ti-gfx.hash create mode 100644 features/buildroot/package/ti-gfx/ti-gfx.mk create mode 100644 features/buildroot/package/ti-gfx/ti-gfx.service create mode 100644 features/buildroot/package/ti-sgx-demos/Config.in create mode 100644 features/buildroot/package/ti-sgx-demos/ti-sgx-demos.hash create mode 100644 features/buildroot/package/ti-sgx-demos/ti-sgx-demos.mk create mode 100644 features/buildroot/package/ti-sgx-km/Config.in create mode 100644 features/buildroot/package/ti-sgx-km/ti-sgx-km.hash create mode 100644 features/buildroot/package/ti-sgx-km/ti-sgx-km.mk create mode 100644 features/buildroot/package/ti-sgx-um/Config.in create mode 100644 features/buildroot/package/ti-sgx-um/S80ti-sgx create mode 100644 features/buildroot/package/ti-sgx-um/powervr.ini create mode 100644 features/buildroot/package/ti-sgx-um/ti-sgx-um.hash create mode 100644 features/buildroot/package/ti-sgx-um/ti-sgx-um.mk create mode 100644 features/buildroot/package/ti-uim/Config.in create mode 100644 features/buildroot/package/ti-uim/ti-uim.hash create mode 100644 features/buildroot/package/ti-uim/ti-uim.mk create mode 100644 features/buildroot/package/ti-utils/Config.in create mode 100644 features/buildroot/package/ti-utils/ti-utils.hash create mode 100644 features/buildroot/package/ti-utils/ti-utils.mk create mode 100644 features/buildroot/package/tiff/0001-Fix-for-simple-memory-leak-that-was-assigned-CVE-2019-6128.patch create mode 100644 features/buildroot/package/tiff/Config.in create mode 100644 features/buildroot/package/tiff/tiff.hash create mode 100644 features/buildroot/package/tiff/tiff.mk create mode 100644 features/buildroot/package/time/Config.in create mode 100644 features/buildroot/package/time/time.hash create mode 100644 features/buildroot/package/time/time.mk create mode 100644 features/buildroot/package/tinc/Config.in create mode 100644 features/buildroot/package/tinc/tinc.hash create mode 100644 features/buildroot/package/tinc/tinc.mk create mode 100644 features/buildroot/package/tini/Config.in create mode 100644 features/buildroot/package/tini/tini.hash create mode 100644 features/buildroot/package/tini/tini.mk create mode 100644 features/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch create mode 100644 features/buildroot/package/tinyalsa/0002-interval.h-add-missing-header.patch create mode 100644 features/buildroot/package/tinyalsa/Config.in create mode 100644 features/buildroot/package/tinyalsa/tinyalsa.hash create mode 100644 features/buildroot/package/tinyalsa/tinyalsa.mk create mode 100644 features/buildroot/package/tinycbor/0001-fix-undefined-encode_half-in-json2cbor.patch create mode 100644 features/buildroot/package/tinycbor/Config.in create mode 100644 features/buildroot/package/tinycbor/tinycbor.hash create mode 100644 features/buildroot/package/tinycbor/tinycbor.mk create mode 100644 features/buildroot/package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch create mode 100644 features/buildroot/package/tinydtls/0002-Fix-compilation-of-tests-directory.patch create mode 100644 features/buildroot/package/tinydtls/Config.in create mode 100644 features/buildroot/package/tinydtls/tinydtls.hash create mode 100644 features/buildroot/package/tinydtls/tinydtls.mk create mode 100644 features/buildroot/package/tinyhttpd/0001-misc-fixes.patch create mode 100644 features/buildroot/package/tinyhttpd/Config.in create mode 100644 features/buildroot/package/tinyhttpd/S85tinyhttpd create mode 100644 features/buildroot/package/tinyhttpd/tinyhttpd.hash create mode 100644 features/buildroot/package/tinyhttpd/tinyhttpd.mk create mode 100644 features/buildroot/package/tinyhttpd/tinyhttpd.service create mode 100644 features/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch create mode 100644 features/buildroot/package/tinymembench/Config.in create mode 100644 features/buildroot/package/tinymembench/tinymembench.hash create mode 100644 features/buildroot/package/tinymembench/tinymembench.mk create mode 100644 features/buildroot/package/tinyxml/Config.in create mode 100644 features/buildroot/package/tinyxml/tinyxml.hash create mode 100644 features/buildroot/package/tinyxml/tinyxml.mk create mode 100644 features/buildroot/package/tinyxml2/Config.in create mode 100644 features/buildroot/package/tinyxml2/tinyxml2.hash create mode 100644 features/buildroot/package/tinyxml2/tinyxml2.mk create mode 100644 features/buildroot/package/tk/Config.in create mode 100644 features/buildroot/package/tk/tk.hash create mode 100644 features/buildroot/package/tk/tk.mk create mode 100644 features/buildroot/package/tmux/Config.in create mode 100644 features/buildroot/package/tmux/tmux.hash create mode 100644 features/buildroot/package/tmux/tmux.mk create mode 100644 features/buildroot/package/tor/0001-Fix-static-linking-with-OpenSSL.patch create mode 100644 features/buildroot/package/tor/Config.in create mode 100644 features/buildroot/package/tor/tor.hash create mode 100644 features/buildroot/package/tor/tor.mk create mode 100644 features/buildroot/package/tovid/0001-manpage.patch create mode 100644 features/buildroot/package/tovid/Config.in create mode 100644 features/buildroot/package/tovid/tovid.hash create mode 100644 features/buildroot/package/tovid/tovid.mk create mode 100644 features/buildroot/package/tpm-tools/Config.in create mode 100644 features/buildroot/package/tpm-tools/tpm-tools.hash create mode 100644 features/buildroot/package/tpm-tools/tpm-tools.mk create mode 100644 features/buildroot/package/tpm2-abrmd/Config.in create mode 100644 features/buildroot/package/tpm2-abrmd/S80tpm2-abrmd create mode 100644 features/buildroot/package/tpm2-abrmd/tpm2-abrmd.hash create mode 100644 features/buildroot/package/tpm2-abrmd/tpm2-abrmd.mk create mode 100644 features/buildroot/package/tpm2-tools/0001-tpm2_certify-fix-type-may-be-used-uninitialized-warn.patch create mode 100644 features/buildroot/package/tpm2-tools/Config.in create mode 100644 features/buildroot/package/tpm2-tools/tpm2-tools.hash create mode 100644 features/buildroot/package/tpm2-tools/tpm2-tools.mk create mode 100644 features/buildroot/package/tpm2-totp/0001-src-fix-format-string-warnings-when-building-for-32b.patch create mode 100644 features/buildroot/package/tpm2-totp/0002-src-fix-compilation-failure-due-to-variable-may-be-u.patch create mode 100644 features/buildroot/package/tpm2-totp/Config.in create mode 100644 features/buildroot/package/tpm2-totp/tpm2-totp.hash create mode 100644 features/buildroot/package/tpm2-totp/tpm2-totp.mk create mode 100644 features/buildroot/package/tpm2-tss/0001-tpm2b-types.c-fix-maybe-uninitialized-error.patch create mode 100644 features/buildroot/package/tpm2-tss/Config.in create mode 100644 features/buildroot/package/tpm2-tss/tpm2-tss.hash create mode 100644 features/buildroot/package/tpm2-tss/tpm2-tss.mk create mode 100644 features/buildroot/package/trace-cmd/0001-trace-listen-add-missing-header.patch create mode 100644 features/buildroot/package/trace-cmd/Config.in create mode 100644 features/buildroot/package/trace-cmd/trace-cmd.hash create mode 100644 features/buildroot/package/trace-cmd/trace-cmd.mk create mode 100644 features/buildroot/package/traceroute/Config.in create mode 100644 features/buildroot/package/traceroute/traceroute.hash create mode 100644 features/buildroot/package/traceroute/traceroute.mk create mode 100644 features/buildroot/package/transmission/0001-fix-utypes.patch create mode 100644 features/buildroot/package/transmission/0002-musl-missing-header.patch create mode 100644 features/buildroot/package/transmission/0003-fix-utp-include.patch create mode 100644 features/buildroot/package/transmission/0004-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch create mode 100644 features/buildroot/package/transmission/0005-libsystemd.patch create mode 100644 features/buildroot/package/transmission/Config.in create mode 100644 features/buildroot/package/transmission/S92transmission create mode 100644 features/buildroot/package/transmission/transmission.hash create mode 100644 features/buildroot/package/transmission/transmission.mk create mode 100644 features/buildroot/package/tree/Config.in create mode 100644 features/buildroot/package/tree/tree.hash create mode 100644 features/buildroot/package/tree/tree.mk create mode 100644 features/buildroot/package/tremor/Config.in create mode 100644 features/buildroot/package/tremor/tremor.hash create mode 100644 features/buildroot/package/tremor/tremor.mk create mode 100644 features/buildroot/package/triggerhappy/Config.in create mode 100644 features/buildroot/package/triggerhappy/S10triggerhappy create mode 100644 features/buildroot/package/triggerhappy/triggerhappy.hash create mode 100644 features/buildroot/package/triggerhappy/triggerhappy.mk create mode 100644 features/buildroot/package/triggerhappy/triggerhappy.service create mode 100644 features/buildroot/package/trinity/Config.in create mode 100644 features/buildroot/package/trinity/trinity.hash create mode 100644 features/buildroot/package/trinity/trinity.mk create mode 100644 features/buildroot/package/trousers/0001-Check-if-the-compiler-understands-pie-and-relro-options.patch create mode 100644 features/buildroot/package/trousers/0002-Check-that-getpwent_r-is-available-before-using-it.patch create mode 100644 features/buildroot/package/trousers/Config.in create mode 100644 features/buildroot/package/trousers/trousers.hash create mode 100644 features/buildroot/package/trousers/trousers.mk create mode 100644 features/buildroot/package/ts4900-fpga/Config.in create mode 100644 features/buildroot/package/ts4900-fpga/ts4900-fpga.hash create mode 100644 features/buildroot/package/ts4900-fpga/ts4900-fpga.mk create mode 100644 features/buildroot/package/tslib/Config.in create mode 100644 features/buildroot/package/tslib/tslib.hash create mode 100644 features/buildroot/package/tslib/tslib.mk create mode 100644 features/buildroot/package/tstools/0001-build-get-along-with-buildroot.patch create mode 100644 features/buildroot/package/tstools/Config.in create mode 100644 features/buildroot/package/tstools/tstools.hash create mode 100644 features/buildroot/package/tstools/tstools.mk create mode 100644 features/buildroot/package/tunctl/Config.in create mode 100644 features/buildroot/package/tunctl/tunctl.hash create mode 100644 features/buildroot/package/tunctl/tunctl.mk create mode 100644 features/buildroot/package/turbolua/Config.in create mode 100644 features/buildroot/package/turbolua/turbolua.hash create mode 100644 features/buildroot/package/turbolua/turbolua.mk create mode 100644 features/buildroot/package/tvheadend/0001-no-check_config.patch create mode 100644 features/buildroot/package/tvheadend/0002-tvhcsa.c-include-stdio.h.patch create mode 100644 features/buildroot/package/tvheadend/Config.in create mode 100644 features/buildroot/package/tvheadend/S99tvheadend create mode 100644 features/buildroot/package/tvheadend/etc.default.tvheadend create mode 100644 features/buildroot/package/tvheadend/tvheadend.hash create mode 100644 features/buildroot/package/tvheadend/tvheadend.mk create mode 100644 features/buildroot/package/twolame/0001-Fix-static-linking-with-libmagic.patch create mode 100644 features/buildroot/package/twolame/Config.in create mode 100644 features/buildroot/package/twolame/twolame.hash create mode 100644 features/buildroot/package/twolame/twolame.mk create mode 100644 features/buildroot/package/tz/Config.in create mode 100644 features/buildroot/package/tz/tz.mk create mode 100644 features/buildroot/package/tzdata/Config.in create mode 100644 features/buildroot/package/tzdata/tzdata.hash create mode 100644 features/buildroot/package/tzdata/tzdata.mk create mode 100644 features/buildroot/package/tzdump/tzdump.hash create mode 100644 features/buildroot/package/tzdump/tzdump.mk create mode 100644 features/buildroot/package/uboot-tools/0001-drop-configh-from-tools.patch create mode 100644 features/buildroot/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch create mode 100644 features/buildroot/package/uboot-tools/Config.in create mode 100644 features/buildroot/package/uboot-tools/Config.in.host create mode 100644 features/buildroot/package/uboot-tools/uboot-tools.hash create mode 100644 features/buildroot/package/uboot-tools/uboot-tools.mk create mode 100644 features/buildroot/package/ubus/0001-Install-server-and-client-examples.patch create mode 100644 features/buildroot/package/ubus/Config.in create mode 100644 features/buildroot/package/ubus/ubus.hash create mode 100644 features/buildroot/package/ubus/ubus.mk create mode 100644 features/buildroot/package/uccp420wlan/Config.in create mode 100644 features/buildroot/package/uccp420wlan/uccp420wlan.hash create mode 100644 features/buildroot/package/uccp420wlan/uccp420wlan.mk create mode 100644 features/buildroot/package/ucl/ucl.hash create mode 100644 features/buildroot/package/ucl/ucl.mk create mode 100644 features/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch create mode 100644 features/buildroot/package/uclibc-ng-test/0002-Add-NO_CRYPT-to-fix-build-with-glibc-2.28.patch create mode 100644 features/buildroot/package/uclibc-ng-test/Config.in create mode 100644 features/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk create mode 100644 features/buildroot/package/uclibc/0001-statfs.h-sync-generic-header-with-glibc.patch create mode 100644 features/buildroot/package/uclibc/0002-xtensa-add-custom-bits-poll.h.patch create mode 100644 features/buildroot/package/uclibc/0003-preadv-pwritev-fix-offset-argument-type.patch create mode 100644 features/buildroot/package/uclibc/0004-sparc-remove-asm-constraint.patch create mode 100644 features/buildroot/package/uclibc/Config.in create mode 100644 features/buildroot/package/uclibc/uClibc-ng.config create mode 100644 features/buildroot/package/uclibc/uclibc.hash create mode 100644 features/buildroot/package/uclibc/uclibc.mk create mode 100644 features/buildroot/package/udev/Config.in create mode 100644 features/buildroot/package/udev/udev.mk create mode 100644 features/buildroot/package/udftools/0001-pktsetup-pktsetup.c-do-not-include-bits-types.h.patch create mode 100644 features/buildroot/package/udftools/0002-configure.ac-detect-readline-via-pkg-config-when-pos.patch create mode 100644 features/buildroot/package/udftools/0003-Include-sys-sysmacros-h-to-prevent-build-breakage-with-glibc-2-25.patch create mode 100644 features/buildroot/package/udftools/Config.in create mode 100644 features/buildroot/package/udftools/udftools.hash create mode 100644 features/buildroot/package/udftools/udftools.mk create mode 100644 features/buildroot/package/udisks/0001-fix-build-with-newer-glibc-versions.patch create mode 100644 features/buildroot/package/udisks/0002-Fix-systemd-service-file.patch create mode 100644 features/buildroot/package/udisks/0003-Fix-compilation-issue-with-missing-sys-sysmacros.h-i.patch create mode 100644 features/buildroot/package/udisks/Config.in create mode 100644 features/buildroot/package/udisks/udisks.hash create mode 100644 features/buildroot/package/udisks/udisks.mk create mode 100644 features/buildroot/package/udpcast/0001-select-h.patch create mode 100644 features/buildroot/package/udpcast/Config.in create mode 100644 features/buildroot/package/udpcast/udpcast.hash create mode 100644 features/buildroot/package/udpcast/udpcast.mk create mode 100644 features/buildroot/package/udpxy/Config.in create mode 100644 features/buildroot/package/udpxy/udpxy.hash create mode 100644 features/buildroot/package/udpxy/udpxy.mk create mode 100644 features/buildroot/package/uemacs/01-clear-ixon-termios-flag.patch create mode 100644 features/buildroot/package/uemacs/Config.in create mode 100644 features/buildroot/package/uemacs/uemacs.hash create mode 100644 features/buildroot/package/uemacs/uemacs.mk create mode 100644 features/buildroot/package/uftp/Config.in create mode 100644 features/buildroot/package/uftp/uftp.hash create mode 100644 features/buildroot/package/uftp/uftp.mk create mode 100644 features/buildroot/package/uhttpd/0001-Remove-Werror.patch create mode 100644 features/buildroot/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch create mode 100644 features/buildroot/package/uhttpd/Config.in create mode 100644 features/buildroot/package/uhttpd/uhttpd.hash create mode 100644 features/buildroot/package/uhttpd/uhttpd.mk create mode 100644 features/buildroot/package/uhubctl/Config.in create mode 100644 features/buildroot/package/uhubctl/uhubctl.hash create mode 100644 features/buildroot/package/uhubctl/uhubctl.mk create mode 100644 features/buildroot/package/ulogd/0001-ulogd-fix-build-with-musl-libc.patch create mode 100644 features/buildroot/package/ulogd/Config.in create mode 100644 features/buildroot/package/ulogd/ulogd.hash create mode 100644 features/buildroot/package/ulogd/ulogd.mk create mode 100644 features/buildroot/package/unionfs/0001-include-asm-ioctl.h-for-_IOC_SIZE.patch create mode 100644 features/buildroot/package/unionfs/Config.in create mode 100644 features/buildroot/package/unionfs/unionfs.hash create mode 100644 features/buildroot/package/unionfs/unionfs.mk create mode 100644 features/buildroot/package/unixodbc/0001-fix-nopthread.patch create mode 100644 features/buildroot/package/unixodbc/Config.in create mode 100644 features/buildroot/package/unixodbc/unixodbc.hash create mode 100644 features/buildroot/package/unixodbc/unixodbc.mk create mode 100644 features/buildroot/package/unrar/Config.in create mode 100644 features/buildroot/package/unrar/unrar.hash create mode 100644 features/buildroot/package/unrar/unrar.mk create mode 100644 features/buildroot/package/unscd/Config.in create mode 100644 features/buildroot/package/unscd/S46unscd create mode 100644 features/buildroot/package/unscd/nscd.conf create mode 100644 features/buildroot/package/unscd/unscd.hash create mode 100644 features/buildroot/package/unscd/unscd.mk create mode 100644 features/buildroot/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch create mode 100644 features/buildroot/package/unzip/Config.in create mode 100644 features/buildroot/package/unzip/unzip.hash create mode 100644 features/buildroot/package/unzip/unzip.mk create mode 100644 features/buildroot/package/upmpdcli/Config.in create mode 100644 features/buildroot/package/upmpdcli/S99upmpdcli create mode 100644 features/buildroot/package/upmpdcli/upmpdcli.hash create mode 100644 features/buildroot/package/upmpdcli/upmpdcli.mk create mode 100644 features/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch create mode 100644 features/buildroot/package/upower/Config.in create mode 100644 features/buildroot/package/upower/upower.hash create mode 100644 features/buildroot/package/upower/upower.mk create mode 100644 features/buildroot/package/upx/upx.hash create mode 100644 features/buildroot/package/upx/upx.mk create mode 100644 features/buildroot/package/urg/0001-select-h.patch create mode 100644 features/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch create mode 100644 features/buildroot/package/urg/Config.in create mode 100644 features/buildroot/package/urg/urg.hash create mode 100644 features/buildroot/package/urg/urg.mk create mode 100644 features/buildroot/package/usb_modeswitch/0001-Makefile-allow-extra-configure-flags-to-be-passed-to.patch create mode 100644 features/buildroot/package/usb_modeswitch/Config.in create mode 100644 features/buildroot/package/usb_modeswitch/usb_modeswitch.hash create mode 100644 features/buildroot/package/usb_modeswitch/usb_modeswitch.mk create mode 100644 features/buildroot/package/usb_modeswitch_data/Config.in create mode 100644 features/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash create mode 100644 features/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk create mode 100644 features/buildroot/package/usbmount/0001-rules-fix.patch create mode 100644 features/buildroot/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch create mode 100644 features/buildroot/package/usbmount/Config.in create mode 100644 features/buildroot/package/usbmount/usbmount.hash create mode 100644 features/buildroot/package/usbmount/usbmount.mk create mode 100644 features/buildroot/package/usbredir/Config.in create mode 100644 features/buildroot/package/usbredir/usbredir.hash create mode 100644 features/buildroot/package/usbredir/usbredir.mk create mode 100644 features/buildroot/package/usbutils/Config.in create mode 100644 features/buildroot/package/usbutils/usbutils.hash create mode 100644 features/buildroot/package/usbutils/usbutils.mk create mode 100644 features/buildroot/package/ushare/0001-compile-fixes.patch create mode 100644 features/buildroot/package/ushare/0002-ushare-fix-building-with-gcc-5.x.patch create mode 100644 features/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch create mode 100644 features/buildroot/package/ushare/Config.in create mode 100644 features/buildroot/package/ushare/ushare.hash create mode 100644 features/buildroot/package/ushare/ushare.mk create mode 100644 features/buildroot/package/ussp-push/0001-fix-build-against-bluez-4.patch create mode 100644 features/buildroot/package/ussp-push/0002-fix-build-again-obex-bluez.patch create mode 100644 features/buildroot/package/ussp-push/0003-add-OBEX_CharToUnicode.patch create mode 100644 features/buildroot/package/ussp-push/Config.in create mode 100644 features/buildroot/package/ussp-push/ussp-push.hash create mode 100644 features/buildroot/package/ussp-push/ussp-push.mk create mode 100644 features/buildroot/package/ustr/Config.in create mode 100644 features/buildroot/package/ustr/ustr.hash create mode 100644 features/buildroot/package/ustr/ustr.mk create mode 100644 features/buildroot/package/ustream-ssl/Config.in create mode 100644 features/buildroot/package/ustream-ssl/ustream-ssl.hash create mode 100644 features/buildroot/package/ustream-ssl/ustream-ssl.mk create mode 100644 features/buildroot/package/util-linux/Config.in create mode 100644 features/buildroot/package/util-linux/Config.in.host create mode 100644 features/buildroot/package/util-linux/su.pam create mode 100644 features/buildroot/package/util-linux/util-linux.hash create mode 100644 features/buildroot/package/util-linux/util-linux.mk create mode 100644 features/buildroot/package/utp_com/Config.in.host create mode 100644 features/buildroot/package/utp_com/utp_com.hash create mode 100644 features/buildroot/package/utp_com/utp_com.mk create mode 100644 features/buildroot/package/ux500-firmware/Config.in create mode 100644 features/buildroot/package/ux500-firmware/ux500-firmware.hash create mode 100644 features/buildroot/package/ux500-firmware/ux500-firmware.mk create mode 100644 features/buildroot/package/v4l2grab/Config.in create mode 100644 features/buildroot/package/v4l2grab/v4l2grab.hash create mode 100644 features/buildroot/package/v4l2grab/v4l2grab.mk create mode 100644 features/buildroot/package/v4l2loopback/Config.in create mode 100644 features/buildroot/package/v4l2loopback/v4l2loopback.hash create mode 100644 features/buildroot/package/v4l2loopback/v4l2loopback.mk create mode 100644 features/buildroot/package/vala/0001-dont-add-dirty-to-valac-version.patch create mode 100644 features/buildroot/package/vala/vala-wrapper create mode 100644 features/buildroot/package/vala/vala.hash create mode 100644 features/buildroot/package/vala/vala.mk create mode 100644 features/buildroot/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch create mode 100644 features/buildroot/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch create mode 100644 features/buildroot/package/valgrind/0003-mips-fix-mips32r6-and-mips64r6-compilation-issue.patch create mode 100644 features/buildroot/package/valgrind/Config.in create mode 100644 features/buildroot/package/valgrind/uclibc.supp create mode 100644 features/buildroot/package/valgrind/valgrind.hash create mode 100644 features/buildroot/package/valgrind/valgrind.mk create mode 100644 features/buildroot/package/valijson/Config.in create mode 100644 features/buildroot/package/valijson/valijson.hash create mode 100644 features/buildroot/package/valijson/valijson.mk create mode 100644 features/buildroot/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch create mode 100644 features/buildroot/package/vboot-utils/0002-Add-missing-header-include-for-ssize_t.patch create mode 100644 features/buildroot/package/vboot-utils/0003-Avoid-RSA-type-redefinition.patch create mode 100644 features/buildroot/package/vboot-utils/0004-Disable-static-futility.patch create mode 100644 features/buildroot/package/vboot-utils/0005-include-sys-sysmacros.h-for-major.patch create mode 100644 features/buildroot/package/vboot-utils/0006-Update-for-openssl-1.1.patch create mode 100644 features/buildroot/package/vboot-utils/Config.in.host create mode 100644 features/buildroot/package/vboot-utils/vboot-utils.hash create mode 100644 features/buildroot/package/vboot-utils/vboot-utils.mk create mode 100644 features/buildroot/package/vde2/0001-no-cxx.patch create mode 100644 features/buildroot/package/vde2/0002-fstp-Add-static-to-inline-functions.patch create mode 100644 features/buildroot/package/vde2/Config.in create mode 100644 features/buildroot/package/vde2/vde2.hash create mode 100644 features/buildroot/package/vde2/vde2.mk create mode 100644 features/buildroot/package/vdr-plugin-vnsiserver/Config.in create mode 100644 features/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash create mode 100644 features/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk create mode 100644 features/buildroot/package/vdr/0001-libjpeg.patch create mode 100644 features/buildroot/package/vdr/Config.in create mode 100644 features/buildroot/package/vdr/vdr.hash create mode 100644 features/buildroot/package/vdr/vdr.mk create mode 100644 features/buildroot/package/vim/Config.in create mode 100644 features/buildroot/package/vim/vim.hash create mode 100644 features/buildroot/package/vim/vim.mk create mode 100644 features/buildroot/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch create mode 100644 features/buildroot/package/vlc/0002-lua-Define-LUA_COMPAT_APIINTCASTS-for-Lua-5.3.0-comp.patch create mode 100644 features/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch create mode 100644 features/buildroot/package/vlc/0004-build-use-pkg-config-to-get-tremor-libs.patch create mode 100644 features/buildroot/package/vlc/0005-Fix-build-error-using-uClibc-by-adding-sys-types.h.patch create mode 100644 features/buildroot/package/vlc/0006-Don-t-assume-strerror_l-is-available.patch create mode 100644 features/buildroot/package/vlc/0007-posix-remove-ancient-run-time-fallback-to-real-time-.patch create mode 100644 features/buildroot/package/vlc/0008-Add-support-for-freerdp2.patch create mode 100644 features/buildroot/package/vlc/0009-configure.ac-also-use-AC_PATH_PROG-to-check-for-wayl.patch create mode 100644 features/buildroot/package/vlc/Config.in create mode 100644 features/buildroot/package/vlc/vlc.hash create mode 100644 features/buildroot/package/vlc/vlc.mk create mode 100644 features/buildroot/package/vmtouch/Config.in create mode 100644 features/buildroot/package/vmtouch/vmtouch.hash create mode 100644 features/buildroot/package/vmtouch/vmtouch.mk create mode 100644 features/buildroot/package/vnstat/Config.in create mode 100644 features/buildroot/package/vnstat/vnstat.hash create mode 100644 features/buildroot/package/vnstat/vnstat.mk create mode 100644 features/buildroot/package/vo-aacenc/Config.in create mode 100644 features/buildroot/package/vo-aacenc/vo-aacenc.hash create mode 100644 features/buildroot/package/vo-aacenc/vo-aacenc.mk create mode 100644 features/buildroot/package/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch create mode 100644 features/buildroot/package/vorbis-tools/Config.in create mode 100644 features/buildroot/package/vorbis-tools/vorbis-tools.hash create mode 100644 features/buildroot/package/vorbis-tools/vorbis-tools.mk create mode 100644 features/buildroot/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch create mode 100644 features/buildroot/package/vpnc/0002-Makefile-allow-to-override-the-version.patch create mode 100644 features/buildroot/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch create mode 100644 features/buildroot/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch create mode 100644 features/buildroot/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch create mode 100644 features/buildroot/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch create mode 100644 features/buildroot/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch create mode 100644 features/buildroot/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch create mode 100644 features/buildroot/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch create mode 100644 features/buildroot/package/vpnc/Config.in create mode 100644 features/buildroot/package/vpnc/vpnc.hash create mode 100644 features/buildroot/package/vpnc/vpnc.mk create mode 100644 features/buildroot/package/vsftpd/0001-utmpx-builddef.patch create mode 100644 features/buildroot/package/vsftpd/0003-fix-CVE-2015-1419.patch create mode 100644 features/buildroot/package/vsftpd/0004-Prevent-hang-in-SIGCHLD-handler.patch create mode 100644 features/buildroot/package/vsftpd/Config.in create mode 100644 features/buildroot/package/vsftpd/S70vsftpd create mode 100644 features/buildroot/package/vsftpd/vsftpd.hash create mode 100644 features/buildroot/package/vsftpd/vsftpd.mk create mode 100644 features/buildroot/package/vte/Config.in create mode 100644 features/buildroot/package/vte/vte.hash create mode 100644 features/buildroot/package/vte/vte.mk create mode 100644 features/buildroot/package/vtun/0001-fix-installation.patch create mode 100644 features/buildroot/package/vtun/0002-fix-ssl-headers-checks.patch create mode 100644 features/buildroot/package/vtun/0003-openssl11.patch create mode 100644 features/buildroot/package/vtun/Config.in create mode 100644 features/buildroot/package/vtun/vtun.hash create mode 100644 features/buildroot/package/vtun/vtun.mk create mode 100644 features/buildroot/package/w_scan/0001-musl.patch create mode 100644 features/buildroot/package/w_scan/Config.in create mode 100644 features/buildroot/package/w_scan/w_scan.hash create mode 100644 features/buildroot/package/w_scan/w_scan.mk create mode 100644 features/buildroot/package/waf/waf.hash create mode 100644 features/buildroot/package/waf/waf.mk create mode 100644 features/buildroot/package/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch create mode 100644 features/buildroot/package/waffle/0002-cmake-forward-cflags-from-.pc-files-to-waffle-cflags.patch create mode 100644 features/buildroot/package/waffle/Config.in create mode 100644 features/buildroot/package/waffle/waffle.hash create mode 100644 features/buildroot/package/waffle/waffle.mk create mode 100644 features/buildroot/package/wampcc/Config.in create mode 100644 features/buildroot/package/wampcc/wampcc.hash create mode 100644 features/buildroot/package/wampcc/wampcc.mk create mode 100644 features/buildroot/package/wavemon/0001-Drop-on_exit-use-standard-atexit-instead.patch create mode 100644 features/buildroot/package/wavemon/Config.in create mode 100644 features/buildroot/package/wavemon/wavemon.hash create mode 100644 features/buildroot/package/wavemon/wavemon.mk create mode 100644 features/buildroot/package/wavpack/0001-fix-Github-issue-19-new-dependency-on-wchar-t-by-removing.patch create mode 100644 features/buildroot/package/wavpack/0002-issue-27-do-not-overwrite-stack-on-corrupt-RF64-file.patch create mode 100644 features/buildroot/package/wavpack/0003-issue-28-do-not-overwrite-heap-on-corrupt-DSDIFF-fil.patch create mode 100644 features/buildroot/package/wavpack/0004-issue-28-fix-buffer-overflows-and-bad-allocs-on-corr.patch create mode 100644 features/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch create mode 100644 features/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch create mode 100644 features/buildroot/package/wavpack/Config.in create mode 100644 features/buildroot/package/wavpack/wavpack.hash create mode 100644 features/buildroot/package/wavpack/wavpack.mk create mode 100644 features/buildroot/package/wayland-protocols/Config.in create mode 100644 features/buildroot/package/wayland-protocols/wayland-protocols.hash create mode 100644 features/buildroot/package/wayland-protocols/wayland-protocols.mk create mode 100644 features/buildroot/package/wayland/0001-configure-add-option-to-disable-tests.patch create mode 100644 features/buildroot/package/wayland/Config.in create mode 100644 features/buildroot/package/wayland/wayland.hash create mode 100644 features/buildroot/package/wayland/wayland.mk create mode 100644 features/buildroot/package/waylandpp/Config.in create mode 100644 features/buildroot/package/waylandpp/waylandpp.hash create mode 100644 features/buildroot/package/waylandpp/waylandpp.mk create mode 100644 features/buildroot/package/webkitgtk/Config.in create mode 100644 features/buildroot/package/webkitgtk/webkitgtk.hash create mode 100644 features/buildroot/package/webkitgtk/webkitgtk.mk create mode 100644 features/buildroot/package/webp/Config.in create mode 100644 features/buildroot/package/webp/webp.hash create mode 100644 features/buildroot/package/webp/webp.mk create mode 100644 features/buildroot/package/webrtc-audio-processing/0001-configure.ac-fix-architecture-detection.patch create mode 100644 features/buildroot/package/webrtc-audio-processing/0002-Proper-detection-of-cxxabi.h-and-execinfo.h.patch create mode 100644 features/buildroot/package/webrtc-audio-processing/Config.in create mode 100644 features/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.hash create mode 100644 features/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.mk create mode 100644 features/buildroot/package/websocketpp/0001-Replace-make_shared-with-new-in-some-cases.patch create mode 100644 features/buildroot/package/websocketpp/0002-Fix-missed-entries-fix-testing.patch create mode 100644 features/buildroot/package/websocketpp/Config.in create mode 100644 features/buildroot/package/websocketpp/websocketpp.hash create mode 100644 features/buildroot/package/websocketpp/websocketpp.mk create mode 100644 features/buildroot/package/weston/Config.in create mode 100644 features/buildroot/package/weston/weston.hash create mode 100644 features/buildroot/package/weston/weston.mk create mode 100644 features/buildroot/package/wf111/Config.in create mode 100644 features/buildroot/package/wf111/wf111.hash create mode 100644 features/buildroot/package/wf111/wf111.mk create mode 100644 features/buildroot/package/wget/Config.in create mode 100644 features/buildroot/package/wget/wget.hash create mode 100644 features/buildroot/package/wget/wget.mk create mode 100644 features/buildroot/package/whetstone/Config.in create mode 100644 features/buildroot/package/whetstone/whetstone.hash create mode 100644 features/buildroot/package/whetstone/whetstone.mk create mode 100644 features/buildroot/package/which/Config.in create mode 100644 features/buildroot/package/which/which.hash create mode 100644 features/buildroot/package/which/which.mk create mode 100644 features/buildroot/package/whois/Config.in create mode 100644 features/buildroot/package/whois/whois.hash create mode 100644 features/buildroot/package/whois/whois.mk create mode 100644 features/buildroot/package/wilc1000-firmware/Config.in create mode 100644 features/buildroot/package/wilc1000-firmware/wilc1000-firmware.hash create mode 100644 features/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk create mode 100644 features/buildroot/package/wilink-bt-firmware/Config.in create mode 100644 features/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.hash create mode 100644 features/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.mk create mode 100644 features/buildroot/package/wine/Config.in create mode 100644 features/buildroot/package/wine/wine.hash create mode 100644 features/buildroot/package/wine/wine.mk create mode 100644 features/buildroot/package/wipe/0001-musl.patch create mode 100644 features/buildroot/package/wipe/Config.in create mode 100644 features/buildroot/package/wipe/wipe.hash create mode 100644 features/buildroot/package/wipe/wipe.mk create mode 100644 features/buildroot/package/wireguard/Config.in create mode 100644 features/buildroot/package/wireguard/wireguard.hash create mode 100644 features/buildroot/package/wireguard/wireguard.mk create mode 100644 features/buildroot/package/wireless-regdb/Config.in create mode 100644 features/buildroot/package/wireless-regdb/wireless-regdb.hash create mode 100644 features/buildroot/package/wireless-regdb/wireless-regdb.mk create mode 100644 features/buildroot/package/wireless_tools/0001-remove-bzero.patch create mode 100644 features/buildroot/package/wireless_tools/Config.in create mode 100644 features/buildroot/package/wireless_tools/wireless_tools.hash create mode 100644 features/buildroot/package/wireless_tools/wireless_tools.mk create mode 100644 features/buildroot/package/wireshark/0001-CMake-add-USE_STATIC-option.patch create mode 100644 features/buildroot/package/wireshark/0002-FindPCAP-use-pkg-config-to-find-pcap-dependencies.patch create mode 100644 features/buildroot/package/wireshark/0003-FindXml2-use-pkg-config-to-find-libxml2-dependencies.patch create mode 100644 features/buildroot/package/wireshark/Config.in create mode 100644 features/buildroot/package/wireshark/wireshark.hash create mode 100644 features/buildroot/package/wireshark/wireshark.mk create mode 100644 features/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch create mode 100644 features/buildroot/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch create mode 100644 features/buildroot/package/wiringpi/Config.in create mode 100644 features/buildroot/package/wiringpi/wiringpi.hash create mode 100644 features/buildroot/package/wiringpi/wiringpi.mk create mode 100644 features/buildroot/package/wmctrl/Config.in create mode 100644 features/buildroot/package/wmctrl/wmctrl.hash create mode 100644 features/buildroot/package/wmctrl/wmctrl.mk create mode 100644 features/buildroot/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch create mode 100644 features/buildroot/package/woff2/Config.in create mode 100644 features/buildroot/package/woff2/woff2.hash create mode 100644 features/buildroot/package/woff2/woff2.mk create mode 100644 features/buildroot/package/wolfssl/Config.in create mode 100644 features/buildroot/package/wolfssl/wolfssl.hash create mode 100644 features/buildroot/package/wolfssl/wolfssl.mk create mode 100644 features/buildroot/package/wpa_supplicant/0001-wpa_supplicant-2.7-fix-undefined-remove-ie.patch create mode 100644 features/buildroot/package/wpa_supplicant/Config.in create mode 100644 features/buildroot/package/wpa_supplicant/wpa_supplicant.conf create mode 100644 features/buildroot/package/wpa_supplicant/wpa_supplicant.hash create mode 100644 features/buildroot/package/wpa_supplicant/wpa_supplicant.mk create mode 100644 features/buildroot/package/wpan-tools/Config.in create mode 100644 features/buildroot/package/wpan-tools/wpan-tools.hash create mode 100644 features/buildroot/package/wpan-tools/wpan-tools.mk create mode 100644 features/buildroot/package/wpebackend-fdo/Config.in create mode 100644 features/buildroot/package/wpebackend-fdo/wpebackend-fdo.hash create mode 100644 features/buildroot/package/wpebackend-fdo/wpebackend-fdo.mk create mode 100644 features/buildroot/package/wpewebkit/0001-Build-failure-after-r243644-in-GTK-Li.patch create mode 100644 features/buildroot/package/wpewebkit/0001-Fix-build-with-musl.patch create mode 100644 features/buildroot/package/wpewebkit/Config.in create mode 100644 features/buildroot/package/wpewebkit/wpewebkit.hash create mode 100644 features/buildroot/package/wpewebkit/wpewebkit.mk create mode 100644 features/buildroot/package/wsapi-fcgi/Config.in create mode 100644 features/buildroot/package/wsapi-fcgi/wsapi-fcgi.hash create mode 100644 features/buildroot/package/wsapi-fcgi/wsapi-fcgi.mk create mode 100644 features/buildroot/package/wsapi-xavante/Config.in create mode 100644 features/buildroot/package/wsapi-xavante/wsapi-xavante.hash create mode 100644 features/buildroot/package/wsapi-xavante/wsapi-xavante.mk create mode 100644 features/buildroot/package/wsapi/Config.in create mode 100644 features/buildroot/package/wsapi/wsapi.hash create mode 100644 features/buildroot/package/wsapi/wsapi.mk create mode 100644 features/buildroot/package/x11r7/Config.in create mode 100644 features/buildroot/package/x11r7/libxcb/Config.in create mode 100644 features/buildroot/package/x11r7/libxcb/libxcb.hash create mode 100644 features/buildroot/package/x11r7/libxcb/libxcb.mk create mode 100644 features/buildroot/package/x11r7/mcookie/Config.in create mode 100644 features/buildroot/package/x11r7/mcookie/mcookie.c create mode 100644 features/buildroot/package/x11r7/mcookie/mcookie.mk create mode 100644 features/buildroot/package/x11r7/x11r7.mk create mode 100644 features/buildroot/package/x11r7/xapp_appres/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_appres/xapp_appres.hash create mode 100644 features/buildroot/package/x11r7/xapp_appres/xapp_appres.mk create mode 100644 features/buildroot/package/x11r7/xapp_bdftopcf/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash create mode 100644 features/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk create mode 100644 features/buildroot/package/x11r7/xapp_beforelight/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.hash create mode 100644 features/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.mk create mode 100644 features/buildroot/package/x11r7/xapp_bitmap/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.hash create mode 100644 features/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.mk create mode 100644 features/buildroot/package/x11r7/xapp_editres/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_editres/xapp_editres.hash create mode 100644 features/buildroot/package/x11r7/xapp_editres/xapp_editres.mk create mode 100644 features/buildroot/package/x11r7/xapp_fonttosfnt/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash create mode 100644 features/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk create mode 100644 features/buildroot/package/x11r7/xapp_fslsfonts/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash create mode 100644 features/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk create mode 100644 features/buildroot/package/x11r7/xapp_fstobdf/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash create mode 100644 features/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk create mode 100644 features/buildroot/package/x11r7/xapp_iceauth/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash create mode 100644 features/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk create mode 100644 features/buildroot/package/x11r7/xapp_ico/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_ico/xapp_ico.hash create mode 100644 features/buildroot/package/x11r7/xapp_ico/xapp_ico.mk create mode 100644 features/buildroot/package/x11r7/xapp_listres/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_listres/xapp_listres.hash create mode 100644 features/buildroot/package/x11r7/xapp_listres/xapp_listres.mk create mode 100644 features/buildroot/package/x11r7/xapp_luit/0001-posix-openpt.patch create mode 100644 features/buildroot/package/x11r7/xapp_luit/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_luit/xapp_luit.hash create mode 100644 features/buildroot/package/x11r7/xapp_luit/xapp_luit.mk create mode 100644 features/buildroot/package/x11r7/xapp_mkfontscale/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash create mode 100644 features/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk create mode 100644 features/buildroot/package/x11r7/xapp_oclock/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash create mode 100644 features/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk create mode 100644 features/buildroot/package/x11r7/xapp_rgb/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_rgb/xapp_rgb.hash create mode 100644 features/buildroot/package/x11r7/xapp_rgb/xapp_rgb.mk create mode 100644 features/buildroot/package/x11r7/xapp_rstart/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_rstart/xapp_rstart.hash create mode 100644 features/buildroot/package/x11r7/xapp_rstart/xapp_rstart.mk create mode 100644 features/buildroot/package/x11r7/xapp_scripts/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_scripts/xapp_scripts.hash create mode 100644 features/buildroot/package/x11r7/xapp_scripts/xapp_scripts.mk create mode 100644 features/buildroot/package/x11r7/xapp_sessreg/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.hash create mode 100644 features/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.mk create mode 100644 features/buildroot/package/x11r7/xapp_setxkbmap/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash create mode 100644 features/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk create mode 100644 features/buildroot/package/x11r7/xapp_showfont/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_showfont/xapp_showfont.hash create mode 100644 features/buildroot/package/x11r7/xapp_showfont/xapp_showfont.mk create mode 100644 features/buildroot/package/x11r7/xapp_smproxy/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.hash create mode 100644 features/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.mk create mode 100644 features/buildroot/package/x11r7/xapp_twm/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_twm/xapp_twm.hash create mode 100644 features/buildroot/package/x11r7/xapp_twm/xapp_twm.mk create mode 100644 features/buildroot/package/x11r7/xapp_viewres/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash create mode 100644 features/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk create mode 100644 features/buildroot/package/x11r7/xapp_x11perf/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.hash create mode 100644 features/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.mk create mode 100644 features/buildroot/package/x11r7/xapp_xauth/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash create mode 100644 features/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk create mode 100644 features/buildroot/package/x11r7/xapp_xbacklight/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash create mode 100644 features/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk create mode 100644 features/buildroot/package/x11r7/xapp_xbiff/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.hash create mode 100644 features/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.mk create mode 100644 features/buildroot/package/x11r7/xapp_xcalc/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.hash create mode 100644 features/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.mk create mode 100644 features/buildroot/package/x11r7/xapp_xclipboard/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash create mode 100644 features/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk create mode 100644 features/buildroot/package/x11r7/xapp_xclock/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xclock/xapp_xclock.hash create mode 100644 features/buildroot/package/x11r7/xapp_xclock/xapp_xclock.mk create mode 100644 features/buildroot/package/x11r7/xapp_xcmsdb/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash create mode 100644 features/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk create mode 100644 features/buildroot/package/x11r7/xapp_xcompmgr/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash create mode 100644 features/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk create mode 100644 features/buildroot/package/x11r7/xapp_xconsole/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash create mode 100644 features/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk create mode 100644 features/buildroot/package/x11r7/xapp_xcursorgen/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash create mode 100644 features/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk create mode 100644 features/buildroot/package/x11r7/xapp_xdbedizzy/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash create mode 100644 features/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk create mode 100644 features/buildroot/package/x11r7/xapp_xditview/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xditview/xapp_xditview.hash create mode 100644 features/buildroot/package/x11r7/xapp_xditview/xapp_xditview.mk create mode 100644 features/buildroot/package/x11r7/xapp_xdm/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xdm/S99xdm create mode 100644 features/buildroot/package/x11r7/xapp_xdm/xapp_xdm.hash create mode 100644 features/buildroot/package/x11r7/xapp_xdm/xapp_xdm.mk create mode 100644 features/buildroot/package/x11r7/xapp_xdpyinfo/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash create mode 100644 features/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk create mode 100644 features/buildroot/package/x11r7/xapp_xdriinfo/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash create mode 100644 features/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk create mode 100644 features/buildroot/package/x11r7/xapp_xedit/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xedit/xapp_xedit.hash create mode 100644 features/buildroot/package/x11r7/xapp_xedit/xapp_xedit.mk create mode 100644 features/buildroot/package/x11r7/xapp_xev/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xev/xapp_xev.hash create mode 100644 features/buildroot/package/x11r7/xapp_xev/xapp_xev.mk create mode 100644 features/buildroot/package/x11r7/xapp_xeyes/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash create mode 100644 features/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk create mode 100644 features/buildroot/package/x11r7/xapp_xf86dga/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash create mode 100644 features/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk create mode 100644 features/buildroot/package/x11r7/xapp_xfd/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xfd/xapp_xfd.hash create mode 100644 features/buildroot/package/x11r7/xapp_xfd/xapp_xfd.mk create mode 100644 features/buildroot/package/x11r7/xapp_xfindproxy/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash create mode 100644 features/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk create mode 100644 features/buildroot/package/x11r7/xapp_xfontsel/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash create mode 100644 features/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk create mode 100644 features/buildroot/package/x11r7/xapp_xfs/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xfs/xapp_xfs.hash create mode 100644 features/buildroot/package/x11r7/xapp_xfs/xapp_xfs.mk create mode 100644 features/buildroot/package/x11r7/xapp_xfsinfo/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash create mode 100644 features/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk create mode 100644 features/buildroot/package/x11r7/xapp_xgamma/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.hash create mode 100644 features/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.mk create mode 100644 features/buildroot/package/x11r7/xapp_xgc/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xgc/xapp_xgc.hash create mode 100644 features/buildroot/package/x11r7/xapp_xgc/xapp_xgc.mk create mode 100644 features/buildroot/package/x11r7/xapp_xhost/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xhost/xapp_xhost.hash create mode 100644 features/buildroot/package/x11r7/xapp_xhost/xapp_xhost.mk create mode 100644 features/buildroot/package/x11r7/xapp_xinit/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash create mode 100644 features/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk create mode 100644 features/buildroot/package/x11r7/xapp_xinput-calibrator/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash create mode 100644 features/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk create mode 100644 features/buildroot/package/x11r7/xapp_xinput/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xinput/xapp_xinput.hash create mode 100644 features/buildroot/package/x11r7/xapp_xinput/xapp_xinput.mk create mode 100644 features/buildroot/package/x11r7/xapp_xkbcomp/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash create mode 100644 features/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk create mode 100644 features/buildroot/package/x11r7/xapp_xkbevd/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash create mode 100644 features/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk create mode 100644 features/buildroot/package/x11r7/xapp_xkbprint/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash create mode 100644 features/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk create mode 100644 features/buildroot/package/x11r7/xapp_xkbutils/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash create mode 100644 features/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk create mode 100644 features/buildroot/package/x11r7/xapp_xkill/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash create mode 100644 features/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk create mode 100644 features/buildroot/package/x11r7/xapp_xload/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xload/xapp_xload.hash create mode 100644 features/buildroot/package/x11r7/xapp_xload/xapp_xload.mk create mode 100644 features/buildroot/package/x11r7/xapp_xlogo/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.hash create mode 100644 features/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.mk create mode 100644 features/buildroot/package/x11r7/xapp_xlsatoms/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash create mode 100644 features/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk create mode 100644 features/buildroot/package/x11r7/xapp_xlsclients/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash create mode 100644 features/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk create mode 100644 features/buildroot/package/x11r7/xapp_xlsfonts/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash create mode 100644 features/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk create mode 100644 features/buildroot/package/x11r7/xapp_xmag/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xmag/xapp_xmag.hash create mode 100644 features/buildroot/package/x11r7/xapp_xmag/xapp_xmag.mk create mode 100644 features/buildroot/package/x11r7/xapp_xman/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xman/xapp_xman.hash create mode 100644 features/buildroot/package/x11r7/xapp_xman/xapp_xman.mk create mode 100644 features/buildroot/package/x11r7/xapp_xmessage/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash create mode 100644 features/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk create mode 100644 features/buildroot/package/x11r7/xapp_xmh/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xmh/xapp_xmh.hash create mode 100644 features/buildroot/package/x11r7/xapp_xmh/xapp_xmh.mk create mode 100644 features/buildroot/package/x11r7/xapp_xmodmap/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash create mode 100644 features/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk create mode 100644 features/buildroot/package/x11r7/xapp_xmore/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xmore/xapp_xmore.hash create mode 100644 features/buildroot/package/x11r7/xapp_xmore/xapp_xmore.mk create mode 100644 features/buildroot/package/x11r7/xapp_xpr/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash create mode 100644 features/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk create mode 100644 features/buildroot/package/x11r7/xapp_xprop/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash create mode 100644 features/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk create mode 100644 features/buildroot/package/x11r7/xapp_xrandr/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.hash create mode 100644 features/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.mk create mode 100644 features/buildroot/package/x11r7/xapp_xrdb/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash create mode 100644 features/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk create mode 100644 features/buildroot/package/x11r7/xapp_xrefresh/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash create mode 100644 features/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk create mode 100644 features/buildroot/package/x11r7/xapp_xset/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xset/xapp_xset.hash create mode 100644 features/buildroot/package/x11r7/xapp_xset/xapp_xset.mk create mode 100644 features/buildroot/package/x11r7/xapp_xsetmode/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash create mode 100644 features/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk create mode 100644 features/buildroot/package/x11r7/xapp_xsetpointer/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash create mode 100644 features/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk create mode 100644 features/buildroot/package/x11r7/xapp_xsetroot/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash create mode 100644 features/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk create mode 100644 features/buildroot/package/x11r7/xapp_xsm/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash create mode 100644 features/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk create mode 100644 features/buildroot/package/x11r7/xapp_xstdcmap/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash create mode 100644 features/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk create mode 100644 features/buildroot/package/x11r7/xapp_xvidtune/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash create mode 100644 features/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk create mode 100644 features/buildroot/package/x11r7/xapp_xvinfo/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash create mode 100644 features/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk create mode 100644 features/buildroot/package/x11r7/xapp_xwd/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash create mode 100644 features/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk create mode 100644 features/buildroot/package/x11r7/xapp_xwininfo/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash create mode 100644 features/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk create mode 100644 features/buildroot/package/x11r7/xapp_xwud/Config.in create mode 100644 features/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash create mode 100644 features/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk create mode 100644 features/buildroot/package/x11r7/xcb-proto/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-proto/xcb-proto.hash create mode 100644 features/buildroot/package/x11r7/xcb-proto/xcb-proto.mk create mode 100644 features/buildroot/package/x11r7/xcb-util-cursor/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash create mode 100644 features/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk create mode 100644 features/buildroot/package/x11r7/xcb-util-image/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-util-image/xcb-util-image.hash create mode 100644 features/buildroot/package/x11r7/xcb-util-image/xcb-util-image.mk create mode 100644 features/buildroot/package/x11r7/xcb-util-keysyms/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash create mode 100644 features/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk create mode 100644 features/buildroot/package/x11r7/xcb-util-renderutil/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash create mode 100644 features/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk create mode 100644 features/buildroot/package/x11r7/xcb-util-wm/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.hash create mode 100644 features/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.mk create mode 100644 features/buildroot/package/x11r7/xcb-util/Config.in create mode 100644 features/buildroot/package/x11r7/xcb-util/xcb-util.hash create mode 100644 features/buildroot/package/x11r7/xcb-util/xcb-util.mk create mode 100644 features/buildroot/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch create mode 100644 features/buildroot/package/x11r7/xcursor-transparent-theme/Config.in create mode 100644 features/buildroot/package/x11r7/xcursor-transparent-theme/index.theme create mode 100644 features/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash create mode 100644 features/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk create mode 100644 features/buildroot/package/x11r7/xdata_xbitmaps/Config.in create mode 100644 features/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash create mode 100644 features/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk create mode 100644 features/buildroot/package/x11r7/xdata_xcursor-themes/Config.in create mode 100644 features/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash create mode 100644 features/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-evdev/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-joystick/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-keyboard/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-libinput/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-mouse/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-synaptics/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-tslib/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ark/0001-mibstore.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ark/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ast/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ati/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-cirrus/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-dummy/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbdev/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-geode/0001-Remove-call-to-LoaderGetOS.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-geode/0002-gx-Fix-RANDR-initialization-for-xserver-1.20.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-geode/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-glint/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-i128/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-intel/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mach64/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mga/0001-misc-fixes.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mga/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-neomagic/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-nouveau/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-nv/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-r128/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-savage/0001-cross-compile.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-savage/0002-xorg-xserver120.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-savage/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-sis/0001-cross.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-sis/0002-Remove-reference-to-virtualFrom.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-sis/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tdfx/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tga/0001-mibstore.patch create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tga/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-trident/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-vesa/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-vmware/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-voodoo/Config.in create mode 100644 features/buildroot/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk create mode 100644 features/buildroot/package/x11r7/xfont_encodings/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_encodings/xfont_encodings.hash create mode 100644 features/buildroot/package/x11r7/xfont_encodings/xfont_encodings.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-100dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-75dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-alias/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-arabic-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-100dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-75dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-ttf/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-type1/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-100dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-75dpi/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-type1/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-cursor-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-daewoo-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-dec-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-ibm-type1/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-isas-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-jis-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-micro-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-cyrillic/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-ethiopic/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-meltho/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-mutt-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-schumacher-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-screen-cyrillic/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-sony-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-sun-misc/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-util/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-util/xfont_font-util.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-util/xfont_font-util.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk create mode 100644 features/buildroot/package/x11r7/xfont_font-xfree86-type1/Config.in create mode 100644 features/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash create mode 100644 features/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk create mode 100644 features/buildroot/package/x11r7/xkeyboard-config/Config.in create mode 100644 features/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash create mode 100644 features/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk create mode 100644 features/buildroot/package/x11r7/xlib_libFS/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libFS/xlib_libFS.hash create mode 100644 features/buildroot/package/x11r7/xlib_libFS/xlib_libFS.mk create mode 100644 features/buildroot/package/x11r7/xlib_libICE/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libICE/xlib_libICE.hash create mode 100644 features/buildroot/package/x11r7/xlib_libICE/xlib_libICE.mk create mode 100644 features/buildroot/package/x11r7/xlib_libSM/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libSM/xlib_libSM.hash create mode 100644 features/buildroot/package/x11r7/xlib_libSM/xlib_libSM.mk create mode 100644 features/buildroot/package/x11r7/xlib_libX11/0001-makekeys-detach-ourselves-from-X-headers-entirely.patch create mode 100644 features/buildroot/package/x11r7/xlib_libX11/0002-remove-reliance-on-static-libc.patch create mode 100644 features/buildroot/package/x11r7/xlib_libX11/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash create mode 100644 features/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXScrnSaver/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXau/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXau/xlib_libXau.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXau/xlib_libXau.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXaw/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXcomposite/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXcursor/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXdamage/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXdmcp/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXext/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXext/xlib_libXext.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXext/xlib_libXext.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXfixes/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXfont/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXfont2/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXft/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXft/xlib_libXft.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXft/xlib_libXft.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXi/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXinerama/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXmu/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXpm/0001-fork-check.patch create mode 100644 features/buildroot/package/x11r7/xlib_libXpm/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXrandr/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXrender/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXres/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXres/xlib_libXres.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXres/xlib_libXres.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXt/0001-util-don-t-link-makestrs-with-target-cflags.patch create mode 100644 features/buildroot/package/x11r7/xlib_libXt/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXt/xlib_libXt.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXt/xlib_libXt.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXtst/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXv/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXvMC/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXxf86dga/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk create mode 100644 features/buildroot/package/x11r7/xlib_libXxf86vm/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash create mode 100644 features/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk create mode 100644 features/buildroot/package/x11r7/xlib_libdmx/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.hash create mode 100644 features/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.mk create mode 100644 features/buildroot/package/x11r7/xlib_libfontenc/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash create mode 100644 features/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk create mode 100644 features/buildroot/package/x11r7/xlib_libxkbfile/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash create mode 100644 features/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk create mode 100644 features/buildroot/package/x11r7/xlib_libxshmfence/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash create mode 100644 features/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk create mode 100644 features/buildroot/package/x11r7/xlib_xtrans/Config.in create mode 100644 features/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.hash create mode 100644 features/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.mk create mode 100644 features/buildroot/package/x11r7/xorgproto/Config.in create mode 100644 features/buildroot/package/x11r7/xorgproto/xorgproto.hash create mode 100644 features/buildroot/package/x11r7/xorgproto/xorgproto.mk create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0001-sdksyms-gcc5.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0005-Xi-Do-not-try-to-swap-GenericEvent.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0001-modesettings-needs-dri2.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0005-Xi-Do-not-try-to-swap-GenericEvent.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.20.5/0001-modesettings-needs-dri2.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.20.5/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.20.5/0003-Remove-check-for-useSIGIO-option.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.20.5/0004-include-misc.h-fix-uClibc-build.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/1.20.5/0005-hw-xwayland-Makefile.am-fix-build-without-glx.patch create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/Config.in create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/S40xorg create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash create mode 100644 features/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk create mode 100644 features/buildroot/package/x11r7/xutil_makedepend/Config.in create mode 100644 features/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.hash create mode 100644 features/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.mk create mode 100644 features/buildroot/package/x11vnc/Config.in create mode 100644 features/buildroot/package/x11vnc/x11vnc.hash create mode 100644 features/buildroot/package/x11vnc/x11vnc.mk create mode 100644 features/buildroot/package/x264/Config.in create mode 100644 features/buildroot/package/x264/x264.hash create mode 100644 features/buildroot/package/x264/x264.mk create mode 100644 features/buildroot/package/x265/0001-fix-gcc-options.patch create mode 100644 features/buildroot/package/x265/0002-arm-asm-primitives.patch create mode 100644 features/buildroot/package/x265/Config.in create mode 100644 features/buildroot/package/x265/x265.hash create mode 100644 features/buildroot/package/x265/x265.mk create mode 100644 features/buildroot/package/xapian/Config.in create mode 100644 features/buildroot/package/xapian/xapian.hash create mode 100644 features/buildroot/package/xapian/xapian.mk create mode 100644 features/buildroot/package/xavante/Config.in create mode 100644 features/buildroot/package/xavante/xavante.hash create mode 100644 features/buildroot/package/xavante/xavante.mk create mode 100644 features/buildroot/package/xdotool/Config.in create mode 100644 features/buildroot/package/xdotool/xdotool.hash create mode 100644 features/buildroot/package/xdotool/xdotool.mk create mode 100644 features/buildroot/package/xen/0001-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch create mode 100644 features/buildroot/package/xen/0002-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch create mode 100644 features/buildroot/package/xen/0003-libxl-arm-Fix-build-on-arm64-acpi-w-gcc-8.2.patch create mode 100644 features/buildroot/package/xen/0004-xenpmd-make-32-bit-gcc-8-1-non-debug-build-work.patch create mode 100644 features/buildroot/package/xen/Config.in create mode 100644 features/buildroot/package/xen/xen.hash create mode 100644 features/buildroot/package/xen/xen.mk create mode 100644 features/buildroot/package/xenomai/Config.in create mode 100644 features/buildroot/package/xenomai/xenomai.hash create mode 100644 features/buildroot/package/xenomai/xenomai.mk create mode 100644 features/buildroot/package/xerces/0001-cmake-Allow-thread-checks-to-fail-and-fall-back-to-nothreads.patch create mode 100644 features/buildroot/package/xerces/0002-fix-static-linking-with-curl.patch create mode 100644 features/buildroot/package/xerces/Config.in create mode 100644 features/buildroot/package/xerces/xerces.hash create mode 100644 features/buildroot/package/xerces/xerces.mk create mode 100644 features/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch create mode 100644 features/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch create mode 100644 features/buildroot/package/xfsprogs/Config.in create mode 100644 features/buildroot/package/xfsprogs/xfsprogs.hash create mode 100644 features/buildroot/package/xfsprogs/xfsprogs.mk create mode 100644 features/buildroot/package/xinetd/0001-ar.patch create mode 100644 features/buildroot/package/xinetd/0002-destdir.patch create mode 100644 features/buildroot/package/xinetd/0003-rpc-fix.patch create mode 100644 features/buildroot/package/xinetd/0004-configure-rlim_t.patch create mode 100644 features/buildroot/package/xinetd/Config.in create mode 100644 features/buildroot/package/xinetd/xinetd.hash create mode 100644 features/buildroot/package/xinetd/xinetd.mk create mode 100644 features/buildroot/package/xl2tp/Config.in create mode 100644 features/buildroot/package/xl2tp/xl2tp.hash create mode 100644 features/buildroot/package/xl2tp/xl2tp.mk create mode 100755 features/buildroot/package/xl2tp/xl2tpd create mode 100644 features/buildroot/package/xmlstarlet/Config.in create mode 100644 features/buildroot/package/xmlstarlet/xmlstarlet.hash create mode 100644 features/buildroot/package/xmlstarlet/xmlstarlet.mk create mode 100644 features/buildroot/package/xorriso/0001-use-sys-xattr.h.patch create mode 100644 features/buildroot/package/xorriso/Config.in create mode 100644 features/buildroot/package/xorriso/Config.in.host create mode 100644 features/buildroot/package/xorriso/xorriso.hash create mode 100644 features/buildroot/package/xorriso/xorriso.mk create mode 100644 features/buildroot/package/xr819-xradio/Config.in create mode 100644 features/buildroot/package/xr819-xradio/xr819-xradio.hash create mode 100644 features/buildroot/package/xr819-xradio/xr819-xradio.mk create mode 100644 features/buildroot/package/xscreensaver/Config.in create mode 100644 features/buildroot/package/xscreensaver/xscreensaver.hash create mode 100644 features/buildroot/package/xscreensaver/xscreensaver.mk create mode 100644 features/buildroot/package/xtables-addons/Config.in create mode 100644 features/buildroot/package/xtables-addons/xtables-addons.hash create mode 100644 features/buildroot/package/xtables-addons/xtables-addons.mk create mode 100644 features/buildroot/package/xterm/Config.in create mode 100644 features/buildroot/package/xterm/xterm.hash create mode 100644 features/buildroot/package/xterm/xterm.mk create mode 100644 features/buildroot/package/xutil_util-macros/Config.in create mode 100644 features/buildroot/package/xutil_util-macros/xutil_util-macros.hash create mode 100644 features/buildroot/package/xutil_util-macros/xutil_util-macros.mk create mode 100644 features/buildroot/package/xvisor/Config.in create mode 100644 features/buildroot/package/xvisor/xvisor.hash create mode 100644 features/buildroot/package/xvisor/xvisor.mk create mode 100644 features/buildroot/package/xvkbd/0001-makefile.patch create mode 100644 features/buildroot/package/xvkbd/Config.in create mode 100644 features/buildroot/package/xvkbd/xvkbd.hash create mode 100644 features/buildroot/package/xvkbd/xvkbd.mk create mode 100644 features/buildroot/package/xxhash/Config.in create mode 100644 features/buildroot/package/xxhash/xxhash.hash create mode 100644 features/buildroot/package/xxhash/xxhash.mk create mode 100644 features/buildroot/package/xz/Config.in create mode 100644 features/buildroot/package/xz/xz.hash create mode 100644 features/buildroot/package/xz/xz.mk create mode 100644 features/buildroot/package/yad/Config.in create mode 100644 features/buildroot/package/yad/yad.hash create mode 100644 features/buildroot/package/yad/yad.mk create mode 100644 features/buildroot/package/yaffs2utils/yaffs2utils.hash create mode 100644 features/buildroot/package/yaffs2utils/yaffs2utils.mk create mode 100644 features/buildroot/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch create mode 100644 features/buildroot/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch create mode 100644 features/buildroot/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch create mode 100644 features/buildroot/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch create mode 100644 features/buildroot/package/yajl/Config.in create mode 100644 features/buildroot/package/yajl/yajl.hash create mode 100644 features/buildroot/package/yajl/yajl.mk create mode 100644 features/buildroot/package/yaml-cpp/Config.in create mode 100644 features/buildroot/package/yaml-cpp/yaml-cpp.hash create mode 100644 features/buildroot/package/yaml-cpp/yaml-cpp.mk create mode 100644 features/buildroot/package/yasm/Config.in create mode 100644 features/buildroot/package/yasm/yasm.hash create mode 100644 features/buildroot/package/yasm/yasm.mk create mode 100644 features/buildroot/package/yavta/Config.in create mode 100644 features/buildroot/package/yavta/yavta.mk create mode 100644 features/buildroot/package/ympd/0002-only-c-language.patch create mode 100644 features/buildroot/package/ympd/Config.in create mode 100644 features/buildroot/package/ympd/ympd.hash create mode 100644 features/buildroot/package/ympd/ympd.mk create mode 100644 features/buildroot/package/zbar/Config.in create mode 100644 features/buildroot/package/zbar/zbar.hash create mode 100644 features/buildroot/package/zbar/zbar.mk create mode 100644 features/buildroot/package/zd1211-firmware/Config.in create mode 100644 features/buildroot/package/zd1211-firmware/zd1211-firmware.hash create mode 100644 features/buildroot/package/zd1211-firmware/zd1211-firmware.mk create mode 100644 features/buildroot/package/zeromq/Config.in create mode 100644 features/buildroot/package/zeromq/zeromq.hash create mode 100644 features/buildroot/package/zeromq/zeromq.mk create mode 100644 features/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch create mode 100644 features/buildroot/package/zic/zic.hash create mode 100644 features/buildroot/package/zic/zic.mk create mode 100644 features/buildroot/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch create mode 100644 features/buildroot/package/zip/0002-configure-Don-t-use-host-CPP.patch create mode 100644 features/buildroot/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch create mode 100644 features/buildroot/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch create mode 100644 features/buildroot/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch create mode 100644 features/buildroot/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch create mode 100644 features/buildroot/package/zip/Config.in create mode 100644 features/buildroot/package/zip/Config.in.host create mode 100644 features/buildroot/package/zip/zip.hash create mode 100644 features/buildroot/package/zip/zip.mk create mode 100644 features/buildroot/package/zisofs-tools/zisofs-tools.hash create mode 100644 features/buildroot/package/zisofs-tools/zisofs-tools.mk create mode 100644 features/buildroot/package/zlib-ng/zlib-ng.hash create mode 100644 features/buildroot/package/zlib-ng/zlib-ng.mk create mode 100644 features/buildroot/package/zlib/Config.in create mode 100644 features/buildroot/package/zlib/zlib.mk create mode 100644 features/buildroot/package/zlog/Config.in create mode 100644 features/buildroot/package/zlog/zlog.hash create mode 100644 features/buildroot/package/zlog/zlog.mk create mode 100644 features/buildroot/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch create mode 100644 features/buildroot/package/zmqpp/Config.in create mode 100644 features/buildroot/package/zmqpp/zmqpp.hash create mode 100644 features/buildroot/package/zmqpp/zmqpp.mk create mode 100644 features/buildroot/package/znc/Config.in create mode 100644 features/buildroot/package/znc/znc.hash create mode 100644 features/buildroot/package/znc/znc.mk create mode 100644 features/buildroot/package/zsh/Config.in create mode 100644 features/buildroot/package/zsh/zsh.hash create mode 100644 features/buildroot/package/zsh/zsh.mk create mode 100644 features/buildroot/package/zstd/Config.in create mode 100644 features/buildroot/package/zstd/Config.in.host create mode 100644 features/buildroot/package/zstd/zstd.hash create mode 100644 features/buildroot/package/zstd/zstd.mk create mode 100644 features/buildroot/package/zxing-cpp/Config.in create mode 100644 features/buildroot/package/zxing-cpp/zxing-cpp.hash create mode 100644 features/buildroot/package/zxing-cpp/zxing-cpp.mk create mode 100644 features/buildroot/package/zynq-boot-bin/zynq-boot-bin.hash create mode 100644 features/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk create mode 100644 features/buildroot/package/zyre/Config.in create mode 100644 features/buildroot/package/zyre/zyre.hash create mode 100644 features/buildroot/package/zyre/zyre.mk create mode 100644 features/buildroot/package/zziplib/Config.in create mode 100644 features/buildroot/package/zziplib/zziplib.hash create mode 100644 features/buildroot/package/zziplib/zziplib.mk create mode 100644 features/buildroot/support/config-fragments/autobuild/andes-nds32.config create mode 100644 features/buildroot/support/config-fragments/autobuild/arm-aarch64.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arc-full-internal.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arc-internal-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-basic.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-full-static.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-internal-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-microblazeel-full-internal.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-powerpc-internal-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-riscv32.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-riscv64.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-sh4-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config create mode 100644 features/buildroot/support/config-fragments/autobuild/br-xtensa-full.config create mode 100644 features/buildroot/support/config-fragments/autobuild/linaro-aarch64-be.config create mode 100644 features/buildroot/support/config-fragments/autobuild/linaro-aarch64.config create mode 100644 features/buildroot/support/config-fragments/autobuild/linaro-arm.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-arm-armv4t.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-arm-thumb2.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-arm.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-mips.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-mips64.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-nios2.config create mode 100644 features/buildroot/support/config-fragments/autobuild/sourcery-x86-64.config create mode 100644 features/buildroot/support/config-fragments/autobuild/toolchain-configs.csv create mode 100644 features/buildroot/support/config-fragments/minimal.config create mode 100755 features/buildroot/support/dependencies/check-host-asciidoc.sh create mode 100644 features/buildroot/support/dependencies/check-host-bison-flex.mk create mode 100644 features/buildroot/support/dependencies/check-host-cmake.mk create mode 100755 features/buildroot/support/dependencies/check-host-cmake.sh create mode 100644 features/buildroot/support/dependencies/check-host-gzip.mk create mode 100755 features/buildroot/support/dependencies/check-host-gzip.sh create mode 100644 features/buildroot/support/dependencies/check-host-lzip.mk create mode 100755 features/buildroot/support/dependencies/check-host-lzip.sh create mode 100644 features/buildroot/support/dependencies/check-host-make.mk create mode 100755 features/buildroot/support/dependencies/check-host-make.sh create mode 100644 features/buildroot/support/dependencies/check-host-python3.mk create mode 100755 features/buildroot/support/dependencies/check-host-python3.sh create mode 100644 features/buildroot/support/dependencies/check-host-tar.mk create mode 100755 features/buildroot/support/dependencies/check-host-tar.sh create mode 100644 features/buildroot/support/dependencies/check-host-xzcat.mk create mode 100755 features/buildroot/support/dependencies/check-host-xzcat.sh create mode 100644 features/buildroot/support/dependencies/dependencies.mk create mode 100755 features/buildroot/support/dependencies/dependencies.sh create mode 100644 features/buildroot/support/docker/Dockerfile create mode 100644 features/buildroot/support/docker/apt-sources.list create mode 100755 features/buildroot/support/download/bzr create mode 100755 features/buildroot/support/download/check-hash create mode 100755 features/buildroot/support/download/cvs create mode 100755 features/buildroot/support/download/dl-wrapper create mode 100755 features/buildroot/support/download/file create mode 100755 features/buildroot/support/download/git create mode 100755 features/buildroot/support/download/hg create mode 100755 features/buildroot/support/download/scp create mode 100755 features/buildroot/support/download/svn create mode 100755 features/buildroot/support/download/wget create mode 100644 features/buildroot/support/gnuconfig/README.buildroot create mode 100755 features/buildroot/support/gnuconfig/config.guess create mode 100755 features/buildroot/support/gnuconfig/config.sub create mode 100644 features/buildroot/support/kconfig/.gitignore create mode 100644 features/buildroot/support/kconfig/Makefile create mode 100644 features/buildroot/support/kconfig/Makefile.br create mode 100644 features/buildroot/support/kconfig/POTFILES.in create mode 100644 features/buildroot/support/kconfig/README.buildroot create mode 100755 features/buildroot/support/kconfig/check.sh create mode 100644 features/buildroot/support/kconfig/conf.c create mode 100644 features/buildroot/support/kconfig/confdata.c create mode 100644 features/buildroot/support/kconfig/expr.c create mode 100644 features/buildroot/support/kconfig/expr.h create mode 100644 features/buildroot/support/kconfig/foo.h create mode 100644 features/buildroot/support/kconfig/gconf.c create mode 100644 features/buildroot/support/kconfig/gconf.glade create mode 100644 features/buildroot/support/kconfig/images.c create mode 100644 features/buildroot/support/kconfig/kconf_id.c create mode 100644 features/buildroot/support/kconfig/kxgettext.c create mode 100644 features/buildroot/support/kconfig/list.h create mode 100644 features/buildroot/support/kconfig/lkc.h create mode 100644 features/buildroot/support/kconfig/lkc_proto.h create mode 100644 features/buildroot/support/kconfig/lxdialog/.gitignore create mode 100644 features/buildroot/support/kconfig/lxdialog/BIG.FAT.WARNING create mode 100755 features/buildroot/support/kconfig/lxdialog/check-lxdialog.sh create mode 100644 features/buildroot/support/kconfig/lxdialog/checklist.c create mode 100644 features/buildroot/support/kconfig/lxdialog/dialog.h create mode 100644 features/buildroot/support/kconfig/lxdialog/inputbox.c create mode 100644 features/buildroot/support/kconfig/lxdialog/menubox.c create mode 100644 features/buildroot/support/kconfig/lxdialog/textbox.c create mode 100644 features/buildroot/support/kconfig/lxdialog/util.c create mode 100644 features/buildroot/support/kconfig/lxdialog/yesno.c create mode 100644 features/buildroot/support/kconfig/mconf.c create mode 100644 features/buildroot/support/kconfig/menu.c create mode 100755 features/buildroot/support/kconfig/merge_config.sh create mode 100644 features/buildroot/support/kconfig/nconf.c create mode 100644 features/buildroot/support/kconfig/nconf.gui.c create mode 100644 features/buildroot/support/kconfig/nconf.h create mode 100644 features/buildroot/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch create mode 100644 features/buildroot/support/kconfig/patches/06-br-build-system-integration.patch create mode 100644 features/buildroot/support/kconfig/patches/10-br-build-system.patch create mode 100644 features/buildroot/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch create mode 100644 features/buildroot/support/kconfig/patches/12-fix-glade-file-path.patch create mode 100644 features/buildroot/support/kconfig/patches/14-support-out-of-tree-config.patch create mode 100644 features/buildroot/support/kconfig/patches/16-fix-space-to-de-select-options.patch create mode 100644 features/buildroot/support/kconfig/patches/17-backport-kecho.patch create mode 100644 features/buildroot/support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch create mode 100644 features/buildroot/support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch create mode 100644 features/buildroot/support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch create mode 100644 features/buildroot/support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch create mode 100644 features/buildroot/support/kconfig/patches/series create mode 100644 features/buildroot/support/kconfig/qconf.cc create mode 100644 features/buildroot/support/kconfig/qconf.h create mode 100755 features/buildroot/support/kconfig/streamline_config.pl create mode 100644 features/buildroot/support/kconfig/symbol.c create mode 100644 features/buildroot/support/kconfig/util.c create mode 100644 features/buildroot/support/kconfig/zconf.l create mode 100644 features/buildroot/support/kconfig/zconf.lex.c_shipped create mode 100644 features/buildroot/support/kconfig/zconf.tab.c_shipped create mode 100644 features/buildroot/support/kconfig/zconf.y create mode 100644 features/buildroot/support/legal-info/README.header create mode 100644 features/buildroot/support/legal-info/README.warnings-header create mode 100644 features/buildroot/support/legal-info/buildroot.hash create mode 100644 features/buildroot/support/libtool/buildroot-libtool-v1.5.patch create mode 100644 features/buildroot/support/libtool/buildroot-libtool-v2.2.patch create mode 100644 features/buildroot/support/libtool/buildroot-libtool-v2.4.4.patch create mode 100644 features/buildroot/support/libtool/buildroot-libtool-v2.4.patch create mode 100644 features/buildroot/support/misc/Buildroot.cmake create mode 100644 features/buildroot/support/misc/Vagrantfile create mode 100755 features/buildroot/support/misc/relocate-sdk.sh create mode 100644 features/buildroot/support/misc/target-dir-warning.txt create mode 100644 features/buildroot/support/misc/toolchainfile.cmake.in create mode 100644 features/buildroot/support/misc/utils.mk create mode 100755 features/buildroot/support/scripts/apply-patches.sh create mode 100755 features/buildroot/support/scripts/br2-external create mode 100644 features/buildroot/support/scripts/brpkgutil.py create mode 100755 features/buildroot/support/scripts/check-bin-arch create mode 100755 features/buildroot/support/scripts/check-host-rpath create mode 100755 features/buildroot/support/scripts/check-kernel-headers.sh create mode 100755 features/buildroot/support/scripts/check-merged-usr.sh create mode 100755 features/buildroot/support/scripts/check-uniq-files create mode 100755 features/buildroot/support/scripts/eclipse-register-toolchain create mode 100755 features/buildroot/support/scripts/expunge-gconv-modules create mode 100755 features/buildroot/support/scripts/fix-configure-powerpc64.sh create mode 100755 features/buildroot/support/scripts/fix-rpath create mode 100755 features/buildroot/support/scripts/generate-gitlab-ci-yml create mode 100755 features/buildroot/support/scripts/genimage.sh create mode 100755 features/buildroot/support/scripts/graph-build-time create mode 100755 features/buildroot/support/scripts/graph-depends create mode 100755 features/buildroot/support/scripts/hardlink-or-copy create mode 100755 features/buildroot/support/scripts/mkmakefile create mode 100755 features/buildroot/support/scripts/mkusers create mode 100755 features/buildroot/support/scripts/pkg-stats create mode 100644 features/buildroot/support/scripts/pycompile.py create mode 100755 features/buildroot/support/scripts/setlocalversion create mode 100755 features/buildroot/support/scripts/size-stats create mode 100644 features/buildroot/support/testing/conf/docker-compose-kernel.config create mode 100644 features/buildroot/support/testing/conf/docker-compose.yml create mode 100644 features/buildroot/support/testing/conf/f2fs-kernel-fragment.config create mode 100644 features/buildroot/support/testing/conf/grub2.cfg create mode 100644 features/buildroot/support/testing/conf/isolinux.cfg create mode 100644 features/buildroot/support/testing/conf/minimal-x86-qemu-kernel.config create mode 100644 features/buildroot/support/testing/conf/unittest.cfg create mode 100644 features/buildroot/support/testing/infra/__init__.py create mode 100644 features/buildroot/support/testing/infra/basetest.py create mode 100644 features/buildroot/support/testing/infra/builder.py create mode 100644 features/buildroot/support/testing/infra/emulator.py create mode 100755 features/buildroot/support/testing/run-tests create mode 100644 features/buildroot/support/testing/tests/__init__.py create mode 100644 features/buildroot/support/testing/tests/boot/__init__.py create mode 100644 features/buildroot/support/testing/tests/boot/test_atf.py create mode 100644 features/buildroot/support/testing/tests/core/__init__.py create mode 100644 features/buildroot/support/testing/tests/core/device_table2.txt create mode 100755 features/buildroot/support/testing/tests/core/post-build.sh create mode 120000 features/buildroot/support/testing/tests/core/post-fakeroot.sh create mode 120000 features/buildroot/support/testing/tests/core/post-image.sh create mode 100644 features/buildroot/support/testing/tests/core/rootfs-overlay1/test-file1 create mode 100644 features/buildroot/support/testing/tests/core/rootfs-overlay2/etc/test-file2 create mode 100644 features/buildroot/support/testing/tests/core/squashfs-xattr-kernel.config create mode 100644 features/buildroot/support/testing/tests/core/test_file_capabilities.py create mode 100644 features/buildroot/support/testing/tests/core/test_hardening.py create mode 100644 features/buildroot/support/testing/tests/core/test_post_scripts.py create mode 100644 features/buildroot/support/testing/tests/core/test_rootfs_overlay.py create mode 100644 features/buildroot/support/testing/tests/core/test_timezone.py create mode 100644 features/buildroot/support/testing/tests/download/__init__.py create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/Config.in create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/external.desc create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/external.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/package/bad/bad.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/package/bad/bad.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/package/good/good.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/package/good/good.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-hash/package/nohash/nohash.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/Config.in create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/external.desc create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/external.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.hash create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.mk create mode 100644 features/buildroot/support/testing/tests/download/br2-external/git-refs/package/git-wrong-sha1/git-wrong-sha1.mk create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/.gitattributes create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/HEAD create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/config create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/07/cabc655213bdf7087d8dd50fda95124e935570 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/1d/f823cb8a6d1866148ae50a8009762a9c4c777f create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/7d/52f458bdb0f9f5a4beb46fa82824421b8b988e create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/a1/30af1626bbadd64841b2cbcb6ac4ed0638ba1a create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/bc/c81ba6e5bd8bf52c95688ae8d3e697e131fa23 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/cb/545facf77bbc5f24f95b6d503c338d10b7b717 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/dd/130f6f4629514adaf2e03407f3ed9344eb6cd6 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/objects/f8/001e5780100962a5e30a25cbc4c9609cfc7bf3 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub1.git/refs/heads/submodule create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/.gitattributes create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/HEAD create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/config create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/0a/846af45c3e455789435f49f80d70e86b65b9d7 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/0b/32ebd8fc52cec991f18c94be980e85a8341585 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/32/d61bae693af7879da63b89a60d3ae67f851e56 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/3e/9b0a5198c64cea9c00f820433411e3b4d50c1c create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/85/8f666af75b7c0dfba6b8be7eac5f196e7a1221 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/cd/4d62ff218ab7b4a04f5bfdf800ace087af3ceb create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/objects/e8/3f6f805bd016b90acafc8702c52d778eb57310 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/refs-sub2.git/refs/heads/submodule create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/.gitattributes create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/HEAD create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/config create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/0b/d8ceb961c3b2b210f64a67d57f4b5cd669d343 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/11/93ff46343f4f6a0522e2b28b871e905178c1f0 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/25/59d83bfe937fc0412d96ed664663c9e8a99055 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/2b/0e0d98a49c97da6a618ab36337e2058eb733a2 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/2f/a37f6885d7eb746df75eccaddbacf3ac82799d create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/31/7406308d9259e2231bd0d6ddad3de3832bce08 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/34/d1da713bf7de1c535e1d7d3ca985afd84bc7e5 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/46/bae5b639e5a18e2cc4dc508f080d566baeff59 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/51/6c9c5f64ec66534d4d069c2e408d9ae4dce023 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/68/c197d0879d485f4f6cee85544722b79e68e59f create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/8b/8a7e885a041da72b1ee9a47c5b9300b172a9e7 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/92/ef85be57d627f280d8ce3724452ac21c9a6452 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/a2/38b1dfcd825d47d834af3c5223417c8411d90d create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/a9/dbc1e23c45e8e1b88c0448763f54d714eb6f8f create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/b2/4b387624edc78d0292a127c43cad9ba97c6232 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/cf/0f4f85d7a1237e377a2d25b996518a877ea001 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/d4/e2941d18a63535400476324ddeb7f40164be41 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/e2/2695cbf976fed1f543ad7486a531c0af473482 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/e2/cfe068f7e5bf4de32ffe1241da53abce9fa89e create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/f6/476b879f65e956d7dedd5b08736369e9a24acc create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/objects/fe/74231105841041d5f441e70399d37f0e600aa5 create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/refs/heads/master create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/refs/heads/mybranch create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/refs/heads/submodule create mode 100644 features/buildroot/support/testing/tests/download/git-remote/repo.git/refs/tags/mytag create mode 100644 features/buildroot/support/testing/tests/download/gitremote.py create mode 100644 features/buildroot/support/testing/tests/download/test_git.py create mode 100644 features/buildroot/support/testing/tests/fs/__init__.py create mode 100644 features/buildroot/support/testing/tests/fs/test_ext.py create mode 100644 features/buildroot/support/testing/tests/fs/test_f2fs.py create mode 100644 features/buildroot/support/testing/tests/fs/test_iso9660.py create mode 100644 features/buildroot/support/testing/tests/fs/test_jffs2.py create mode 100644 features/buildroot/support/testing/tests/fs/test_squashfs.py create mode 100644 features/buildroot/support/testing/tests/fs/test_ubi.py create mode 100644 features/buildroot/support/testing/tests/fs/test_yaffs2.py create mode 100644 features/buildroot/support/testing/tests/init/__init__.py create mode 100644 features/buildroot/support/testing/tests/init/base.py create mode 100644 features/buildroot/support/testing/tests/init/systemd-factory/var/foo/bar create mode 100644 features/buildroot/support/testing/tests/init/test_busybox.py create mode 100644 features/buildroot/support/testing/tests/init/test_none.py create mode 100644 features/buildroot/support/testing/tests/init/test_systemd.py create mode 100644 features/buildroot/support/testing/tests/package/__init__.py create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/Config.in create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/external.desc create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/external.mk create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/Config.in create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/HelloWorld.java create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/openjdk-hello-world.mk create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/Config.in create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniHelper.java create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.c create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.java create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.c create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.h create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.c create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.h create mode 100644 features/buildroot/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/openjdk-jni-test.mk create mode 100755 features/buildroot/support/testing/tests/package/copy-sample-script-to-target.sh create mode 100644 features/buildroot/support/testing/tests/package/sample_python_argh.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_attrs.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_autobahn.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_automat.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_bitstring.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_cbor_dec.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_cbor_enc.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_click.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_constantly.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_crossbar.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_cryptography.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_incremental.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_passlib.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_pexpect.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_pynacl.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_pyyaml_dec.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_pyyaml_enc.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_service_identity.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_subprocess32.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_treq.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_twisted.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_txaio_asyncio.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_txaio_twisted.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_txtorcon.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_ubjson_dec.py create mode 100644 features/buildroot/support/testing/tests/package/sample_python_ubjson_enc.py create mode 100644 features/buildroot/support/testing/tests/package/test_atop.py create mode 100644 features/buildroot/support/testing/tests/package/test_docker_compose.py create mode 100644 features/buildroot/support/testing/tests/package/test_dropbear.py create mode 100644 features/buildroot/support/testing/tests/package/test_glxinfo.py create mode 100644 features/buildroot/support/testing/tests/package/test_ipython.py create mode 100644 features/buildroot/support/testing/tests/package/test_lpeg.py create mode 100644 features/buildroot/support/testing/tests/package/test_lsqlite3.py create mode 100644 features/buildroot/support/testing/tests/package/test_lua.py create mode 100644 features/buildroot/support/testing/tests/package/test_lua_curl.py create mode 100644 features/buildroot/support/testing/tests/package/test_lua_http.py create mode 100644 features/buildroot/support/testing/tests/package/test_lua_utf8.py create mode 100644 features/buildroot/support/testing/tests/package/test_luaexpat.py create mode 100644 features/buildroot/support/testing/tests/package/test_luafilesystem.py create mode 100644 features/buildroot/support/testing/tests/package/test_luaossl.py create mode 100644 features/buildroot/support/testing/tests/package/test_luaposix.py create mode 100644 features/buildroot/support/testing/tests/package/test_luasec.py create mode 100644 features/buildroot/support/testing/tests/package/test_luasocket.py create mode 100644 features/buildroot/support/testing/tests/package/test_luasyslog.py create mode 100644 features/buildroot/support/testing/tests/package/test_openjdk.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_class_load.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_dbd_mysql.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_encode_detect.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_gdgraph.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_io_socket_multicast.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_io_socket_ssl.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_libwww_perl.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_mail_dkim.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_x10.py create mode 100644 features/buildroot/support/testing/tests/package/test_perl_xml_libxml.py create mode 100644 features/buildroot/support/testing/tests/package/test_prosody.py create mode 100644 features/buildroot/support/testing/tests/package/test_python.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_argh.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_attrs.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_autobahn.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_automat.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_bitstring.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_cbor.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_click.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_constantly.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_crossbar.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_cryptography.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_incremental.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_passlib.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_pexpect.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_pynacl.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_pyyaml.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_service_identity.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_subprocess32.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_treq.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_twisted.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_txaio.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_txtorcon.py create mode 100644 features/buildroot/support/testing/tests/package/test_python_ubjson.py create mode 100644 features/buildroot/support/testing/tests/package/test_rings.py create mode 100644 features/buildroot/support/testing/tests/package/test_rust.py create mode 100644 features/buildroot/support/testing/tests/package/test_syslog_ng.py create mode 100644 features/buildroot/support/testing/tests/toolchain/__init__.py create mode 100644 features/buildroot/support/testing/tests/toolchain/test_external.py create mode 100644 features/buildroot/system/Config.in create mode 100644 features/buildroot/system/device_table.txt create mode 100644 features/buildroot/system/device_table_dev.txt create mode 100644 features/buildroot/system/skeleton/dev/.empty create mode 120000 features/buildroot/system/skeleton/dev/fd create mode 120000 features/buildroot/system/skeleton/dev/stderr create mode 120000 features/buildroot/system/skeleton/dev/stdin create mode 120000 features/buildroot/system/skeleton/dev/stdout create mode 100644 features/buildroot/system/skeleton/etc/group create mode 100644 features/buildroot/system/skeleton/etc/hosts create mode 120000 features/buildroot/system/skeleton/etc/mtab create mode 100644 features/buildroot/system/skeleton/etc/passwd create mode 100644 features/buildroot/system/skeleton/etc/profile create mode 100644 features/buildroot/system/skeleton/etc/profile.d/umask.sh create mode 100644 features/buildroot/system/skeleton/etc/protocols create mode 120000 features/buildroot/system/skeleton/etc/resolv.conf create mode 100644 features/buildroot/system/skeleton/etc/services create mode 100644 features/buildroot/system/skeleton/etc/shadow create mode 100644 features/buildroot/system/skeleton/media/.empty create mode 100644 features/buildroot/system/skeleton/mnt/.empty create mode 100644 features/buildroot/system/skeleton/opt/.empty create mode 100644 features/buildroot/system/skeleton/proc/.empty create mode 100644 features/buildroot/system/skeleton/root/.empty create mode 100644 features/buildroot/system/skeleton/run/.empty create mode 100644 features/buildroot/system/skeleton/sys/.empty create mode 100644 features/buildroot/system/skeleton/usr/bin/.empty create mode 100644 features/buildroot/system/skeleton/usr/lib/.empty create mode 100644 features/buildroot/system/skeleton/usr/sbin/.empty create mode 100644 features/buildroot/system/system.mk create mode 100644 features/buildroot/toolchain/Config.in create mode 100644 features/buildroot/toolchain/helpers.mk create mode 100644 features/buildroot/toolchain/toolchain-buildroot/Config.in create mode 100644 features/buildroot/toolchain/toolchain-buildroot/toolchain-buildroot.mk create mode 100644 features/buildroot/toolchain/toolchain-external/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-andes-nds32/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-andes-nds32/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-andes-nds32/toolchain-external-andes-nds32.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-andes-nds32/toolchain-external-andes-nds32.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk create mode 100644 features/buildroot/toolchain/toolchain-external/toolchain-external.mk create mode 100644 features/buildroot/toolchain/toolchain-wrapper.c create mode 100644 features/buildroot/toolchain/toolchain-wrapper.mk create mode 100644 features/buildroot/toolchain/toolchain.mk create mode 100644 features/buildroot/toolchain/toolchain/toolchain.mk create mode 100755 features/buildroot/utils/brmake create mode 100755 features/buildroot/utils/check-package create mode 100644 features/buildroot/utils/checkpackagelib/__init__.py create mode 100644 features/buildroot/utils/checkpackagelib/base.py create mode 100644 features/buildroot/utils/checkpackagelib/lib.py create mode 100644 features/buildroot/utils/checkpackagelib/lib_config.py create mode 100644 features/buildroot/utils/checkpackagelib/lib_hash.py create mode 100644 features/buildroot/utils/checkpackagelib/lib_mk.py create mode 100644 features/buildroot/utils/checkpackagelib/lib_patch.py create mode 100644 features/buildroot/utils/checkpackagelib/readme.txt create mode 100755 features/buildroot/utils/config create mode 100755 features/buildroot/utils/diffconfig create mode 100755 features/buildroot/utils/genrandconfig create mode 100755 features/buildroot/utils/get-developers create mode 100644 features/buildroot/utils/getdeveloperlib.py create mode 100644 features/buildroot/utils/readme.txt create mode 100755 features/buildroot/utils/scancpan create mode 100755 features/buildroot/utils/scanpypi create mode 100755 features/buildroot/utils/size-stats-compare create mode 100755 features/buildroot/utils/test-pkg diff --git a/README.md b/README.md index e772e374..8a1c0572 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,13 @@ Shows how to use conan ``json`` generator with custom script to automate the cre Documentation: https://docs.conan.io/en/laters/integrations/deployment.html + +### [Buildroot](features/buildroot) + +Demonstrate how to build a tiny Linux image using [Buildroot](https://buildroot.org/) and Conan. + +Documentation: https://docs.conan.io/en/latest/integrations/cross_platform/buildroot.html + ## How can I reproduce the build steps? All our examples can be built on Windows, Linux and Mac. If you are interested to reproduce diff --git a/features/buildroot/.defconfig b/features/buildroot/.defconfig new file mode 100644 index 00000000..7ab0c3fb --- /dev/null +++ b/features/buildroot/.defconfig @@ -0,0 +1,51 @@ +# +# Automatically generated make config: don't edit +# Mon Feb 18 09:11:56 2008 +# +BR2_HAVE_DOT_CONFIG=y +# BR2_alpha is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_cris is not set +# BR2_ia64 is not set +BR2_i386=y +# BR2_m68k is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +# BR2_x86_64 is not set +# BR2_x86_i486 is not set +# BR2_x86_i586 is not set +BR2_x86_i686=y +# BR2_x86_pentiumpro is not set +# BR2_x86_pentium_mmx is not set +# BR2_x86_pentium_m is not set +# BR2_x86_pentium2 is not set +# BR2_x86_pentium3 is not set +# BR2_x86_pentium4 is not set +# BR2_x86_prescott is not set +# BR2_x86_nocona is not set +# BR2_x86_core2 is not set +# BR2_x86_k6 is not set +# BR2_x86_k6_2 is not set +# BR2_x86_athlon is not set +# BR2_x86_athlon_4 is not set +# BR2_x86_opteron is not set +# BR2_x86_opteron_sse3 is not set +# BR2_x86_barcelona is not set +# BR2_x86_geode is not set +# BR2_x86_c3 is not set +# BR2_x86_winchip_c6 is not set +# BR2_x86_winchip2 is not set +BR2_ARCH="i686" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_TUNE="i686" +BR2_GCC_TARGET_ARCH="i686" + +# +# Target options +# diff --git a/features/buildroot/.flake8 b/features/buildroot/.flake8 new file mode 100644 index 00000000..ee3d5035 --- /dev/null +++ b/features/buildroot/.flake8 @@ -0,0 +1,5 @@ +[flake8] +exclude= + # copied from the kernel sources + utils/diffconfig +max-line-length=80 diff --git a/features/buildroot/.gitignore b/features/buildroot/.gitignore new file mode 100644 index 00000000..bb02d9f5 --- /dev/null +++ b/features/buildroot/.gitignore @@ -0,0 +1,15 @@ +/output +/dl +/.auto.deps +/.config.cmd +/.config.old +/..config.tmp +/.config +*.depend +*.o +/*.patch +/*.diff +*.orig +*.rej +*~ +*.pyc diff --git a/features/buildroot/.gitlab-ci.yml b/features/buildroot/.gitlab-ci.yml new file mode 100644 index 00000000..dd351fc5 --- /dev/null +++ b/features/buildroot/.gitlab-ci.yml @@ -0,0 +1,465 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: buildroot/base:20180318.1724 + +.check_base: + except: + - /^.*-.*_defconfig$/ + - /^.*-tests\..*$/ + +check-DEVELOPERS: + extends: .check_base + # get-developers should print just "No action specified"; if it prints + # anything else, it's a parse error. + # The initial ! is removed by YAML so we need to quote it. + script: + - "! utils/get-developers | grep -v 'No action specified'" + +check-flake8: + extends: .check_base + before_script: + # Help flake8 to find the Python files without .py extension. + - find * -type f -name '*.py' > files.txt + - find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt + - sort -u files.txt | tee files.processed + script: + - python -m flake8 --statistics --count --max-line-length=132 $(cat files.processed) + after_script: + - wc -l files.processed + +check-gitlab-ci.yml: + extends: .check_base + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +check-package: + extends: .check_base + script: + - make check-package + +.defconfig_base: + script: + - echo "Configure Buildroot for ${DEFCONFIG_NAME}" + - make ${DEFCONFIG_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + artifacts: + when: always + expire_in: 2 weeks + paths: + - .config + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + - output/build/*/.config + +.defconfig: + extends: .defconfig_base + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + - /-defconfigs$/ + before_script: + - DEFCONFIG_NAME=${CI_JOB_NAME} + +one-defconfig: + extends: .defconfig_base + only: + - /^.*-.*_defconfig$/ + before_script: + - DEFCONFIG_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g') + +.runtime_test_base: + # Keep build directories so the rootfs can be an artifact of the job. The + # runner will clean up those files for us. + # Multiply every emulator timeout by 10 to avoid sporadic failures in + # elastic runners. + script: + - echo "Starting runtime test ${TEST_CASE_NAME}" + - ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME} + artifacts: + when: always + expire_in: 2 weeks + paths: + - test-output/*.log + - test-output/*/.config + - test-output/*/images/* + +.runtime_test: + extends: .runtime_test_base + # Running the runtime tests for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + - /-runtime-tests$/ + before_script: + - TEST_CASE_NAME=${CI_JOB_NAME} + +one-runtime_test: + extends: .runtime_test_base + only: + - /^.*-tests\..*$/ + before_script: + - TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g') +aarch64_efi_defconfig: { extends: .defconfig } +acmesystems_aria_g25_128mb_defconfig: { extends: .defconfig } +acmesystems_aria_g25_256mb_defconfig: { extends: .defconfig } +acmesystems_arietta_g25_128mb_defconfig: { extends: .defconfig } +acmesystems_arietta_g25_256mb_defconfig: { extends: .defconfig } +amarula_a64_relic_defconfig: { extends: .defconfig } +amarula_vyasa_rk3288_defconfig: { extends: .defconfig } +andes_ae3xx_defconfig: { extends: .defconfig } +arcturus_ucls1012a_defconfig: { extends: .defconfig } +arcturus_ucp1020_defconfig: { extends: .defconfig } +arm_foundationv8_defconfig: { extends: .defconfig } +arm_juno_defconfig: { extends: .defconfig } +armadeus_apf27_defconfig: { extends: .defconfig } +armadeus_apf28_defconfig: { extends: .defconfig } +armadeus_apf51_defconfig: { extends: .defconfig } +asus_tinker_rk3288_defconfig: { extends: .defconfig } +at91sam9260eknf_defconfig: { extends: .defconfig } +at91sam9g20dfc_defconfig: { extends: .defconfig } +at91sam9g45m10ek_defconfig: { extends: .defconfig } +at91sam9rlek_defconfig: { extends: .defconfig } +at91sam9x5ek_defconfig: { extends: .defconfig } +at91sam9x5ek_dev_defconfig: { extends: .defconfig } +at91sam9x5ek_mmc_defconfig: { extends: .defconfig } +at91sam9x5ek_mmc_dev_defconfig: { extends: .defconfig } +atmel_sama5d27_som1_ek_mmc_dev_defconfig: { extends: .defconfig } +atmel_sama5d2_xplained_mmc_defconfig: { extends: .defconfig } +atmel_sama5d2_xplained_mmc_dev_defconfig: { extends: .defconfig } +atmel_sama5d3_xplained_defconfig: { extends: .defconfig } +atmel_sama5d3_xplained_dev_defconfig: { extends: .defconfig } +atmel_sama5d3_xplained_mmc_defconfig: { extends: .defconfig } +atmel_sama5d3_xplained_mmc_dev_defconfig: { extends: .defconfig } +atmel_sama5d3xek_defconfig: { extends: .defconfig } +atmel_sama5d4_xplained_defconfig: { extends: .defconfig } +atmel_sama5d4_xplained_dev_defconfig: { extends: .defconfig } +atmel_sama5d4_xplained_mmc_defconfig: { extends: .defconfig } +atmel_sama5d4_xplained_mmc_dev_defconfig: { extends: .defconfig } +bananapi_m1_defconfig: { extends: .defconfig } +bananapi_m2_plus_defconfig: { extends: .defconfig } +bananapi_m2_ultra_defconfig: { extends: .defconfig } +bananapi_m64_defconfig: { extends: .defconfig } +bananapro_defconfig: { extends: .defconfig } +beagleboardx15_defconfig: { extends: .defconfig } +beaglebone_defconfig: { extends: .defconfig } +beaglebone_qt5_defconfig: { extends: .defconfig } +chromebook_snow_defconfig: { extends: .defconfig } +ci20_defconfig: { extends: .defconfig } +csky_gx6605s_defconfig: { extends: .defconfig } +cubieboard2_defconfig: { extends: .defconfig } +engicam_imx6qdl_icore_defconfig: { extends: .defconfig } +engicam_imx6qdl_icore_qt5_defconfig: { extends: .defconfig } +engicam_imx6qdl_icore_rqs_defconfig: { extends: .defconfig } +engicam_imx6ul_geam_defconfig: { extends: .defconfig } +engicam_imx6ul_isiot_defconfig: { extends: .defconfig } +freescale_imx28evk_defconfig: { extends: .defconfig } +freescale_imx6dlsabreauto_defconfig: { extends: .defconfig } +freescale_imx6dlsabresd_defconfig: { extends: .defconfig } +freescale_imx6qsabreauto_defconfig: { extends: .defconfig } +freescale_imx6qsabresd_defconfig: { extends: .defconfig } +freescale_imx6sxsabresd_defconfig: { extends: .defconfig } +freescale_imx7dsabresd_defconfig: { extends: .defconfig } +freescale_imx8mmevk_defconfig: { extends: .defconfig } +freescale_imx8mqevk_defconfig: { extends: .defconfig } +freescale_imx8qxpmek_defconfig: { extends: .defconfig } +freescale_p1025twr_defconfig: { extends: .defconfig } +freescale_t1040d4rdb_defconfig: { extends: .defconfig } +freescale_t2080_qds_rdb_defconfig: { extends: .defconfig } +friendlyarm_nanopi_a64_defconfig: { extends: .defconfig } +friendlyarm_nanopi_neo2_defconfig: { extends: .defconfig } +galileo_defconfig: { extends: .defconfig } +grinn_chiliboard_defconfig: { extends: .defconfig } +grinn_liteboard_defconfig: { extends: .defconfig } +imx23evk_defconfig: { extends: .defconfig } +imx6-sabreauto_defconfig: { extends: .defconfig } +imx6-sabresd_defconfig: { extends: .defconfig } +imx6-sabresd_qt5_defconfig: { extends: .defconfig } +imx6slevk_defconfig: { extends: .defconfig } +imx6sx-sdb_defconfig: { extends: .defconfig } +imx6ulevk_defconfig: { extends: .defconfig } +imx6ulpico_defconfig: { extends: .defconfig } +imx7d-sdb_defconfig: { extends: .defconfig } +imx7dpico_defconfig: { extends: .defconfig } +imx8mmpico_defconfig: { extends: .defconfig } +imx8mpico_defconfig: { extends: .defconfig } +lego_ev3_defconfig: { extends: .defconfig } +licheepi_zero_defconfig: { extends: .defconfig } +linksprite_pcduino_defconfig: { extends: .defconfig } +minnowboard_max-graphical_defconfig: { extends: .defconfig } +minnowboard_max_defconfig: { extends: .defconfig } +mx25pdk_defconfig: { extends: .defconfig } +mx51evk_defconfig: { extends: .defconfig } +mx53loco_defconfig: { extends: .defconfig } +mx6cubox_defconfig: { extends: .defconfig } +mx6sx_udoo_neo_defconfig: { extends: .defconfig } +mx6udoo_defconfig: { extends: .defconfig } +nanopi_m1_defconfig: { extends: .defconfig } +nanopi_m1_plus_defconfig: { extends: .defconfig } +nanopi_neo_defconfig: { extends: .defconfig } +nexbox_a95x_defconfig: { extends: .defconfig } +nitrogen6sx_defconfig: { extends: .defconfig } +nitrogen6x_defconfig: { extends: .defconfig } +nitrogen7_defconfig: { extends: .defconfig } +nitrogen8m_defconfig: { extends: .defconfig } +odroidc2_defconfig: { extends: .defconfig } +odroidxu4_defconfig: { extends: .defconfig } +olimex_a10_olinuxino_lime_defconfig: { extends: .defconfig } +olimex_a13_olinuxino_defconfig: { extends: .defconfig } +olimex_a20_olinuxino_lime2_defconfig: { extends: .defconfig } +olimex_a20_olinuxino_lime_defconfig: { extends: .defconfig } +olimex_a20_olinuxino_micro_defconfig: { extends: .defconfig } +olimex_a64_olinuxino_defconfig: { extends: .defconfig } +olimex_imx233_olinuxino_defconfig: { extends: .defconfig } +openblocks_a6_defconfig: { extends: .defconfig } +orangepi_lite2_defconfig: { extends: .defconfig } +orangepi_lite_defconfig: { extends: .defconfig } +orangepi_one_defconfig: { extends: .defconfig } +orangepi_one_plus_defconfig: { extends: .defconfig } +orangepi_pc2_defconfig: { extends: .defconfig } +orangepi_pc_defconfig: { extends: .defconfig } +orangepi_pc_plus_defconfig: { extends: .defconfig } +orangepi_plus_defconfig: { extends: .defconfig } +orangepi_prime_defconfig: { extends: .defconfig } +orangepi_r1_defconfig: { extends: .defconfig } +orangepi_win_defconfig: { extends: .defconfig } +orangepi_zero_defconfig: { extends: .defconfig } +orangepi_zero_plus2_defconfig: { extends: .defconfig } +pandaboard_defconfig: { extends: .defconfig } +pc_x86_64_bios_defconfig: { extends: .defconfig } +pc_x86_64_efi_defconfig: { extends: .defconfig } +pine64_defconfig: { extends: .defconfig } +pine64_sopine_defconfig: { extends: .defconfig } +qemu_aarch64_virt_defconfig: { extends: .defconfig } +qemu_arm_versatile_defconfig: { extends: .defconfig } +qemu_arm_versatile_nommu_defconfig: { extends: .defconfig } +qemu_arm_vexpress_defconfig: { extends: .defconfig } +qemu_m68k_mcf5208_defconfig: { extends: .defconfig } +qemu_m68k_q800_defconfig: { extends: .defconfig } +qemu_microblazebe_mmu_defconfig: { extends: .defconfig } +qemu_microblazeel_mmu_defconfig: { extends: .defconfig } +qemu_mips32r2_malta_defconfig: { extends: .defconfig } +qemu_mips32r2el_malta_defconfig: { extends: .defconfig } +qemu_mips32r6_malta_defconfig: { extends: .defconfig } +qemu_mips32r6el_malta_defconfig: { extends: .defconfig } +qemu_mips64_malta_defconfig: { extends: .defconfig } +qemu_mips64el_malta_defconfig: { extends: .defconfig } +qemu_mips64r6_malta_defconfig: { extends: .defconfig } +qemu_mips64r6el_malta_defconfig: { extends: .defconfig } +qemu_nios2_10m50_defconfig: { extends: .defconfig } +qemu_or1k_defconfig: { extends: .defconfig } +qemu_ppc64_e5500_defconfig: { extends: .defconfig } +qemu_ppc64_pseries_defconfig: { extends: .defconfig } +qemu_ppc64le_pseries_defconfig: { extends: .defconfig } +qemu_ppc_g3beige_defconfig: { extends: .defconfig } +qemu_ppc_mac99_defconfig: { extends: .defconfig } +qemu_ppc_mpc8544ds_defconfig: { extends: .defconfig } +qemu_ppc_virtex_ml507_defconfig: { extends: .defconfig } +qemu_riscv32_virt_defconfig: { extends: .defconfig } +qemu_riscv64_virt_defconfig: { extends: .defconfig } +qemu_sh4_r2d_defconfig: { extends: .defconfig } +qemu_sh4eb_r2d_defconfig: { extends: .defconfig } +qemu_sparc64_sun4u_defconfig: { extends: .defconfig } +qemu_sparc_ss10_defconfig: { extends: .defconfig } +qemu_x86_64_defconfig: { extends: .defconfig } +qemu_x86_defconfig: { extends: .defconfig } +qemu_xtensa_lx60_defconfig: { extends: .defconfig } +qemu_xtensa_lx60_nommu_defconfig: { extends: .defconfig } +raspberrypi0_defconfig: { extends: .defconfig } +raspberrypi0w_defconfig: { extends: .defconfig } +raspberrypi2_defconfig: { extends: .defconfig } +raspberrypi3_64_defconfig: { extends: .defconfig } +raspberrypi3_defconfig: { extends: .defconfig } +raspberrypi3_qt5we_defconfig: { extends: .defconfig } +raspberrypi_defconfig: { extends: .defconfig } +riotboard_defconfig: { extends: .defconfig } +rock64_defconfig: { extends: .defconfig } +roseapplepi_defconfig: { extends: .defconfig } +s6lx9_microboard_defconfig: { extends: .defconfig } +sheevaplug_defconfig: { extends: .defconfig } +snps_aarch64_vdk_defconfig: { extends: .defconfig } +snps_arc700_axs101_defconfig: { extends: .defconfig } +snps_archs38_axs103_defconfig: { extends: .defconfig } +snps_archs38_haps_defconfig: { extends: .defconfig } +snps_archs38_hsdk_defconfig: { extends: .defconfig } +snps_archs38_vdk_defconfig: { extends: .defconfig } +socrates_cyclone5_defconfig: { extends: .defconfig } +solidrun_clearfog_defconfig: { extends: .defconfig } +solidrun_clearfog_gt_8k_defconfig: { extends: .defconfig } +solidrun_macchiatobin_mainline_defconfig: { extends: .defconfig } +solidrun_macchiatobin_marvell_defconfig: { extends: .defconfig } +stm32f429_disco_defconfig: { extends: .defconfig } +stm32f469_disco_defconfig: { extends: .defconfig } +toradex_apalis_imx6_defconfig: { extends: .defconfig } +ts4800_defconfig: { extends: .defconfig } +ts4900_defconfig: { extends: .defconfig } +ts5500_defconfig: { extends: .defconfig } +ts7680_defconfig: { extends: .defconfig } +wandboard_defconfig: { extends: .defconfig } +warp7_defconfig: { extends: .defconfig } +warpboard_defconfig: { extends: .defconfig } +zynq_microzed_defconfig: { extends: .defconfig } +zynq_zc706_defconfig: { extends: .defconfig } +zynq_zed_defconfig: { extends: .defconfig } +zynqmp_zcu106_defconfig: { extends: .defconfig } +tests.boot.test_atf.TestATFAllwinner: { extends: .runtime_test } +tests.boot.test_atf.TestATFMarvell: { extends: .runtime_test } +tests.boot.test_atf.TestATFVexpress: { extends: .runtime_test } +tests.core.test_file_capabilities.TestFileCapabilities: { extends: .runtime_test } +tests.core.test_hardening.TestFortifyConserv: { extends: .runtime_test } +tests.core.test_hardening.TestFortifyNone: { extends: .runtime_test } +tests.core.test_hardening.TestRelro: { extends: .runtime_test } +tests.core.test_hardening.TestRelroPartial: { extends: .runtime_test } +tests.core.test_hardening.TestSspNone: { extends: .runtime_test } +tests.core.test_hardening.TestSspStrong: { extends: .runtime_test } +tests.core.test_post_scripts.TestPostScripts: { extends: .runtime_test } +tests.core.test_rootfs_overlay.TestRootfsOverlay: { extends: .runtime_test } +tests.core.test_timezone.TestGlibcAllTimezone: { extends: .runtime_test } +tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: { extends: .runtime_test } +tests.core.test_timezone.TestNoTimezone: { extends: .runtime_test } +tests.download.test_git.TestGitHash: { extends: .runtime_test } +tests.download.test_git.TestGitRefs: { extends: .runtime_test } +tests.fs.test_ext.TestExt2: { extends: .runtime_test } +tests.fs.test_ext.TestExt2r1: { extends: .runtime_test } +tests.fs.test_ext.TestExt3: { extends: .runtime_test } +tests.fs.test_ext.TestExt4: { extends: .runtime_test } +tests.fs.test_f2fs.TestF2FS: { extends: .runtime_test } +tests.fs.test_iso9660.TestIso9660Grub2External: { extends: .runtime_test } +tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: { extends: .runtime_test } +tests.fs.test_iso9660.TestIso9660Grub2Internal: { extends: .runtime_test } +tests.fs.test_iso9660.TestIso9660SyslinuxExternal: { extends: .runtime_test } +tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: { extends: .runtime_test } +tests.fs.test_iso9660.TestIso9660SyslinuxInternal: { extends: .runtime_test } +tests.fs.test_jffs2.TestJffs2: { extends: .runtime_test } +tests.fs.test_squashfs.TestSquashfs: { extends: .runtime_test } +tests.fs.test_ubi.TestUbi: { extends: .runtime_test } +tests.fs.test_yaffs2.TestYaffs2: { extends: .runtime_test } +tests.init.test_busybox.TestInitSystemBusyboxRo: { extends: .runtime_test } +tests.init.test_busybox.TestInitSystemBusyboxRoNet: { extends: .runtime_test } +tests.init.test_busybox.TestInitSystemBusyboxRw: { extends: .runtime_test } +tests.init.test_busybox.TestInitSystemBusyboxRwNet: { extends: .runtime_test } +tests.init.test_none.TestInitSystemNone: { extends: .runtime_test } +tests.init.test_systemd.TestInitSystemSystemdRoFull: { extends: .runtime_test } +tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: { extends: .runtime_test } +tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: { extends: .runtime_test } +tests.init.test_systemd.TestInitSystemSystemdRwFull: { extends: .runtime_test } +tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: { extends: .runtime_test } +tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: { extends: .runtime_test } +tests.package.test_atop.TestAtop: { extends: .runtime_test } +tests.package.test_docker_compose.TestDockerCompose: { extends: .runtime_test } +tests.package.test_dropbear.TestDropbear: { extends: .runtime_test } +tests.package.test_glxinfo.TestGlxinfo: { extends: .runtime_test } +tests.package.test_ipython.TestIPythonPy3: { extends: .runtime_test } +tests.package.test_lpeg.TestLuaLPeg: { extends: .runtime_test } +tests.package.test_lpeg.TestLuajitLPeg: { extends: .runtime_test } +tests.package.test_lsqlite3.TestLuaLsqlite3: { extends: .runtime_test } +tests.package.test_lsqlite3.TestLuajitLsqlite3: { extends: .runtime_test } +tests.package.test_lua.TestLua: { extends: .runtime_test } +tests.package.test_lua.TestLuajit: { extends: .runtime_test } +tests.package.test_lua_curl.TestLuaLuacURL: { extends: .runtime_test } +tests.package.test_lua_curl.TestLuajitLuacURL: { extends: .runtime_test } +tests.package.test_lua_http.TestLuaHttp: { extends: .runtime_test } +tests.package.test_lua_http.TestLuajitHttp: { extends: .runtime_test } +tests.package.test_lua_utf8.TestLuaUtf8: { extends: .runtime_test } +tests.package.test_lua_utf8.TestLuajitUtf8: { extends: .runtime_test } +tests.package.test_luaexpat.TestLuaLuaExpat: { extends: .runtime_test } +tests.package.test_luaexpat.TestLuajitLuaExpat: { extends: .runtime_test } +tests.package.test_luafilesystem.TestLuaLuaFileSystem: { extends: .runtime_test } +tests.package.test_luafilesystem.TestLuajitLuaFileSystem: { extends: .runtime_test } +tests.package.test_luaossl.TestLuaLuaossl: { extends: .runtime_test } +tests.package.test_luaossl.TestLuajitLuaossl: { extends: .runtime_test } +tests.package.test_luaposix.TestLuaLuaPosix: { extends: .runtime_test } +tests.package.test_luaposix.TestLuajitLuaPosix: { extends: .runtime_test } +tests.package.test_luasec.TestLuaLuaSec: { extends: .runtime_test } +tests.package.test_luasec.TestLuajitLuaSec: { extends: .runtime_test } +tests.package.test_luasocket.TestLuaLuaSocket: { extends: .runtime_test } +tests.package.test_luasocket.TestLuajitLuaSocket: { extends: .runtime_test } +tests.package.test_luasyslog.TestLuaLuasyslog: { extends: .runtime_test } +tests.package.test_luasyslog.TestLuajitLuasyslog: { extends: .runtime_test } +tests.package.test_openjdk.TestOpenJdk: { extends: .runtime_test } +tests.package.test_perl.TestPerl: { extends: .runtime_test } +tests.package.test_perl_class_load.TestPerlClassLoad: { extends: .runtime_test } +tests.package.test_perl_dbd_mysql.TestPerlDBDmysql: { extends: .runtime_test } +tests.package.test_perl_encode_detect.TestPerlEncodeDetect: { extends: .runtime_test } +tests.package.test_perl_gdgraph.TestPerlGDGraph: { extends: .runtime_test } +tests.package.test_perl_io_socket_multicast.TestPerlIOSocketMulticast: { extends: .runtime_test } +tests.package.test_perl_io_socket_ssl.TestPerlIOSocketSSL: { extends: .runtime_test } +tests.package.test_perl_libwww_perl.TestPerllibwwwperl: { extends: .runtime_test } +tests.package.test_perl_mail_dkim.TestPerlMailDKIM: { extends: .runtime_test } +tests.package.test_perl_x10.TestPerlX10: { extends: .runtime_test } +tests.package.test_perl_xml_libxml.TestPerlXMLLibXML: { extends: .runtime_test } +tests.package.test_prosody.TestProsodyLua51: { extends: .runtime_test } +tests.package.test_prosody.TestProsodyLuajit: { extends: .runtime_test } +tests.package.test_python.TestPython2: { extends: .runtime_test } +tests.package.test_python.TestPython3: { extends: .runtime_test } +tests.package.test_python_argh.TestPythonPy2Argh: { extends: .runtime_test } +tests.package.test_python_argh.TestPythonPy3Argh: { extends: .runtime_test } +tests.package.test_python_attrs.TestPythonPy2Attrs: { extends: .runtime_test } +tests.package.test_python_attrs.TestPythonPy3Attrs: { extends: .runtime_test } +tests.package.test_python_autobahn.TestPythonPy2Autobahn: { extends: .runtime_test } +tests.package.test_python_autobahn.TestPythonPy3Autobahn: { extends: .runtime_test } +tests.package.test_python_automat.TestPythonPy2Automat: { extends: .runtime_test } +tests.package.test_python_automat.TestPythonPy3Automat: { extends: .runtime_test } +tests.package.test_python_bitstring.TestPythonPy2Bitstring: { extends: .runtime_test } +tests.package.test_python_bitstring.TestPythonPy3Bitstring: { extends: .runtime_test } +tests.package.test_python_cbor.TestPythonPy2Cbor: { extends: .runtime_test } +tests.package.test_python_cbor.TestPythonPy3Cbor: { extends: .runtime_test } +tests.package.test_python_click.TestPythonPy2Click: { extends: .runtime_test } +tests.package.test_python_click.TestPythonPy3Click: { extends: .runtime_test } +tests.package.test_python_constantly.TestPythonPy2Constantly: { extends: .runtime_test } +tests.package.test_python_constantly.TestPythonPy3Constantly: { extends: .runtime_test } +tests.package.test_python_crossbar.TestPythonPy3Crossbar: { extends: .runtime_test } +tests.package.test_python_cryptography.TestPythonPy2Cryptography: { extends: .runtime_test } +tests.package.test_python_cryptography.TestPythonPy3Cryptography: { extends: .runtime_test } +tests.package.test_python_incremental.TestPythonPy2Incremental: { extends: .runtime_test } +tests.package.test_python_incremental.TestPythonPy3Incremental: { extends: .runtime_test } +tests.package.test_python_passlib.TestPythonPy2Passlib: { extends: .runtime_test } +tests.package.test_python_passlib.TestPythonPy3Passlib: { extends: .runtime_test } +tests.package.test_python_pexpect.TestPythonPy2Pexpect: { extends: .runtime_test } +tests.package.test_python_pexpect.TestPythonPy3Pexpect: { extends: .runtime_test } +tests.package.test_python_pynacl.TestPythonPy2Pynacl: { extends: .runtime_test } +tests.package.test_python_pynacl.TestPythonPy3Pynacl: { extends: .runtime_test } +tests.package.test_python_pyyaml.TestPythonPy2Pyyaml: { extends: .runtime_test } +tests.package.test_python_pyyaml.TestPythonPy3Pyyaml: { extends: .runtime_test } +tests.package.test_python_service_identity.TestPythonPy2ServiceIdentity: { extends: .runtime_test } +tests.package.test_python_service_identity.TestPythonPy3ServiceIdentity: { extends: .runtime_test } +tests.package.test_python_subprocess32.TestPythonPy2Subprocess32: { extends: .runtime_test } +tests.package.test_python_treq.TestPythonPy2Treq: { extends: .runtime_test } +tests.package.test_python_treq.TestPythonPy3Treq: { extends: .runtime_test } +tests.package.test_python_twisted.TestPythonPy2Twisted: { extends: .runtime_test } +tests.package.test_python_twisted.TestPythonPy3Twisted: { extends: .runtime_test } +tests.package.test_python_txaio.TestPythonPy2Txaio: { extends: .runtime_test } +tests.package.test_python_txaio.TestPythonPy3Txaio: { extends: .runtime_test } +tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: { extends: .runtime_test } +tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: { extends: .runtime_test } +tests.package.test_python_ubjson.TestPythonPy2Ubjson: { extends: .runtime_test } +tests.package.test_python_ubjson.TestPythonPy3Ubjson: { extends: .runtime_test } +tests.package.test_rings.TestLuaRings: { extends: .runtime_test } +tests.package.test_rings.TestLuajitRings: { extends: .runtime_test } +tests.package.test_rust.TestRust: { extends: .runtime_test } +tests.package.test_rust.TestRustBin: { extends: .runtime_test } +tests.package.test_syslog_ng.TestSyslogNg: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainCCache: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainCtngMusl: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainLinaroArm: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: { extends: .runtime_test } +tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: { extends: .runtime_test } diff --git a/features/buildroot/.gitlab-ci.yml.in b/features/buildroot/.gitlab-ci.yml.in new file mode 100644 index 00000000..33cb665d --- /dev/null +++ b/features/buildroot/.gitlab-ci.yml.in @@ -0,0 +1,118 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: buildroot/base:20180318.1724 + +.check_base: + except: + - /^.*-.*_defconfig$/ + - /^.*-tests\..*$/ + +check-DEVELOPERS: + extends: .check_base + # get-developers should print just "No action specified"; if it prints + # anything else, it's a parse error. + # The initial ! is removed by YAML so we need to quote it. + script: + - "! utils/get-developers | grep -v 'No action specified'" + +check-flake8: + extends: .check_base + before_script: + # Help flake8 to find the Python files without .py extension. + - find * -type f -name '*.py' > files.txt + - find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt + - sort -u files.txt | tee files.processed + script: + - python -m flake8 --statistics --count --max-line-length=132 $(cat files.processed) + after_script: + - wc -l files.processed + +check-gitlab-ci.yml: + extends: .check_base + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +check-package: + extends: .check_base + script: + - make check-package + +.defconfig_base: + script: + - echo "Configure Buildroot for ${DEFCONFIG_NAME}" + - make ${DEFCONFIG_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + artifacts: + when: always + expire_in: 2 weeks + paths: + - .config + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + - output/build/*/.config + +.defconfig: + extends: .defconfig_base + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + - /-defconfigs$/ + before_script: + - DEFCONFIG_NAME=${CI_JOB_NAME} + +one-defconfig: + extends: .defconfig_base + only: + - /^.*-.*_defconfig$/ + before_script: + - DEFCONFIG_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g') + +.runtime_test_base: + # Keep build directories so the rootfs can be an artifact of the job. The + # runner will clean up those files for us. + # Multiply every emulator timeout by 10 to avoid sporadic failures in + # elastic runners. + script: + - echo "Starting runtime test ${TEST_CASE_NAME}" + - ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME} + artifacts: + when: always + expire_in: 2 weeks + paths: + - test-output/*.log + - test-output/*/.config + - test-output/*/images/* + +.runtime_test: + extends: .runtime_test_base + # Running the runtime tests for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + - /-runtime-tests$/ + before_script: + - TEST_CASE_NAME=${CI_JOB_NAME} + +one-runtime_test: + extends: .runtime_test_base + only: + - /^.*-tests\..*$/ + before_script: + - TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g') diff --git a/features/buildroot/CHANGES b/features/buildroot/CHANGES new file mode 100644 index 00000000..586195cc --- /dev/null +++ b/features/buildroot/CHANGES @@ -0,0 +1,8045 @@ +2019.05.1, Released July 7th, 2019 + + Important / security related fixes. + + arch: x86: Fix typo breaking 'core-avx2' variant + + linux: Workaround -Werror related build failure on powerpc, + by forcing CONFIG_PPC_DISABLE_WERROR on. + + support/testing: Emulate a machine with 256MB RAM to fix + issues with certain tests running out of memory. + + test-pkg: Correct long option handling and clean output dir + after a successful build to save disk space. + + Defconfigs: QEMU: use 'rootwait' kernel option to ensure root + partition is available before mounting. + + Updated/fixed packages: barebox, busybox, bzip2, davfs2, + dialog, docker-cli, docker-engine, exim, expat, faad2, + haveged, irssi, libcamera, libcdaudio, libcurl, libglib2, + libressl, libsecret, lmbench, meson, monit, php, postgresql, + psplash, python-django, qt5base, tvheadend, webkitgtk, + xserver_xorg-server, znc + +2019.05, released June 2nd, 2019 + + Various fixes. + + Toolchain: Ensure pre-built Andes toolchains can only be + selected when x86 32bit support is available on the host. + Disallow PowerPC SPE ABI for GCC >= 8.x, as it is no longer + supported. + + Infra: pkg-config: Use a dedicated timestamp file rather than + .config as that gets touched by linux-4.19+, causing repeated + builds. + + Add C-SKY support to our config.sub (gnuconfig) + + Updated/fixed packages: dosfstools, botan, brotli, dropbear, + flare-engine, gst1-plugins-bad, libhtp, libnss, libopenssl, + linuxptp, matchbox-panel, mender, mutt, netsurf, + network-manager, opencv3, openjdk, openmpi, php, + python-cython, qt5multimedia, qtwayland, qt5webkit-examples, + supertux, suricata, tpm2-totp, v4l2loopback, wireshark, + wpewebkit + +2019.05-rc3, released May 25th, 2019 + + Fixes all over the tree. + + check-bin-arch: Ignore /usr/lib/grub, similar to how /lib/grub + is ignored. + + check-package: Warn about utf-8 characters in .mk files + + Linux: Default to 5.1.x series + + Updated/fixed packages: assimp, atop, chocolate-doom, cjson, + ddrescue, dhcp, ffmpeg, gerbera, glibmm, gpsd, gst-ffmpeg, + intel-microcode, jasper, keepalived, kismet, libcpprestsdk, + libcurl, libssh2, libupnp18, luarocks, mono-gtksharp3, opus, + postgresql, pcsc-lite, python, tslib, webkitgtk, + wpebackend-fdo, wpewebkit + +2019.05-rc2, released May 15th, 2019 + + Fixes all over the tree. + + Updated/fixed packages: bind, bullet, ca-certificates, + collectd, cracklib, dhcp, gdb, libinput, libtorrent-rasterbar, + linknx, lynx, mono, netsurf, optee-os, postgresql, qt5enginio, + qt5multimedia, rpm, samba4, sqlite, strace, uclibc, woff2 + + Issues resolved (http://bugs.uclibc.org): + + #11841: grub-efi.cfg not used when building EFI disk image + +2019.05-rc1, Released May 8th, 2019 + + Fixes all over the tree and new features. + + Architecture: Andes 32-bit (nds32) support added. + + Only build host-lzip / host-xz when really needed by packages, + not just when not available on the build host. + + Toolchain: Glibc bumped to 2.29, musl bumped to 1.1.22, + binutils 2.32 added, 2.28/2.29 removed, default changed to + 2.31.1. + + fs: Set FAKEROOTDONTTRYCHOWN environment variable to not + forward {f,l,}chown calls to libc when running under fakeroot + to fix issues when building in restricted environments + (E.G. user namespace with bubblewrap). + + Linux: Also build default make target to ensure extra files + like the gdb scripts enabled by CONFIG_GDB_SCRIPTS are also + built. Notice: This may mean that extra host utilities like + uboot-mkimage are needed. + + Infrastructure: show-info and -show-info make targets + added to output package metadata in JSON format for external + use. + + pkg-generic: Only tweak .la files needing it to ensure they + are not included in subsequent package file lists. + + test-pkg: Generate a basic package config if none is + specified. + + Gettext-tiny package added as an lightweight replacement for + GNU gettext for situations where NLS support is not needed. + + New defconfigs: Andes AE3XX, Freescale imx8mpico / imx8qxpmek + / T2080 QDS RDB, Licheepi zero, Orangepi R1 + + Removed defconfigs: Olimx A20 Olinuxino Lime legacy + + New packages: bats-core, bayer2rgb-neon, brickd, cog, dacapo, + enet, gettext-tiny, gli, gst1-plugins-bayer2rgb-neon, + imx-sc-firmware, intel-mediadriver, intel-mediasdk, libcamera, + libhtp, libp11, libwpe, lua-binaryheap, lua-gd, lua-lunitx, + mender-artifact, most, oniguruma, openjdk, openjdk-bin, + opensbi, optee-benchmark, optee-client, optee-examples, + optee-os, optee-test, paho-mqtt-cpp, python-aioblescan, + python-aioconsole, python-aiohttp-cors, python-aiomonitor, + python-backcall, python-jedi, python-parso, python-pyjwt, + python-terminaltables, suricata, tpm2-totp, uftp, + wpebackend-fdo, wpewebkit + + Removed packages: libump, lunit, sunxi-mali + + Issues resolved (http://bugs.uclibc.org): + + #11716: Typo on website, saying latest release is 2018.2.11 + #11756: package/syslinux: MBR's don't fit because of binutils.. + #11761: Building custom kernel 5.1-rc3 or later breaks on objtool + #11816: Only selected coreutils binaries are installed + +2019.02.4, Released July 10th, 2019 + + Important / security related fixes. + + arch: x86: Fix typo breaking 'core-avx2' variant, add Westmere + variant. + + linux: Workaround -Werror related build failure on powerpc, + by forcing CONFIG_PPC_DISABLE_WERROR on. + + support/testing: Emulate a machine with 256MB RAM to fix + issues with certain tests running out of memory. + + test-pkg: Correct long option handling and clean output dir + after a successful build to save disk space. + + Ensure custom _OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS are + passed before the standard exclusions so they are not ignored + by rsync when using override-srcdir. + + Defconfigs: QEMU: use 'rootwait' kernel option to ensure root + partition is available before mounting. + + Updated/fixed packages: barebox, bzip2, davfs2, dbus, dialog, + docker-cli, docker-engine, expat, faad2, ffmpeg, freeswitch, + gerbera, haveged, irssi, libcdadio, libgit2, libglib2, + libsecret, libvncserver, lmbench, logrotate, mariadb, meson, + mongoose, monit, mpd, openblas, php, postgresql, psplash, + python, python-django, python3, qt5base, samba4, taglib, + tvheadend, vlc, webkitgtk, xserver_xorg-server, znc + +2019.02.3, Released June 7th, 2019 + + Important / security related fixes. + + Infra: pkg-config: Use a dedicated timestamp file rather than + .config as that gets touched by linux-4.19+, causing repeated + builds. + + check-bin-arch: Also ignore /usr/lib/grub to support merged + /usr setups, similar to how /lib/grub is ignored. + + gnuconfig/config.sub: Add C-SKY architecture support. + + Updated/fixed packages: assimp, atftp, atop, botan, busybox, + ca-certificates, chocolate-doom, cjson, coreutils, cracklib, + ddrescue, dhcp, docker-cli, docker-containerd, docker-engine, + dosfstools, dovecot, dovecot-pigeonhole, dropbear, exim, + ffmpeg, flare-engine, gcc, gdb, gerbera, glibmm, go, gpsd, + gst-ffmpeg, gst1-plugins-bad, gst1-plugins-base, imagemagick, + intel-microcode, jasper, kf5-kcoreaddons, kismet, libcurl, + libglib2, libnss, libopenssl, libsigrok, libssh2, libupnp18, + linuxptp, luajit, lynx, matchbox-panel, mender, + netcat-openbsd, netsurf, nfs-utils, opus, orc, owfs, + pcsc-lite, php, popt, postgresql, python, python-cython, + python-django, python-ply, qt5enginio, rpm, runc, samba4, + sqlite, subversion, supertux, systemd, tslib, uclibc, + v4l2loopback, webkitgtk, woff2 + + #11816: Only selected coreutils binaries are installed + #11841: grub-efi.cfg not used when building EFI disk image + #11911: systemd v240 memory leak in systemd-journald + +2019.02.2, Released April 29th, 2019 + + Important / security related fixes. + + Only build host-lzip / host-xz when really needed by packages, + not just when not available on the build host. + + fs: Set FAKEROOTDONTTRYCHOWN environment variable to not + forward {f,l,}chown calls to libc when running under fakeroot + to fix issues when building in restricted environments + (E.G. user namespace with bubblewrap). + + Linux: Also build default make target to ensure extra files + like the gdb scripts enabled by CONFIG_GDB_SCRIPTS are also + built. Notice: This may mean that extra host utilities like + uboot-mkimage are needed. + + Defconfigs: ASUS tinker and Amarula vyasa rk3822: Support + larger kernel images, Atmel SAM5D27, SAM5D2,3,4 xplained: + Increase rootfs size to fit utilities, Raspberry Pi 64bit: + Include overlays in sdcard image + + Updated/fixed packages: android-tools, apache, bind, binutils, + busybox, civetweb, cjson, copas, davfs2, docker-cli, + docker-containerd, docker-engine, dovecot, dovecot-pigeonhole, + freerdp, gerbera, ghostscript, git, gnutls, go, gst-omx, + gst1-plugins-base, gst1-plugins-ugly, haproxy, hostapd, + ipsec-tools, libfreefare, libfuse, libkrb5, libpng, libxml2, + libxslt, linknx, linux, linux-firmware, linux-tools, live555, + lldp, lrzsz, lynx, madplay, make, minicom, mongodb, msmtp, + musl, mutt, neon, netsnmp, numactl, opus, perl, php, + postgresql, pure-ftpd, python-urllib3, python3, qt5base, + rapidxml, rpm, rsyslog, ruby, runc, samba4, sane-backends, + softether, stunnel, sysklogd, syslinux, syslog-ng, + systemd-bootchart, thttpd, thrift, tiff, tor, tpm2-tools, + tpm2-tss, webkitgtk, yaffs2utils, wget, wpa_supplicant, wsapi, + xapp_xfd, xapp_xload, xlib_libXpm, xserver_xorg-server, xz, + znc + + Issues resolved (http://bugs.uclibc.org): + + #11756: package/syslinux: MBR's don't fit because of binutils.. + #11761: Building custom kernel 5.1-rc3 or later breaks on objtool + +2019.02.1, Released March 29th, 2019 + + Important / security related fixes. + + pkg-generic: Only tweak .la files needing it to ensure they + are not included in subsequent package file lists. + + test-pkg: Generate a basic package config if none is + specified. + + Updated/fixed packages: asterisk, avahi, bash, beecrypt, + binutils, busybox, clamav, cups, efl, eigen, fetchmail, file, + flashrom, fltk, gerbera, git, glibc, gnuradio, go, + gst-plugins-bad, intel-gmmlib, jq, kexec, kf5-modemmanager-qt, + leveldb, libcurl, libdrm, libftdi1, libglib2, libiio, libpcap, + libseccomp, libssh2, log4cplus, lvm2, mariadb, mender, + mongodb, mosquitto, musl, nodejs, ntp, openjpeg, owfs, php, + pure-ftpd, putty, python-aiojobs, qt5webkit, rdesktop, samba4, + sunxi-tools, supertux, swupdate, tpm2-abrmd, tpm2-tss, + wavemon, wireshark, vsftpd, xapp_xdm, xen, + xdriver_xf86-video-fbdev, xlib_libXdmcp + + Issues resolved (http://bugs.uclibc.org): + + #11716: Typo on website, saying latest release is 2018.2.11 + +2019.02, released March 4th, 2019 + + Minor fixes. + + Libressl support added for Qt 5.6 as a replacement for + openssl, as 5.6 is not compatible with openssl 1.1.x. + + Updated/fixed packages: cutelyst, devmem2, gqrx, + gst-plugins-bad, libraw, libsoxr, qt5base, runc, systemd, tor + +2019.02-rc3, released March 1st, 2019 + + Fixes all over the tree. + + Openssl support dropped from Qt 5.6, as it isn't compatible + with openssl 1.1.x. + + Toolchain: GCC 8.x updated to 8.3.0, fixing a number of + issues. + + Dependencies: Require CMake 3.8 or newer to fix compilation + issue with certain packages. If not available, host-cmake will + instead be built. + + Printvars: Fix performance regression since 2018.02 + + Scanypi: Correctly handle underscores in python package names. + + Updated/fixed packages: botan, clamav, cryptopp, i2pd, + ibrcommon, iproute2, libcpprestsdk, libssh, lua-curl, + luaexpat, qt5base, runc, stress-ng, syslinux, systemd, + upmpdcli, zbar + + Issues resolved (http://bugs.uclibc.org): + + #9966: util-linux-2.30/.stamp_built' failed + #11696: possible typo in board/pc/post-build.sh + +2019.02-rc2, released February 23th, 2019 + + Fixes all over the tree. + + Removed zynq_zybo defconfig, as it hasn't seen any update + since it was added in 2016, and uses a U-Boot version not + compatible with openssl-1.1.x. + + Linux: Ignore user supplied downloadable hashes, as no hash + checksums are available for those. + + Updated/fixed packages: bind, cryptopp, docker-containerd, + dtc, efivar, gdb, imagemagick, ipmiutil, libcpprestsdk, + libcurl, libgpiod, libid3tag, libv4l, log4cplus, luvi, + madplay, mender, mosquitto, poco, postgresql, proftpd, + pulseaudio, python-django, qemu, qt5base, qwt, rabbitmq-c, + reaver, safeclip, stress-ng, swupdate, syslog-ng, systemd, + tor, unzip, xenomai + + Issues resolved (http://bugs.uclibc.org): + + #11501: compile sdl2 with enable wayland + #11681: .. unable to initialize decompress status for section.. + +2019.02-rc1, released February 13th, 2019 + + Fixes all over the tree and new features. + + + Dependencies: + + Require Python >= 2.7 as it is needed for E.G. building + libglib2. + + Ensure GNU gzip is used for reproducible tarballs (instead of + pigz) + + + Infrastucture: + + Ensure the PLATFORM and OS environment variables are not set, + as they cause build issues for some packages. + + The package list infrastructure now correctly handles packages + installing files with old mtime. + + Add a config option to force all optional host utilities to be + built, even if suitable versions are available on the build + machine. + + graph-build-time: Also show time spent downloading + + Download: fixes for SSH/SCP support + + Ensure user provided permissions override permissions from + packages. + + SDK: Fix handling of relative symlinks (targets starting with + '.' or '..') + + BR2_SYSTEM_DEFAULT_PATH setting to customize the default path + for processes. + + The custom skeleton logic will now populate the needed /bin, + /lib, /sbin directories/symlinks if not present. Merged /usr + can now be used with a custom skeleton. + + Rootfs overlays can now override symbolic links from + packages. This was disabled to ensure the correct symbolic + links are present when merged /usr is used. Instead validate + that the rootfs overlays do not include invalid /bin, /sbin + and /lib entries. + + The waf infrastructure now support the _SUBDIR variable, + similar to the other package types. + + cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake + + Various improvements to the meson infrastructure. + + Luarocks: A Buildroot addon has been added to automate + creating a Buildroot package from luarocks, similar to + scancpan and scanpypi. + + scanpypi: protect against zip-slip vulnerability in zip/tar + handling + + check-package: fix Python 3 support + + get-developers: Fix behaviour when called from elsewhere than + the toplevel directory. + + pkg-stats: Show latest upstream version of each package, based + on data from release-monitoring.org + + kconfig: Fix for make linux-menuconfig / uboot-menuconfig from + a clean tree when ccache is enabled. + + Default to sha256 password encoding, drop md5 support. + + + Architecture: + + Support for RISC-V 32bit architecture, ARM A55, 75 and Saphira + variants, MIPS support for mips32r3, mips64r3 and Marvell + Octeon II/III variants. + + + Toolchain: + + ARC toolchain 2018.09, ARM 8.2-2018.11, Codescape IMG/MTI MIPS + 2018.09-02, MUSL 1.1.21, GCC 6.5.0 / 7.4.0, GDB 8.2.1 + + + Packages: + + openssl: Bump to 1.1.1x series, bringing TLSv1.3 support and + long term support. + + fftw: Split into fftw-{single,double,long-double,quad} + packages for the different data precision options. + + libcurl: Now has explicit TLS backend selection options. + + linux: Support building device tree blobs with the -@ option + for device tree overlays. + + weston: The weston-imx i.MX variant is now used when + imx-gpu-viv is enabled + + pkgconf: Update to 1.5.3, which brings support for + --define-prefix (used by GStreamer) + + Add host-python3-setuptools package to handle host python + packages needing python3 with setuptools support. + + + New defconfigs: Aarch64 EFI, Orangepi one plus, Orangepi lite + 2, QEMU RISC-V 32bit virt, Rock64 + + + New packages: brcm-patchram-plus, clinfo, cunit, docker-cli, + erlang-p1-eimp, exempi, fail2ban, fftw-double, + fftw-double-long, fftw-quad, fftw-single, gerbera, grpc, + gst1-shark, intel-gmmlib, iwd, kf5-kcoreaddons, libeastl, + libpackagekite, libtorrent-rasterbar, lua-std-debug, + lua-std-normalize, mini-snmpd, netsurf, pamtester, pcm-tools, + python-aiodns, python-aiohttp, python-aiohttp-jinja2, + python-aiohttp-remotes, python-aiohttp-security, + python-aiohttp-session, python-aiohttpd-sse, python-aiojobs, + python-cchardet, python-pycares, python-sentry-sdk, + python-wtforms, python3-setuptools, rcw, rtc-tools, shim, + utp_com, vmtouch, websocketpp + + Removed packages: fftw, lua 5.2.x, luacrypto, perl-time-hires, + python-pyqt, qt, qtuio, tn5250 + + Issues resolved (http://bugs.uclibc.org): + + #10851: Patch to handle numpad Enter key properly + #11066: x11r7 X11 S40xorg leads to a black screen on QEMU x86.. + #11126: Bash Shell Programming using Buildroot + #11426: pps-tools bash dependency + #11476: stdio2.h error invalid use of __builtin_va_arg_pack + #11536: dt-utils building fails with glibc 2.28 + #11546: open-vm-tools with glibc 2.28 + #11566: Fix init script + #11576: Unable to start apache with event MPM on raspberry pi 3 + #11591: [pkgconf 1.5.3] xserver OpenGL support is missing + #11606: libjpeg has no Config.in + #11616: 2018.02.09 fails to build libzlib with full RELRO.. + #11656: Custom device tree and u-boot boot.scr not integrated.. + #11666: Touchscreen with (Py)Qt5 should use tslib instead of evdev + +2018.11.4, Released March 28th, 2019 + + Important / security related fixes. + + Updated/fixed packages: avahi, beecrypt, binutils, botan, + busybox, clamav, cups, devmem2, efl, fetchmail, file, fltk, + gcc, gdb, git, go, gst-plugins-bad, iproute2, jq, + kf5-modemmanager-qt, leveldb, libopenssl, libraw, libseccomp, + libsoxr, libssh2, mariadb, mosquitto, nodejs, ntp, openjpeg, + perl, php, putty, qt5webkit, rdesktop, runc, samba4, swupdate, + systemd, tor, vsftpd, wireshark, xapp_xdm, xen, xlib_libXdmcp + +2018.11.3, Released February 23th, 2019 + + Important / security related fixes. + + Ensure the PLATFORM and OS environment variables are not set, + as they cause build issues for some packages. + + The package list infrastructure now correctly handles packages + installing files with old mtime. + + Linux: Skip hash checks for user supplied downloadable + patches, as no hash checksums are available for those. + + scanpypi: protect against zip-slip vulnerability in zip/tar + handling + + Download: fixes for SSH/SCP support + + SDK: Fix handling of relative symlinks (targets starting with + '.' or '..') + + Updated/fixed packages: bind, dhcpcd, docker-compose, + docker-containerd, docker-engine, dovecot, dovecot-pigeonhole, + dtc, efivar, ghostscript, gnuradio, imagemagick, jpeg-turbo, + libarchive, libb64, libcurl, libgeotiff, libgpiod, libid3tag, + libupnp18, log4cplus, madplay, meson, mosquitto, openssh, php, + poco, postgresql, proftpd, pulseaudio, python, python-django, + python3, qt5base, reaver, runc, sg3_utils, sqlcipher, + swupdate, systemd, unzip, webkitgtk, xenomai + +2018.11.2, Released January 30th, 2019 + + Important / security related fixes. + + Defconfigs: Fixes for imx6slevk, imx7dsabresd, imx8mqevk, Lego + EV3, QEMU AArch64-virt + + Download: Fix scp download handling + + check-package: fix Python 3 support + + get-developers: Fix behaviour when called from elsewhere than + the toplevel directory. + + kconfig: Fix for make linux-menuconfig / uboot-menuconfig from + a clean tree when ccache is enabled. + + cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake + + Updated/fixed packages: acpica, apache, apr, avrdude, cargo, + cc-tool, dash, dhcpdump, dmalloc, docker-containerd, efivar, + fwts, glibc, gnuchess, gnupg2, go, leveldb, libarchive, + libassuan, libftdi1, libgpg-error, libhttpparser, libkcapi, + libmad, libsndfile, libsquish, liburiparser, libwebsock, + libxml2, lighttpd, llvm, lm-sensors, lua-msgpack-native, lxc, + mariadb, mbedtls, meson, mosquitto, netatalk, nodejs, odhcp6c, + openresolv, openssh, pango, patchelf, php, python-django, + python-numpy, python-pyyaml, rauc, rp-pppoe, s6-networking, + samba4, sdl_sound, shairport-sync, sqlite, subversion, + sunxi-cedarx, swupdate, systemd, tcpreplay, tekui, tmp2-abrmd, + tpm2-tools, tpm2-tss, udisks, unixodbc, usb_modeswitch, + webkitgtk, wireshark, wolfssl, xapp_rgb, xenomai, xerces + + Issues resolved (http://bugs.uclibc.org): + + #11576: Unable to start apache with event MPM on raspberry pi 3 + +2018.11.1, Released December 20th, 2018 + + Important / security related fixes. + + defconfigs: Fixes for bananapi m2 ultra, ci20 + + Download wrapper: Fix for urlencode handling + + Updated/fixed packages: asterisk, docker-compose, + docker-engine, dt-utils, gnutls, go, grub, libbsd, libcurl, + libpgpme, libiscsi, liblo, libmpd, libopenssl, liboping, + libpam-tacplus, libpjsip, linux-firmware, liquid-dsp, + lua-cqueue, luvi, lxc, lynx, nginx, nodejs, openzwave, php, + pps-tools, proftpd, prosody, sdl2_net, squashfs, swupdate, + uclibc, vtu, webkitgtk, wine, xen + + New packages: docker-cli + + Issues resolved (http://bugs.uclibc.org): + + #11426: pps-tools bash dependency + #11536: dt-utils building fails with glibc 2.28 + +2018.11, Released December 1st, 2018 + + Minor fixes. + + Updated/fixed packages: c-ares, quagga, squid + +2018.11-rc3, released November 30th, 2018 + + Fixes all over the tree. + + Defconfigs: Fixes for Armadeus APF27, imx6sabre, Olimex A20 + olinuxino lime legacy, Orangepi zero plus 2, PC, Riotboard. + + graph-depends: Fix for package names starting with a non-alpha + character. + + Updated/fixed packages: alsa-utils, botan, dante, domoticz, + dtc, freetype, gauche, gcc, gdb, ghostscript, glibc, + imx-usb-loader, libbsd, libid3tag, libkrb5, libmicrohttpd, + libopenssl, libsoxr, linux, motion, msgpack, mtd, + perl-net-ssleay, php, popt, python-numpy, qt5declarative, + samba4, shadowsocks-libev, stress-ng, systemd, usb_modeswitch, + webkitgtk, valgrind, weston, xfsprogs + +2018.11-rc2, released November 21th, 2018 + + Fixes all over the tree. + + fs: Drop intermediate tarball from the filesystem handling to + fix an issue with xattrs handling related to fakeroot. Ensure + tarball target includes xattrs. + + download: Fix confusion in git submodule handling if dl/ is a + symlink. + + genrandconfig: Fix missing newline in BR2_WGET handling, + causing the following line to be ignored. This would affect + BR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD, + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or + BR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization. + + show-build-order: Also include the dependencies of + rootfs-common. + + Fix a number of build issues in packages for the recently + merged RISC-V architecture support. + + Updated/fixed packages: dt-utils, easydbus, elfutils, + flare-engine, flatcc, glibc, gstreamer, gstreamer1, imx-uuc, + libassuan, libcorrect, libiscsi, libkrb5, libmicrohttpd, + libnftnl, libnspr, libnss, libsemanage, libsigsegv, libv4l, + ltp-testsuite, luv, luvi, make, ncmpc, netplug, openocd, + prosody, qemu, rpm, sconeserver, shadowsocks-libev, + supertuxcart, syslinux, systemd, trace-cmd, uclibc, + uclibc-ng-test, vtun, webkitgtk, weston, wireshark, xen, + xlib_libfontenc + + Issues resolved (http://bugs.uclibc.org): + + #11086: download/git submodule breaks on symlinked dl folder + #11216: Capabilities not applied to filesystem + +2018.11-rc1, released November 9th, 2018 + + Fixes all over the tree and new features. + + Architecture: RISC-V support (64bit) added. + + Toolchain: Glibc bumped to 2.28. Fortran support for external + toolchains. ARM (Linaro) toolchains updated to 8.2-2018.08. + + Hardening flags (RELRO) are now handled by the toolchain + wrapper instead of explicitly through CFLAGS/LDFLAGS, fixing a + number of issues. + + Filesystems: Support for creating btrfs and f2fs filesystems + added. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Workaround added for incompatibility issues between host-dtc + and older U-Boot and Linux kernel versions. + + Detect and reject build paths containing '@', as this confuses + a number of packages, including GCC. + + utils/diffconfig: Make it work for (non-Buildroot) config + files not using the BR2_ prefix. + + New defconfigs: Amarula a64-relic, Bananapi m2 ultra, Embest + riotboard, Hardkernel Odroid XU-4, QEMU riscv64-virt. + olimex_a20_olinuxion_lime_mali is renamed to _legacy. + + OpenCL infrastructure support added, similar to how OpenGL is + handled. + + Linux-headers: Support for kernel headers from a custom + tarball / git repo added. + + New packages: bird, bluez5_utils-headers, btrfs-progs, + checksec, davici, duktape, ell, haproxy, libclc, libcorrect, + libopencl, libopenresolv, nss-myhostname, + perl-apache-logformat-compiler, perl-appconfig, + perl-astro-suntime, perl-class-inspector, perl-class-load, + perl-class-method-modifiers, perl-class-std, + perl-class-std-fast, perl-cookie-baker, perl-data-dump, + perl-data-optlist, perl-data-uuid, perl-data-manip, + perl-dbd-mysql, perl-dbi, perl-devel-globaldestruction, + perl-devel-stacktrace, perl-devel-stacktrace-ashtml, + perl-device-serialport, perl-dist-checkconflicts, + perl-exporter-tiny, perl-file-sharedir, perl-file-slurp, + perl-filesys-notify-simple, perl-hash-multivalue, + perl-http-entity-parser, perl-http-headers-fast, + perl-http-multipartparser, perl-io-interface, + perl-io-socket-multicast, perl-json-maybexs, perl-mime-tools, + perl-module-implementation, perl-module-runtime, perl-moo, + perl-number-bytes-human, perl-package-stash, perl-params-util, + perl-plack, perl-posix-strftime-compiler, perl-role-tiny, + perl-streams-buffered, perl-sub-exporter-progressive, + perl-sub-install, perl-sub-quote, perl-sys-cpu, + perl-sys-meminfo, perl-sys-mmap, perl-time-parsedate, + perl-type-tiny, perl-www-form-urlencoded, perl-x10, pigpio, + python-async-timeout, python-falcon, python-fire, + python-mimeparse, python-multidict, python-passlib, + python-pigpio, python-pip, python-ply, python-py, + python-pyasn1, python-pyasn1-modules, python-pycryptodomex, + python-pyhamcrest, python-pysmi, python-scapy, python-semver, + python-serial-asyncio, python-typing, python-uvloop, + pythonwrapt, python-yarl, python-zeroconf, riscv-pk, sedutil, + spandsp, tini, waffle, xapian + + Removed packages: bootutils, dsp-tools, expedite, gst-dsp, + xloader + + Issues resolved (http://bugs.uclibc.org): + + #11116: Buildroot should set PYTHON_EGG_CACHE instead of writing .. + #11156: In python3 module 'socket' has no attribute 'AF_BLUETOOTH' + #11166: Erlang bad argument on valid uint64 when crosscompiled on.. + #11206: zlib: fails to build with Linaro toolchain, BR2_RELRO_FULL.. + #11241: ACPID shouldn't depend on BR2_x86_64 || BR2_i386 + #11251: Util scanpypi failes when package change - to _ in tar file + #11266: qt5base-5.11.1 does not compile with musl, complains about.. + #11286: python-rpi-gpio only should depend on BR2_arm || BR2_aarch64 + #11321: Latest master fails to build readline with RELRO FULL + #11326: sysvinit fails to build in latest GIT master + #11331: Internal application no longer builds with latest GIT master + #11336: nfs-utils fails to build in latest GIT master + #11351: build root-2018-08, linaro aarch64 compile error + #11376: mdmon binary missing + #11391: Valgind availability on ARM + #11396: uboot environment image checksum invalid if target is big endian + #11421: GCC error message for ARM Cortex-A9/ARM.V7 + #11451: Can't find libmpfr.so.4 when using external toolchain on ubuntu.. + #11481: Docs: Is external.desc required? + +2018.08.4, Released December 20th, 2018 + + Important / security related fixes. + + Defconfigs: Fixes for ci20, orangepi zero plus 2 + + Download wrapper: Fix for urlencode handling + + Updated/fixed packages: c-ares, dante, docker-compose, + domoticz, freetype, ghostscript, gnutls, libcurl, libgpgme, + libid3tag, libiscsi, libmpd, libopenssl, liboping, libpjsip, + linux-firmware, liquid-dsp, luvi, lynx, msgpack, nginx, + nodejs, php, popt, pps-tools, prosody, python-numpy, + python-requests, samba4, sdl2_net, squashfs, swupdate, + systemd, uclibc, vte, webkitgtk, wine, xfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #11426: pps-tools bash dependency + +2018.08.3, Released November 26th, 2018 + + Important / security related fixes. + + fs: Drop intermediate tarball from the filesystem handling to + fix an issue with xattrs handling related to fakeroot. Ensure + tarball target includes xattrs. + + download: Fix confusion in git submodule handling if dl/ is a + symlink. + + toolchain: Only allow enabling stack protection on + architectures with control flow integrity (CFI) support. Only + allow FORTIFY_SOURCE support on gcc >= 6. + + genrandconfig: Fix missing newline in BR2_WGET handling, + causing the following line to be ignored. This would affect + BR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD, + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or + BR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization. + + show-build-order: Also include the dependencies of + rootfs-common. + + Defconfigs: Fixes for Armadeus APF27, imx6sabre, Olimex A20 + olinuxino lime legacy, Orangepi zero plus 2. + + graph-depends: Fix for package names starting with a non-alpha + character. + + Updated/fixed packages: attr, audit, bind, brotli, busybox, + dtc, easydbus, elfutils, flare-engine, flatcc, gauche, gcc, + giflib, gpsd, lcdproc, libcurl, libiscsi, libkcapi, libnfs, + libnspr, libnss, libsemanage, liburiparser, lighttpd, + lua-curl, mariadb, mmc, mosquitto, mysql, ncmpc, neardal, + netplug, network-manager, nfs-utils, nginx, openocd, openswan, + p11-kit, postgresql, prosody, qemu, qt, rpm, ruby, samba4, + squid, supertuxkart, systemd, tar, trace-cmd, traceroute, + twolame, uclibc, usb_modeswitch, vtun, webkitgtk, weston, + xdriver_xf86-video-geode, xlib_libfontenc, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #11086: download/git submodule breaks on symlinked dl folder + #11481: Docs: Is external.desc required? + +2018.08.2, Released October 25th, 2018 + + Important / security related fixes. + + Workaround added for incompatibility issues between host-dtc + and older U-Boot and Linux kernel versions. + + Detect and reject build paths containing '@', as this confuses + a number of packages, including GCC. + + utils/get-developers: Add -e option for use with git + send-email. + + utils/diffconfig: Make it work for (non-Buildroot) config + files not using the BR2_ prefix. + + u-boot: Fix for environment image handling on big endian + systems. + + Updated/fixed packages: binutils, ca-certificates, + cups-filters, dtc, erlang, file, freetype, gcc, git, gvfs, + jasper, leveldb, libarchive, libssh, live555, ljlinenoise, + mariadb, mongoose, netsnmp, nmap, nodejs, ntp, open-plc-utils, + poco, psmisc, ptpd2, python-enum34, qemu, qt, qt5base, + setools, spice, spice-protocol, tinc, ustr, wireshark, + + Issues resolved (http://bugs.uclibc.org): + + #11396: uboot environment image checksum invalid if target is big endian + +2018.08.1, Released October 7th, 2018 + + Important / security related fixes. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Updated/fixed packages: acpid, android-tools, apache, + arp-scan, bandwidthd, bind, brltty, clamav, connman, cppcms, + domoticz, dtc, fio, gcc, gdb, ghostscript, gnupg, httpping, + igmpproxy, imlib2, ipsec-tools, libesmtp, libnfs, libxslt, + links, lua, mosquitto, nilfs-utils, ocrad, parted, php, + python-django, screen, shairport-sync, strongswan, + vboot-utils, webkitgtk, wireguard, x265 xen, xlib_libXdmcp, + xlib_libXfont, xlib_libXft, xlib_libxshmfence, + xutil_makedepend, zeromq + +2018.08, Released September 6th, 2018 + + Minor fixes. + + Known issues: + + - Glibc 2.28 on the build host breaks compilation of a number + of host packages. 2018.08 contains fixes for some of these + packages, but not all. Consider building on hosts (or in + containers) using older Glibc versions. + + - host-dtc 1.4.7 breaks compilation of older U-Boot and Linux + kernel configurations using FDT/DTC. Consider updating the + Linux kernel to >= 4.17 and U-Boot to >= 2018.07 or + backporting commit 9130ba8846 (scripts/dtc: Update to + upstream version v1.4.6-9-gaadd0b65c987) for the Linux + kernel / commit db405d1980 for U-Boot. + Alternatively revert commit 7b929ddcf0 (dtc: bump version to + 1.4.7) and ensure your build host does not have the libfdt + development headers installed. + + Updated/fixed packages: busybox, chipmunk, cutelyst, + domoticz, gcc, imagemagick, lcms2, libcurl, mediastreamer, + moarvm, php, qt, qt5virtualkeyboard, qt5webengine, screen, + sdl2, squashfs, uboot, xen + + Issues resolved (http://bugs.uclibc.org): + + #11261: ccache using wrong cached objects + #11276: Understanding the patch for kernel-4.9 and other.. + +2018.08-rc3, Released August 31th, 2018 + + Fixes all over the tree. + + linux: additional improvements to the flex / bison dependency + handling, use system provided variant if available. Ensure + toolchain is available when configuring for 4.18+ support. + + Download: Fix handling of primary sites using file:// + + Toolchain: Correct external toolchain musl detection for + static toolchains. + + Updated/fixed packages: aircrack-ng, bison, brltty, busybox, + cutelyst, dropbear, gr-osmosdr, i2c-tools, json-c, libconfuse, + libkcapi, libsoup, libssh, liburiparser, mbedtls, mender, + mesa3d, minicom, mjpegtools, mutt, openpowerlink, openssh, + oracle-mysql, php, postgresql, pv, qt5base, qt5quickcontrols, + rauc, shairport-sync, systemd, xlib_libX11, zeromq, + + Issues resolved (http://bugs.uclibc.org): + + #11091: BR2_PRIMARY_SITE doesn't work (wget is selected... + #11141: WF111 package no longer available + #11211: Internal compiler error: Killed (program cc1plus).. + #11236: util-linux fails to build on Travis CI when python.. + #11246: Glibc 2.28 - fails to build host-bison and host-m4 + #11256: Add python-falcon and python-mimeparse packages + +2018.08-rc2, Released August 20th, 2018 + + Fixes all over the tree. + + pkg-kconfig: Support dependencies needed to run the + configurator, E.G. recent Linux kernel versions needing flex + and bison. + + Defconfigs: ARM Juno: Bump ATF to fix a build + issue. Raspberrypi2: Bump rootfs size. Snps_archs38_vdk: + Correct /etc/inittab. Technologic ts7680: Correct genimage + configuration. Orange PI PC / Zero, Sheevaplug: Bump U-boot to + 2018.07 to fix build issue. Ensure host-openssl is pulled in + for kernel builds where needed. + + Updated/fixed packages: aircrack-ng, bind, boost, + boot-wrapper-aarch64, bzip2, busybox, chrony, cryptsetup, + dahdi-tools, dbus, domoticz, eigen, ipsec-tools, libarchive, + libfuse, libgit2, libopenssl, libselinux, lighttpd, lvm2, m4, + makedevs, mariadb, mesa3d-headers, mono, ncmpc, ncurses, + nodejs, php, python-django, python-pyqt5, qt5base, + qt5serialbus, ruby, samba4, uboot-tools, uclibc, vlc, + waylandpp, wireless_tools, wireshark, wpa_supplicant, mtd, + xdriver_xf86-video-ati, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #10781: cryptsetup luksOpen container_file container causes.. + #10996: bogus musl ARM toolchain + #11191: xattr and check-package issue + +2018.08-rc1, Released August 5th, 2018 + + Toolchain: + + - add support for gcc 8.x, switch to gcc 7.x as the default + version + - add support for gdb 8.1, switch to gdb 8.0 as the default + and remove gdb 7.10/7.11 + - add support for binutils 2.31 + - NIOSII CodeSourcery toolchain updated + - Linaro AArch64 BE toolchain added, and other Linaro + toolchains updated + - Synopsys ARC pre-built toolchain updated + + Architecture: add support for ARM Cortex-M7 + + Major updates: + + - systemd bumped to 239 + - Qt5 bumped to 5.11.1 + - Rust bumped to 1.27 + - GStreamer stack bumped to 1.14.2 + - X.org server bumped to 1.20, and all X.org proto packages + replaced by the single xorgproto package + - i.MX6 support packages bumped to 6.2.4 + - i.MX Vivante graphics version bumped to 6.2.4.p1.2, + adding support for Wayland and i.MX8MQ platforms + + Linux: bumped to 4.17 by default. + + Infrastructure: new package infrastructure added for packages + using the Meson build system + + New packages: at-spi2-atk, at-spi2-core, capnproto, cmocka, + corkscrew, cutelyst, davfs2, flatcc, libidn2, libgit2, + libopusenc, mender, nghttp2, perl-convert-asn1, perl-crypt-blowfish, + perl-crypt-cbc, perl-digest-md5, perl-mime-base64-urlsafe, + perl-mojolicious-plugin-authentication, perl-net-ping, + perl-net-snmp, perl-net-ssh2, perl-net-telnet, pigz, + python-reentry, python-request-id, python-validators, + python-webob, shadowsocks-libev, speexdsp, xorgproto, wampcc + + New defconfigs: NXP i.MX7D SDB, Boundary Devices Nitrogen 8M, + Olimex A10 OLinuxino, ZynqMP ZCU106 + + Removed packages: all xproto_* have been removed and replaced + by xorgproto + + Issues resolved (http://bugs.uclibc.org): + + #9411: MUSL build with RT Error relocating /lib/libgcc_s.so.1: + __cpu_indicator_init: symbol not found + #9921: lockfile module within python-daemon not available + #10341: gdb install of py files when using buildroot toolchain + includes build path + #10661: /etc/init.d/S29netplug starts multiple instances of netplugd + #10751: Missing dependency in pulseaudio package + #10811: kodi-17.6-Krypton does not compile for freescale_* devices + #10856: openblas on qemu_x86_64_defconfig fails with + "sgemm_kernel.o: No such file or directory" + #11056: Compiling a file that uses libdrm headers fails with: + fatal error: drm.h: No such file or directory + #11061: support/download: git version=master broken + #11071: Building postgresql package on Debian 9.4 x64 for armel target fails + #11076: Docker containerd installed to incorrect path + #11101: host-patchelf Endian Issue with relative RPATH + #11111: raspberry pi 3 b+: missing BSP for 64-bit kernel + #11121: statfs call corrupts memory struct statfs too small + #11181: Switching toolchain does not work + +2018.05.3, Released October 6th, 2018 + + Important / security related fixes. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Updated/fixed packages: acpid, android-tools, apache, + arp-scan, bandwidthd, bind, bison, brltty, chipmunk, connman, + cppcms, fio, gcc, ghostscript, gnupg, httping, igmpproxy, + imagemagick, imlib2, ipsec-tools, lcm2, libcurl, libesmtp, + libnfs, libssh, libxslt, links, mediastreamer, minicom, + moarvm, nilfs-utils, ocrad, parted, php, postgresql, pv, + python-django, qt, qt5quickcontrols, qt5webengine, screen, + sdl2, shairport-sync, squashfs, strongswan, vboot-utils, + webkitgtk, wireguard, x265, xen, xlib_libXfont, xlib_libXft, + xlib_libxshmfence, zeromq + +2018.05.2, Released August 28th, 2018 + + Important / security related fixes. + + Defconfigs: Raspberrypi2: Bump rootfs size, T7680: Fix + genimage.cfg issue, ARM Juno: Bump ATF to v1.3 to fix build + issue. + + Updated/fixed packages: acl, attr, apache, bind, + boot-wrapper-aarch64, brltty, bzip2, chrony, crda, cryptsetup, + dahdi-tools, dmidecode, dropbear, eigen, ffmpeg, gawk, gcc, + ghostscript, gnutls, imx-gpu-viv, ipsec-tools, libarchive, + libfuse, libglib2, libopenssl, libselinux, libsoup, lighttpd, + linuxptp, lttng-modules, lttng-tools, lua-flu, lvm2, m4, + makedevs, mariadb, mbedtls, mesa3d-heders, mtd, ncurses, + nodejs, openssh, php, python-django, rauc, ruby, samba4, + stress-ng, ti-utils, uboot-tools, uclibc, vim, waylandpp, + wireless_tools, wireless-regdb, wireshark, wpa_supplicant, + xorriso, znc + + Issues resolved (http://bugs.uclibc.org): + + #10781: cryptsetup luksOpen container_file container causes.. + #10986: Installing package attr when already supplied by.. + #11191: xattr and check-package issue + +2018.05.1, Released July 20th, 2018 + + Important / security related fixes. + + U-Boot: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Linux: Enable CONFIG_PERF_EVENTS when perf is enabled. + + Toolchain: ARC tools updated to arc-2018.03. + + pkg-stats: Fix python 3.x compatibility. + + dl-wrapper: Fix support for URIs containing '+', fix + no-check-hash for inferred site method. + + Defconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max: + Support ethernet on Turbot variant. + + Updated/fixed packages: audit, bind, btrfs-progs, cifs-utils, + clamav, collectd, coreutils, docker-containerd, dos2unix, + edid-decode, file, gcc, gdb, gnupg, gnupg2, heimdal, hidapi, + imagemagick, libcurl, libgcrypt, libglib2, liblogging, + libostree, libressl, libsoup, libv4l, libvncserver, libvorbis, + libwebsockets, libxslt, lm-sensors, mariadb, mpg123, ncurses, + network-manager, nodejs, patchelf, perl, php-amqp, pinentry, + pixiewps, qpdf, qt53d, qt5base, qt5charts, qt5script, redis, + systemd, triggerhappy, uboot, wireguard, wireless-regdb, + wireshark + +2018.05, Released June 1st, 2018 + + Minor fixes. + + Download: Work around for hanging connections for packages + from CVS, by adding a 10 minute max timeout. + + Updated/fixed packages: binutils, clang, dash, expect, git, + glibc, jpeg-turbo, libjpeg, log4cplus, openvmtools, xen, + + Issues resolved (http://bugs.uclibc.org): + + #11051: runtime issue on STM32 with usage of binutils 2.29.x + +2018.05-rc3, Released May 28th, 2018 + + Fixes all over the tree. + + Toolchain: ARC tools updated to arc-2018.03-rc2. + + Fs: Ensure hard links in TARGET_DIR are correctly copied for + filesystem input. With the recent changes to the file system + generation logic, hard links were "expanded" in file system + images leading to bloated rootfs images for setups with hard + links. + + Infrastructure: Error out for packages using the 'local' + method but forgetting to specify _SITE. + + Build rpcgen for the host when needed to support distributions + no longer shipping rpcgen with glibc (E.G. recent Fedora). + + Updated/fixed packages: autofs, bash-completion, binutils, + busybox, cjson, elf2flt, libcoap, libcurl, libtirpc, lrzsz, + poppler, procps-ng, qt-webkit-kiosk, quota, samba4, xfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #11031: ld-elf2flt: host/bin/ld.real': execvp: No such file.. + #11036: C compiler cannot create executables + #11046: Git package binaries are ~180MB (compared to ~20MB in.. + +2018.05-rc2, Released May 22nd, 2018 + + Fixes all over the tree. + + Dependencies: Check that the current working directory (.) + isn't listed in PATH as that causes various build issues. + + Manual: Clarify that git branch names may not be used as + version identifiers. This has never been supported, but was + kind of working (with some limitations) before the git + download rework - Now it does not work at all. + + Linux: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Packages: Renamed a number of package options not prefixed + with BR2_PACKAGE_ for consstency. + + Download infrastructure: Fix file:// protocol handling after + download rework. + + Updated/fixed packages: acl, apr-util, asterisk, attr, + bluez5_utils, cifs-utils, clamav, clang, cups-filters, + dahdi-linux, exim, faketime, gdb, go, gst1-plugins-bad, + imx-mkimage, ipsec-tools, jamvm, janus-gateway, + jquery-ui-themes, libcap, libcurl, libftdi, libkcapi, libkrb5, + libmediaart, libmodbus, libmodplug, libmpd, + libnetfilter_cthelper, libnetfilter_cttimeout, libnfc, + libnfnetlink, libnss, liboauth, libogg, libosip2, + libpam-radius-auth, libpcap, libpciaccess, llvm, log4cplus, + ltrace, lynx, mbedtls, modem-manager, nfs-utils, + python-cython, python-websockets, qt5cinex, qt5wayland, rauc, + snort, strace, ti-sgx-km, transmission, wavpack, wget, woff2, + xen, zmqpp, znc, zstd + + Issues resolved (http://bugs.uclibc.org): + + #10986: Installing package attr when already supplied by... + #11011: BUildroot for Raspberry Pi 2 + #11016: Wrong compiler used for external user host packages + +2018.05-rc1, Released May 9th, 2018 + + Toolchain: glibc bumped to 2.27, musl bumped to 1.1.19, + uClibc-ng 1.0.30, Linux kernel headers bumped to 4.16.x. + + Architecture: support for the Blackfin architecture has been + removed, as it was removed from Linux upstream, poorly + maintained in binutils/gdb, and abandoned by Analog Devices. + + Numerous packages updated to have hashes for their license + files. + + Systemd can now be built with uClibc toolchains. + + Linux: addition of BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF and + BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL to support building Linux + kernel configurations that need libelf on the host or openssl + on the host. + + Coding style: + - all Python scripts are now verified with flake8 + - check-package extended to check all Config.in and .mk files + in tree, not only the ones in package/ + + Infrastructure: + + - The download infrastructure has seen a major overhaul, with + the main visible new feature being Git caching: a package + fetched from Git no longer needs to be re-cloned entirely + everytime its version is changed. Anoter visible change is + that the download folder now has subfolders per package. See + http://lists.busybox.net/pipermail/buildroot/2018-April/217923.html + for more details about those changes. + + - The logic that generates the root filesystem images has been + reworked, with the main goal of allowing several filesystem + images to be produced in parallel, also a requirement for + top-level parallel build. Now, a .tar filesystem image is + always created, and re-extracted in a private directory to + create each format-specific filesystem image. + + - A new package infrastructure was introduced for Go-based + packages: golang-package. + + - Dependencies on extraction tools are now handled as proper + per-package dependencies, using + _EXTRACT_DEPENDENCIES. Beyond a cleanup, this is also a + preparation step for top-level parallel build support. + + - When a file being downloaded is part of a package with a + .hash file, but there is no hash listed for this file, the + file is now preserved in the download directory rather than + removed. This helps when updating a package, as it gives the + ability to easily calculate the hash of the file. + + - Addition of '-show-recursive-depends' and + '-show-recursive-rdepends' make targets, to + respectively display the recursive list of dependencies and + the recursive list of reverse dependencies of a given + package. + + - The /etc/shells file is now automatically generated with the + list of shell programs installed on the system. + + - Addition of -Ofast optimization level as an available + option. + + Major updates: Go updated to 1.10, Erlang bumped to 20.3, Qt5 + bumped to 5.10.1. + + New packages: 18xx-ti-utils, abootimg, bluez-alsa, brotli, + chipmunk, clang, docker-compose, docker-proxy, flare-engine, + flare-game, gst1-interpipe, gstreamer1-editing-services, + hackrf, i2pd, imx-alsa-plugins, imx-mkimage, libcdio-paranoia, + libkrb5, llvm, pixiewps, python-backports-ssl-match-hostname, + python-cached-property, python-cython, python-docker, + python-dockerpty, python-docker-pycreds, + python-flask-sqlalchemy, python-functools32, python-influxdb, + python-json-models, python-libusb1, python-networkx, + python-psycopg2, python-pymodbus, python-sqlalchemy, + python-subprocess32, python-texttable, + python-websocket-client, python-yieldfrom, quotatool, reaver, + snort, sunxi-mali-mainline, sunxi-mali-mainline-driver, tk, + tpm2-abrmd, tpm2-tools, tpm2-tss, udftools, vte, woff2. + + New defconfigs: ARC HS Development Kit, Arcturus ucls1012a, + Freescale i.MX6UL EVK (with vendor kernel), Freescale i.MX6 + SoloLite EVK (with vendor kernel), Freescale i.MX31 3Stack, + Freescale i.MX8Q EVK Freescale p1025twr, Freescale t1040d4rdb, + Qemu PPC64 E5500, SolidRun ClearFog Base, Tinker RK3288, Vyasa + RK3288, + + Removed packages: iqvlinux, kodi-adsp-*, mplayer + + Removed defconfigs: ci40, firefly_rk3288, + freescale_p1010rdb_pa, freescale_mpc8315erdb, riotboard, + teliv_evk_pro3 + + Issues resolved (http://bugs.uclibc.org): + + #10151: toolchain eclipse register : fails with a custom + BR2_HOST_DIR + #10511: Packages get downloaded uncompressed with wget + #10531: QtWebengine doesn't build if the host hasn't a 32 bits + C++ compiler working + #10846: error in compiling gnutls + #10886: openssl-1.0.2n fails to build + #10896: /bin/sh not in /etc/shells + #10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is + enabled + +2018.02.12, Released March 29th, 2019 + + Important / security related fixes. + + Updated/fixed packages: avahi, beecrypt, busybox, clamav, + cups, devmem2, fetchmail, file, fltk, gcc, gdb, git, jq, + leveldb, libopenssl, libraw, libseccomp, libssh2, + libunistring, mariadb, mosquitto, nodejs, ntp, openjpeg, perl, + php, putty, qt5webkit, rdesktop, systemd, wireshark, vsftpd, + xapp_xdm, xlib_libXdmcp + +2018.02.11, Released February 23th, 2019 + + Important / security related fixes. + + Ensure the PLATFORM and OS environment variables are not set, + as they cause build issues for some packages. + + The package list infrastructure now correctly handles packages + installing files with old mtime. + + Linux: Skip hash checks for user supplied downloadable + patches, as no hash checksums are available for those. + + scanpypi: protect against zip-slip vulnerability in zip/tar + handling + + Updated/fixed packages: bind, dhcpcd, dovecot, ghostscript, + gnuradio, imagemagick, jpeg-turbo, libarchive, libb64, + libcurl, libid3tag, madplay, mosquitto, openssh, php, + postgresql, proftpd, python, python-django, python3, qt5base, + sqlcipher, swupdate, systemd, unzip, webkitgtk + +2018.02.10, Released January 31th, 2019 + + Important / security related fixes. + + Defconfigs: Fixes for Lego EV3, QEMU AArch64-virt + + check-package: fix Python 3 support + + get-developers: Fix behaviour when called from elsewhere than + the toplevel directory. + + cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake + + Updated/fixed packages: acpica, apache, apr, asterisk, + avrdude, cargo, cc-tool, dash, dhcpdump, dmalloc, gnuchess, + gnupg2, leveldb, libarchive, libassuan, libftdi1, + libgpg-error, libhttpparser, libmad, libsndfile, libsquish, + liburiparser, libwebsock, libxml2, lighttpd, lm-sensors, + lua-msgpack-native, mbedtls, mosquitto, netatalk, nodejs, + openssh, pango, patchelf, php, python-django, python-pyyaml, + rauc, rp-pppoe, s6-networking, samba4, sdl_sound, + shairport-sync, sqlite, subversion, sunxi-cedarx, tcpreplay, + tekui, usb_modeswitch, webkitgtk, wireshark, wolfssl, + xapp_rgb, xenomai, xerces + + Issues resolved (http://bugs.uclibc.org): + + #11576: Unable to start apache with event MPM on raspberry pi 3 + +2018.02.9, Released December 20th, 2018 + + Important / security related fixes. + + defconfigs: Fixes for ci20 + + Updated/fixed packages: c-ares, dante, freetype, ghostscript, + glibc, gnutls, go, libcurl, libgpgme, libid3tag, libiscsi, + libmpd, libopenssl, libpjsip, linux, liquid-dsp, luvi, lynx, + msgpack, nginx, nodejs, php, popt, pps-tools, python-numpy, + python-requests, samba4, sdl2_net, squashfs, swupdate, uclibc, + wine, webkitgtk, xfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #11426: pps-tools bash dependency + +2018.02.8, Released November 26th, 2018 + + Important / security related fixes. + + fs: Drop intermediate tarball from the filesystem handling to + fix an issue with xattrs handling related to fakeroot. Ensure + tarball target includes xattrs. + + download: Fix confusion in git submodule handling if dl/ is a + symlink. + + toolchain: Only allow enabling stack protection on + architectures with control flow integrity (CFI) support. Only + allow FORTIFY_SOURCE support on gcc >= 6. + + genrandconfig: Fix missing newline in BR2_WGET handling, + causing the following line to be ignored. This would affect + BR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD, + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or + BR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization. + + show-build-order: Also include the dependencies of + rootfs-common. + + Defconfigs: Fixes for Armadeus APF27, imx6sabre. + + graph-depends: Fix for package names starting with a non-alpha + character. + + Updated/fixed packages: attr, audit, bind, brotli, easydbus, + elfutils, gauche, gcc, giflib, gpsd, lcdproc, libcurl, + libiscsi, libnfs, libnspr, libnss, libkcapi, libsemanage, + liburiparser, lighttpd, linux, lua-curl, mariadb, mmc-utils, + mosquitto, mysql, neardal, netplug, network-manager, + nfs-utils, nginx, openocd, openswan, p11-kit, postgresql, + prosody, qemu, qt, rpm, ruby, samba4, squid, supertuxkart, + systemd, tar, trace-cmd, traceroute, twolame, uclibc, + usb_modeswitch, vtun, webkitgtk, xdriver_xf86-video-geode, + xlib_libfontenc, xproto_inputproto, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #11086: download/git submodule breaks on symlinked dl folder + #11251: Util scanpypi failes when package change - to _ in.. + #11476: stdio2.h error invalid use of __builtin_va_arg_pack + #11481: Docs: Is external.desc required? + +2018.02.7, Released October 25th, 2018 + + Important / security related fixes. + + Detect and reject build paths containing '@', as this confuses + a number of packages, including GCC. + + utils/get-developers: Add -e option for use with git + send-email. + + utils/diffconfig: Make it work for (non-Buildroot) config + files not using the BR2_ prefix. + + u-boot: Fix for environment image handling on big endian + systems. + + Updated/fixed packages: binutils, ca-certificates, + cups-filters, erlang, file, freetype, gcc, git, gvfs, leveldb, + libarchive, libcurl, libssh, live555, ljlinenoise, mariadb, + mongoose, netsnmp, nmap, nodejs, ntp, open-plc-utils, poco, + psmisc, ptpd2, python-enum34, qemu, qt, qt5base, setools, + spice, spice-protocol, tinc, ustr, wireshark + + Issues resolved (http://bugs.uclibc.org): + + #11396: uboot environment image checksum invalid if target is big endian + +2018.02.6, Released October 7th, 2018 + + Important / security related fixes. + + Add a number of patches to fix build errors for host utilities + on modern distributions using glibc-2.28. + + mkusers: Ensure existing group members are preserved when a + group is reprocessed. + + printvars: Fix issue with exceeding shell command line length + limits for certain setups. + + Updated/fixes packages: acpid, android-tools, apache, + arp-scan, bandwidthd, bind, bison, clamav, connman, cppcms, + cramfs, fio, gcc, ghostscript, glibc, gnupg, httping, + igmpproxy, imagemagick, imlib2, ipsec-tools, lcms2, libcurl, + libesmtp, libnfs, libssh, libxslt, links, linuxptp, + mediastreamer, minicom, moarvm, nilfs-utils, ocrad, parted, + php, pv, python-django, qt, qt5quickcontrols, qt5webengine, + screen, sdl2, shairport-sync, squashfs, strongswan, + vboot-utils, webkitgtk, wireguard, x265, xen, xlib_libXfont, + xlib_libXft + + New packages: brotli, woff2 + +2018.02.5, Released August 29th, 2018 + + Important / security related fixes. + + Defconfigs: Raspberrypi2: Bump rootfs size, T7680: Fix + genimage.cfg issue, ARM Juno: Bump ATF to v1.3 to fix build + issue. + + Updated/fixed packages: acl, apache, attr, bind, + boot-wrapper-aarch64, brltty, bzip2, chrony, crda, cryptsetup, + dahdi-tools, dmidecode, dropbear, eigen, erlang, ffmpeg, gawk, + gcc, ghostscript, gnutls, ipsec-tools, libarchive, libfuse, + libopenssl, libselinux, libsoup, lighttpd, linuxptp, + lttng-modules, lttng-tools, lua-flu, lvm2, m4, makedevs, + mariadb, mbedtls, mesa3d-headers, mtd, ncurses, nodejs, + openssh, php, postgresql, python-django, qt5xmlpatterns, ruby, + samba4, shairport-sync, stress-ng, ti-utils, uboot-tools, vim, + waylandpp, wireless_tools, wireshark, wpa_supplicant, xorriso, + znc + + Issues resolved (http://bugs.uclibc.org): + + #10781: cryptsetup luksOpen container_file container causes.. + #10986: Installing package attr when already supplied by.. + #11191: xattr and check-package issue + +2018.02.4, Released July 21th, 2018 + + Important / security related fixes. + + U-Boot: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Linux: Enable CONFIG_PERF_EVENTS when perf is enabled. + + Defconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max: + Support ethernet on Turbot variant. + + Updated/fixed packages: bind, clamav, collectd, dos2unix, + edid-decode, gcc, gdb, heimdal, hidapi, imx-gpu-viv, libcurl, + libglib2, liblogging, libostree, libsoup, libv4l, lm-sensors, + ncurses, network-manager, patchelf, pinentry, procps-ng, qpdf, + qt5, qt53d, qt5base, qt5charts, qt5script, qt5serialport, + systemd, wireguard, wireless-regdb + + Issues resolved (http://bugs.uclibc.org): + + #11101: host-patchelf Endian Issue with relative RPATH + +2018.02.3, Released June 18th, 2018 + + Important / security related fixes. + + Various fixes for building on modern distributions (GCC 8.x, + no rpcgen utility). + + ARM: Default to binutils 2.28 and warn about newer binutils + versions, which are known to cause boot failures for Linux + kernels built in thumb mode. + + Busybox/mdev: Fix module autoloading. + + Busybox/sysvinit: inittab: Add /dev/{stdin,stdout,stderr} + symlinks, call swapon -a to activate any configured swap + devices. + + Dependencies: Check that PATH does not contain current working + directory, which triggers a number of build failures. + + Infrastructure: Error out for packages erroneously using the + 'local' site method but not defining a _SITE. + + Linux: Fix cuImage. / simpleImage. handling. Ensure + kconfig uses ncurses from the host to fix a ncurses/ncursesw + mixup, causing menuconfig display corruption. + + Toolchain: Workarounds for fix-rpath issues with binutils and + elf2flt. + + Util-linux: Fix blocking on getrandom() issue with recent + kernels. + + Remove broken freescale_imx31_3stack, + freescale_imx6sololiteevk and freescale_imx6ulevk defconfigs. + + Updated/fixed packages: apr-util, asterisk, attr, audit, + autofs, binutils, busybox, cifs-utils, cups-filters, dash, + ebtables, exim, expect, f2fs-tools, faketime, file, gdb, git, + glibc, gnupg, gnupg2, gst1-plugins-bad, imagemagick, jamvm, + jpeg-turbo, libcap, libcoap, libcurl, libgcrypt, libjpeg, + libnss, libressl, libtirpc, libvncserver, libvorbis, libxslt, + log4cplus, lrzsz, ltrace, lynx, mariadb, mbedtls, mpg123, + nasm, netplug, network-manager, nfs-utils, nodejs, + openvmtools, patch, perl, php-amqp, poppler, procps-ng, + python, python-websockets, quota, redis, samba4, sysvinit, + transmission, triggerhappy, util-linux, wavpack, wget, + wireshark, xen, zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #10986: Installing package attr when already supplied by busybox.. + #11031: ld-elf2flt: host/bin/ld.real': execvp: No such file or.. + +2018.02.2, Released May 4th, 2018 + + Important / security related fixes. + + Tweak package size/file instrumentation to better handle + package rebuilds. + + Revert /etc/shells creation when bash is enabled. + + Exclude /lib/firmware from the rpath fixup logic, as it may + contain non-native ELF files. + + Scanpypi: Support the new PyPi infrastructure. + + Handle GCC 8.x on the host. + + Ensure timestamp of /usr is updated to support the systemd + ConditionNeedsUpdate option. + + Updated/fixed packages: bluez5_utils, flann, gdb, gnupg2, + grub2, libcec, libcgi, libglib2, libgpg-error, libgpgme, + libtomcrypt, mbedtls, mkpasswd, php, python, python-requests, + python-watchdog, qt53d, qt5websockets, sdl2, sdl2_image, + syslog-ng, systemd, tcl, tcllib, uclibc, usb_modeswitch, + wireguard, wmctrl + + Issues resolved (http://bugs.uclibc.org): + + #10896: /bin/sh not in /etc/shells + #10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is enabled + +2018.02.1, Released April 9th, 2018 + + Important / security related fixes. + + Removed unmaintained defconfigs: Creator Ci40, Firefly rk3288, + Freescale mpc8315erdb / p1010rdb_pa, Riotboard, Teliv EVK + Pro3. + + Infrastructure: Speed up instrumentation for package size by + comparing timestamps instead of md5 checksums, as doing + checksums could lead to up to 25% longer build time for big + configurations. + + Rename the internal _BASE_NAME variable to _NASENAME + to avoid name clashes with packages ending on '-base'. + + Add a better fix for build issues for autotools based packages + checking for C++ support on toolchains without C++ support. + + Build host-tar if tar is older than 1.27 on the build machine + to work around reproducibility issues with git archives + containing long paths. + + check-unique-files: Fix for filenames not representable in the + users' locale. + + Check-bin-arch: Add support for per-package ignore paths + (_BIN_ARCH_EXCLUDE). + + Toolchain: Fix SSP support detection for external toolchains. + + linux: Add _NEEDS_HOST_OPENSSL / LIBELF options to ensure + these dependencies are available for Linux configurations + needed these dependencies, similar to how it is done for + U-Boot. + + Support custom (not in tree) device tree files in addition to + in-tree ones. + + U-Boot / uboot-tools: Fix header conflict with libfdt-devel + installed on host. + + Updated/fixed packages: apache, busybox, c-ares, cmake, + docker-engine, enlightenment, eudev, fbgrab, freescale-imx, + gtest, imagemagick, intel-microcode, irssi, jimtcl, kmod, + kodi, ktap, libcoap, libcurl, libfcgi, libhttpparser, + libminiupnpc, libopenssl, libpjsip, libss7, libssh2, libupnp + libupnpp, libuv, libvorbis, memcached, motion, musl, nodejs, + ntp, openblas, opencv3, openocd, opus-tools, patch, php, + pkgconf, postgresql, powerpc-utils, python-jsonschema, + python-webpy, qemu, qt5bsae, qt5script, qt5webkit, rapidjson, + rauc, sam-ba, samba4, sngrep, systemd, tremor, uboot-tools, + uclibc-ng-test, upmpdcli, wireshark, xerces, xterm, zstd + + New packages: docker-proxy, python-functools32 + + Issues resolved (http://bugs.uclibc.org): + + #10766: upmpdcli: Segmentation fault + #10776: ktap fails to build + #10846: error in compiling gnutls + #10856: openblas on qemu_x86_64_defconfig fails with "sgemm_.. + +2018.02, Released March 4th, 2018 + + Fixes all over the tree. + + Issues with systemd with a readonly rootfs and DBus fixed. + + Instructure: + - check-uniq-files: fix Python 2.6 compatibility. + - dependencies.sh: check for external argparse module for + Python 2.6. + - Add infrastructure to detect and use a UTF-8 locale on the + host, needed by systemd. + + Update/fixed packages: clamav, dash, dhcp, dovecot, efl, + ffmpeg, libv4l, mono, mosquitto, php, postgresql, qt, + scanpypi, sdl2, systemd, tor, tvheadend, uboot, wavpack + + Issues resolved (http://bugs.uclibc.org): + + #10831: qemu_x86_64_defconfig build fails on linux-headers.. + +2018.02-rc3, Released February 27th, 2018 + + Fixes all over the tree. + + check-bin-arch: skip /lib/modules to allow 32-bit userland + with 64bit kernel. + + dependencies: Blacklist tar 1.30+ and build our own host-tar + if needed as tar 1.30+ changed the --numeric-owner output for + long path names. Build host-tar before other host-dependencies + as they need it to extract their source tarballs. + + Update/fixed packages: asterisk, azmq, bluez5_utils, domoticz, + e2fsprogs, erlang, exim, glibc, gpsd, jq, libglib2, libvorbis, + mariadb, mbedtls, mesa3d, mesa3d-headers, mpv, patch, pcre2, + php, qt5, qt5multimedia, qt5wayland, qt5webengine, qt5webkit, + systemd, quagga, rustc, uboot, wireguard, zic, zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #10726: Current libglib2.mk creates broken libglib2 binary... + #10786: Linux fails to build unless make linux-menuconfig... + #10796: Cannot generate cpio image without selecting CON... + +2018.02-rc2, Released February 15th, 2018 + + Fixes all over the tree. + + Dependencies: Ensure C++ support is available like for C + support for packages needing 32bit host support. + + utils/genrandconfig: Check host dependencies for config. + + Updated/fixed packages: busybox, dnsmasq, dropbear, ffmpeg, + glibc, keepalived, libcpprestsdk, libgpiod, libmaxminddb, + librsvg, libtasn1, libv4l, libxml2, lightning, ltp-testsuite, + mesa3d, mesa3d-demos, mesa3d-headers, nftables, open-lldp, + php, postgresql, python-crossbar, qt5, qt53d, qt5enginio, + qt5tools, qt5webengine, qt5webkit, rsync, rust-bin, rustc, + systemd + + Issues resolved (http://bugs.uclibc.org): + + #9781: ti-sgx-km build on kernel >4.1 + #10141: Squashfs extended attribute failures + +2018.02-rc1, Released February 5th, 2018 + + The global source-check and per-package -source-check + targets have been removed. + + Architecture: Add x86 Silvermont variant. Add several new ARM + variants, rework MIPS NaN logic. Support mainline binutils/gcc + for ARC. + + Toolchains: Linaro toolchains upgraded to 2017.11 release, ARC + external toolchains upgraded to arc-2017.09. Libatomic is now + also copied for external musl based toolchains. + Add binutils 2.30.x and switch to binutils 2.29.x by default. + + Added hardening options to build with RELRO and FORTITY. + + New defconfigs: Bananapi M64, FriendlyARM Nanopi A64 & NEO2, + imx6slevk, imx6sx-sdb, imx6ulevk, Olimex A64-OLinuXino, + Orangepi lite / pc plus / pc / prime / win / win plus / zero + plus2, Pine64, Solidrun MacchiatoBin. Sopine. + + Add utils/diffconfig, a simple utility for comparing + configuration files - Adapted from the version in the + Linux kernel. + + Infrastructure: Check that the same file is not touched by + multiple packages, as a preparation for toplevel parallel + builds. + + Hashes for the license files for a large number of packages + have been added, ensuring that license changes will not be + missed when packages are bumped. + + Fix build issue for autotools based packages checking for C++ + support on toolchains without C++ support and on a distro + lacking /lib/cpp (E.G. Arch Linux). + + Support for the meson build system. + + Pie charts generated by 'graph-build' or 'graph-size' are now + sorted according to the size of each piece. + + System: Only show getty options when busybox init or sysvinit + are used. + + ARM-trusted-firmware: Support ATF bundled in U-Boot as + well as U-Boot bundled in ATF. + + Zlib is now a virtual package, provided by either libzlib or + zlib-ng, similar to openssl. + + Support for the Rust programming language. + + New packages: aoetools, armbian-firmware, binaries-marvell, + brltty, cargo, cargo-bin, cups-filters, curlpp, daq, + flatbuffers, gconf, glorytun, gstreamer1-mm, imx-m4fwloader, + imx-gpu-g2d, json-for-modern-cpp, libcpprestsdk, libgta, + libostree, libupnp18, luadbi, luadbi-sqlite3, lua-utf8, lynx, + meson, mv-ddr-marvell, nilfs-utils, opentracing-cpp, + open-lldp, pimd, proj, python-flask-cors, + python-jaraco-classes, python-more-itertools, python-oauthlib, + python-raven, python-remi, python-requests-oauthlib, + python-schedule, python-secretstorage, python-see, + python-tabledata, python-txtorcon, python-xlib, qt5charts, + rtl8189fs, rtl8723bu, rust, rustc, rust-bin, rygel, safeclib, + solatus, tcf-agent, traceroute, waylandpp, wolfssl, + zisofs-tools, zlib-ng + + Removed packages: eeprog + +2017.11.2, Released January 21st, 2018 + + Important / security related fixes. + + External toolchain: libatomic is now also copied for musl + based toolchains. + + nconfig: Fix for ncurses/ncursesw linking issue causing crashes. + + System: Only show getty options when busybox init or sysvinit + are used. + + Infrastructure: Fix build issue for autotools based packages + checking for C++ support on toolchains without C++ support and + on a distro lacking /lib/cpp (E.G. Arch Linux). + + Pie charts generated by 'graph-build' or 'graph-size' are now + sorted according to the size of each piece. + + Updated/fixed packages: asterisk, avahi, bind, busybox, + coreutils, eeprog, intel-microcode, iputils, irssi, kmsxx, + libiio, linux-firmware, lz4, mariadb, matchbox-lib, mcookie, + ntp, php, pound, rpcbind, tar, ti-cgt-pru, webkitgtk, xen, + xlib_libXpm + + Issues resolved (http://bugs.buildroot.org): + + #9996: lz4 package does not install lz4 binaries in target + #10176: Rsyslog's S01logging is deleted by Busybox.mk from... + #10216: package/x11r7/mcookie/mcookie.c:207: bad size ? + #10301: systemd/getty unused options + #10331: kmsxx, host installation fails with BR2_SHARED_... + #10556: Building ntp package with SSL library libressl... + #10641: avahi-autoipd not starting when using systemd-tmpfiles + +2017.11.1, Released December 31th, 2017 + + Important / security related fixes. + + Updated/fixed packages: asterisk, checkpolicy, dhcp, flann, + gdb, glibc, heimdal, kodi-pvr-mediaportal-tvserver, + kodi-pvr-stalker, libcue, libopenssl, libpqxx, libsoxr, + linknx, linux-tools, lldpd, ltp-testsuite, mariadb, mfgtools, + nodejs, nut, pulseaudio, python-cffi, qemu, rsync, tor, uboot, + uboot-tools, vlc, webkitgtk, weston, wireguard, wireshark, + xenomai, xfsprogs + +2017.11, Released November 30, 2017 + + Fixes all over the tree. + + Toolchain: Use github mirror for Glibc. + + Defconfigs: Correct boot.cmd for bananapi-m1. + + Makefiles: Workaround include order issues for certain make + versions by explicitly sorting the result of wildcard where it + matters. + + Download: Ensure subversion runs in non-interactive mode. + + Updated/fixed packages: asterisk, boost, chrony, dovecot, + dvb-apps, exim, feh, freerdp, fwup, google-breakpad, jose, + kvm-unit-test, lftp, libcurl, libevent, libfastjson, libpjsip, + libupnp, linphone, localedef, lttng-tools, mp4v2, mtools, + ndisc6, oracle-mysql, parted, pdbg, qt, qt5connectivity, + qt5declarative, qt5webkit, rauc, runc, samba4, shairport-sync, + systemd-bootchart, webkitgtk, wireguard, xlib_libXcursor, + xlib_libXfont, xlib_libXfont2, + + Issues resolved (http://bugs.buildroot.org): + + 10501: host-localedef fails to compile on Ubuntu 17.10 + 10506: Changed kernel image type (e.g. zImage to uImage)... + +2017.11-rc2, Released November 13th, 2017 + + Fixes all over the tree. + + Updated/fixed packages: collectd, ffmpeg, freerdp, + go-bootstrap, imagemagick, jimtcl, libpjsip, libplist, libuv, + mesa3d, nodejs, ntp, openjpeg, postgresql, python-numpy, ruby, + snmp++, usb_modeswitch, util-linux, vboot-utils, webkitgtk, + wireshark, wpa_supplicant, xapp_xdriinfo + + Issues resolved (http://bugs.buildroot.org): + + #10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y + #10491: Cannot output security warning when compiled with buildroot.. + +2017.11-rc1, Released November 6th, 2017 + + Fixes all over the tree and new features. + + Openssl is now a virtual package, which may be provided by + OpenSSL (now renamed to libopenssl) or LibreSSL. + + libssh2: there is now an explicit choice of the backend to use + (mbedtls, gnutls or openssl). Previously, the choice was implicit + based on the TLS library that was selected. Now, it is possible to + choose the backend, which is important if several TLS libraries are + selected. + + netsnmp: all MIB files are now installed, making the target filesystem a + bit bigger than before. To remove unneeded MIBS, you should use a + post-build script. + + Toolchain: Linaro toolchains updated to 2017.08, ARC toolchain + updated to 2017.09, Glibc updated to 2.26, Glibc support for + ARCv2. The toolchain wrapper now handles SOURCE_DATE_EPOCH for + older (pre-gcc7.x) toolchains for BR2_REPRODUCIBLE. + + New defconfigs: Atmel SAM45D27, Bananapi M1 and M2 Plus, + Engicam i.CoreM6 Qt5 configuration, i.MX6 sabreauto (mainline + kernel/u-boot), i.MX6Q sabresd Qt5 configuration, i.MX7d-pico, + QEMU ppc64le, Raspberry pi3 Qt5 webengine configuration, + Technologic TS-7680. + + New packages: asterisk, azmq, bcg729, boinc, dahdi-linux, + dahdi-tools, freeswitch-mod-bcg729, fscryptctl, libb64, + libpri, libss7, lua-basexx, lua-compat53, lua-cqueues, + lua-curl, lua-datafile, lua-fifo, lua-httpd, + lua-lpeg-patterns, lua-markdown, lua-sailor, lua-value, + luksmeta, minetest, minetest-game, pdmenu, prosody, + python-aiocoap, python-automat, python-ibmiotf, + python-iso8601, python-m2r, python-simplesqlite, + python-websockets, python-xmltodict, qt5wayland, qt5webengine, + restorecond, selinux-python, semodule-utils, uhubctl, + wireguard, wsapi-fcgi, wsapi-xavante + + Removed packages: aiccu, rfkill, sepolgen + + Issues resolved (http://bugs.buildroot.org): + + #10281: lsblk does not compile for util-linux + #10336: lttng compilation fails : linking error + #10351: glibc missing in rootfs + #10356: nfs-utils missing header + #10361: python3 python-config script generates invalid includes + #10366: dropbear download url has changed + #10391: WiringPi retrieves wrong (old) version + #10406: Beaglebone black: Buggy SGX driver version, swapped... + #10426: uboot-tools' fw_setenv does not update the redundant... + #10451: libpcap 1.8.x and 1.7x does not compile on PPC + +2017.08.2, Released November 28th, 2017 + + Important / security related fixes. + + Qt: 5.6 version updated to 5.6.3. + + Reproducible: Do not override SOURCE_DATE_EPOCH if already set + in the environment. + + Makefiles: Workaround include order issues for certain make + versions by explicitly sorting the result of wildcard where it + matters. + + Updated/fixed packages: apr, apr-util, arqp-standalone, + azure-iot-sdk-c, collectd, dvb-apps, ffmpeg, go-bootstrap, + google-breakpad, gstreamer, imagemagick, irssi, jimtcl, + kvm-unit-test, libcurl, libfastjson, libglib2, libidn, + libpjsip, libplist, localedef, lttng-tools, luajit, mesa3d, + moarvm, mp4v2, openssh, openssl, oracle-mysql, postgresql, + python3, python-pyqt5, qt, qt5base, qt5canvas3d, + qt5connectivity, qt5declarative, qt5engineio, + qt5graphicaleffects, qt5imageformats, qt5location, + qt5multimedia, qt5quickcontrols, qt5quickcontrols2, qt5script, + qt5sensors, qt5serialbus, qt5serialport, qt5svg, qt5tools, + qt5webchannel, qt5webkit, qt5websockets, qt5x11extras, + qt5xmlpatterns, quagga, redis, ruby, samba4, sdl2, snmppp, + swupdate, ti-gfx, uboot-tools, usb_modeswitch, vboot-utils, + webkitgtk, wget, wireshark, xapp_xdriinfo. + + Issues resolved (http://bugs.buildroot.org): + + 10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y + 10361: python3 python-config script generates invalid includes + 10501: host-localedef fails to compile on Ubuntu 17.10 + +2017.08.1, Released October 23rd, 2017 + + Important / security related fixes. + + Webkitgtk bumped to the 2.18.x series, fixing a large number + of security issues. + + Defconfigs: galileo: fix ext4 related kernel config, bump + kernel for gcc 6.x compatibility, enable wchar support for + grub2. wandboard: correct rootfs offset + + support: Ensure gzip compression level 6 is used for git + tarballs. check-bin-arch: Correctly handle (ignore) symbolic + links. check-rpath: Also handle PIE binaries + + External toolchain: Correctly handle glibc Buildroot + toolchains built with merged /usr + + musl: fix ARMv4 build with binutils 2.27.51+, fix for + CVE-2017-15650 + + Updated/fixed packages: apache, augeas, bind, bluez5_utils, + busybox, bzip2, cmake, dnsmasq, ejabberd, gcc, git, go, ffmpeg, file, + flashrom, gd, gdk-pixbug, gnupg2, hostapd, ifupdown-scripts, + imagemagick, iucode-tool, kernel-module-imx-gpu-viv, lame, + libarchive, libcurl, libffi, libidn, libmbim, libnspr, libnss, + libressl, librsync, libsoup, libxml2, libzip, mbedtls, musl, + netplug, nginx, openvpn, pkgconf, poppler, proxychains-ng, + qemu, qt, rpi-userland, syslog, ruby, samba4, softether, + sqlite, strongswan, subversion, supertuxkart, supervisor, tcpdump, + tor, unrar, urq, vboot-utils, webkitgtk, wpa_supplicant, xen, + xmlstarlet, xlib_libXfont, xlib_libXfont2, + xserver_xorg-server, zsh + +2017.08, Released September 1st, 2017 + + Minor fixes. + + Toolchain: Don't allow internal toolchain builds for MIPS + M6201/P6600, as support for these are not yet in mainline GCC. + + Updated/fixed packages: bcusdk, connman, dialog, dnsmasq, + gnupg, grub2, iostat, iucode-tool, libgcrypt, libkcapi, + libphidget, libv4l, linux-tools, mediastreamer, minidlna, + nss-pam-ldapd, nvidia-driver, qt-webkit-kiosk, rpcbind, squid, + transmission, vde2, vim + + Updated/fixed defconfigs: + + Removed packages: simicfs. + + Issues resolved (http://bugs.buildroot.org): + + #10261: Grub2 fails to build for x86_64 + +2017.08-rc3, Released August 23rd, 2017 + + Fixes all over the tree. + + Updated/fixed packages: alsa-lib, alsa-utils, cc-tool, + dbus-cpp, e2fsprogs, elf2flt, faad2, fakeroot, gcc, git, gpsd, + gst1-validate, kvmtool, libconfuse, libepoxy, librsync, + libspatialindex, libunwind, linux, linux-headers, lua, + mariadb, mesa3d, mtd, openocd, python3, syslinux, sysvinit, + whois, xen, zmqpp. + + Updated/fixed defconfigs: ci20, socrates_cyclone5, + toradex_apalis_imx6. + + Removed defconfig: Armadeus APF9328. + + skeleton-* packages introduced in -rc1 have been renamed to + skeleton-init-* instead. + + Issues resolved (http://bugs.buildroot.org): + + #10141: Squashfs extended attribute failures + +2017.08-rc2, Released August 11th, 2017 + + Fixes all over the tree. + + Updated/fixed packages: bind, dbus, erlang-p1-xml, faad2, + ficl, gcc, gdb, glibc, jack2, libcurl, linux, linux-headers, + lua, mutt, nvme, qt5base, skeleton-common, snappy, stella, + swupdate, uclibc, valgrind, webkitgtk. + + Updated/fixed defconfigs: beaglebone_qt5, minnowboard_max, + nanopi_m1{, _plus}, olimex_a20_olinuxino_lime, qemu_sparc, + qemu_sparc64. + + The cmake-package infrastructure for host packages has been + fixed to not incorrectly detect target packages through + pkg-config. + + Issues resolved (http://bugs.buildroot.org): + + #9926: systemd-resolved.service: Failed at step NAMESPACE (systemd 233) + #10021: libqeglfs-viv-integration.so file is missing for qt5 on armv7 + #10026: lua-5.3.4: fix lua linker error in swupdate + #10146: package/skeleton-common fix recursive variable + #10156: glibc compilation fails for X86 32bits (i386) + #10201: toolchain-wrapper.c:192: (error) Memory leak: + #10221: Buildroot Support + +2017.08-rc1, Released August 2nd, 2017 + + Infrastructure: + + - The skeleton package has been split into multiple packages: + skeleton-sysv (when Busybox or SysV init are used), + skeleton-systemd (when systemd is used), skeleton-none (when + no init system is used) and skeleton-custom (when a custom + skeleton is used). Those packages, except skeleton-custom, + share common logic and data in a new package called + skeleton-common. The skeleton package becomes a virtual + package. This change allows to generate a filesystem that is + compliant with systemd expectations. + + - Support for using a read-only filesystem with systemd has + been fixed. + + - Major revamp of the gettext handling, with user-visible + effect: + + - prior to this revamp, when BR2_ENABLE_LOCALE=y, each + package could decide to enable or not NLS support. When + BR2_ENABLE_LOCALE was disabled, NLS support was forced off + by passing --disable-nls to packages. + + - after this revamp, a new BR2_SYSTEM_ENABLE_NLS option + controls whether NLS support should be enabled or not in + packages. This option defaults to disabled, which means + that now, NLS support is by default disabled in all + packages. + + Therefore, if you need NLS support in packages, you must now + explicitly enable the BR2_SYSTEM_ENABLE_NLS option. + + - The host directory no longer has a usr/ component. This + makes it much more natural to use that directory as an + externally used toolchain. For compatibility with existing + scripts, a usr -> . link is still added. + + - Hashes are now checked on tarballs by Buildroot when a + package is sourced from a Git repository. + + - Patches are no longer being downloaded from Github, since + auto-generated patches could change over time, and break + hashes. All patches that were downloaded from Github are now + stored in their respective package directories. + + - Hash files in packages can now contain hashes for the + license files contained in the package source code. This + allows to detect changes in such license files. + + - Binaries in $(TARGET_DIR) are now cleaned up from invalid + RPATHs at the end of the build. + + - A new "make sdk" target prepares $(HOST_DIR) to be + relocatable: turns RPATHs in host binaries into relocatable + ones, removes bogus RPATHs from staging binaries/libraries, + and provides a relocate-sdk script that can be executed to + relocate the SDK after installation. + + - Addition of utils/genrandconfig which generates a random + configuration based on a set of pre-defined toolchain + configurations (support/config-fragments/autobuild/) and a + random selection of packages. It is now used by the + autobuilders to generate the random configurations. + + Filesystems: + + - ext2/3/4 filesystems are now generated using mkfs.ext from + e2fsprogs instead of using genext2fs. + + Architecture: + + - Addition of support for ARM big.LITTLE variants + - Improved MIPS support, with options to select NaN encoding + and FP32 mode. + + Toolchain: + + - Switch to gcc 6.x as the default gcc version, add support + for gcc 7.x, remove support for gcc 4.8 + - Switch to binutils 2.28 as the default binutils version, add + support for binutils 2.29, remove support for binutils 2.26 + - Support added for gdb 8.0 + - uClibc-ng bumped to 1.0.26 + - CodeSourcery toolchains for x86 and SuperH have been + removed, they were using a too old glibc version + (2.17). External toolchains with glibc 2.17 or earlier are + no longer supported. + - The version selection in the glibc package has been + removed. Like musl and uClibc-ng, we now use the latest + glibc version. + - Improved support for Xtensa toolchain overlays, which can + now be downloaded. + + Tools: + + - Numerous improvements to the runtime test infrastructure + - Tests are now executed by Gitlab CI on a regular basis + - Tools that are directly useful to the user have been moved + from support/scripts/ to utils/: brmake, check-package, + get-developers, scancpan, scanpipy, size-stats-compare, + test-pkg. + + New defconfigs: A13 Olinuxino, Engicam platforms (i.CoreM6 + Solo/Dual/DualLite/Quad, RQS SOM, GEAM6UL SOM, Is.IoT MX6UL + SOM), Nano Pi M1 (Plus), OrangePi Zero and Plus. + + New packages: azure-iot-sdk-c, cracklib, dt-utils, easy-rsa, + erlang-jiffy, erlang-p1-oauth2, erlang-p1-xmpp, + ifupdown-scripts, irrlicht, kodi-inputstream-adaptive, + kodi-inputstream-rtmp, kvazaar, let-me-create, libloki, + libpwquality, libressl, libspatialindex, libva-utils, + linuxconsoletools, linuxptp, luaossl, lua-sdl2, lua-stdlib, + lsscsi, paxtest, pcre2, pixz, python-asn1crypto, + python-backports-shutil-get-terminal-size, python-bcrypt, + python-cheroot, python-h2, python-hpack, python-hyperframe, + python-hyperlink, python-ipython-genutils, python-pathlib2, + python-pickleshare, python-priority, python-portend, + python-scandir, python-systemd, python-tempora, + python-traitlets, python-typepy, qt5virtualkeyboard, + ratpoison, rauc, refpolicy, rhash, sdl2_mixer, sdl2_net, + xr819-xradio, zstd + + Removed packages: cloog, input-tools, mke2img + + Issues resolved (http://bugs.buildroot.org): + + #7892: systemd-journald is broken + #9341: avahi-utils does not compile with uClibc + libglib2 + #9441: Link BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY to + BR2_ENABLE_DEBUG + #9746: ext4 image generated by Buildroot is not working + properly with U-Boot + #9886: Build fails with "unexpected EOF while looking for + matching `"'" if PATH contains a newline + #9891: parted 3.1 => 3.2? + #9911: qt5 does not build on sparc + #9916: qt5 does not build on + arm-buildroot-linux-uclibcgnueabihf for ARMv8 cores + #9936: Host QEMU does not build with SDL support because of + pkg-config + #9941: nodejs option disappears for arm + #9951: SCANCPAN failure + #9966: util-linux-2.30/.stamp_built' failed + #9976: License file for package 'rtl8821au' incorrect + #9991: SGX Error implicit declaration of function + ‘dmac_map_area’ + #10011: wget does not work from Buildroot + #10036: Buildroot builds Raspbian Jessie headless image + presenting incorrect prompt + #10051: make: *** No rule to make target + 'raspberrpi3_defconfig'. Stop reported with Buildroot + v2017.05.1 + #10056: No .config file was produced in /buildroot folder + #10061: gcc5.4 buildroot toolchain for powerpc libsanitizer + failure + #10071: fakeroot: replace hard-coded paths in post install + #10076: Makefile:4113: recipe for target 'all-gcc' failed + #10091: gcc7.1 does not build with graphite support due to old + isl + #10121: webkit without the multimedia option causes build + error + +2017.05.2, Released July 27th, 2017 + + Important / security related fixes. + + Webkitgtk bumped to the 2.16.x series, fixing a large number + of security issues. + + host-aespipe compile fix for Debian/Gentoo/Ubuntu toolchains + which default to PIE mode. + + Updated/fixed packages: aespipe, apache, bind, binutils, + busybox, ccache, collectd, dieharder, efibootmgr, efivar, + expat, ffmpeg, gcc, heimdal, iproute2, irssi, libglib2, + libmemcached, libosip2, libtirpc, libxml-parser-perl, + linux-fusion, linux-zigbee, mpg123, orc, pcre, php, protobuf, + pulseaudio, python-setproctitle, qt5base, rpi-firmware, + samba4, syslinux, systemd, spice, tcpdump, tiff, uboot-tools, + webkitgtk, x265, xserver_xorg-server, xvisor + + Issues resolved (http://bugs.buildroot.org): + + #10061: gcc5.4 buildroot toolchain for powerpc libsanitizer... + +2017.05.1, Released July 4th, 2017 + + Important / security related fixes. + + Update support/scripts/scancpan to use METACPAN v1 API as v0 + has been shutdown. + + Update support/scripts/mkusers to handle setups where + /etc/shadow is a symlink. + + External toolchain: Don't create musl dynamic loader symlink + for static builds. + + Setlocalversion: Correct detection of mercurial revisions for + non-tagged versions. + + Defconfigs: at91sam9x5ek_mmc: workaround boot rom issue. + + Updated/fixed packages: apache, automake, bind, botan, c-ares, + dhcp, expat, fcgiwrap, gcc, gdb, gesftpserver, glibc, glmark2, + gnutls, gst1-plugins-bad, imagemagick, imx-uuc, intltool, + iperf, ipsec-tools, irssi, kmod, libcurl, libgcrypt, libmad, + libnl, lugaro, mosquitto, mpg123, ncurses, nodejs, ntp, + openssh, openvpn, pngquant, python-simplegeneric, qt5base, + qt5multimedia, rtl8821au, socat, spice, systemd, tor, trinity, + tslib, vlc, x264, xen, xlib_libxshmfenc, xserver_xorg-server + + Issues resolved (http://bugs.buildroot.org): + + #9976: License file for package 'rtl8821au' incorrect + +2017.05, Released May 31st, 2017 + + Minor fixes. + + External toolchain: musl dynamic linker symlink for mips-sf + corrected. + + Updated/fixed packages: agentpp, bash, exim, hans, madplay, + qpid-proton, rtl8188eu, snmppp, stm32flash, strongswan, sudo, + xen + + Issues resolved (http://bugs.buildroot.org): + + #9906: genimage: Disk full + +2017.05-rc3, Released May 30th, 2017 + + Fixes all over the tree. + + ARC toolchain bumped to 2017.03 + + Runtime testing improvements and cleanups. + + Updated/fixed packages: acpica, armadillo, audiofile, c-icap, + cppcms, dhcp, docker-engine, dropbear, elfutils, erlang, + fbgrab, ffmpeg, flashrom, ftop, gnutls, google-breakpad, + keepalived, kodi, libcdio, libepoxy, libev, libminiupnpc, + libqmi, libtasn1, libv4l, mariadb, mono, mosh, mosquitto, + mxml, ntp, opencv, openpowerlink, oracle-mysql, popt, + pulseview, python-enum34, rabbitmq-c, redis, samba4, stella, + xen + + Removed packages: firejail, ola + + Issues resolved (http://bugs.buildroot.org): + + #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set + #9876: aarch64 support with gcc 4.8 toolchain + #9896: host-gcc-initial error downloading because incorrect URL + +2017.05-rc2, Released May 17th, 2017 + + Fixes all over the tree. + + ARC toolchain bumped to 2017.03-rc2 + + Updated/fixed packages: bluez_utils, boost, clamav, daemon, + efibootmgr, efl, espeak, expedite, faketime, ffmpeg, fxload, + git, gpsd, kvm-unit-tests, libcdio, libv4l, lua, mke2img, + mpir, mpv, odroid-scripts, openblas, opencv3, openvpn, php, + postgresql, protobuf, qt5declarative, qwt, radvd, rpcbind, + rtmpdump, strongswan, sudo, ltp-testsuite, uclibc-ng-test, + vlc, x11vnc, xfsprogs + + Issues resolved (http://bugs.buildroot.org): + + #9796: source-check broken for Git downloads + #9866: BASE_DIR usage + +2017.05-rc1, Released May 8th, 2017 + + Fixes all over the tree and new features. + + Infrastructure: + + - Installed binaries are now checked for correct architecture + to catch natively built binaries or binaries built for other + architecture variants. + + - Luarocks infrastructure improvements to extraction handling, + support for upstream name != Buildroot package name. + + - 'make printvars' output format has changed to make it easier + to use in scripts. It now has options to quote the variables + and to show the expanded/unexpanded values. + + - Automatic ext2 rootfs size calculation has been removed. The + logic was not working working reliable in all setups as it + depends on the host filesystem behaviour, so instead now the + size has to be specified explicitly (defaults to 60MB). + + - The git download infrastructure now ensures that GNU format + tar files are created. + + - Fixed a variable clashing issue in the mkusers script with + internal bash variables. + + - Fakeroot now links against libacl to fix issues on + distributions using acls. + + - Correct permissions for /dev/pts/ptmx when systemd is used + with recent glibc versions. + + - br2-external: Improve error reporting. + + - A wrapper script for genimage has been added in + support/scripts/genimage.sh for easy use of genimage from + post-image scripts. + + - A script to check for common style issues in new packages + before submitting has been added in support/scripts/check-package + + - Defconfigs are now tested by gitlab-CI instead of Travis: + https://gitlab.com/buildroot.org/buildroot + + - Infrastructure for runtime testing has been added to + support/testing + + Toolchain: + + - External linaro toolchains updated to 2017.02, ARC toolchain + updated to 2017.03-rc1, NIOSII CodeSourcery to 2017.05 + + - A number of fixes and improvements to the external toolchain + handling, including C library detection, multilib and ld.so + handling + + - Glibc 2.25 and uClibc-ng 1.0.24 added, wordexp support enabled + for uClibc-ng + + - Binutils 2.28 added and default changed to 2.27 + + + Architectures: + + - Support for the C-SKY architecture has been added. + + + License handling: + + - The package license markings for legal info now uses the + SPDX short identifiers for the license string where possible. + + - License info has been improved / added for a number of packages. + + + Misc: + + - Cmake 3.7.x installed on the host is no longer ignored as a + workaround for the RPATH issues has been implemented. + + - Docker-engine can now be built statically on an otherwise + dynamic linked build for docker-in-docker setups. + + - U-Boot now supports out-of-tree device trees, similar to + Linux + + - Nodejs 0.10.x support (and with it, support for -source-check fixed for packages from git. + + External toolchain: musl dynamic linker symlink for mips-sf + corrected. + + Updated/fixed packages: armadillo, audiofile, bash, + bluez_utils, cppcms, dbus, dhcp, dropbear, efibootmgr, efl, + elfutils, faketime, fbgrab, flashrom, ftop, gdb, git, + google-breakpad, gpsd, hans, kvm-unit-tests, kyua, libev, + libmicrohttpd, libminiupnpc, libtasn1, libubox, ltp-testsuite, + lua, madplay, mariadb, mono, mosquitto, mxml, ntp, + nvidia-driver, openblas, openvpn, oracle-mysql, picocom, popt, + postgresql, pulseview, qt5base, qwt, rabbitmq-c, redis, + rpcbind, rtmpdump, samba4, strongswan, sudo, vlc + + Issues resolved (http://bugs.buildroot.org): + + #9796: source-check broken for Git downloads + #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set + +2017.02.2, Released May 1st, 2017 + + Important / security related fixes. + + Use HTTPS for the Codesourcery external toolchains as the HTTP + URLs no longer work. + + Updated/fixed packages: bind, busybox, dovecot, freetype, + ghostscript, glibc, granite, hiredis, icu, imagemagick, + gst-plugins-base, gst1-plugins-base, libcroco, libcurl, libnl, + libnspr, libnss, libsamplerate, libsndfile, libunwind, + minicom, mplayer, mpv, nodejs, python-django, python-pyyaml, + python-web2py, samba4, syslinux, systemd, tiff, trinity, + uboot, wireshark, xen + + Issues resolved (http://bugs.buildroot.org): + + #9791: Python searches for packages in the user site directory + +2017.02.1, Released April 4th, 2017 + + Important / security related fixes. + + Fix a variable clashing issue in the mkusers script with + internal bash variables. + + Improve external toolchain version detection. + + Correct permissions for /dev/pts/ptmx when systemd is used + with recent glibc versions. + + Fix python module name clash for graph-depends. + + Fakeroot now links against libacl to fix issues on + distributions using acls. + + Ensure that the git download infrastructure creates GNU format + tar files. + + br2-external: Improve error reporting. + + Updated/fixed packages: acl, apr, audiofile, busybox, cairo, + dbus-cpp, dbus-glib, dbus-triggerd, domoticz, elfutils, + fakeroot, filemq, fmc, gdb, git, gnutls, gst-ffmpeg, + gst1-plygins-bad, harfbuzz, htop, imagemagick, jasper, libcec, + libiio, libplatform, librsvg, libselinux, libsidplay2, libsoc, + libwebsockets, libxkbcommon, linux-firmware, logrotate, + lpt-testsuite, lttng-libust, mariadb, mbedtls, memcached, + mesa3d, mpd, mplayer, nbd, ncftp, ntp, openssh, opentyrian, + pcre, perl-gd, python, qt5base, rpi-userland, rpm, samba4, + skalibs, slang, sngrep, squashfs, syslog-ng, taglib, + tcpreplay, tor, upmpdcli, wget, wireshark, + xdriver_xf86-video-vmware, xlib_libXv, zmqpp + + Issues resolved (http://bugs.buildroot.org): + + #9456: mkusers script bash errors + +2017.02, Released February 28th, 2017 + + Minor fixes, mainly fixing autobuilder issues. + + Don't use cmake 3.7.x from the build host as it is also + affected by the RPATH handling issues, and instead build our + own if needed. + + Updated/fixed packages: assimp, classpath, genimage, mplayer, + mpv, openocd, python-libconfig, qt5base, qt5quickcontrols, + vlc, xterm + +2017.02-rc3, Released February 26th, 2017 + + Fixes all over the tree. + + Cmake reverted to version 3.6.3 to workaround regressions + related to RPATH handling. + + Updated/fixed packages: bctoolbox, berkeleydb, binutils, + btrfs-progs, classpath, directfb, glibc, gstreamer1, + gst1-plugins-{base,good,bad,ugly}, gst1-libav, + gst1-rtsp-server, gst1-validate, gst-omx, htop, libcurl, + libepoxy, libimxvpuapi, libpcap, libuv, ncurses, openssh, + oracle-mysql, poco, python, qt5base, qt5webkit, sslh, synergy, + trousers, uclibc-ng-test, util-linux, vlc, xfsprogs + + Issues resolved (http://bugs.buildroot.org): + + #9251: Shared C++ libraries for Microblaze results in Segmentation... + #9456: mkusers script bash errors + #9506: Collectd 5.7.0 fails to build with libcrypt + #9581: VagrantFile provisioning step fails due to issue with grub-pc + #9586: usbmount: usbmount slows down the system... to a state of... + #9616: CMake host packages cannot provide CONF_ENV + #9641: Need raptor package installed in staging + #9671: stunnel build error + +2017.02-rc2, Released February 20th, 2017 + + Fixes all over the tree. + + Support for SOURCE_DATE_EPOCH in the toolchain wrapper for + older gcc versions for reproducible builds has been + (temporarily) reverted because of licensing compatiblity + concerns. + + Defconfigs: SD card generation fix for the Udoo Neo board + + Infrastructure to handle .lz compressed tarballs added, and + affected packages updated to use it. + + Updated/fixed packages: bctoolbox, bind, canelloni, + cbootimage, ccache, classpath, cups, dbus, ddrescue, directfb, + ed, erlang, gcc, gdb, glmark2, gstreamer, gstreamer1, hiredis, + kmod, kmsxx, lcdapi, libasplib, libgpiod, libnss, libraw, + libv4l, mesa3d-headers, mosquitto, mpd, mpv, musl, ntfs-3g, + ocrad, openswan, postgresql, qt5base, qt5quickcontrols, redis, + riemann-c-client, samba4, sunxi-mali, tcping, trousers, + uclibc, util-linux, vim, wavpack, wget, wiringpi, xfsprogs, + xserver_xorg-server + + Issues resolved (http://bugs.buildroot.org): + + #8941: Valgrind fails to build with stack protection turned on + #9291: perl: SysV message queues not configured, even if available + #9651: libxcb-1.12 built Error + #9656: util-linux: schedutils doesn't build on target w/o enabl... + #9666: qt5quickcontrols install fails + +2017.02-rc1, Released February 11th, 2017 + + Fixes all over the tree and new features. + + Infrastructure: + + - numerous improvements to support reproducible builds + + - new waf-package package infrastructure to support packages + that use the Waf build system. 6 packages converted to + this infrastructure. + + - add option _PREFER_INSTALLER to the perl package + infrastructure + + Architecture: + + - add support for the OpenRISC CPU architecture + + - merge description of the ARM and ARM64 options, and add + support for selecting a specific ARM64 core + + Toolchain: + + - major rework of the external toolchain support. It is now + split into several packages, one per external toolchain, + and a common infrastructure. + + - important fix for musl to prevent a conflict between musl + and kernel headers (fixes the build of numerous packages + with musl) + + - uClibc-ng bumped to 1.0.22, and therefore enable uClibc + for ARM64, mips32r6 and mips64r6 + + - add gdb 7.12.1, and switch to gdb 7.11 as the default + + - Linaro toolchains updated to 2016.11, ARC toolchain + components updated to arc-2016.09, MIPS Codescape + toolchains bumped to 2016.05-06, CodeSourcery AMD64 and + NIOS2 toolchains bumped + + - remove Analog Devices toolchain for the Blackfin + architecture, remove pre-built musl toolchains from + musl.codu.org + + New defconfigs: Freescale i.MX23EVK, Qemu OpenRISC emulation, + Qemu NIOS2 emulation, Grinn chiliBoard, Freescale i.MX6Q + SabreSD, BeagleBoard X15, OrangePi One, ARC HS38 HAPS + + New packages: angular-websocket, aubio, bctoolbox, darkhttpd, + ddrescue, easydbus, fakedate, git-crypt, hiredis, ifenslave, + jsmn, libgpiod, libgsm, linux-syscall-support, mariadb, mimic, + nginx-dav-ext, nmon, opkg-utils, policycoreutils, + pru-software-support, python-arrow, python-attrs, + python-babel, python-bitstring, python-chardet, + python-constantly, python-flask-babel, python-gunicorn, + python-incremental, python-jsonschema, python-logbook, + python-markdown2, python-mbstrdecoder, python-mutagen, + python-pathpy, python-pudb, python-pyqrcode, + python-pytablereader, python-setuptools-scm, python-sh, + python-toml, python-vcversioner, python-whoosh, + raspberrypi-usbboot, riemann-c-client, rtl8723bs, skalibs, + sslh, sngrep, ti-cgt-pru, uclibc-ng-test, udpxy, uhttpd, + upower, ustream-ssl, waf, xlib_libXfont2 + + Removed packages: perl-db-file, snowball-hdmiservice, + snowball-init + + Tooling: addition of a test-pkg script to help contributors + build test their package. + + Issues resolved (http://bugs.buildroot.org): + + #8946: Valgrind fails to build with stack protection turned on + #9461: odroidc2 - toolchain Linaro AArch64 2016.11 compile error + #9466: VIM_REMOVE_DOCS removes rgb.txt + #9486: xorg-server 1.19 fails to compile for glibc with systemd init (x86_64) + #9501: eudev fails to build with older kernel headers + #9526: Embedded NPM fails to start with "no such file or directory" error + #9541: Platform drivers autoloading from info in device tree does not work + #9546: seems BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS do nothing + #9551: Coreutils fails to build target src/src_libsinglebin_pinky_a-pinky.o + #9566: [kmod] Compilation fails with uclibc + #9571: buildroot fails while building opencv for arm64 platform + #9576: External tree with BR 2016.11 does not work anymore + #9606: xorg-server cannot build for ARM target + +2016.11.3, Released March 9th, 2017 + + Important / security related fixes. + + Updated/fixed packages: bind, dbus, gnutls, imagemagick, + lcms2, libcurl, ntfs-3g, ntp, openssl, php, quagga, redis, + squid, stunnel, tcpdump, vim, wavpack, wireshark, xlib_libXpm + +2016.11.2, Released January 25th, 2017 + + Important / security related fixes. + + A fix for BR2_EXTERNAL trees referenced using relative paths, + which broke in 2016.11. + + Updated/fixed packages: bind, docker-engine, gd, gnutls, go, + imagemagick, irssi, libpng, libvncserver, musl, opus, php, + php-imagick, rabbitmq-server, runc, wireshark, + + Issues resolved (http://bugs.buildroot.org): + + #9576: External tree with BR 2016.11 does not work anymore + +2016.11.1, Released December 29th, 2016 + + Important / security related fixes. + + Updated/fixed packages: apache, cryptopp, docker-engine, + dovecot, exim, gdk-pixbuf, libcurl, libupnp, links, monit, + nodejs, openssh, php, python, python-bottle, samba4, squid, + uboot, vim, wireshark, xorg-server uboot + + Issues resolved (http://bugs.buildroot.org): + + #9466: VIM_REMOVE_DOCS removes rgb.txt + +2016.11, Released November 30th, 2016 + + Minor fixes. + + Updated/fixed packages: bzip2, gcc, jasper, sane-backends, + uboot, uclibc + + Issues resolved (http://bugs.buildroot.org): + + #9451: packages/postgresql/postgresql.mk contains wrong POST... + +2016.11-rc3, Released November 28th, 2016 + + Fixes all over the tree, including a number of security fixes. + + The move from fakeroot to pseudo unfortunately brought a + number of issues. The SELinux issue described in #9386 which + triggered the move to pseudo has been investigated further and + a workaround implemented and the pseudo changes reverted. + + Linux kernel: update default to 4.8.11. + + Defconfigs: Updates/fixes for imx28ek, mx6udoo, imx6ulpico, + olimex a20 olinuxino lime mali, roseapplepi, synopsis aarch64 + vdk, axs101, axs103 and hs38 smd vdk. + + Updated/fixed packages: autossh, chrony, dosfstools, + dtv-scan-tables, e2fsprogs, gcc, gdb, gnuchess, gnuradio, + gpsd, gst1-plugins-bad, gst1-plugins-good, imagemagick, + kvm-unit-tests, libfribi, libuv, mesa3d, mpfr, mplayer, mpv, + ntp, ola, olsr, openblas, openjpeg, openssh, postgresql, + ptpd2python3, qemu, qextserialport, qt5base, quagga, xqwt, + taskd, tiff, tremor, trousers, udisks, uclibc, wireshark, + xapp_xload, xenomai, xmlstarlet + + Issues resolved (http://bugs.buildroot.org): + + #9386: ubinize fails with or without custom config + #9431: A misspelling + #9446: make raspberrypi3_defconfig compilation failure + +2016.11-rc2, Released November 13th, 2016 + + Fixes all over the tree. + + Architecture: add support for MIPS XBurst cores; remove MIPS + support for M5100 cores. + + Updated/fixed packages: mesa3d, lttng-babeltrace, tinyalsa, pseudo, + czmq, libxml2, makedevs, binutils, kvm-unit-tests, libnss, privoxy, + qemu, ser2net, net-tools, ffmpeg, assimp, libmpeg2, ccache, mpv, + libxslt, python, python3, php, valgrind, guile, domoticz, efl, + jasper, kvmtool, go, wget, sane-backends, weston, tinymembench, + strace, openjpeg, lcms2, quota. + + Linux kernel: update default to 4.8.7. + + CMake support: fix cmake wrapper to properly pass NDEBUG flag. + + Filesystems: use a wrapper to pseudo, to better mimick the behaviour + of fakeroot; makedevs no longer breaks of the destination already + exists and is of the correct type/major/minor. + + Defconfigs: a few legacy and broken defconfigs have been removed + because they now fail to build: kb9202_defconfig, mini2440_defconfig, + freescale_p2020ds, qmx6, calao*, atmel_sama5d4ek. Other defconfigs + have been updated: nanopi-neo, olimex_a20_olinuxino_lime_mali, + armadeus_apf51, armadeus_apf28, freescale_imx31_3stack, ci20, + olimex_a20_olinuxino_lime2, atmel_at91sam9260eknf, + atmel_at91sam9rlek, atmel_at91sam9g20dfc, atmel_at91sam9g45m10ek, + atmel_sama5d3xek. + +2016.11-rc1, Released November 3rd, 2016 + + Fixes all over the tree and new features. + + It is now possible to specify multiple BR2_EXTERNAL + directories. The required files in a BR2_EXTERNAL directory + have changed to accomodate this feature. Refer to the + documentation for details of how to update them. External + trees now have a name and a description. Also, it is possible + to override a defconfig in the external tree. + + The default skeleton now uses UID 65534 for the "nobody" + user instead of UID 99, like most distros do. See + https://lwn.net/Articles/695478/ for a complete discussion. + Programs and configuration files that explicitly refer to UID + 99 will have to be updated. + + When the build environment already has a suitable cmake version + (3.1 or later), that one will be used instead of building + host-cmake. This can speed up the build significantly. + + The ExtUtils::MakeMaker perl module is now required in the + build environment. + + An additional check is done during the build that files are + not installed in the output directory within the output + directory. This happens e.g. when the target directory is + contained both in --prefix and in DESTDIR. The build will + terminate with an error message that specifies which package + and which file caused the failure. + + The concept of "deprecated packages" and the BR2_DEPRECATED + option have been removed. Instead, packages are removed + immediately. Packages are only removed when they don't work + for some reason. If you still need a removed package and + you have a solution for the problem(s) that caused the + removal, please contribute it. + + Architecture: support for sh64 removed, improved support for + MIPS core selection. + + Toolchain: support for musl powerpc64le, mips64 and mipsr6 + toolchains, ARC toolchain components updates, gcc 6.x series + bumped to 6.2.0, default binutils version switched to 2.26, + default gcc version switched to gcc 5.x, Linaro toolchains + updated, uclibc-ng bumped to 1.0.19. GCC is now always built + with TLS support. Checking of unsafe compiler options (that + point to host directories) has been extended with -isystem, + -idirafter and -iquote. + + Package infrastructure: new variable $(PKG)_DL_OPTS, addition + of -show-rdepends to list reverse dependencies, and + -graph-rdepends to graph reverse dependencies. Linux tools + are now in a separate linux-tools package instead of in the + kernel build. Fakeroot has been replaced by pseudo. + + CMake support: the toolchainfile.cmake file now provides a + definition of the CMAKE_BUILD_TYPE variable. The + toolchainfile.cmake also no longer forces the compiler/linker + flags defined by Buildroot. + + New defconfigs: WaRP7, Solidrun's MX6 Cubox/Hummingboard, + TS-4900, Grinn's liteBoard, Udoo MX6Q/DL, Qemu ARM noMMU, + BeagleBone Qt5 demo, Digilent Zybo, FriendlyARM Nanopi NEO. + + New packages: arm-trusted-firmware, amd-catalyst, atop, aufs, + aufs-util, fwts, gst1-rtsp-server, libglob, libite, mfgtools, + mksh, motion, paho-mqtt-c, php-amqp, pseudo, python-couchdb, + python-crcmod, python-cssutils, python-docutils, + python-futures, python-mwclient, python-mwscrape, + python-mwscrape2slob, python-pyelftools, python-pyicu, + python-pylru, python-pyqt5, python-requests-toolbelt, + python-simpleaudio, python-slob, rabbitmq-server, shapelib, + vdr, vdr-plugin-vnsiserver, vexpress-firmware, xvisor, iio and + gpio linux tools. + + Removed packages: binutils 2.24, fakeroot, gcc 4.7, ipkg, + kodi-addon-xvdr, libgail, sstrip, torsmo, webkit, webkitgtk24, + wvdial, wvstreams. + + Documentation: the list of packages that was present in the + Buildroot manual has been removed. + + Legal info: the "licenses.txt" file that concatenates all + license texts is no longer generated - it was not considered + useful. The manifest.csv contains an empty cell instead of + "not saved" when no license file is available. + + Other: addition of a DEVELOPERS file listing developers taking + care of packages or architectures. + + Issues resolved (http://bugs.buildroot.org): + + #7802: host-python build hangs compiling getbuildinfo.o + #8206: mplayer uses host xorg development files + #8516: mkcubiecard.sh uses outdated sfdisk switch -D + #8536: Building sudo with PAM results in unusable sudo + #8646: check-host-rpath script returns false positives when rpath + contains symlink + #8696: xdriver_xf86-input-mouse install header files in target + directory + #8811: rp-pppoe - generated scripts commands use HOST pathnames, + not necessarily TARGET + #8846: Orphaned/missing toolchain borks eclipse plugin + #8856: python tornado runtime wasn't met on buildroot 2016.02 + #8901: gcc failes to build if fortran is enabled + #8916: LDFLAGS pass to openssh + #8941: "ls" of an NFSv4 share only works when pumped through strace + #8946: Valgrind fails to build with stack protection turned on + #9021: Kodi - Broken: Illegal instruction (core dumped) + #9096: rootfs.ubi not created + #9111: glibc 2.23: libmvec.so not copied + #9176: minnowboard : USB not mounted + #9196: raspberry pi 3 default build seem broken + #9201: Permission denied make: *** [core-dependencies] Error 126 in + Buildroot-2015.08.1 + #9216: log4cpp package build fails to build within install + #9221: Kodi needs "Python .py and .pyc support" otherwise it crashes when + pressing buttons. + #9229: Firefly boot fails with: "failed to find part:boot" + #9256: [Config file] New device: Odroid-U2/U3 + #9296: Buildroot Fails on applying patches + #9301: U-boot fails to build with default zynq_zed_defconfig configuration + #9316: U-boot fails to build if libssl-dev is not installed + #9321: Vanilla libcrypt++ v5.6.3 doesn't allow to work Nvidia Tegra's + flash utility (tegrarcm) + #9326: Odroid-C2 build results in non-bootable image + #9336: Improve iconv support for external toolchain based builds + #9356: gdb package + #9366: no link rootfs.ext4 -> rootfs.ext2 + #9371: openssl: download failes with "Only allow downloads from primary + download site" + local server + #9381: check-host-rpath issues + #9386: ubinize fails with or without custom config + +2016.08, Released September 1st, 2016 + + Minor fixes. + + Toolchain: ARC tools updated to arc-2016.09-eng010. + + Updated/fixed packages: libshout, luajit, mpd, mplayer + + Issues resolved (http://bugs.buildroot.org): + + #7520: CodeSourcery toolchain ARM: C++11 std::exception_ptr.. + #8341: Getting EGL Error: Could not create the egl surface:.. + #9121: gst1-imx for i.MX6 compile failed, cannot find PXP, .. + +2016.08-rc3, Released August 29th, 2016 + + Fixes all over the tree. + + Toolchain: C++ support for the internal blackfin toolchain + re-enabled. + + Architecture: Default to bf532 CPU variant for blackfin, + Fix flat one memory region support for m68k and disable flat + seperate data support because of compatibility issues. + + Defconfigs: Minnowboard and Raspberrypi: Fix errors with + post-build scripts when systemd is used. + Zynq microzed/zc706/zed: Fix u-booot configuration. + + netbsd-queue package extended and renamed to + musl-compat-headers. With this, a number of musl compatibility + patches are no longer needed. + + Updated/fixed packages: aircrack-ng, android-tools, babeld, + bcusdk, binutils, boa, busybox, connman, cpupower, + docker-engine, domoticz, elf2flt, ffmpeg, fwup, gcc, + glib-networking, gnupg, hplip, igd2-for-linux, imagemagick, + imx-uuc, iputils, jack2, kismet, kmsxx, libaio, libamcodec, + libconfuse, libffi, libfreeimage, libgcrypt, libgpg-error, + libiio, libraw, libsepol, libserialport, libxmlrpc, linknx, + linux-pam, lirc-tools, lldpd, logrotate, lshw, musl, ncurses, + neon, nettle, norm, ntfs-3g, openblas, openmpi, openswan, + pinentry, pixman, protobuf, python-meld3, qlibc, qt, qt5base, + quagga, rpcbind, rt-tests, runc, sane-backends, sconeserver, + squeezelite, stella, tftpd, tinycbor, tinydtls, trace-cmd, + trousers, tstools, uboot-tools, uclibc, ulogd, ustr, vlc, + webkitgtk, wireshark, xdriver_xf86-video-intel + + Issues resolved (http://bugs.buildroot.org): + + #9101: Error on support/download/git with system git older than 1.8.4 + #9181: Compiling linux kernel fails if BR2_LINUX_KERNEL_TOOL_CPU.. + +2016.08-rc2, Released August 17th, 2016 + + Fixes all over the tree. + + Toolchain: disable broken C++ support for internal blackfin + toolchains, ARC toolchain bumped to arc-2016.09-eng008 (GCC 6) + to fix various issues. + + System: Zoneinfo is available for the musl C library as well. + + Updated/fixed packages: am33x-cm3, axel, barebox, bdwgc, + blktrace, cairo, dante, enlightenment, fbterm, ffmpeg, flex, + fontconfig, gcc, gmp, gnuplot, gnuradio, gst1-imx, hidapi, + inotify_tools, iproute2, kmsxx, lftp, libaio, libcofi, + libical, libpjsip, libsidplay2, libunwindow, libxml2, + linux-zigbee, lttng-libust, mpv, mtd, ncdu, netplug, ntp, + openblas, openipmi, owfs, php, poco, procps, qt, quota, + sg3_utils, spidev_test, systemd-bootchart, thrift, + uboot-tools, uclibc, webrtc-audio-processing, wayland, weston, + xdriver_xf86-video-savage, xserver_xorg-server, xen + + Issues resolved (http://bugs.buildroot.org): + + #9136: make graph-size fails with "ValueError: too many values to.. + #9151: qt: fix build with ALSA >= 1.1.x + #9156: qt: Fix missing runtime Qt3Support dependency + #9161: modsetting patch not applied to xserver 1.18.4 + #9166: Missing overlays directory in VFAT image for raspberry pi 3 + +2016.08-rc1, Released August 6th, 2016 + + Fixes all over the tree and new features. + + Toolchain: Fortran support added. eglibc support removed, musl + support no longer experimental. Blackfin and Microblaze + support for internal uClibc-ng toolchain, m68k/coldfire + improvements. The check for unsafe (build host) directories + access (/usr/include and /usr/lib) is now enabled by default. + Unused locales are now purged by default to save space (and + the default list of locales shrunk). The option to control + this has now moved from the toolchain menu to system + configuration. + + Legal info improvements: sources are now hardlinked instead of + copied if possible to save space. Patches and extra downloads + are also saved. + + An experimental configuration knob (BR2_REPRODUCIBLE) has been + added to make the builds more reproducible (E.G. less + differences in the binary output between builds of the same + configuration). This is still work in progress. + + An option to execute a custom script inside the fakeroot + environment used to the generate the filesystem (E.G. to tweak + permissions or similar) has been added. + + Git support now supports git submodules if + _GIT_SUBMODULES is enabled. + + Hash files for integritry validation have been added for all + packages. + + Scanpypi utility to help creating packages from the Python + package index (pypi) has been added. + + The makedevs utility now has support for adding file + capabilities using extended attributes. + + New defconfigs: Arcturus uCP1020, Atmel sama5d{2,3,4} xplained + development configs, Blackfin GDB simulator, Linksprite + pcDuino, Minnow Board Max graphical demo, NXP i.MX25 PDK, + i.MX51 EVK, i.MX6UL Pico, i.MX7 sabresd, QEMU MIPS32r6{,el} and + MIPS64r6{,el} malta, Roseapple Pi, Samsung Snow chromebook, + Toradex Apalis i.MX6 COM, TS-4800, x86-64 PC BIOS and EFI + demos. A number of defconfigs have been updated and extended + to generate SD card images. Synopsys HS38 VDK defconfig removed. + + New packages: 4th, acpica, acpitool, alljoyn, alljoyn-base, + alljoyn-tcl, alljoyn-tcl-base, argparse, babeld, batman-adv, + circus, dante, docker-containerd, docker-engine, domoticz, + efibootmgr, efivar, ficl, fwup, gsettings-desktop-schemas, + gtksourceview, gupnp-dlna, gupnp-tools, igd2-for-linux, + jemalloc, kmsxx, lapack, lft, libaacs, libamcodec, libbdplus, + libcoap, libdvdcss, libebur128, libfastjson, libminiupnpc, + libnatpmp, libpqxx, libuio, libvdpau, log4cpp, minissdpd, + mxsldr, nginx-nasxi, nginx-upload, ninja, nodm, odroid-mali, + odroid-scripts, omxplayer, openblas, openmpi, openzwave, + p7zip, pdbg, python-argh, python-dataproperty, + python-dateutil, python-dialog3, python-dicttoxml, + python-dominate, python-engineio, python-flask-jsonrpc, + python-flask-login, python-humanize, python-pathtools, + python-pathvalidate, python-pillow, python-prompt-toolkit, + python-pytablewriter, python-pytz, python-scapy3k, + python-sdnotify, python-socketio, python-tomako, + python-ubjson, python-u-msgpack, python-watchdog, + python-wcwidth, python-xlrd, python-xlsxwriter, + python-xlutils, python-xlwt, rs485conf, runc, sdl2_gfx, + sdl2_image, sdl2_ttf, shellinabox, sphinxbase, stella, + supertuxkart, systemd-bootchart, tekui, terminology, tinycbor, + tinydtls, ti-sgx-demos, ti-sgx-km, ti-sgx-um, tunctl, wavemon, + wiringpi, xen + + Deprecated packages: ipkg, sstrip + + Removed packages: sunxi-mali-prop + + Issues resolved (http://bugs.buildroot.org): + + #8931: segment fault when compile argp-help.c using aarch64-bu... + #8966: eglfs error. buildroot don't compile the library libeglfs.so + #8971: build for beaglebone fails + #8986: qt5imageformats fails to build on AArch64 + #8991: grub2 fails to compile + #9001: Nodejs option not available + #9006: gcc with c++ support v4 and v5 fail to compile on fedora 24 + #9016: arceb-buildroot-linux-uclibc ld uses incorrect default format + #9066: 8139TOO - faulty behaviour + #9086: Syntax Error (missing ")" in boot/uboot/uboot.mk on line 203) + #9091: U-Boot fails to boot with large ramdisk + +2016.05, Released May 31st, 2016 + + Minor fixes. + + External toolchain: Fix for symlink handling when copying + links to target. + + Updated/fixed packages: gcc, grantlee, gst-ffmpeg, + ipsec-tools, iptraf-ng, libcurl, libdrm, libsigsegv, ltris, + lttng-babeltrace, mbedtls, mesa3d, moarvm, mplayer, mtools, + net-tools, openpowerlink, pulseview, rpm, tinyalsa, + xdriver_xf86-video-fbturbo, xserver_xorg-server + +2016.05-rc3, Released May 26th, 2016 + + Fixes all over the tree. + + Tweaks for SSP handling for external toolchains. + + Updated/fixed packages: aircrack-ng, bluez5_utils, connman, + cups, erlang-p1-stringprep, expat, ffmpeg, flann, flannel, go, + gst1-libav, hidapi, hplip, iptraf-ng, jamvm, kodi, + kodi-screensaver-matrixtrails, libcurl, libepoxy, libgpgme, + libsemanage, libxslt, liquid-dsp, ltris, lxc, mesa3d, midori, + mpg123, mtr, openpgm, openpowerlink, oprofile, php, + postgresql, putty, python-service-identity, python-treq, + qlibc, qt5serialbus, ruby, stress-ng, strongswan, time, tinc, + ustr, valgrind, webkitgtk, libxml2, xorriso, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #8936: Aircrack-ng - Alot of missing dependencies + +2016.05-rc2, Released May 17th, 2016 + + Fixes all over the tree. + + Rootfs overlay handling now refuses to overwrite + /{usr,bin,sbin,lib} symlinks from BR2_ROOTFS_MERGED_USR option + even if these directories are present in the overlay. + + External toolchain: Unbreak user provided libraries deployment + (BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS) handling after refactoring. + + QEMU coldfire: Fix for signal handling kernel issue, enable + networking support. + + Updated/fixed packages: android-tools, assimp, boost, gcc, + glibc, glmark2, gmrender-resurrect, go, go-bootstrap, iputils, + jack2, kodi-screensaver-asterwave, kodi-screensaver-rsxs, + kodi-visualisation-shadertoy, libarchive, libinput, libpjsip, + mali-t76x, mtr, nginx, opencv, openvpn, python-coherence, + qt5multimeda, quagga, samba4, sg3-utils, stress-ng, turbolua + +2016.05-rc1, Released May 10th, 2016 + + Fixes all over the tree and new features. + + Architectures: new ARM variants: Cortex A17 and M4, improved + nonmmu (cortex-M) support, m68k has been re-enabled with + support for ColdFire. For x86, support for the i386 variant + has been dropped. + + Toolchain: Add GCC 6 support, remove GCC 4.5, mark GCC 4.7 as + deprecated. Go programming language support, Add Binutils 2.26 + support. Old Sourcery PowerPC external toolchains removed, + Sourcery MIPS 2016.06-8, AMD64 2015.11-139, NiosII 2015.11-130 + added, Linaro ARM/ARMeb/Aarch64 toolchains updated. + + New defconfigs: Firefly RK3288, Boundary Devices i.MX7 Nitrogen7, + STM32F429 and STM32F469 Discovery boards, Hardkernel ODROID-C2, + Raspberry Pi Zero and Raspberry Pi 3. Some Qemu defconfigs were + added for m68k, eXtensa-nommu and ColdFire. + + Linux: use zImage by default on ARM, subversion repository + support (for u-boot as well). + + New packages: aer-inject, android-tools, cannelloni, + cbootimage, cgroupfs-mount, connman-gtk, crudini, dt, + gmrender-resurrect, flannel, font-awesome, freeswitch, go, + go-bootstrap, gr-osmosdr, granite, i7z, imx-uuc, + kodi-adsp-basic, kodi-adsp-freesurround, + kodi-audiodecoder-opus, kodi-pvr-hdhomerun, + kodi-screensaver-asterwave, kodi-screensaver-cpblobs, + kodi-screensaver-matrixtrails, kodi-screensaver-planestate, + kodi-screensaver-rsxs, kodi-visualisation-fishbmc, + kodi-visualisation-fountain, kodi-visualisation-goom, libgee, + libimxvpuapi, libpjsip, libtomcrypt, libtommath, libusbgx, + lksctp-tools, mali-t76x, mkpimage, mpv, msr-tools, nload, + norm, nvme, owfs, pound, privoxy, procrank_linux, putty, + python-autobahn, python-characteristic, python-crossbar, + python-cryptography, python-iniparse, python-iowait, + python-lmdb, python-pexpect, python-ptyprocess, + python-pyasn-modules, python-pygments, python-pymysql, + python-pynacl, python-pyopenssl, python-pysocks, + python-pytrie, python-rpi-gpio, python-service-identity, + python-setproctitle, python-shutilwhich, python-treq, + python-txaio, python-ujson, python-wsaccel, qt5canvas3d, + qt5location, qt5quickcontrols2, qt5serialbus, qt5tools, + raptor, scrub, taskd, tegrarcm, turbolua, valijson, + wayland-protocols, webkitgtk, wilc1000-firmware, wpan-tools, + xdriver_xf86-video-amdgpu + + Removed packages: foomatic-filters, python-m2crypto, + qt5quick1, qt5webkit-examples, samba, xdriver_xf86-input-void + + Issues resolved (http://bugs.buildroot.org): + + #6830: Qt5: no fonts are installed + #7562: musl buildroot-toolchain and BR2_MIPS_SOFT_FLOAT break + #7580: Invalid filesystem in Pandaboard defconfig + #8346: wf111 package removes all kernel module dependencies + #8436: xserver_xorg-server Segmentation fault + #8736: IPV6 forced on in busybox + #8746: At startup system stops with 'cannot set terminal proces.. + #8751: make fail [fio does not build on sh] + #8766: Compiling host-gcc-final-4.9.3 broken on i386 + #8771: make savedefconfig modifies sources + #8781: Unable to build uboot for imx28evk + #8786: gdb fails to build with xz and expat support at the same + #8801: Compilation of Buildroot 2016.2 for Raspberry Pi with... + #8806: Buildroot 2016.2 for Raspberry Pi requires that ext4... + #8836: Can't select Vim in menuconfig + #8851: Make sure fio can compile with libaio support if it... + #8861: With buildroot 2016.02 trying to build for corei7-avx + fails while trying to build host-binutils + #8866: Making an USB flash bootable with extlinux build with + buildroot does not work + +2016.02, Released March 1st, 2016 + + Minor fixes, mostly security related. + + Circular dependency issue with same-as-kernel linux-headers + option fixed. + + Updated/fixed packages: bluez5_utils, heirloom-mailx, + imx-gpu-viv, kodi-pvr-argustv, kodi-pvr-mediaportal-tvserver, + kodi-pvr-nextpvr, libfcgi, openssl, pifmrds, powerpc-utils, + python-m2crypto, slang, sox, squid, tn5250, xerces, zsh + +2016.02-rc3, Released February 27th, 2016 + + Fixes all over the tree. + + Defconfigs: Ensure EABIhf is correctly enabled for ARM cores + where VFP is optional (but present on the specific hw). Fix + ARM variant selection for freescale_imx31_3stack_defconfig. + + Ensure tarballs of downloaded git trees do not contain a + timestamp. + + Clarify license of patches in COPYING. + + Updated/fixed package: avahi, binutils, cairo, can-festival, + chrony, cifs-utils, dnsmasq, dvdauthor, e2fsprogs, efl, + erlang-rebar, eudev, fbterm, gawk, gnupg2, gnuradio, gpm, + gst1-plugins-good, hostapd, imagemagick, iproute2, iputils, + jack2, kexec, kismet, lftp, libarchive, libeXosip2, libfm, + libglib2, libsoil, libssh, libssh2, libuci, links, lshw, lxc, + mediastreamer, mono, mraa, mutt, nfs-utils, numactl, ofono, + omniorb, openipmi, openobex, patch, pax-utils, perf, + pulseaudio, pure-ftp, qhull, qt, quagga, quota, sdl_sound, + shairport-sync, spice, sysklogd, syslog-ng, trace-cmd, + trousers, tvheadend, util-linux, vim, webkitgtk24, wireshark, + wpa_supplicant, xerces, zsh + + Issues resolved (http://bugs.uclibc.org): + + #8651: libMonoPosixHelper.so wrong link reference in buildroot.. + +2016.02-rc2, Released February 18th, 2016 + + Fixes all over the tree. + + Toolchain: PR19405 backport to binutils 2.25.1 to fix NIOS ld + crash, backport of Xtensa .init/.fini literals handling. + glibc security patches for CVE-2014-8121, CVE-2015-1781 + and CVE-2015-7547. + + Defconfigs for Acmesystems Arietta g25 added. + + Updated/fixed packages: binutils, boost, chrony, dovecot, + e2fsprogs, fio, gdb, glibc, graphite2, icu, kbd, libbsd, + libcue, libgcrypt, libraw, links, mc, mosquitto, nodejs, + postgresql, pptp-linux, pulseaudio, samba4, spice, squid, + sysklogd, systemd, tiff, uclibc, ulogd, util-linux, valgrind. + + Issues resolved (http://bugs.uclibc.org): + + #8576: Building embedded Linux for Atmel SAMA5D4_Xplained... + #8606: Problem compiling on Arch Linux + #8681: kbd 2.0.3 does not build on rpi + +2016.02-rc1, Released February 10th, 2016 + + Fixes all over the tree and new features. + + Toolchain: Support for GCC 5.3.x. ARC toolchain updated to + arc-2015.12. Support for legacy uClibc dropped, default to + uClibc-ng instead. Added sys/queue.h implementation for MUSL + for compatibility. Updated versions of Code sourcery and + Linaro toolchains. MIPS Codescape toolchains added. Version + selection for preconfigured external toolchains removed. + + New Defconfigs: ARM Juno r0/r1 development boards, Freescale + i.MX6UL Evaluation Kit, Intel Galileo Gen 2, Orange Pi PC. + A number of defconfigs have been extended to generate complete + system images using genimage. + + Linux: Automatically patch timeconst.pl for <3.9 kernels, + which isn't compatible with modern perl versions, breaking the + build when building on recent (Fedora 23, Debian + Testing/Unstable, ..) distributions. + + Makedevs utility now accepts textual (non-numerical) user and + group names. + + Vagrant file to easily setup a working development environment + in a VM has been added. + + Size-stats-compare script to compare rootfs sizes between + builds has been added. + + Infozip package renamed to zip. EFL packages restructured. + + Updated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils, + angularjs, apache, apr, argp-standalone, armadillo, arptables, + at, atk, audiofile, aumix, autoconf-archive, avahi, bash, bc, + bcache-tools, bdwgc, beecrypt, bind, binutils, bluez5_utils, + bluez_utils, bonnie, boost, busybox, cairo, cdrkit, chrony, + clamav, cmake, collectd, connman, coreutils, cppcms, crda, + cryptodev-linux, cryptsetup, cups, cwiid, cxxtest, dbus, + dbus-cpp, dbus-glib, debianutils, dhcp, dhcpcd, dhrystone, + dillo, directfb, directfb-examples, dmraid, dnsmasq, doom-wad, + dovecot, dovecot-pigeonhole, dropbear, dtv-scan-tables, + dvb-apps, dvbsnoop, ecryptfs-utils, eigen, ejabberd, + elementary, elfutils, enlightenment, erlang, espeak, eudev, + eventlog, exfat, exfat-utils, exiv2, expedite, faifa, + fakeroot, fastd, fbgrab, fetchmail, ffmpeg, findutils, fio, + firmware-imx, flann, flashrom, flite, flot, fmlib, freerdp, + freescale-imx, freetype, gauche, gawk, gcc, gcc-final, gcr, + gdb, gdk-pixbuf, geoip, gesftpserver, gettext, giflib, git, + glibc, glibmm, glog, gmp, gnupg, gnupg2, gnutls, gob2, gpsd, + gptfdisk, grep, gst1-libav, gst1-plugins-{bad,base,good,ugly}, + gst-ffmpeg, gst-plugins-{bad,base,good,ugly}, gstreamer, + gstreamer1, guile, gvfs, gzip, harfbuzz, haserl, hiawatha, + hostapd, hplip, icu, ifupdown, imagemagick, imx-gpu-viv, + imx-kobs, imx-lib, input-tools, intel-microcode, iperf3, + ipmitool, iproute2, iprutils, ipsec-tools, ipset, iptables, + iputils, irda-utils, irssi, iucode-tool, jack2, janus-gateway, + jpeg-turbo, jquery-datetimepicker, jquery-keyboard, + jquery-sparkline, jquery-ui, jquery-ui-themes, + jquery-validation, json-c, kbd, kernel-module-imx-gpu-viv, + keyutils, kmod, knock, kodi, lcdproc, lcms2, leafnode2, + leafpad, libass, libatomic_ops, libbroadvoice, libbsd, + libcap-ng, libcdaudio, libcue, libcurl, libdrm, libecore, + libedbus, libedit, libedje, libeet, libefreet, libeina, + libeio, libelementary, libembryo, libepoxy, libethumb, libev, + libevas, libevas-generic-loaders, libevdev, libevent, libffi, + libfm, libfribidi, libfslcodec, libfslparser, libfslvpuwrap, + libftdi, libfuse, libgail, libglew, libglib2, libgtk2, + libgtk3, libgudev, libhttpparser, libidn, libinput, libiscsi, + libjpeg, liblinear, libmbim, libmicrohttpd, libndp, libnspr, + libnss, liboauth, liboping, libpciaccess, libplist, libpng, + libraw, libraw1394, librsvg, libseccomp, libsecret, + libserialport, libsigc, libsigrok, libsigrokdecode, + libsndfile, libsoc, libsodium, libsoup, libssh2, libsvg, + libsvg-cairo, libtasn1, libtirpc, libtorrent, libungif, + libunwind, libupnpp, liburcu, libuv, libv4l, libva, + libva-intel-driver, libvips, libvncserver, libxml2, libxmlpp, + lightning, lighttpd, linknx, linux-firmware, linux-fusion, + linux-headers, liquid-dsp, lirc-tools, live555, lm-sensors, + lockdev, lshw, ltp-testsuite, ltrace, lttng-babeltrace, + lttng-libust, lttng-modules, lttng-tools, lua, luabitop, + luarocks, luv, lvm2, lxc, makedevs, mc, memcached, memtest86, + mesa3d, mesa3d-demos, mesa3d-headers, micropython, + micropython-lib, minicom, minidlna, mjpg-streamer, mke2img, + moarvm, modem-manager, mongoose, mongrel2, monkey, mono, + monolite, mosh, mosquitto, mpd, mplayer, msgpack, mtdev2tuio, + musepack, musl, mysql, nano, nasm, nbd, neard, netatalk, + netsnmp, nettle, net-tools, network-manager, nfs-utils, nginx, + nmap, nodejs, ntfs-3g, ntp, numactl, nut, nvidia-driver, + odhcp6c, ofono, ola, olsr, omniorb, opencv, opencv3, openipmi, + openldap, openntpd, openobex, openocd, openpgm, + open-plc-utils, openpowerlink, openssh, openssl, openswan, + openvpn, opkg, oprofile, opus, opusfile, p11-kit, package, + pango, pax-utils, pciutils, pcmanfm, perl, perl-db-file, + perl-io-socket-ssl, perl-libwww-perl, perl-net-dns, perl-uri, + perl-xml-libxml, php, php-ssh2, picocom, pinentry, pixman, + polarssl, popt, portaudio, pppd, procps-ng, proftpd, protobuf, + psmisc, ptpd2, pulseaudio, pulseview, pv, python, python3, + python-alsaaudio, python-can, python-cffi, python-cherrypy, + python-httplib2, python-jinja2, python-lxml, python-m2crypto, + python-mako, python-msgpack, python-psutil, python-pyasn, + python-pycparser, python-pydal, python-pyftpdlib, + python-pyroute2, python-pyxml, python-pyzmq, python-requests, + python-serial, python-setuptools, python-six, python-spidev, + python-tornado, python-twisted, python-web2py, python-webpy, + python-werkzeug, python-zope-interface, qemu, qhull, qpdf, qt, + qt5, qt5base, qt5connectivity, qt5declarative, qt5enginio, + qt5graphicaleffects, qt5imageformats, qt5multimedia, + qt5quick1, qt5quickcontrols, qt5script, qt5sensors, + qt5serialport, qt5svg, qt5webchannel, qt5webkit, + qt5webkit-examples, qt5websockets, qt5x11extras, + qt5xmlpatterns, qt-webkit-kiosk, racehound, radvd, read-edid, + readline, redis, rpcbind, rpi-firmware, rpi-userland, rrdtool, + rsync, rsyslog, rtai, rtorrent, rt-tests, rubix, ruby, samba4, + sconeserver, setools, shairport-sync, sigrok-cli, skeleton, + smack, snowball-init, socat, sp-oops-extract, sqlite, + squashfs, squeezelite, squid, sredird, sshfs, + start-stop-daemon, strace, strongswan, stunnel, subversion, + sunxi-tools, swig, sysdig, syslog-ng, sysstat, systemd, + sysvinit, taglib, tcl, tcpreplay, thrift, ti-gfx, tinyalsa, + tor, torsmo, trace-cmd, transmission, tremor, triggerhappy, + trinity, tvheadend, tzdata, uboot-tools, uclibc, udisks, + udpcast, unionfs, upmpdcli, usb_modeswitch, + usb_modeswitch_data, ustr, util-linux, vala, valgrind, + vboot-utils, vde2, vlc, vnstat, webkit, webkitgtk24, weston, + wget, whetstone, whois, wine, wipe, wireless-regdb, wireshark, + wpa_supplicant, w_scan, x11r7, xapp_xbacklight, xapp_xcompmgr, + xapp_xinput, xapp_xkbcomp, xdriver_xf86-input-evdev, + xdriver_xf86-input-libinput, xdriver_xf86-input-synaptics, + xdriver_xf86-video-ati, xdriver_xf86-video-fbturbo, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-intel, + xfont_encodings, xfont_font-adobe-100dpi, + xfont_font-adobe-75dpi, xfont_font-adobe-utopia-100dpi, + xfont_font-adobe-utopia-75dpi, xfont_font-adobe-utopia-type1, + xfont_font-alias, xfont_font-arabic-misc, + xfont_font-bh-100dpi, xfont_font-bh-75dpi, + xfont_font-bh-lucidatypewriter-100dpi, + xfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf, + xfont_font-bh-type1, xfont_font-bitstream-100dpi, + xfont_font-bitstream-75dpi, xfont_font-bitstream-type1, + xfont_font-cronyx-cyrillic, xfont_font-cursor-misc, + xfont_font-daewoo-misc, xfont_font-dec-misc, + xfont_font-ibm-type1, xfont_font-isas-misc, + xfont_font-jis-misc, xfont_font-micro-misc, + xfont_font-misc-cyrillic, xfont_font-misc-ethiopic, + xfont_font-misc-meltho, xfont_font-misc-misc, + xfont_font-mutt-misc, xfont_font-schumacher-misc, + xfont_font-screen-cyrillic, xfont_font-sony-misc, + xfont_font-sun-misc, xfont_font-winitzki-cyrillic, + xfont_font-xfree86-type1, xfsprogs, xkeyboard-config, xl2tp, + xlib_libfontenc, xlib_libXi, xmlstarlet, xscreensaver, + xserver_xorg-server, xtables-addons, xvkbd, xz, yad, yasm, + ympd, zeromq, zic, znc, zsh, + + New packages: acsccid, assimp, atkmm, autofs, bcm2835, + cairomm, cantarell, chocolate-doom, comix-cursors, cxxtest, + edid-decode, emlog, gcr, gtkmm3, hidapi, jquery-sidebar, + kernel-module-imx-gpu-viv, libasplib, libcroco, libdvbpsi, + libfreeglut, libgdiplus, libglfw, libhdhomerun, libnet, + libsoil, lldpd, luvi, mbedtls, minizip, miraclecast, mongodb, + mraa, netbsd-queue, netsniff-ng, nss-pam-ldapd, + obsidian-cursors, openal, openbox, pangomm, + python-backports-abc, python-beautifulsoup4, python-cbor, + python-click, python-cssselect, python-ecdsa, python-html5lib, + python-idna, python-ipaddress, python-mistune, python-netaddr, + python-paho-mqtt, python-paramiko, python-pyparted, + python-pysmb, python-pyudev, python-singledispatch, + python-smbus-cffi, python-urllib3, qt53d, rabbitmq-c, rfkill, + sbc, spi-tools, tpm-tools, trousers, ubus, unrar, unscd, + unzip, v4l2grab, xdriver_xf86-video-nouveau, xdotool, zbar + + Removed packages: libungif, python-pyxml, + + Issues resolved (http://bugs.uclibc.org): + + #7886: gettext: link failure with locally-installed libxml2 + #7892: systemd-journald is broken + #8066: nodejs crashes when built with gcc 4.9 + #8296: nodejs 0.12.7 - npm crashes (seg core dump) + #8501: gunzip fails to uncompress files + #8541: fail to build host-fakeroot-1.20.2 + #8546: build instructions for raspberry pi don't work + #8571: strace for ARC compile error + #8581: pciutils.mk PCIUTILS_MAKE_OPTS typo + #8616: Fail to build for raspberrypi_defconfig with big endian + #8621: sqlite package, properly enable readline + +2015.11, Released November 30th, 2015 + + Minor fixes. + + Merged/seperate /usr handling is now also performed for + staging so cross-gdb / gdbserver can find the libraries. + + Updated/fixed packages: autossh, conntrack-tools, dcron, + espeak, gcc, glmark2, gpsd, gstreamer1, libglib2, libsigsegv, + libsoc, libv4l, minidlna, mongrel2, opencv, polarssl, + rpi-userland, rubix, skeleton, tovid, uemacs, valgrind, yad, + zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #8441: Invalid directory for X11 fonts in target (RPi2) + #8491: libglib2 2.46.1 not Building for armv5 on 2015.11-rc3 + +2015.11-rc3, Released November 26th, 2015 + + Fixes all over the tree. + + We have a new modern website! + + Updated/fixed packages: apitrace, audiofile, autossh, bullet, + c-ares, collectd, conntrack-tools, cryptodev-linux, dropbear, + fastd, gmp, gpsd, gst-plugins-bad, gst-plugins-base, + gst-plugins-good, gst-plugins-ugly, gstreamer, gstreamer1, + guile, iodine, iproute2, jimtcl, kompexsqlite, libethumb, + libfreeimage, libgsasl, libgtk3, libxml2, localedef, + lttng-tools, macchanger, mongrel2, mpd, openntpd, openssl, + oprofile, pcre, qt5base, quagga, rpi-userland, sconeserver, + sdl, spidev_test, sqlite, strongswan, ustr, xapp_sessreg, + yajl, zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #6872: gpsd: disabled on microblaze + #8321: invalid opcode error with minidlna and ffmpeg + #8336: Default systemd configuration fails to boot correctly in 2015-08 + #8446: rpi-userland failed to build with glibc 2.22 + +2015.11-rc2, Released November 19th, 2015 + + Fixes all over the tree. + + LD_LIBRARY_PATH is no longer used to ensure host binaries find + their libraries, fixing issues on recent Fedora. + + Toolchain fixes for powerpc e5500 / e6500. Fix for an issue + with ${TARGET}-cc after the move to use a toolchain wrapper + for the internal toolchain. + + Appy-patches.sh now correctly applies all files listed in + series files. + + Fixes for merged /usr handling when a custom skeleton is used. + + Updated/fixed packages: axfsutils, boost, busybox, dhcp, + directfb, dropbear, ebtables, fastd, ffmpeg, gauche, gcc, + gettext, gst1-plugins-bad, hostapd, ibrdtnd, libcurl, + libecore, libgudev, libnss, libpng, libserial, libssh2, + libuecc, libxml2, linux-headers, liquid-dsp, ltris, + lua-periphery, minidlna, mongrel2, mpd, mpg123, mplayer, + mysql, opencv, opencv3, package, perl-file-util, php-ssh2, + polarssl, pulseaudio, python-protobuf, qemu, qt5base, ranger, + ruby, skeleton, slang, squeezelite, strongswan, tovid, uclibc, + ushare, wine, wpa_supplicant, x265, + xdriver_xf86-video-siliconmotion, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #4790: Running udhcpc on a system with NFS root kills NFS + #8456: Building host-pkgconf on Fedora 23 fails due to.. + +2015.11-rc1, Released November, 7th 2015 + + Fixes all over the tree and new features. + + Architectures: + + - Support for sparc64 added (internal toolchain with glibc + only). + + - Support for mips32r6 and mips64r6 added. + + - Support for Intel Quark X1000 CPU. + + - Switch to EABIhf by default on ARM when a VFP is available. + + Toolchains: + + - glibc 2.22, gdb 7.10, use gdb 7.9 by default, musl 1.1.12, + uclibc-ng 1.0.8, host-gdb enabled on AArch64. + + - The toolchain wrapper which was used only for external + toolchains is now also used for Buildroot internal + toolchains. This allowed to fix the ccache support, prepare + the way for top-level parallel build support and remove gcc + patches used to detect header/library path poisoning. + + - Remove Analog Devices Blackfin toolchain 2012R2. + + - Fix several Xtensa build failures by switching from + text-section-literals to auto-litpools. + + - Enable MIPS64 support in uClibc-ng, use uClibc on ARC + rather than a specific fork. + + - Linaro toolchains for ARM, ARMeb and AArch64 updated to + 2015.08. 2014.09 version is kept since 2015.08 only runs on + x86_64 hosts. + + Bootloaders: + + - Fix ARM64 support in U-Boot. + + Defconfigs: + + - Added: ARC HS38 VDK virtual boards, Avnet Microzed, Boundary + Devices Nitrogen SoloX, Freescale i.MX6 SoloX Sabre SD, + OLinuxino A20 Lime2, Qemu Sparc64, Qemu SuperH 4 big endian, + Synopsys AArch64 VDK virtual platform. + + - Updated: calao_qil_a9260, calao_usb_a9g20_lpw, ci20, + cubieboad, freescale_imx6_*, imx53loco, imx6_vab820, + mpc8315erdb, qmx6, p1010rdb, qemu, raspberrypi, + raspberrypi2, riotboard, snps_axs10*, wandboard. + + - Removed: at91rm9200df, at91sam9260dfc, at91sam9263ek, + calao_snowball_defconfig, gnublin, integrator926_defconfig. + + Infrastructure: + + - Support for fetching from Mercurial tags fixed. + + - Introduce LINUX_NEEDS_MODULES, which allows to enforce + module support to be enabled in the kernel when a package + builds out-of-tree kernel modules (through the + pkg-kernel-module infrastructure or on its own). + + - Improve the perl package infrastructure to automatically add + the dependency to the perl interpreter to target perl module + packages. + + - Remove trailing slashes in _SITE and addition of a + check to ensure such trailing slashes are no longer added. + + - Extend the legal infrastructure to allow packages to declare + their actual source code. This is useful for packages for + which _SOURCE points to pre-built binaries (as is the + case for external toolchains). The new _ACTUAL_SOURCE + variable allows to point to the source code in such cases. + + - Improved ccache support, thanks to the usage of a toolchain + wrapper for internal toolchain. Now a single cache directory + can be shared between different Buildroot builds. + + - Addition of a 'graph-size' make targets, which generates a + PDF graph of per-package size of the root filesystem. + + - Addition of _EXCLUDES so that packages can request + certain parts of the source code tarball to not be + extracted. This feature is currently used by gcc and + toolchain-external. + + - Packages can now use the _PKGDIR variable, provided by + the package infrastructure, to reference their package + directory, instead of explicitly using package//. + + Filesystems: + + - Add high lz4 compression to squashfs. + + - Simplification of shell profile files in the default + skeleton. + + - Remove ftp user and /home/ftp from the skeleton, and let ftp + server packages create these when needed. + + - Add support for /bin, /sbin and /lib to be symlinks to their + corresponding directories in /usr. This is enforced for + systemd configurations, and optional for other + configurations. + + - Support for AXFS filesystem image generation added. + + - New options to add extra space/inodes to ext2/3/4 images. + + Updated/fixed packages: + + adwaita-icon-theme, apache, apitrace, atk, audit, avahi, + barebox, bash, batctl, bind, binutils, bluez_utils, boost, + bridge-utils, cairo, ccache, chrony, clapack, cloog, cmake, + collectd, connman, conntrack-tools, coreutils, cpio, + cryptsetup, dbus, dbus-cpp, devmem2, dhcp, dhcpcd, dhcpdump, + dhrystone, dillo, directfb, directfb-examples, dmraid, + dos2unix, dovecot, dovecot-pigeonhole, drbd-utils, dropbear, + dropwatch, dtc, e2fsprogs, ebtables, efl, eigen, ejabberd, + elf2flt, elfutils, erlang, ethtool, eudev, evemu, exfat, + exfat-utils, expat, faifa, fbterm, fdk-aac, feh, ffmpeg, file, + flashrom, fping, freerdp, freescale-imx, freetype, gdk-pixbuf, + genimage, gettext, git, glib-networking, glmark2, gnupg2, + gnuradio, gnutls, gpsd, grep, grub2, gst1-imx, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-validate, gst-fsl-plugins, + gst-plugins-bad, gstreamer1, guile, gvfs, harfbuzz, haveged, + hostapd, icu, imagemagick, impiutil, imx-gpu-viv, imx-vpu, + inadyn, intltool, iostat, iperf3, ipmiutil, iproute2, + iptables, iw, jpeg-turbo, jq, jsoncpp, kexec-lite, kmod, kodi, + kodi-audioencoder-flac, kodi-pvr-argustv, kodi-pvr-filmon, + kodi-pvr-hts, kodi-pvr-mythtv, kodi-pvr-pctv, + kodi-pvr-stalker, kodi-pvr-vbox, + kodi-visualisation-waveforhue, less, lftp, libbluray, + libcgroup, libconfuse, libcurl, libdcadec, libdrm, libevdev, + libffi, libfribidi, libfslcodec, libfslparser, libfslvpuwrap, + libgcrypt, libglew, libglib2, libgtk3, libidn, liblinear, + liblockfile, libmicrohttpd, libnetfilter_conntrack, libnfs, + libnftnl, libnl, libnspr, libnss, libpcap, libpfm4, libpng, + libselinux, libserial, libsoup, libsoxr, libstrophe, libtasn1, + libtirpc, libtorrent, libupnpp, liburcu, libusb-compat, libuv, + libv4l, libva, libva-intel-driver, libxcb, lighttpd, links, + linux, linux-firmware, linux-fusion, linux-headers, + lirc-tools, localedef, lpeg, lsof, ltp-testsuite, + lttng-libust, lttng-tools, lua-periphery, luaposix, lvm2, lxc, + lz4, mdadm, mesa3d, mesa3d-headers, minicom, minidlna, moarvm, + modem-manager, mosquitto, mpd, mpdecimal, mpg123, mplayer, + mrouted, msmtp, mtd, mutt, nettle, network-manager, nfs-utils, + nftables, nginx, nodejs, noip, ntp, ofono, opencv3, openpgm, + openssl, openswan, openvpn, pango, parted, perl, perl-cross, + perl-crypt-openssl-random, perl-http-message, + perl-io-socket-ssl, perl-module-build, perl-mojolicious, + perl-netaddr-ip, perl-net-dns, perl-net-http, perl-net-ssleay, + perl-uri, perl-xml-libxml, php, picocom, pixman, pkgconf, + poco, polarssl, portaudio, portmap, postgresql, proftpd, + protobuf, protobuf-c, pulseaudio, python-configshell-fb, + python-networkmanager, python-numpy, python-pyparsing, + python-pypcap, python-rtslib-fb, python-spidev, python-urwid, + python-web2py, qemu, qt5base, redis, rngtools, rng-tools, + rpi-firmware, rpi-userland, rtmpdump, rtorrent, ruby, samba, + samba4, sane-backends, sconeserver, sdl, sed, setools, + shairport-sync, shared-mime-info, sland, smartmontools, + softether, spice-protocol, sqlcipher, sqlite, squid, + strongswan, stunnel, subversion, sudo, sunxi-tools, + supervisor, systemd, tar, targetcli-fb, tcpdump, tiff, tor, + tvheadend, tzdata, uboot-tools, udisks, unionfs, upmpdcli, + util-linux, vala, valgrind, vim, vlc, vorbis-tools, vsftpd, + vtun, wavpack, webkitgtk24, weston, whois, wireless-regdb, + wireshark, wpa_supplicant, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-intel, + xdriver_xf86-video-sis, xlib_libXi, xorg-server, + xtables-addons, xterm, xz, zic, znc, zsh + + New packages: + + axfsutils, bitstream, check, dvblast, eventlog, fastd, gauche, + gmock, graphite2, gssdp, gupnp, gupnp-av, ibrcommon, ibrdtn, + ibrdtnd, ibrdtn-tools, imx-kobs, iqvlinux, irssi, + kompexsqlite, libbroadvoice, libcddb, libcodec2, libcrossguid, + libg7221, libhttpparser, libilbc, libldns, libmng, + libopenh264, libpam-radius-auth, libpam-tacplus, libsilk, + libsoundtouch, libssh, libuecc, libyuv, liquid-dsp, luv, + micropython, micropython-libs, python-pyratemp, + python-pyroute2, python-ranger, rapidxml, scrypt, sdl2, + sp-oops-extract, squeezelite, stress-ng, swupdate, syslog-ng, + x265, xdriver_xf86-video-fbturbo, xxhash, yad, zxing-cpp + + Removed packages: + + blackbox (was deprecated), divine (merged in directfb), + kobs-ng (replaced by imx-kobs), mediactl (merged in libv4l), + sawman (merged in directfb), schifra (marked broken since a + long time), texinfo (host variant only, no longer used), zxing + (replaced by zxing-cpp), + + Issues resolved (http://bugs.uclibc.org): + + #4099: cut utility from GNU coreutils works incorrect + #7772: libxml-parser-perl build failure: missing dependency + ExtUtils/MakeMaker + #7931: Default configuration for Cubieboard v1 is outdated + #8116: 2015.05-rc2 raspberrypi2_defconfig network interface + not coming up + #8246: X.org DRI2 build issue + #8256: pointing to /usr/bin/objcopy old version (x86) instead + of the generated one + #8266: mplayer build issue + #8281: pyrexc fails to run when path is too long + #8316: lttng-tools and lttng-babeltrace executables contain + bad RPATH pointing to host machine + #8331: kexec wants shutdown in /sbin, but systemd installs it + in /usr/sbin + #8361: Buildroot 2015.08.1 skeleton inittab overwritten by + busybox's version + #8366: libevent does not build + #8386: build failed with external toolchain + #8391: Node.js 0.12.7 fails to build on raspberry_pi defconfig + #8396: CCACHE initialization + #8401: gpsd 3.15 NMEA support + #8416: cups depends on BR2_DEPRECATED_SINCE_2015_05 + #8421: util-linux installs systemd files in output/target/home/ + +2015.08, Released August 31st, 2015 + + Minor fixes. + + OpenCV 3.x package renamed to opencv3. OpenCV 2.4.x + reintroduced as opencv. + + Updated/fixed packages: bootutils, canfestival, cppcms, + curlftpfs, dhcpdump, dropbear, erlang-p1-tls, exfat, gnuradio, + ipkg, libgudev, libmbim, libwebsock, linux-pam, lm-sensors, + ltrace, midori, network-manager, openssh, perl-file-listing, + perl-http-cookies, perl-http-daemon, perl-http-negotiate, + perl-www-robotrules, python-can, qt5base, qt5multimedia, + setools, sysvinit, tinyalsa, tn5250, tvheadend, uboot, vlc, + x264, xserver_xorg-server, zyre + +2015.08-rc2, Released August, 24th 2015 + + Fixes all over the tree. + + Toolchain: fix gcc build on NIOS-II. + + Infrastructure: add _POST_GEN_HOOKS mechanism to fix + hybrid ISO image generation. + + Architectures: add arm1136j-s variant. + + Updated/fixed packages: apitrace, audit, bcusdk, bdwgc, + beecrypt, boost, bwm-ng, cdrkit, c-icap, cifs-utils, clapack, + c-periphery, cpio, cramfs, czmq, dawgdic, dnsmasq, dosfstools, + dropbear, elfutils, empty, eudev, fan-ctrl, filemq, gnutls, + guile, haveged, imlib2, libcec, libepoxy, libev, libgpgme, + libiio, libnetfilter_queue, libnfnetlink, libpfm4, libpthsem, + librtas, libselinux, libsigsegv, libsodium, libv4l, lightning, + linux, lirc-tools, lrzsz, mono, mosh, mpd, msmtp, nbd, + netatalk, nodejs, ola, opencv, oprofile, php, poco, + postgresql, powertop, protobuf, protobuf-c, qt5base, + qt5quickcontrols, rapidjson, rng-tools, squid, sysdig, + sysstat, tftpd, tinc, tz, util-linux, webkitgtk24, weston, + wireshark, wvstreams, xdriver_xf86-input-synaptics, zyre. + + Issues resolved (http://bugs.uclibc.org): + + #8276: package/dropbear: symlink resolution incorrect + #8286: Error with buildroot + #8301: ldconfig parameter in Makefile + +2015.08-rc1, Released August, 5th 2015 + + Fixes all over the tree and new features. + + Architectures: + + - Refactor how the availability of an MMU is described. + - Minimal support for Cortex-M3 + - Minimal support for AArch64 big-endian + + Toolchains: + + - Add CodeSourcery MIPS 2015.05, remove MIPS 2013.11 + - Use uClibc-ng as the default uClibc version, instead of the + official uClibc, which hasn't done any release since 3+ + years + - eglibc is now marked as deprecated + - GCC: gcc 4.9.x is now the default and was updated to 4.9.3, + support for gcc 5.x added. + - Binutils: use Binutils 2.24 as the default, 2.25.x series + bumped to 2.25.1, remove old Binutils 2.22. + - Update ARC toolchain components to 2015.06 + - Add support for Fortran when building gcc + + Bootloaders: + + - Support for using the kconfig configuration system in + U-Boot + + New Defconfigs: + + - VIA VAB-820/AMOS-820 + - OLimex OLinuxino A20 Lime + - Many new defconfigs for Atmel evaluation boards: + at91sam9rlek, at91sam9x5ek, sama5d3xek, sama5d4ek, sama5d4 + Xplained Ultra, sama5d3 Xplained. + - ACME Systems Aria G25 + - WarPboard + - Altera Cyclone 5 Development Board + - Xilinx zc706 + - ARC AXS101 and AXS103 Software Development Platforms + - Significant updates to Raspberry Pi / Raspberry Pi 2 + + Infrastructure: + + - Buildroot takes better care now of generating predictable + permissions in the target filesystem. However, existing + permissions on a custom skeleton or rootfs overlay will no + longer be preserved. Therefore, it is necessary to add a + permission table (BR2_ROOTFS_DEVICE_TABLE) to set the + required permissions. + - Add support for kconfig fragments. + - No longer pass --{enable,disable}-debug to autotools + packages depending on the value of + BR2_ENABLE_DEBUG. BR2_ENABLE_DEBUG now only controls + whether we build with -g or not. + - Support for extracting archives in .lzma in the generic + package infrastructure. + - Remove random-seed file from the default skeleton, since + seeding the entropy pool with a known seed makes more harm + than good. + - In the CVS download helper, add support to use a date as + the version. + - Add support for a per-package _STRIP_COMPONENTS + variable, which packages can use to specify how many path + components should be stripped when extracting the tarball. + - Addition of a 'kernel-module' package infrastructure, which + simplifies the packaging of external kernel modules. Many + existing packages are converted to use it. + - Allow bootloaders to be implemented in $(BR2_EXTERNAL) + - Remove /etc/securetty from the default skeleton. + - Migration of sysV initscripts from the default skeleton to + a package called 'initscripts', installed only when Busbox + init or sysvinit are used. + - Migration of the skeleton logic to a proper 'skeleton' + package. + - Addition of a 'linux-tools' infrastructure in the 'linux' + package, to support building user-space tools bundled + within the Linux kernel sources, such as perf and cpupower. + - Usage of backticks instead of make $(shell ...) to execute + shell commands. This allows to delay the evaluation of such + commands when actually needed, and not when expanding the + variables. It is useful to make 'make printvars' less + noisy, and as a preparation to support top-level parallel + build. + - Libtool .la files are not mungled for all package types, + instead of being handled only for packages using the + autotools-package infrastructure. + - Add mechanism to allow packages to express a dependency on + gcc versions. This is needed for packages that use C++11 or + C11 support for example. + + Important package updates: + + - Complete rework of the matchbox packaging + - Lots of fixes in packages for compatibility with musl and + gcc 5. + - Hash files added to a large number of packages. + - Update a significant number of packages to use a new + hosting, after the announcement of Google Code and + Gitorious closing. + - Major packages needed for SELinux support have been merged, + but the support is not complete yet. + - Significant update of OpenCV to version 3.0, and addition + of lots of eatures. + - Significant update of all packages supporting the GPU and + VPU of i.MX ARM processors. + - Addition of systemd support in a significant number of + packages. + - Qt5 updated to 5.5.0 + - Use modular X.org server by default instead of KDrive + + Filesystems: + + - Complete overhaul of the iso9660 support. Now allows to use + directly IS9660 as the root filesystem format and not only + an initrd, and supports Grub 2 and isolinux in addition to + Grub. + + Updated packages: a10disp, agentpp, apache, at91bootstrap3, + audit, barebox, bc, bind, bmon, boost, btrfs-progs, + ca-certificates, can-utils, ccache, cloog, collectd, connman, + coreutils, c-periphery, cryptsetup, dado, dbus, dejavu, + dhcpcd, dnsmasq, dosfstools, dovecot, dovecot-pigeonhole, + e2fsprogs, ejabberd, erlang-p1-cache-tab, erlang-p1-sip, + erlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls, + erlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, ethtool, + eudev, evtest, exim, expect, explorercanvas, feh, ffmpeg, + file, flashrom, freescale-imx, freetype, gawk, gcc, gdb, + gettext, git, glib-networking, gnupg2, gnutls, gpsd, gptfdisk, + gpu-viv-bin-mx6q, gst-fsl-plugins, harfbuzz, hdparm, heimdal, + i2c-tools, imagemagick, imx-vpu, iproute2, ipset, isl, iw, + kodi, kodi-addon-xvdr, kodi-audioencoder-flac, + kodi-audioencoder-lame, kodi-audioencoder-vorbis, + kodi-audioencoder-wav, lftp, libass, libassuan, libcec, + libconfi, libcurl, libdrm, libevdev, libfreefare, libfslcodec, + libfslparser, libfslvpuwrap, libfuse, libglib2, libgpgme, + libgtk2, libgtk3, libical, libidn, libiio, libinput, libiscsi, + libllcp, libmicrohttpd, libnfc, libnss, libpcap, libpciaccess, + libpng, libserialport, libsigrok, libsoc, libtirpc, libubox, + libunistring, libupnp, libuv, libv4l, libva, + libva-intel-driver, libXrandr, lighttpd, linenoise, linux, + linux-firmware, linux-headers, live555, ltrace, lua, + lua-csnappy, lua-ev, luajit, lua-messagepack, luaperiphery, + lvm2, lxc, lzo, mesa3d, mesa3d-headers, midori, mmc-utils, + modem-manager, mono, mosquitto, mpd, mpd-mpc, mpfr, mpg123, + mtd, musl, nano, netperf, network-manager, nfs-utils, nginx, + nodejs, ntp, ola, opencv, openldap, openssh, openssl, + openswan, openvmtools, openvpn, opkg, orbit, orc, pcmanfm, + perl-cross, perl-encode-locale, perl-io-socket-ssl, + perl-mojolicious, perl-net-ssleay, perl-path-tiny, perl-uri, + perl-xml-libxml, php, pinentry, polarssl, postgresql, + pulseview, pure-ftpd, python, python-dpkt, python-lxml, + python-networkmanager, python-pyinotify, python-pypcap, + python-tornado, qextserialport, qt, qt5, rapidjson, redis, + rpcbind, rpi-firmware, rpi-userland, samba4, shairport-sync, + snmpp, sqlite, squid, strongswan, stunnel, sudo, sunxi-boards, + sunxi-mali, sysdig, sysstat, systemd, tcpdump, tiff, tmux, + tor, txheadend, tzdata, uboot, uclibc, ulogd, upmpdcli, + usb_modeswitch, usb_modeswitch_data, vala, vsftpd, wayland, + weston, whois, wireless-regdb, wireshark, x264, xapp_xvinfo, + xdriver_xf86-input-libinput, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-cirrus, xdriver_xf86-video-geode, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-mach64, + xdriver_xf86-video-neomagic, xdriver_xf86-video-r128, + xdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion, + xdriver_xf86-video-vesa, xkeyboard-config, xlib_libfontenc, + xlib_libFS, xlib_libXaw, xlib_libxkbfile, xlib_libXrender, + xlib_libXt, xproto_kbproto, xproto_xproto, xproto_xrandrproto, + xscreensaver, xserver_xorg-server, xtables-addons, yaml-cpp, + zic. + + New packages: angularjs, atf, audit, c-icap, c-icap-modules, + cpio, dawgdic, faketime, fcgiwrap, gflags, glog, initscripts, + jquery-datetimepicker, kodi-audioencoder-modplug, + kodi-audioencoder-nosefar, kodi-audioencoder-sidplay, + kodi-audioencoder-snesapu, kodi-audioencoder-stsound, + kodi-audioencoder-timidity, kodi-audioencoder-vgmstream, + kodi-platform, kodi-pvr-argustv, kodi-pvr-dvblink, + kodi-pvr-dvbviewer, kodi-pvr-filmon, kodi-pvr-hts, + kodi-pvr-iptvsimple, kodi-pvr-mediaportal-tvserver, + kodi-pvr-mythtv, kodi-pvr-nextpvr, kodi-pvr-njoy, + kodi-pvr-pctv, kodi-pvr-stalker, kodi-pvr-vbox, + kodi-pvr-vdr-vnsi, kodi-pvr-vuplus, kodi-pvr-wmc, + kodi-screensaver-asteroids, kodi-screensaver-biogenesis, + kodi-screensaver-crystalmorph, kodi-screensaver-greynetic, + kodi-screensaver-pingpong, kodi-screensaver-pyro, + kodi-screensaver-stars, kodi-visualisation-shadertoy, + kodi-visualisation-spectrum, kodi-visualisation-waveforhue, + kodi-visualisation-waveform, kvmtool, kyua, libfm, + libfm-extra, libplatform, librtas, libsodium, libsquish, + libucl, libump, linux-backports, lua-iconv, lutok, menu-cache, + moarvm, monkey, mono-gtksharp3, mosh, openipmi, python-can, + python-pycli, python-pydal, python-pyyaml, python-web2py, + qpid-proton, qt5webchannel, quazip, racehound, rtl8188eu, + rtl8821au, sepolgen, setools, skeleton, stm32flash, + webkitgtk24, xdriver_xf86-video-qxl, zynq-boot-bin. + + Deprecated packages: webkitgtk, libgail, eglibc support in + glibc package. + + Issues resolved (http://bugs.uclibc.org): + + #4291: Segmentation fault with all binaries that use threads + when compiled with gcc 4.6 + #6944: building toolchain for sh4 fails + #7592: Buildroot GCC: -lto requires plugin support in ranlib + #7628: Python SSL does not get built for Raspberry Pi + #7682: Missing dependencies for NFS + #7742: dhcp lacks important features when BR2_ENABLE_DEBUG + #7754: make: *** [/..../buildroot-2014.11/output/build/host-gcc-initial-4.8.3/.stamp_built] Error 2 + #7946: libglib2-2.42.2 fails to build for sparc-buildroot-linux-gnu + #7956: glibc 2.20 and 2.21 fail to build for sh64-buildroot-linux-gnu + #7971: python-flask, python-werkzeug. No module named zlib + #7981: Target file system skeleton permissions hazard + #8006: rpcdebug in nfs-utils built for the host + #8036: alsa-lib headers problem that prevents to compile alsa + dependent projects + #8081: systemd init system: /tmp is not mode 1777 + #8121: php opcache extension doesn't get installed + #8151: x86-64 make fails with ncurses 5.9 + #8156: pkg-kconfig infra broken for *-update-{config, defconfig} + #8161: default /bin/sh symlink to busybox is full path and not relative + #8171: glamor missing + #8191: Request update support for the cubieboard series + #8201: Important security upgrades for node.js + +2015.05, Released May 31st, 2015 + + Minor fixes. + + Updated/fixed packages: conntrack-tools, directfb, fio, flite, + gptfdisk, ipmiutil, iproute2, janus-gateway, keyutils, knock, + libelementary, libgcrypt, libgsasl, libjpeg, libstrophe, + lttng-libust, nbd, ncurses, nmap, php, postgresql, python, + python3, sconeserver, udpcast, upmpdcli + +2015.05-rc3, Released May 22nd, 2015 + + Several fixes, mainly related to static linking. + + Updated/fixed packages: acl, alsa-utils, apr, armadillo, attr, + autoconf-archive, binutils, boost, czmq, dhcpcd, duma, + enlightenment, exim, fbterm, freerdp, gcc, gdk-pixbuf, + google-breakpad, gpsd, heirloom-mailx, hwloc, ipmiutil, + iproute2, jack2, jasper, kmod, lcdproc, leafnode2, libcap-ng, + libftdi1, libmatroska, libmemcached, libmodbus, libnftnl, + libsigrok, libupnpp, libuv, libxml-parser-perl, linux, + linux-headers, lirc-tools, lua-periphery, lxc, mongoose, mono, + mpg123, mosquitto, neardal, newt, ntp, ola, openldap, opencv, + php, postgresql, protobuf, pulseaudio, python-pyqt, qemu, qt, + qt5base, rpi-userland, rsyslog, snmppp, sqlite, tiff, + tinyxml2, uboot-tools, unionfs, ux5000-firmware, usbredir, + ushare, vpnc, vsftpd, wavpack, wireless_tools, wsapi, + wvstreams, xmlstarlet, zeromq, zmqpp + + New packages: c-periphery + + Issues resolved (http://bugs.uclibc.org): + + #8106: mkfs.jffs2 uses the --pagesize parameter incorrectly + #8111: 2015.05.rc2 LIBFOO_CONF_OPTS not working + #8126: exim lacks plaintext and cram-md5 auth + +2015.05-rc2, Released May 11th, 2015 + + Minor fixes. + + Toolchain: PR56780 backport to GCC 4.8.4 to fix GDB linking + issues. Context functions enabled for uClibc snapshot / + uClibc-NG. + + Architectures: Endian handling symbol for Xtensa, binutils + fixes. + + Infrastructure: Fix for kernel module stripping when + localversion contains spaces. + + Updated/fixed packages: at, autoconf-archive, binutils, + cc-tool, cryptsetup, dstat, expedite, freerdp, giflib, + gnuchess, guile, ipmiutil, iproute2, mono, monolite, neard, + ola, poppler, postgresql, python-qt, qt, sqlite, valgrind, + xlib_libXfont + + Issues resolved (http://bugs.uclibc.org): + + #8086: Cannot select systemd as init with Linaro 2014.09... + +2015.05-rc1, Released May 4th, 2015 + + Fixes all over the tree and new features. + + Architectures: Removed AVR32 support, deprecate SH64, added + support for steamroller, corei7-avx and core-avx2 x86 + variants. + + Toolchains: IPv6 and Largefile support now enforced for + uClibc. Corresponding Kconfig symbols removed. + + External CodeSourcery AMD64 2014.05, MUSL-cross 1.1.6 added, + CS sh2, Xilinx microblaze v2/14.3 removed. Distro-class + external toolchains are now detected and blacklisted. + + Internal toolchain support for Nios2 added, Blackfin + removed. Aarch64 and sh musl support. uClibc-ng support added. + + Libatomic is now handled for internal and external + toolchains. Link time optimization (LTO) support. + + New Defconfigs: Freescale i.MX28 EVK, i.MX31 PDK and SABRE + Auto, Raspberry Pi 2, RIoTboard, + + Infrastructure: Hashes for a large number of packages have + been added. Missing hashes now stop the build unless + explicitly disabled. + + Spaces and colons (:) are now supported in package + versions. Dependencies can now be listed for the patch step + (_PATCH_DEPENDENCIES). Kconfig and Linux kernel + extensions infrastructure has been added. + + Makedevs now has a recursive (r) option. + + The variable containing the list of packages to build has been + renamed from TARGETS to PACKAGES. + + Make external-deps / legal-info / source / source-check have + been reimplemented using the package infrastructure, so their + output/behaviour may differ from earlier (some packages were + not included in the past). + + The old insecure DES password encoding is no longer supported. + + U-Boot patch option now support direct references to patch + files and URLs in addition to directories of patches. The + i.MX28 SD format (u-boot.sd) is now supported. + + Updated/fixed packages: agentpp, aircrack-ng, alsa-lib, + alsa-utils, apr-util, apr, atk, autossh, avahi, avrdude, + bcusdk, bdwgc, bind, binutils, bmon, boost, botan, + btrfs-progs, busybox, ca-certificates, cairo, can-utils, + canfestival, ccache, chrony, civetweb, clamav, cmake, + collectd, connman, copas, crda, cryptodev-linux, cryptsetup, + cups, czmq, dbus-cpp, dbus-glib, dbus-python, dbus, dfu-util, + dhcp, dhcpcd, dialog, dillo, dmraid, dnsmasq, dos2unix, + dosfstools, dovecot-pigeonhole, dovecot, dropbear, dropwatch, + dtv-scan-tables, dvdauthor, e2fsprogs, ecryptfs-utils, + libevas, elfutils, enscript, erlang, espeak, eudev, evemu, + exfat-utils, exim, f2fs-tools, feh, ffmpeg, fftw, flickcurl, + fltk, fluxbox, fmlib, fmtools, freeradius-client, freerdp, + gamin, gawk, gcc-final, gcc, gd, gdb, gengetopt, geoip, git, + glib-networking, gnu-efi, gnuchess, gnutls, gpsd, gptfdisk, + gpu-viv-bin-mx6q, gst-plugin-bad, gstreamer, gstreamer1, + gtest, gvfs, harfbuzz, haserl, haveged, hiawatha, + hicolor-icon-theme, hostapd, hplip, httping, i2c-tools, icu, + ifplugd, imagemagick, imlib2, iozone, iproute2, iptables, + iputils, irqbalance, iw, jack2, jhead, jimtcl, json-c, kexec, + kismet, kmod, kodi-audioencoder-flac, + kodi-audioencoder-vorbis, kodi-pvr-addons, kodi, ktap, lcms2, + libass, libatomic_ops, libbluray, libcap, libcgroup, libcurl, + libdrm, libdvbsi, libebml, libecore, libedit, liberation, + libev, libevas, libevdev, libftdi, libgcrypt, libglib2, + libgpgme, libgtk2, libgtk3, libiconv, libidn, libiio, + libinput, libiscsi, libksba, liblinear, libmatroska, + libmicrohttpd, libmodbus, libmpdclient, libnice, libnl, + libnspr, libnss, libpcap, libpciaccess, libphidget, libplayer, + libpthsem, libqmi, librsvg, libseccomp, libsigrok, libsoup, + libsrtp, libssh2, libtasn1, libtool, libunistring, liburcu, + libusb, libuv, libva-intel-driver, libva, libvncserver, + libvorbis, libvpx, libwebsockets, libxml2, libzip, lightning, + lighttpd, linknx, linphone, linux-firmware, linux-headers, + linux-pam, live555, ljsyscall, lmbench, lockdev, logrotate, + lpc3250loader, lpeg, lsof, lttng-libust, lttng-modules, + lttng-tools, lua, luacrypto, luafilesystem, luajit, luaposix, + luarocks, lvm2, lxc, make, + matchbox-{common,desktop,fakekey,keyboard,lib,startup-monitor,vm}, + matchbox, mcelog, memcached, memstat, memtest86, mesa3d, + minidlna, mjpegtools, mjpg-streamer, modem-manager, mongoose, + monit, mono, monolite, mp4v2, mpc, mpd, mpdecimal, mpg123, + mplayer, musl, nano, nbd, ncftp, ncmpc, ncurses, ne10, neard, + neardal, net-tools, netatalk, netsnmp, network-manager, nginx, + nodejs, ntfs-3g, ntp, numactl, odhcp6c, ofono, open2300, + opencv, openldap, openntpd, openocd, openssh, openssl, + openswan, opentyrian, openvmtools, openvpn, oprofile, p11-kit, + pango, patch, patchelf, pciutils, pcre, perf, perl-gdgraph, + perl-io-socket-ssl, perl-json-tiny, perl-module-build, + perl-mojolicious, perl-net-ssleay, perl-path-tiny, + perl-xml-libxml, perl, phidgetwebservice, php-gnupg, php, + pkgconf, polarssl, poppler, popt, postgresql, powerpc-utils, + pppd, prboom, procps-ng, proftpd, psplash, ptpd2, + python-{cheetah,coherence,django,markdown,netifaces,pam,six}, + python-tornado, python-twisted, python-zope-interface, python, + python3, qemu, qt, qt5, qt5base, qt5multimedia, + qt5xmlpatterns, qt5cinex, quagga, qwt, radvd, readline, + rng-tools, rpcbind, rpi-firmware, rpi-userland, rsync, + rsyslog, rtai, rtmpdump, ruby, sam-ba, samba, samba4, + sane-backends, sconeserver, shairport-sync, sigrok-cli, slang, + smcroute, snmppp, socat, socketcand, sofia-sip, sox, + spawn-fcgi, speex, sqlcipher, sqlite, squid, strace, + strongswan, stunnel, sudo, sunxi-boards, swig, sysstat, + systemd, tcpdump, tftpd, thrift, thttpd, ti-gfx, ti-utils, + tiff, tinyalsa, tn5250, transmission, trinity, tslib, + tvheadend, tzdata, uboot-tools, uclibc, ulogd, usb_modeswitch, + usbutils, ustr, util-linux, vala, valgrind, vlc, wayland, + webp, weston, wget, which, whois, wireless-regdb, + wireless_tools, wireshark, wpa_supplicant, wvstreams, + xapp_{bdftopcf,bitmap,fonttosfnt,fslsfonts}, + xapp_{fstobdf,iceauth,mkfontscale,oclock,rgb,sessreg,setxkbmap}, + xapp_{showfont,smproxy,twm,x11perf,xcalc,xclipboard,xcmsdb}, + xapp_{xdbedizzy,xditview,xdpyinfo,xdriinfo,xedit,xev,xeyes}, + xapp_{xf86dga,xfsinfo,xgamma,xgc,xhost,xinit,xinput,xkbcomp}, + xapp_{xkbevd,xkbprint,xlsatoms,xlsfonts,xmag,xman,xmh,xmodmap}, + xapp_xmore, xcb-util-image, xcb-util-keysyms, + xdata_xcursor-themes, + xdriver_xf86-input-{evdev,keyboard,synaptics,void}, + xdriver_xf86-video-{ati,cirrus,geode,mach64,mga,neomagic}, + xdriver_xf86-video-{r128,savage,siliconmotion,sis,tdfx}, + xdriver_xf86-video-{trident,vmware,voodoo}, xenomai, + xfont_font-util, xkeyboard-config, + xlib_lib{ICE,X11,Xdmcp,Xfont,Xpm,XvMC}, + xlib_lib{Xxf86vm,xshmfence,xtrans}, xproto_randrproto, + xproto_xproto, xserver_xorg-server, x11vnc, x264, xerces, + xorriso, xterm, xz, yaml-cpp, zeromq, zic, zmqpp + + New packages: apache, autoconf-archive, batctl, + bitstream-vera, bullet, cc-tool, doxygen, drbd-utils, + dvdrw-tools, gnuradio, gst1-imx, hans, hwloc, ijs, + imx-usb-loader, inconsolata, iodine, iotop, ipmiutil, jsoncpp, + leveldb, libdcadec, libdri2, libfreeimage, libftdi1, + libsidplay2, lirc-tools, lua-periphery, mc, mesa3d-headers, + mosquitto, nvidia-driver, nvidia-tegra23{,-binaries,-codecs}, + openjpeg, opusfile, perl-crypt-openssl-{random,rsa}, + perl-db-file, perl-digest-{hmac,sha1}, + perl-encode-{detect,locale}, perl-file-{listing,util}, + perl-html-{parser,tagset}, perl-http-cookies, + perl-http-{daemon,date,message,negotiate}, perl-io-html, + perl-libwww-perl, perl-lwp-mediatypes, perl-mail-dkim, + perl-mailtools, perl-mime-base64, perl-net-{dns,http}, + perl-netaddr-ip, perl-time-hires, perl-timedate, perl-uri, + perl-www-robotrules, powertop, pulseview, + python-{cherrypy,lxml,mako,pyqt,pyxml,sip,spidev,ws4py}, qpdf, + qt-webkit-kiosk, sl, softether, sysdig, tinyxml2, tor, tovid, + unixodbc, wf111, wine, libepoxy, xapp_xcompmgr, + xapp_xfindproxy, xcb-util-cursor, xcb-util-renderutil, + xdriver_xf86-input-libinput, xdriver_xf86-video-imx{,-viv}, + xproto_xproxymanagementprotocol + + Removed packages: gtk2-theme-hicolor + + Deprecated packages: samba + + Issues resolved (http://bugs.uclibc.org): + + #7478: Multiple chosen python modules are not built due to... + #7508: Use of BR2_EXTERNAL and dependencies to existing packages + #7676: Package procps-ng installs binaries to nonsensical folder + #7724: Startx is not installed in the target + #7760: botan: wrong prefix in botan-1.10.pc + #7826: Building of cdparanoia + #7844: Lua with hard-float on MIPS by buildroot doesn't work + #7874: X.org configure error + #7941: glibc-2.20 fails to build for sparc-buildroot-linux-gnu + #7951: gcc 4.9.2 fails to build for sparc-buildroot-linux-gnu + #7961: Qt5 fails to build for xtensa-buildroot-linux-uclibc + #7976: mkuser script fails with: user already exists with... + #8011: When building only busybox and strace, strace fails... + #8016: collectd fails to build, network.c:171:19: error:... + #8041: error on building libcurl7.42.0 + +2015.02, Released March 1st, 2015 + + Minor fixes. + + Updated/fixed packages: civetweb, ding-libs, + directfb-examples, glibc, gnupg, gnupg2, gpm, + gst-plugins-good, gst1-plugins-good, freetype, libao, libevas, + libevent, libfribidi, libgcrypt, libgtk2, libshout, libsrtp, + libtheora, libupnpp, libxmlrpc, linux, make, opus, pinentry, + rpi-firmware, shared-mime-info, vlc, vorbis-tools, + xcb-util-keysyms + + Removed packages: libgc + +2015.02-rc3, Released February 24th, 2015 + + Minor fixes. + + Cmake and rebar (erlang) infrastructure fixes. + + Updated/fixed packages: bind, btrfs-progs, busybox, e2fsprogs, + evtest, ffmpeg, fltk, gnutls, i2c-tools, imagemagick, libxcb, + make, mjpg-streamer, netsnmp, opentyrian, php, polarssl, + qt5base, samba, samba4, sudo, util-linux, xserver_xorg-server + +2015.02-rc2, Released February 15th, 2015 + + Minor fixes. + + raspberrypi: fix kernel sha1 for DT variant. + + Updated/fixed packages: dbus, dvdauthor, git, libsemanage, + libsepol, libssh2, mplayer, ntp, openvmtools, python3, + qt5base, qt5connectivity, xserver_xorg-server + +2015.02-rc1, Released February 8th, 2015 + + Fixes all over the tree and new features. + + Static/shared library handling reworked. This is now a + tristate (shared only / shared and static / static + only). Default is now shared only to speed up the + build. BR2_PREFER_STATIC_LIB is now called BR2_STATIC_LIBS. + + The toolchain (internal and external) will now warn when an + unsafe library or header path is used (such as /usr/include or + /usr/lib). If BR2_COMPILER_PARANOID_UNSAFE_PATH is enabled + under build options this instead becomes an error. + + A installation path issue with the internal musl toolchain + support has been fixed so it is now possible to reuse it as an + external toolchain. + + Architectures: Freescale E5500 and E6500 PowerPC support + added, deprecated MIPS 1/2/3/4 support removed. + + New defconfigs: Freescale p2020ds, MIPS creator CI20, + Raspberrypi with DT, UDOO Quad. + + 'make _defconfig' now saves the path to the defconfig in + the .config, so a 'make savedefconfig' automatically updates + it. + + Infrastructure for packages using the Erland rebar tool has + been added. + + Hashes for a large number of packages have been added. Hashes + are now checked for both target and host packages. + + The system menu now has an option to automatically configure a + network interface through DHCP at bootup. + + The default filesystem skeleton now uses a separate tmpfs for + /run instead of a symlink to /tmp/ for security reasons / to + protect against conflicts with user generated temporary files. + + BR2_EXTERNAL is now exported to post-build and post-image + scripts. + + New packages: bdwgc, benejson, blktrace, bootstrap, cgic, + ding-libs, dvdauthor, ejabberd, erlang-goldrush, erlang-lager, + erlang-p1-cache-tab, erlang-p1-iconv, erlang-p1-sip, + erlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls, + erlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, + erlang-p1-zlib, exiv2, freeradius-client, gengetopt, glmark2, + gpu-amd-bin-mx51, guile, host-qemu, ifupdown, iperf3, + janus-gateway, kodi, kodi-audioencoder-flac, + kodi-audioencoder-lame, kodi-audioencoder-vorbis, + kodi-audioencoder-wav, libcli, libiio, liblinear, libnice, + libselinux, libsemanage, libserialport, libsigro, + libsigrokdecode, libsrtp, liburiparser, libvips, libwebsock, + libz160, libzip, lightning, mcelog, memtest86, mjpegtools, + mjpg-streamer, mke2img, mpd-mpc, netsurf-buildsystem, odhcp6c, + openldap, python-alsaaudio, python-certifi, python-cheetah, + python-coherence, python-django, python-docopt, python-enum, + python-enum34, python-flask, python-gobject, python-httplib2, + python-ipaddr, python-itsdangerous, python-jinja, + python-markdown, python-markupsafe, python-networkmanager, + python-pam, python-psutil, python-pyftpdlib, python-pyinotify, + python-pysendfile, python-pyxb, python-requests, python-six, + python-twisted, python-webpy, python-werkzeug, + python-zope-interface, qt5cinex, sigrok-cli, sofia-sip, + start-stop-daemon, szip, triggerhappy, ustr, vnstat, xorriso, + xtables-addons + + Removed packages (target): bison, distcc, gob2, m4 + + Issues resolved (http://bugs.uclibc.org): + + #7556: make interactive CLI optional for nftables + #7730: Error while connecting Qt Cretaor to device + #7766: logrotate default gzip path is usually wrong + #7790: Invalid ext4 image generated by Buildroot + +2014.11, Released December 1st, 2014 + + Minor fixes. + + Infrastructure: LD_LIBRARY_PATH handling tweak to ensure + current working directory isn't searched. + + Updated/fixed packages: gd, gdb, libwebsockets, luajit, mono, + parted, shairport-sync, util-linux, xapp_bdftopcf, + xserver_xorg-server + +2014.11-rc3, Released November 28th, 2014 + + Fixes all over the tree. + + System: File permissions of /etc/random-seed made more + restrictive. + + Toolchain: Various fixes related to locale handling, a fix for + building the toolchain wrapper on MIPS. + + Updated/fixed packages: bind, binutils. botan, btrfsprogs, + clamav, czmq, dhcp, dillo, dovecot, erlang, flac, gd, glibc, + gptfdisk, gst1-validate, heirloom-mailx, lame, libksba, + libllcp, libnspr, libpng, libshairplay, libtirpc, linux, + linux-headers, mpdecimal, mpg123, network-manager, nfstables, + nfs-utils, openssl, pcituils, qt, radvd, rtai, sqlcipher, + sstrip, tcpdump, uclibc, uemacs, ushare, wayland, weston, + xl2tp, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #7670: Fails to build mpc-1.0.2 on latest Cygwin + +2014.11-rc2, Released November 21st, 2014 + + Fixes all over the tree. + + Inittab tweaks for shutdown handling (busybox and sysvinit). + + Updated/fixed packages: aircrack-ng, botan, canfestival, + clamav, coreutils, czmq, dbus, dovecot, duma, e2fsprogs, + erlang, gcc, iputils, libcap, libgcrypt, libmemcached, + libssh2, libunwind, libv4l, linux-headers, mesa3d-demos, mutt, + mysql, ndisc6, nodejs, omniorb, perl-cross, php, + python-tornado, python3, qemu, qt5base, qt5webkit, rpm, + rt-tests, ruby, schifra, sdl_sound, shairport-sync, sysvinit, + tstools, tzdata, wireshark, x264 + + Issues resolved (http://bugs.uclibc.org): + + #7646: strftime on datetime not works on python3 + +2014.11-rc1, Released November 12th, 2014 + + Fixes all over the tree and new features. + + Toolchains: Use -mcpu / -march instead of -mtune. Support + additional ARC and sparc variants. Updated Code sourcery + and Linaro external toolchains. + + Defconfigs: Freescale iMX6DL SabreSD, Minnowboard MAX, QEMU + powerpc64 pseries added and a number of updates to the + existing configurations. + + Infrastructure: Buildroot is now less noisy when built with + the silent option (make -s). + A number of package infrastructure variables have been renamed + from *_OPT to *_OPTS for constency. Buildroot will complain if + the old names are used to assist in updating out of tree + packages. + Fixes for host systems where bash isn't located in /bin, and + older systems not supporting mktemp --tmpdir. + Various cleanups of users/groups in the default skeleton. + There is now an option to choose what shell /bin/sh points to. + + Documentation: Various updates to the user manual. The + asciidoc documentation handling has now been extended so it + can be used by (BR2_EXTERNAL) packages. + + Updated/fixed packages: acl, acpid, agentpp, aircrack-ng, + alsa-lib, alsamixergui, alsa-utils, apitrace, apr, apr-util, + argus, arptables, at, atftp, atk, attr, audiofile, aumix, + automake, autossh, avahi, avrdude, axel, bandwidthd, bash, + bcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils, + bluez_utils, bmon, boost, bootutils, bridge-utils, + btrfs-progs, busybox, bwm-ng, bzip2, ca-certificates, cairo, + ccache, ccid, ccrypt, cdrkit, cegui06, celt051, chrony, + cifs-utils, civetweb, cjson, clapack, classpath, cloog, cmake, + collectd, connman, copas, coreutils, coxpcall, cppcms, cppdb, + cppzmq, cramfs, crda, cryptsetup, ctorrent, cups, cvs, cwiid, + czmq, dash, dbus, dbus-cpp, dbus-glib, dbus-python, dejavu, + dhcp, dhcpcd, dhcpdump, dialog, dillo, directfb, distcc, + dmalloc, dmidecode, dmraid, dnsmasq, doc-asciidoc.mk, + dosfstools, dropbear, dropwatch, dstat, dtach, dtc, dvbsnoop, + e2fsprogs, ecryptfs-utils, ed, efl, eigen, elf2flt, elfutils, + enlightenment, enscript, erlang, espeak, ethtool, eudev, + evemu, evtest, exfat, exfat-utils, exim, expat, expect, + explorercanvas, faifa, fakeroot, fan-ctrl, fbdump, + fb-test-app, fetchmail, ffmpeg, file, filemq, findutils, flac, + flann, flickcurl, flite, fltk, fluxbox, fmc, fmlib, + fontconfig, foomatic-filters, freerdp, freescale-imx, + freetype, ftop, fxload, gamin, gcc, gd, gdb, gdk-pixbuf, + genimage, genpart, genromfs, geoip, gettext, giblib, git, + glibc, glib-networking, gmp, gmpc, gnu-efi, gnupg, gnupg2, + gnuplot, gnutls, google-breakpad, gpm, gpsd, gptfdisk, + gpu-viv-bin-mx6q, grantlee, grep, gsl, gst1-libav, + gst1-plugins-{bad,base,good,ugly}, gst-ffmpeg, + gst-fsl-plugins, gst-omx, gst-plugins-{bad,base,good,ugly}, + gst-plugin-x170, gstreamer, gstreamer1, gtest, gtk2-engines, + gutenprint, gvfs, harfbuzz, haserl, haveged, hdparm, heimdal, + heirloom-mailx, hiawatha, hostapd, hplip, htop, httping, + hwdata, i2c-tools, icu, ifplugd, igh-ethercat, imagemagick, + imlib2, imx-lib, imx-vpu, inadyn, inotify-tools, input-tools, + intltool, iperf, iproute2, iprutils, ipsec-tools, ipset, + iptables, iputils, iw, jamvm, jansson, jasper, jimtcl, joe, + jpeg-turbo, jq, jquery-keyboard, jquery-mobile, jquery-ui, + jquery-ui-themes, jquery-validation, jsmin, json-c, + json-javascript, kbd, kexec, kexec-lite, keyutils, kismet, + kmod, knock, ktap, lame, lbase64, lbreakout2, lcdproc, lcms2, + lesstif, lftp, libaio, libao, libarchive, libargtable2, + libass, libassuan, libatasmart, libbluray, libbsd, libcap, + libcap-ng, libcdio, libcec, libcgicc, libcgroup, libcofi, + libconfig, libconfuse, libcurl, libdaemon, libdnet, libdrm, + libdvdnav, libecore, libedbus, libedit, libedje, libeet, + libelementary, libelf, libenca, libethumb, libevas, + libevas-generic-loaders, libevent, libexif, libeXosip2, + libffi, libftdi, libfuse, libgail, libgcrypt, libgeotiff, + libglade, libglib2, libgpgme, libgtk2, libhid, libidn, + libinput, libiscsi, libjson, libksba, liblockfile, + liblog4c-localtime, liblogging, libmad, libmatroska, libmbim, + libmemcached, libmicrohttpd, libmpdclient, libmpeg2, libndp, + libnfc, libnfs, libnftnl, libnl, libnspr, libnss, liboauth, + libogg, liboping, libosip2, libpcap, libpciaccess, libpfm4, + libplayer, libplist, libpng, libpthsem, libqmi, libqrencode, + libraw, libreplaygain, libroxml, librsvg, librtlsdr, + libsamplerate, libseccomp, libsecret, libshairplay, libsoc, + libsoup, libsoxr, libssh2, libstrophe, libsvg, libsvg-cairo, + libtasn1, libtheora, libtirpc, libtorrent, libubox, libuci, + libungif, liburcu, libusb, libuv, libv4l, libva, + libva-intel-driver, libvncserver, libvorbis, libvpx, + libwebsockets, libxcb, libxml2, libxml-parser-perl, libxmlrpc, + libxslt, lighttpd, linenoise, linknx, links, linphone, + linux-firmware, linux-fusion, linux-headers, linux-pam, + linux-zigbee, lite, live555, ljlinenoise, lmbench, lm-sensors, + localedef, lockdev, lockfile-progs, log4cxx, lpty, lrandom, + lrzsz, lshw, lsof, lsqlite3, ltp-testsuite, ltrace, ltris, + lttng-babeltrace, lttng-libust, lttng-modules, lttng-tools, + lua, luabitop, lua-coat, lua-coatpersistent, lua-csnappy, + lua-ev, luajit, luajson, lualogging, lua-messagepack, + lua-msgpack-native, luaposix, luarocks, luasec, luasocket, + luasql-sqlite3, lua-testmore, lunit, lvm2, lxc, lz4, lzlib, + lzma, m4, madplay, make, makedevs, Makefile.in, + matchbox-common, matchbox-desktop, matchbox-fakekey, + matchbox-keyboard, matchbox-lib, matchbox-panel, + matchbox-startup-monitor, matchbox-wm, mcrypt, mdadm, + media-ctl, mediastreamer, memcached, memstat, memtester, + mesa3d, metacity, midori, mii-diag, minidlna, mmc-utils, + modem-manager, mongoose, mongrel2, monit, mpc, mpd, mpdecimal, + mpfr, mpg123, mplayer, mrouted, msmtp, mtd, mtools, mtr, + musepack, musl, mutt, mxml, mysql, nano, nanocom, nbd, ncftp, + ncurses, ndisc6, ne10, neard, neon, netatalk, netperf, + netsnmp, nettle, net-tools, network-manager, newt, nfs-utils, + ngrep, nmap, nodejs, nss-mdns, ntfs-3g, ntp, numactl, nut, + nuttcp, ofono, ola, omap-u-boot-utils, omniorb, + on2-8170-modules, opencore-amr, opencv, openntpd, openobex, + openocd, openpowerlink, openssh, openssl, openswan, + opentyrian, opentyrian-data, openvpn, opkg, oprofile, opus, + opus-tools, orbit, orc, ortp, p11-kit, pango, parted, + pciutils, pcmanfm, pcre, pcsc-lite, perf, perl, perl-gd, + perl-gdgraph, perl-io-socket-ssl, perl-json-tiny, + perl-module-build, perl-mojolicious, perl-net-ssleay, + perl-path-tiny, perl-xml-libxml, perl-xml-parser, php, + php-geoip, php-gnupg, php-imagick, php-memcached, php-ssh2, + php-yaml, php-zmq, picocom, pifmrds, pinentry, pixman, + pkg-autotools.mk, pkg-cmake.mk, pkg-download.mk, + pkg-generic.mk, pkg-kconfig.mk, pkg-luarocks.mk, pkg-perl.mk, + pkg-python.mk, pkg-utils.mk, poco, polarssl, polkit, poppler, + popt, portaudio, portmap, postgresql, powerpc-utils, pppd, + pptp-linux, prboom, procps-ng, proftpd, protobuf, protobuf-c, + psmisc, ptpd2, pulseaudio, pv, pwgen, python, python3, + python-dialog, python-ipy, python-keyring, python-mad, + python-netifaces, python-numpy, python-protobuf, python-pyasn, + python-pyparsing, python-pyro, python-pyusb, python-serial, + python-setuptools, qdecoder, qemu, qextserialport, qjson, qt, + qt5, qt5base, qt5connectivity, qt5declarative, qt5enginio, + qt5graphicaleffects, qt5imageformats, qt5multimedia, + qt5quick1, qt5quickcontrols, qt5script, qt5sensors, + qt5serialport, qt5svg, qt5webkit, qt5webkit-examples, + qt5websockets, qt5x11extras, qt5xmlpatterns, qtuio, quagga, + quota, qwt, radvd, rapidjson, rdesktop, redis, rings, rpcbind, + rpi-firmware, rpi-userland, rpm, rp-pppoe, rrdtool, + rsh-redone, rsync, rsyslog, rtai, rtmpdump, rt-tests, rubix, + ruby, samba, sam-ba, samba4, sane-backends, schifra, + sconeserver, scons, screen, sdl, sdl_gfx, sdl_image, + sdl_mixer, sdl_net, sdl_sound, sdl_ttf, sed, ser2net, + setserial, sg3_utils, shared-mime-info, simicsfs, sispmctl, + slang, slirp, smcroute, smstools3, snmppp, + snowball-hdmiservice, socat, socketcand, sox, spawn-fcgi, + speex, spice, spice-protocol, sqlcipher, sqlite, squashfs, + squid, sredird, startup-notification, strace, stress, + strongswan, stunnel, subversion, sudo, sunxi-boards, + sunxi-cedarx, swig, sylpheed, synergy, sysklogd, sysstat, + systemd, sysvinit, taglib, tar, tcl, tcllib, tcpdump, + tcpreplay, texinfo, tftpd, thrift, thttpd, tiff, ti-utils, + tn5250, torsmo, trace-cmd, transmission, tslib, tstools, + tvheadend, twolame, tz, uboot-tools, uclibc, udisks, ulogd, + upmpdcli, upx, urg, usb_modeswitch, usbmount, usbredir, + usbutils, util-linux, valgrind, vde2, vim, vlc, vo-aacenc, + vorbis-tools, vpnc, vsftpd, vtun, wayland, webkit, webp, + webrtc-audio-processing, weston, wget, whois, wireless-regdb, + wireshark, wpa_supplicant, wvstreams, x11r7, x11vnc, + xapp_xcalc, xapp_xdm, xapp_xdpyinfo, xapp_xf86dga, xapp_xfs, + xapp_xinit, xapp_xkbevd, xapp_xmh, xapp_xrandr, xapp_xsm, + xbmc, xbmc-pvr-addons, xcb-proto, xcursor-transparent-theme, + xdriver_xf86-input-mouse, xdriver_xf86-video-{ast,intel}, + xdriver_xf86-video-vmware, xenomai, xerces, + xfont_font-adobe-{100,75}dpi, + xfont_font-adobe-utopia-{100dpi,75dpi,type1}, + xfont_font-alias, xfont_font-arabic-misc, + xfont_font-bh-100dpi, xfont_font-bh-75dpi, + xfont_font-bh-lucidatypewriter-100dpi, + xfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf, + xfont_font-bh-type1, xfont_font-bitstream-100dpi, + xfont_font-bitstream-75dpi, xfont_font-bitstream-type1, + xfont_font-cronyx-cyrillic, xfont_font-cursor-misc, + xfont_font-daewoo-misc, xfont_font-dec-misc, + xfont_font-ibm-type1, xfont_font-isas-misc, + xfont_font-jis-misc, xfont_font-micro-misc, + xfont_font-misc-cyrillic, xfont_font-misc-ethiopic, + xfont_font-misc-meltho, xfont_font-misc-misc, + xfont_font-mutt-misc, xfont_font-schumacher-misc, + xfont_font-screen-cyrillic, xfont_font-sony-misc, + xfont_font-sun-misc, xfont_font-winitzki-cyrillic, + xfont_font-xfree86-type1, xfsprogs, xinetd, xkeyboard-config, + xlib_libdmx, xlib_libFS, xlib_libpciaccess, xlib_libSM, + xlib_libX11, xlib_libXaw, xlib_libXext, xlib_libXfont, + xlib_libXi, xlib_libXinerama, xlib_libXrandr, xlib_libXrender, + xlib_libXres, xlib_libXScrnSaver, xlib_libXt, xlib_libXv, + xlib_libXvMC, xlib_libXxf86dga, xlib_libXxf86vm, xmlstarlet, + xproto_xcmiscproto, xproto_xextproto, xscreensaver, + xserver_xorg-server, xterm, xz, zeromq, zlib, zlog, zmqpp, + znc, zsh, zxing + + New packages: adwaita-icon-theme, am335x-pru-package, + bcache-tools, biosdevname, botan, canfestival, clamav, + cppunit, dos2unix, dovecot, dovecot-pigeonhole, getent, glm, + gst1-validate, hicolor-icon-theme, ipmitool, leafnode2, + libdvbcsa, libgtk3, libphidget, libshout, libunistring, + libupnpp, mesa3d-demos, modplugtools, mono, monolite, mp4v2, + netcat-openbsd, nginx, odhcploc, openvmtools, + phidgetwebservice, pps-tools, pure-ftpd, + python-configshell-fb, python-rtslib-fb, python-urwid, qlibc, + qt5location, shairport-sync, spidev_test, targetcli-fb, + tinyalsa, trinity, x264, yaml-cpp, ympd + + Removed packages: libelf + + Issues resolved (http://bugs.uclibc.org): + + #261: New package: wxWidgets + #325: New package: ratpoison + #405: New package: OpenVZ tools + #1309: New package: rdiff-backup + #3427: New package: nginx + #3655: New package: libav + #3991: New Package: open-vm-tools (Vmware Tools) + #6878: dmraid: disabled on ARC + #6950: Full unicode support in ncurses + #7010: jamvm builds and runs fine under mips (be) + #7088: elfutils on Blackfin doesn't build + #7142: ecryptfs needs getent to run + #7280: CMake toolchain file uses the FORCE attribute on CMAKE_CXX_FLAGS + #7346: [2014.08rc3] vim-8ae50e3ef8bf.tar.gz can not be downloaded, ... + #7352: [2014.08-rc3] diffutils-3.3 failed on building + #7358: rpi-userland: linking with bcm_host doesn't give vc_dispmanx_* + #7364: monit builds a static application, even though BR2_PREFER_... + #7370: ngrep - requires --with-pcap-includes fully defined to find... + #7442: rootfs remount does not work as expected with sysvinit + #7448: Having export MACHINE="something" breaks glibc build on IMX6... + #7568: musl buildroot-toolchain does not put libgcc_s.so.1 into place + #7574: quota-4.01 fails to build statically + +2014.08, Released September 1st, 2014 + + Minor manual fixes/additions. + + Updated/fixed packages: btrfs-progs, cmake, cppcms, exim, + lftp, libdaemon, libev, libgpgme, libiqrf, libnl, libplist, + libroxml, libwebsockets, mesa3d, mpd, mtdev2tuio, musepack, + perl-gd, php-geoip, php-gnupg, php-imagick, php-memcached, + php-ssh2, php-yaml, php-zmq, polarssl, ruby, systemd, taglib, + uboot-tools, upmpdcli, webkit, xapp_xfs, xapp_luit, + xscreensaver, yajl + + Issues resolved (http://bugs.uclibc.org): + + #7346: vim-8ae50e3ef8bf.tar.gz can not be downloaded, 404 not found + +2014.08-rc3, Released August 26th, 2014 + + Minor fixes. + + User manual update / restructuring. + + Updated/fixed packages: cairo, ecryptfs-utils, gettext, + gstreamer, gstreamer1, gutenprint, icu, imagemagick, jack2, + lbreakout2, libevas-generic-loaders, libftdi, libinput, + libtorrent, ltris, msgpack, ntp, php, procps-ng, pulseaudio, + thrift, tvheadend, usb_modeswitch, xmlstarlet, + + Issues resolved (http://bugs.uclibc.org): + + #7136: ecryptfs-utils needs gettext to run when glibc/eglibc... + #7322: libgomp dependency issue with imagemagick + #7328: Git dl of versions in x/y broken + +2014.08-rc2, Released August 18th, 2014 + + Fixes all over the tree. + + User manual restructured / reworked. + + Toolchain: Fix for C++ exceptions / pthread_exit() on + uClibc/glibc, C++-11 features with uClibc. + + Updated/fixed packages: bandwidthd, bluez5_utils, empty, + espeak, fbv, ffmpeg, gd, gnupg2, gst1-plugin-good, iftop, + infozip, libcuefile, libeml, libnftl, localedef, ltrace, + matchbox, mpd, network-manager, nftables, ngrep, nut, openssl, + oprofile, perl, perl-net-ssleay, postgresql, pppd, procps-ng, + qt, subversion, synergy, systemd, tar, tftpd, webkit, + xapp_rstart, xbmc, xbmc-pvr-addons + + Issues resolved (http://bugs.uclibc.org): + + #7124: Use BR toolchain externally results a non-bootable... + #7208: Glibc C++ aplications crash if they use exceptions + #7250: Cannot build with -std=c++11 + #7262: Generating locale en_US.UTF-8 fails on 64bit fedora.. + #7286: systemd 215 doesn't build + +2014.08-rc1, Released August 8th, 2014 + + Fixes all over the tree and new features. + + Architecture: Powerpc64 BE/LE added, AVR32 deprecated. + Improved altivec / SPE /atomic instructions + handling. Additional PowerPC CPU variants added. + + Defconfigs: Atmel SAMA5D3, Congatec QMX6, Lego ev3, TS-5x00, + qemu-system-xtensa, qemu-aarch64-virt added. A number of + tweaks to existing ones. lpc32xx defconfigs removed. + + Toolchain: Microblaze support for internal musl toolchain. + Default to GCC 4.8 for internal toolchain, remove deprecated + 4.3 and 4.6 versions. + External CodeSourcery / Linaro toolchain updates, option to + copy gconv libraries for external toolchains. + + Infrastructure: graph-depends: misc fixes, transitive + dependencies are not drawn by default. Download handling is + now done using helper scripts. Integrity of downloads can now + be verified using sha* hashes. Subversion download now uses + peg revisions for robustness. + Legal-info: License info of local or overridden packages are + saved as well. Toolchain packages are also taken into account. + autotools: Static linking with libtool / v1.5 improvements. + Gettextize support, similar to autoreconf. + kconfig package infrastructure added. + + Misc: Version selection for busybox dropped. + + Updated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils, + alsamixergui, argus, armadillo, at, atftp, atk, avahi, + avrdude, axel, b43-firmware, b43-fwcutter, bandwidthd, bc, + bcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils, + bmon, boa, bonnie, bootutils, bsdiff, btrfs-progs, bustle, + busybox, bwm-ng, bzip2, ca-certificates, cairo, can-utils, + ccache, ccrypt, chrony, cifs-utils, classpath, cloog, cmake, + collectd, connman, coreutils, cosmo, cppcms, cramfs, crda, + cryptodev-linux, cryptodev, ctorrent, cvs, dbus-cpp, + dbus-glib, dbus-python, dbus, dcron, dejavu, devmem2, + dfu-util, dhcp, dhcpcd, dhcpdump, dhrystone, dialog, dillo, + distcc, dmidecode, dmraid, dnsmasq, doom-wad, dropbear, + dropwatch, dsp-tools, dtv-scan-tables, dvb-apps, e2fsprogs, + e2tools, eeprog, eigen, elf2flt, elftosb, enlightenment, + enscript, espeak, ethtool, eudev, evemu, exim, expedite, + explorercanvas, ezxml, faifa, fan-ctrl, fconfig, feh, + fetchmail, ffmpeg, fftw, file, fio, fis, flann, flashrom, + flex, flot, fltk, fontconfig, freerdp, freescale-imx, + freetype, ftop, gcc, gd, gdb, genimage, genromfs, gettext, + giblib, glib-networking, glibc, gmp, gnupg, gnutls, gpm, gpsd, + gptfdisk, gpu-viv-bin-imx6q, gqview, grantlee, gst-ffmpeg, + gst-fsl-plugins, gst1-libav, gst1-plugins-bad, + gst1-plugins-ugly, gtk2-engines, gtk2-theme-hicolor, gtkperf, + gvfs, haserl, hdparm, hostapd, httping, i2c-tools, icu, + imagemagick, imx-lib, inadyn, inotify-tools, input-tools, + ipkg, iproute2, iputils, irda-utils, iw, jack2, jpeg, jquery, + jquery-keyboard, jquery-mobile, jquery-validation, jsmin, kbd, + kexec, kmod, knock, latencytop, lcdapi, leafpad, lesstif, + lftp, libaio, libarchive, libargtable2, libart, libatasmart, + libatomic_ops, libbsd, libcap-ng, libcec, libcgicc, libcgroup, + libconfuse, libcurl, libdrm, libdvdnav, libdvdread, + libeXosip2, libedit, liberation, libesmtp, libev, libevas, + libevdev, libevent, libfcgi, libffi, libfreefare, libfslcodec, + libfslparser, libfslvpuwrap, libgail, libgcrypt, libglade, + libglib2, libgpgme, libgtk2, libhid, libical, libiconv, + libiqrf, libjpeg, liblog4c-localtime, libmbus, libmicrohttpd, + libmms, libndp, libnftnl, libnl, libnspr, libnss, liboauth, + libpcap, libpng, libpthsem, libqmi, libraw, libraw1394, + librsvg, libsoc, libsoup, libsvgtiny, libsysfs, libtasn1, + libtirpc, libtorrent, libusb, libv4l, libwebsockets, libxcb, + libxml2, libyaml, links, linux-firmware, linux-fusion, + linux-headers, linux-pam, lite, live555, lm-sensors, + lockfile-progs, lpc3250loader, lshw, lsof, lsuio, ltrace, + ltris, lua-messagepack, luainterpreter, luajit, luaposix, + luarocks, lvm2, lxc, lz4, lzo, make, makedevs, mdadm, + mediastreamer, mesa3d, metacity, minidlna, mkpasswd, + modem-manager, mongoose, mpd, mpg123, msgpack, mtd, mtools, + mtr, musepack, musl, mysql, nano, nasm, nbd, ncurses, ndisc6, + netatalk, netplug, network-manager, nftables, ngircd, nodejs, + nss-mdns, ntp, nut, olsr, open2300, opencv, openntpd, openocd, + openpgm, openpowerlink, openssh, openssl, openswan, openvpn, + opkg, oprofile, opus-tools, orc, p910nd, pango, parted, + pax-utils, pcmanfm, perf, perl, perl-module-build, php, + pixman, pkgconf, poco, polarssl, popt, portmap, postgresql, + prboom, protobuf-c, proxychains-ng, psmisc, psplash, ptpd2, + python, + python-{bottle,dpkt,id3,mad,msgpack,nfc,pygame,pyzmq,simplejson}, + python3, qhull, qt, qt5base, qt5connectivity, qt5declarative, + qt5graphicaleffects, qt5multimedia, qt5quickcontrols, + qt5sensors, qt5svg, qt5webkit, quagga, quota, radvd, rdesktop, + read-edid, rpcbind, rpi-firmware, rpi-userland, rpm, + rsh-redone, rsync, rt-tests, rtmpdump, rtorrent, rubix, ruby, + samba, samba4, sane-backends, sawman, sconeserver, setserial, + sg3_utils, shared-mime-info, smartmontools, smcroute, snappy, + socketcand, spawn-fcgi, sqlite, squashfs, squid, sredird, + startup-notification, statserial, strongswan, stunnel, + sunxi-mali, supervisor, synergy, sysklogd, sysprof, sysstat, + systemd, tcpdump, tcpreplay, texinfo, thrift, thttpd, ti-gfx, + ti-utils, tinyhttpd, torsmo, trace-cmd, transmission, tslib, + tstools, tvheadend, tzdata, uboot-tools, uclibc, udev, + udpcast, usb_modeswitch, usbmount, util-linux, valgrind, vim, + vlc, w_scan, wayland, webrtc-audio-processing, weston, wget, + wireless-regdb, wireless_tools, wireshark, wpa_supplicant, + xapp_{twm,xconsole,xcursorgen,xedit,xfs,xinit,xrandr}, + xdriver_xf86-video-intel, xlib_lib{FS,ICE,Xext,Xfont,Xft,Xi}, + xproto_fontsproto, xproto_inputproto, xserver_xorg-server, + x11vnc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, xterm, xvkbd, + xz + + New packages: flickcurl, fmc, fmlib, geoip, gnupg2, + google-breakpad, imx-vpu, isl, kexec-lite, libglew, libglu, + libinput, libksba, libmemcached, libmpdclient, librtlsdr, + libuv, libva, libva-intel-driver, linux-zigbee, memcached, + mpdecimal, ncmpc, opencore-amr, patchelf, perl-datetime-tiny, + perl-gd, perl-gdgraph, perl-gdtextutil, perl-io-socket-ssl, + perl-json-tiny, perl-mojolicious, perl-net-ssleay, + perl-path-tiny, perl-try-tiny, perl-xml-libxml, + perl-xml-namespacesupport, perl-xml-sax, perl-xml-sax-base, + php-geoip, php-memcached, pifmrds, pinentry, powerpc-utils, + procps-ng, pwgen, python-cffi, python-daemon, python-flup, + python-ipython, python-numpy, qt5enginio, qt5webkit-examples, + qt5websockets, simicsfs, sispmctl, sox, sshpass, tclap, + twolame, upmpdcli, whois, xlib_libxshmfence, xproto_dri3proto + + Removed packages: procps + + Issues resolved (http://bugs.uclibc.org): + + #5750: Doing a Buildroot build from /usr doesn't work + #5900: config flags to the Xenomai build system + #6230: Cannot compile gcc without threads (uClibc-based) + #6626: procps Unknown HZ value! (XX) Assume 100 + #7118: Package "thrift" requires atomic operations + #7154: Local uClibc config file gets overwritten using ... + #7160: host-xz not built + #7166: hostapd: segfault when using RT5370 + #7172: Name collision of rpath token expansion and internal.. + #7178: NTPd package cannot sync time without a proper ntp.conf + #7184: supervisord depends on libxml2 implicitly + #7196: Unable to build on UBUNTU13.10 + #7268: python 2.7 compilation issue on a Debian/Ubuntu ... + +2014.05, Released May 31st, 2014 + + Minor fixes. + + Minor manual fixes. U-Boot now defaults to spl/u-boot-spl.bin + for the spl file. + + Updated/fixed packages: exim, glibc, gnutls, libfribidi, + qt5base, qt5webkit, sysklogd, thrift, u-boot + +2014.05-rc3, Released May 28th, 2014 + + Minor fixes. + + Updated/fixed packages: acl, attr, connman, dosfstools, + dropbear, dvb-apps, exim, flite, gdb, httping, hwdata, + lesstif, libnss, libv4l, lttng-babeltrace, midori, monit, + mplayer, php, python2, rdesktop, rpi-userland, ruby, samba, + samba4, slang, xbmc + + Issues resolved (http://bugs.uclibc.org): + + #7100: license info for package 'acl' missing + #7106: license info for package 'attr' missing + #7112: license info for package 'hwdata' + +2014.05-rc2, Released May 21st, 2014 + + Fixes all over the tree. + + Stripping using sstrip has been deprecated. + + BR2_EXTERNAL can now also be used to implement custom + filesystem types. + + The newly added BR2_GRAPH_DEPTH variable to limit the depth of + the generated dependency graph has been renamed to + BR2_GRAPH_DEPS_OPTS, so additional options can be supported in + the future. + + The virtual package infrastructure will now error out early + if multiple packages providing the same virtual package has + been enabled (E.G. opengl). This change requires that the + packages explicitly declare what virtual package(s) they + provide. + + Updated/fixed packages: acpid, armadillo, avahi, bellagio, + btrfs-progs, cairo, clapack, directfb, duma, ecryptfs-utils, + elfutils, eudev, fbgrab, fio, flann, fluxbox, gdb, gpm, + gpu-viv-bin-mx6q, gst1-plugins-good, gst-plugins-good, + imagemagick, iprutils, ipsec-tools, jack2, libdvdnav, + libdvdread, libnss, libunwind, linux-headers, lsof, lua, + luajit, matchbox-keyboard, mesa3d, mpd, mplayer, mtr, mysql, + netsnmp, nodejs, openpowerlink, openvpn, pciutils, + php-imagick, postgresql, pulseaudio, qt5quick1, rpi-userland, + rsyslog, samba, samba4, sane-backends, sunxi-mali, systemd, + ti-gfx, tstools, udev, webkit, wpa_supplicant, xbmc, + xlib_libXpm, xserver_xorg-server, zyre + + Issues resolved (http://bugs.uclibc.org): + + #5396: Boot hangs when starting samba if BR2_ENABLE_LOCALE... + #7016: Git issues in resulting buildroot tar + #7094: pciutils doesn't build on Blackfin + +2014.05-rc1, Released May 13th, 2014 + + Fixes all over the tree and new features. + + Architectures: Support for MIPS o32 ABI on MIPS-64 targets has + been removed. Building o32 ELF files for MIPS64 is an exotic + configuration that nobody should be using. If o32 is required, + then is better if it's built for MIPS 32-bit cores so only + 32-bit instructions will be used leading to a more efficient + o32 usage. + Support for the ARM A12 variant and Intel corei7. + + Configs: Minnowboard and Altera SoCkit added, QEMU updates. + + Bootloaders: Grub2 and gummiboot support, syslinux support + extended. + + Toolchains: GCC 4.9. Glibc 2.19. Support for the musl C + library for internal and external toolchains. 4.8-R3 support + for ARC, Internal toolchain support for Aarch64 and + Microblaze. Environment variable to control debug output of + toolchain wrapper renamed to BR2_DEBUG_WRAPPER to match the + other variables. Toolchain tuple vendor name can now be + customized. Updated external Linaro ARM/Aarch64 + toolchains. Added external Linaro ARMEB toolchain. + A GDB gdbinit file is now generated for external toolchains to + automatically set the correct sysroot. + + Kconfig handling for minimum kernel headers version required + for packages. Now packages needing specific kernel header + features can specify these requirements in Kconfig. + + Infrastructure: Support for (but disabled as it leads to + unreproducible builds) toplevel parallel builds. See the + comment at the top of Makefile for details about how to enable + it and what the problems are if you want to test it. + Python package infrastructure extended to support Python 3.x + Perl and virtual package infrastructure support added. + PRE_*_HOOKS support for all build steps. + + Updated/fixed packages: acpid, agentpp, aiccu, apr, avahi, + barebox, bash, beecrypt, bellagio, binutils, boost, + boot-wrapper-aarch64, bustle, busybox, ca-certificates, cairo, + ccache, ccid, cgilua, chrony, cifs-utils, civetweb, cmake, + collectd, connman, coreutils, coxpcall, cppcms, cppzmq, crda, + cryptodev, cryptsetup, cups, czmq, dbus, dhcpdump, directfb, + dmalloc, dmraid, dnsmasq, dosfstools, dsp-tools, dtc, + dvb-apps, ebtables, ecryptfs-utils, eigen, erlang, ethtool, + evemu, evtest, f2fs-tools, fdk-aac, feh, ffmpeg, file, filemq, + flac, flot, fmtools, fping, freetype, fswebcam, gcc, gd, gdb, + gettext, giblib, git, glibc, glibmm, glib-networking, gmp, + gnutls, gpm, gpsd, gpu-viv-bin-mx6q, grep, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst-ffmpeg, gst-fsl-plugins, gst-omx, + gst-plugins-good, gstreamer1, gvfs, harfbuzz, haveged, + hostapd, htop, httping, ifplugd, iftop, igmpproxy, + imagemagick, imlib2, imx-lib, infozip, intltool, iproute2, + ipsec-tools, ipset, jansson, jpeg, jpeg-turbo, jquery, + jquery-keyboard, jquery-ui, jquery-ui-themes, json-glib, + json-javascript, kexec, kmod, lame, lbase64, lbreakout2, + lcdproc, lftp, libao, libatasmart, libatomic_ops, libcap, + libcdio, libcec, libcgicc, libcgroup, libcurl, libdrm, + libdvdnav, libdvdread, libegl, libeio, libenca, libesmtp, + libevas, libevdev, libfribidi, libfslcodec, libfslparser, + libfslvpuwrap, libgail, libgles, libglib2, libgtk2, libhid, + libjpeg, libmbim, libmicrohttpd, libmodplug, libnftnl, + libnspr, libogg, libopenmax, libopenvg, libpcap, libplayer, + libpng, libpthread-stubs, librsvg, libsigsegv, libsocketcan, + libsoup, libtasn1, libtool, libtpl, libunwind, liburcu, + libusb, libwebsockets, libxcb, libxml2, libxmlpp, libyaml, + lighttpd, linphone, linux-firmware, linux-headers, ljsyscall, + lmbench, lsof, ltp-testsuite, ltris, lttng-babeltrace, + lttng-libust, lttng-modules, lttng-tools, lua, lua-cjson, + luacrypto, lua-ev, luaexpat, luaexpatutils, luafilesystem, + luainterpreter, luajit, lua-msgpack-native, luaposix, + luarocks, luasec, luasocket, luasql-sqlite3, lvm2, macchanger, + memstat, mesa3d, metacity, minidlna, mmc-utils, + mobile-broadband-provider-info, modem-manager, mongrel2, + monit, mpd, mplayer, msmtp, mtd, mtools, mutt, mysql, nasm, + ncurses, ne10, netatalk, netsnmp, nettle, network-manager, + newt, nfs-utils, nmap, nodejs, ntfs-3g, ntp, nut, ofono, ola, + olsr, omniorb, opencv, opengl, openpgm, openssh, openssl, + openswan, openvpn, orbit, orc, p11-kit, pango, parted, + pciutils, pcre, pcsc-lite, perf, perl, perl-xml-parser, php, + picocom, pixman, pkgconf, poppler, popt, portmap, powervr, + pppd, pptp-linux, proftpd, protobuf, protobuf-c, ptpd2, + pulseaudio, python, python3, python-bottle, python-m2crypto, + python-netifaces, python-pyasn, python-pycrypto, + python-pygame, python-pysnmp, python-pysnmp-apps, + python-pysnmp-mibs, python-serial, python-setuptools, + qextserialport, qt, qt5, qt5base, qt5connectivity, + qt5declarative, qt5graphicaleffects, qt5imageformats, + qt5multimedia, qt5quick1, qt5quickcontrols, qt5script, + qt5sensors, qt5serialport, qt5svg, qt5webkit, qt5x11extras, + qt5xmlpatterns, qtuio, qwt, radvd, readline, rings, + rpi-firmware, rpi-userland, rsh-redone, rsync, rsyslog, rtai, + rtmpdump, rt-tests, ruby, samba, sconeserver, scons, sdl, + sdl_image, sdl_mixer, sg3_utils, slang, smstools3, snmppp, + socat, speex, sqlcipher, sqlite, squashfs, squid, strongswan, + stunnel, sunxi-boards, sunxi-mali, sunxi-tools, sylpheed, + syslinux, sysstat, systemd, taglib, tcl, tcllib, tcpreplay, + tidsp-binaries, ti-gfx, tmux, tvheadend, tzdata, uboot, + uboot-tools, uclibc, udev, udisks, ulogd, usb_modeswitch, + usb_modeswitch_data, usbmount, util-linux, valgrind, vlc, + webkit, weston, wget, wireshark, wpa_supplicant, wsapi, + w_scan, xapp_appres, xapp_bdftopcf, xapp_beforelight, + xapp_bitmap, xapp_editres, xapp_fslsfonts, xapp_fstobdf, + xapp_iceauth, xapp_ico, xapp_mkfontscale, xapp_rgb, + xapp_rstart, xapp_sessreg, xapp_showfont, xapp_twm, + xapp_viewres, xapp_xauth, xapp_xbacklight, xapp_xcalc, + xapp_xclock, xapp_xditview, xapp_xdpyinfo, xapp_xdriinfo, + xapp_xev, xapp_xfd, xapp_xfontsel, xapp_xfs, xapp_xfsinfo, + xapp_xgc, xapp_xhost, xapp_xinit, xapp_xkbutils, xapp_xkill, + xapp_xload, xapp_xlsclients, xapp_xlsfonts, xapp_xmag, + xapp_xman, xapp_xmessage, xapp_xmodmap, xapp_xprop, + xapp_xrandr, xapp_xrdb, xapp_xrefresh, xapp_xset, + xapp_xsetroot, xapp_xsm, xapp_xstdcmap, xapp_xvidtune, + xapp_xvinfo, xapp_xwd, xapp_xwininfo, xcb-util-wm, + xdriver_xf86-input-evdev, xdriver_xf86-input-joystick, + xdriver_xf86-input-keyboard, xdriver_xf86-input-mouse, + xdriver_xf86-input-synaptics, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-ark, xdriver_xf86-video-ast, + xdriver_xf86-video-ati, xdriver_xf86-video-cirrus, + xdriver_xf86-video-dummy, xdriver_xf86-video-fbdev, + xdriver_xf86-video-geode, xdriver_xf86-video-glide, + xdriver_xf86-video-glint, xdriver_xf86-video-i128, + xdriver_xf86-video-intel, xdriver_xf86-video-mach64, + xdriver_xf86-video-mga, xdriver_xf86-video-neomagic, + xdriver_xf86-video-newport, xdriver_xf86-video-nv, + xdriver_xf86-video-openchrome, xdriver_xf86-video-r128, + xdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion, + xdriver_xf86-video-sis, xdriver_xf86-video-tdfx, + xdriver_xf86-video-tga, xdriver_xf86-video-trident, + xdriver_xf86-video-vesa, xdriver_xf86-video-vmware, + xdriver_xf86-video-voodoo, xenomai, xerces, xl2tp, xlib_libFS, + xlib_xtrans, xproto_xproto, xserver_xorg-server, + xutil_util-macros, zeromq, zic, zmqpp, zyre + + New packages: armadillo, btrfs-progs, clapack, cosmo, dado, + dbus-triggerd, dtv-scan-tables, e2tools, eudev, exim, expect, + fetchmail, flann, flite, gnu-efi, grub2, gummiboot, heimdal, + iprutils, iptraf-ng, jack2, jquery-mobile, libee, libestr, + libgc, libgl, liblogging, libndp, libsoxr, libstrophe, + libubox, libuci, libxmlrpc, ljlinenoise, lpeg, lpty, lrandom, + lsqlite3, lua-coat, lua-coatpersistent, lua-csnappy, luajson, + lualogging, lua-messagepack, lua-testmore, lunit, lzip, lzlib, + musl, nftables, opentyrian, opentyrian-data, + perl-module-build, php-gnupg, php-imagick, php-ssh2, php-yaml, + php-zmq, postgresql, python-libconfig, python-pypcap, + python-pyrex, qdecoder, qhull, samba4, smack, tz, tzdump, ucl, + upx, vo-aacenc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, + yaffs2utils, zlog, znc + + Removed packages: crosstool-ng, python-distutilscross, vala + + Issues resolved (http://bugs.uclibc.org): + + #6842: Checking external toolchain for eabihf + #6956: Packaging libsoxr + #6986: Make legal-info fails on uboot versions before 2014.01 + #6992: Incorrect installation rights on external kernel module.. + +2014.02, Released February 27th, 2014 + + Minor fixes. + + Updated/fixed packages: cegui06, cppdb, e2fsprogs, gcc, gdb, + gst1-plugins-bad, gstreamer, gstreamer1, haserl, imagemagick, + libpng, libxml2, lua, luajit, luarock, ncftp, openswan, + pcsc-lite, qt5connectivity, ramsmp, strongswan, vlc + + Issues resolved (http://bugs.uclibc.org): + + #6938: mkuser script generates wrong password for new user in.. + +2014.02-rc3, Released February 25th, 2014 + + Minor fixes. + + Updated/fixed packages: aiccu, ala-lib, alsa-utils, binutils, + cairo, coreutils, dhcpcd, distcc, efl, evas, iputils, gdb, + gpsd, gst-fsl-plugins, icu, libcec, libcgi, libplayer, + libsecret, libsepol, libsigsegv, libtool, libv4l, + linux-headers, matchbox-lib, mpg123, ncftp, opencv, pcmanfm, + pixman, pv, qt, rt-tests, sawman, sconeserver, sdl, thrift, + tvheadend, util-linux, webkit, xscreensaver + + Issues resolved (http://bugs.uclibc.org): + + #4706: Removing .stamp_target_installed does not trigger... + #5030: busybox built fails if we use an override src dir... + #5420: Dbus and /var/run management + #5768: Not able to build ALSA-Lib for static build + #5774: Not able to build ALSA-Utils for static build + #6542: external python modules fail to compile to pyc if... + #6764: Support for kernel signed modules + #6794: Busybox compiled from buildroot hangs on pass from... + +2014.02-rc2, Released February 20th, 2014 + + Fixes all over the tree. Static linking / nommu fixes and + annotations for several packages. + + Updated/fixed packages: boost, busybox, collectd, coreutils, + dropbear, elfutils, feh, gcc, gst1-libav, imagemagick, iozone, + jimtcl, kexec, libvncserver, lvm2, lxc, mplayer, netsnmp, nut, + opencv, python, python3, qtuio, systemd, thrift, transmission, + uclibc, vlc, webkit + + Issues resolved (http://bugs.uclibc.org): + + #5450: AT91SAM9260 Bootstrap compilation problem + #5582: libiconv 1.14 failed to build + #5624: When building directfb, BR2_TARGET_LDFLAGS not used by.. + #5852: [2012.11] usb_modeswitch should depends of "BR2_PACK.. + #6218: binutils-2.23.2/gas fails with undefined reference to.. + #6236: binutils-2.23.2/bfd fails with undefined reference to.. + #6470: If the build directory is a child of /usr, the build.. + #6776: systemd error: static declaration of 'execvpe' follows.. + #6818: toolchainfile.cmake has absolut path references + +2014.02-rc1, Released February 11th, 2014 + + Fixes all over the tree and new features. + + Support for external packages/defconfigs (BR2_EXTERNAL). See + user manual for details. + + Cleanup of environment variable names for consistency. The + download directory location override (BUILDROOT_DL_DIR) is now + called BR2_DL_DIR. Likewise the name of the current .config is + renamed from BUILDROOT_CONFIG to BR2_CONFIG. Please update + your post build scripts if you use this! BUILD_DIR is now also + exported to the post build/image scripts. + + Toolchain: GCC 4.8 fix for ARM stack corruption, reverted + uClibc pread/pwrite backport as they cause issues on certain + architectures, new Linaro and Sourcery Codebench toolchains. + x86: Support for AMD Jaguar cores, SSE4.x, SH: SH2/SH3/SH3EB + variants removed, Microblaze: Internal toolchain support + + Legal infrastructure: Info is now split between host and + target packages, large number of license annotations. + + Lua: selection between lua 5.1 / 5.2, luarocks support + + Python: package infrastructure, many new packages. + + Defconfigs: Armadeus APF51 + Zedboard added, apf27, apf28, + beaglebone, microblaze, pandaboard, qemu, raspberry pi + updated. + + Updated/fixed packages: aiccu, alsa-lib, alsa-utils, + am33x-cm3, aumix, autoconf, automake, barebox, bellagio, + berkeleydb, binutils, bison, blackbox, bluez_utils, boost, + bustle, busybox, cairo, can-utils, ccache, ccid, cgilua, + cifs-utils, civetweb, cmake, collectd, connman, copas, + coreutils, coxpcall, cppzmq, cramfs, crda, cryptodev-linux, + cryptsetup, cups, czmq, dhcpcd, dhcpdump, dhrystone, dialog, + dmraid, dnsmasq, dosfstools, dropbear, dropwatch, dtc, duma, + dvb-apps, e2fsprogs, eglibc, eigen, elf2flt, erlang, ethtool, + f2fs-tools, ffmpeg, file, filemq, fio, flashrom, flex, + fluxbox, fontconfig freerdp, freetype, gadgetfs-test, gawk, + gcc, gdb, gdbm, gettext, git, glibc, gnupg, gnutls, gob2, + gpsd, grep, grub, gst-ffmpeg, gst-plugins-good, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gstreamer, gstreamer1, gtest, icu, iftop, + imagemagick, inadyn, infozip, iozone, iproute2, iptables, iw, + jpeg, jpeg-turbo, jq, kexec, kmod, knock, lbase64, lcdapi, + lftp, libcdaudio, libcgi, libcgicc, libcuefile, libcurl, + libdmtx, libdrm, libdvdnav, libdvdread, libegl, libevent, + libexif, libfcgi, libfreefare, libgles, libglib2, libllcp, + libmicrohttpd, libmpd, libnfc, libnl, libnss, libopenmax, + libopenvg, libpcap, libpfm4, libplayer, libpng, libqmi, + libreplaygain, libroxml, libsamplerate, libsexy, libsigsegv, + libsndfile, libsoc, libtasn1, libtorrent, libtpl, libupnp, + libusb, libusb-compat, libvorbis, libxcb, libxml2, libxmlpp, + libyaml, lighttpd, linknx, linux-firmware, linux-pam, live555, + lm_sensors, lmbench, lockdev, logrotate, lrzsz, ltrace, lua, + lua-ev, lua-msgpack-native, luabitop, luaexpat, luaexpatutils, + luafilesystem, luajit, luaposix, luasec, luasocket, + luasql-sqlite3, m4, matchbox, mdadm, minicom, mongrel2, mpc, + mpd, mpg123, mplayer, mtd, mysql, lvm2, mxml, ncurses, ne10, + neard, neardal, netsnmp, netstat-nat, network-manager, nodejs, + numactl, ofone, ola, olsr, omniorb, open2300, opencv, + openpowerlink, openssh, openssl, openvpn, oprofile, opus, + opus-tools, orbit, p11-kit, parted, pcre, pcsc-lite, perl, + php, poco, poppler, powervr, protobuf-c, psplash, python, + python-bottle, + python-{crc16,distutilscross,dpkt,id3,ipy,m2crypto,mad,meld}, + python-{netifaces,nfc,protobuf,pygame,pyparsing,pyro,pyzmq}, + python-{serial,setuptools}, qt, qt5base, qt5connectivity, + qt5declarative, qt5graphicaleffects, qt5jsbackend, + qt5multimedia, qt5quick1, qt5quickcontrols, qt5script, + qt5webkit, radvd, redis, rings, rng-tools, rpcbind, + rpi-firmware, rpi-userland, rt-tests, sam-ba, samba, sawman, + sconeserver, scons, sdl, sg3_utils, snappy, snmppp, + socketcand, spice, spice-protocol, sqlcipher, sqlite, squid, + sshfs, strace, subversion, sunxi-mali, supervisor, sysklogd, + sysprof, sysstat, systemd, sysvinit, taglib, tar, tcpdump, + ti-gfx, ti-utils, tinymembench, tn5250, trace-cmd, + transmission, tvheadend, tzdata, zxing, uboot, uboot-tools, + uclibc, udev, udpcast, ulogd, urg, usb_modeswitch_data, + util-linux, vala, valgrind, vorbis-tools, wavpack, wayland, + weston, wget, wireless-regdb, wireshark, wpa_supplicant, + wsapi, xavante, xapp_xdpyinfo, xapp_xrandr, xcb-proto, + xdriver_xf86-video-intel, xenomai, xkeyboard-config, xl2tp, + xlib_lib{FS,SM,X11}, + xlib_libX{au,aw,composite,cursor,damage,ext,fixes,font,i}, + xlib_libX{inerama,mu,pm,randr,render,res,t,tst,v,xf86dga}, + xlib_libXxf86vm, xlib_libdmx, xlib_libfontenc, + xlib_libpciaccess, xlib_xtrans, xproto_dri2proto, + xproto_{glproto,inputproto,presentproto,randrproto,videoproto}, + xproto_xextproto, xproto_xproto, xutil_util-macros, + xutil_makedepend, zic, zmqpp, zxing, zsh, zyre + + New packages: apitrace, avrdude, c-ares, ca-certificates, + cwiid, dbus-cpp, evemu, fping, fswebcam, gpm, gst1-libav, + haveged, intel-microcode, iucode-tools, jasper, joe, ktap, + lbreakout2, libass, libbluray, libcdio, libenca, libevdev, + libmbim, libmodplug, libnfs, libnftnl, libplist, libshairplay, + libsocketcan, ljsyscall, log4cplus, ltris, luainterpreter, + luarocks, minidlna, mmc-utils, modemmanager, mtr, net-tools, + python-configobj, python-dialog, python-json-schema-validator, + python-keyring, python-msgpack, python-posix-ipc, + python-pyasn, python-pycrypto, python-pysnmp, + python-pysnmp-apps, python-pysnmp-mibs, python-pyusb, + python-simplejson, python-tornado, python-versiontools, + rtmpdump, rtptools, smcroute, smstools3, tcpreplay, thrift, + ti-uim, tinyxml, tmux, vlc, wmctrl, xconsole + + Removed packages: autoconf, automake, ccache, cpanminus, lzma, + netkitbase, netkittelnet, pkg-config, squashfs3, ttcp, xstroke + + Issues resolved (http://bugs.uclibc.org): + + #65: new package: dbus c++ language bindings + #769: Update configuration menu for MIPS target + #2419: Add a bundle of Lua modules + #2629: Segmentation faults and division by zero in Grub on ext2 + #3811: Added auto-mount for USB and SD Card (mdev) (for 2011.05) + #4339: Allow override of DL_DIR in extract step + #4363: Make sure that copied linux and busybox defconfig are... + #4454: There should be simple way to update image, when chang... + #5024: grub fails to build for x86_64 target architecture + #5066: New-Package: net-tools + #5072: ncurses: add ncurses-progs to target + #5294: uclibc build ignores target CFLAGS and LDFLAGS + #5366: Login doesn't work with util-linux versions of login/agetty + #5378: dropbear Makefile broken + #5390: System banner - change to empty doesn't remove /etc/issue + #5780: spurious build failure because it cannot remove ubinize.cfg + #5798: ncurses-5.9 fails to compile statically + #5810: Buildroot 2012.11: Additional GCC option "-msoft-float" ... + #6080: Git fetch caching + #6092: Bootable ISO image creation seems to have stopped working.. + #6272: coreutils build fails + #6434: apply-patches.sh does not work recursively + #6446: eglibc doesn't install ldconfig to target + #6484: Add c-ares + #6596: Slow bootup if mdev is chosen + #6656: Build Qt5 with ccache + #6662: internal compiler error: Segmentation fault during making.. + #6722: Usage of $($(PKG)_DIR_PREFIX) is an issue with linux package + #6752: genext2fs: e2fsck must run before tunefs -U random + #6770: openssl 1.0.1f fails with ccache + #6830: Qt5: no fonts are installed + #6848: Qt5: no text shown in simple QWidget / frame-buffer setup + #6854: Update to Qt 5.2.1 + +2013.11, Released November 30th, 2013: + + Minor fixes. + + Updated/fixed packages: apr, binutils, dbus-python, dropwatch, + ecryptfs-utils, eglibc, gdb, gpsd, grantlee, hostapd, + iptables, qlibiscsi, libnspr, libnss, libpfm4, libtool, + lua-ev, lvm2, mplayer, qt, qt5, quagga, ruby, tinymembench, + tvheadend, util-linux, wpa_supplicant + + Issues resolved (http://bugs.uclibc.org): + + #1279: Buildroot compiled Busybox and Coreutils LFS issues + #2995: -fstack-protector-all causes ssh to SIGSEGV + #5570: Cannot compile software on the target machine + #6428: util-linux libmount segfaults with patch from buildroot + #6500: php fails to build for armel + #6554: gdb needs to dependents on host texinfo + #6692: GNU nano fails to compile for x86_64 + #6704: wpa_supplicant: fix wrong path to executable file in D-Bus + +2013.11-rc3, Released November 26th, 2013 + + Fixes all over the tree. + + Architecture: Mark MIPS I, II, III and IV as deprecated. + + Updated/fixed packages: beecrypt, dbus, e2fsprogs, libcap-ng, + libglib2, libroxml, libsigsegv, libvncserver, lxc, mdadm, + mongoose, nut, ola, omniorb, openssl, pcre, php, poco, + protobuf-c, pv, qt5base, ruby, schifra, squid, sunxi-mail, + swig, ti-gfx, tinymembench, uclibc, udisks, vim + +2013.11-rc2, Released November 18th, 2013 + + Fixes all over the tree. + + Defconfigs: qemu_arm_versatile, qemu_arm_nuri, sheevaplug: + Adjust kernel versions. + + Toolchain: avr32: fix for modern kernel headers + + Bootloader: Barebox updated to 2013.10.1 + + Updated/fixed packages: dhcp, e2fsprogs, gst1-plugins-bad, + libcurl, libvncserver, nano, pc, qt5base, squashfs, ttcp, + wayland, wvstreams + + Issues resolved (http://bugs.uclibc.org): + + #3601: DHCPD S80dhcp-server startup script issues + #6320: Fix kernel compile issue if BR2_LINUX_KERNEL_CUSTOM_GIT_VERS.. + #6416: Xenomai package, patch alternative + #6590: directfb-examples build failed whit linaro toolchain + +2013.11-rc1, Released November 12th, 2013 + + Architectures: Nios-II support, MIPS arch handling fixes + + Defconfigs: cubieboard2, freescale i.MX 6sololite evk, + sabre-sd, wandboard added, rpi renamed to raspberrypi_defconfig + + Toolchain: glibc support, upstream uClibc fixes, uClibc 0.9.31 + for avr32, crosstool-ng backend removed, external musl + toolchain support, gcc 4.8.2, updated Linaro external + toolchains. Fortran and objective-C support deprecated, + mudflap support + + Bootloaders: U-Boot: u-boot.imx support, version bumps + + Linux: use kmod instead of module-init-tools + + System: default to devtmpfs for /dev + + Infrastructure: Make 3.82 fixes, locales generation fixes, CVS + download support, post-rsync hooks + + Fs: u-boot image support for cpio + + Updated/fixed packages: aircrack-ng, alsamixergui, apr, + apr-util, atk, automake, bellagio, berkeleydb, bind, binutils, + bison, boost, busybox, can-utils, ccache, ccid, cgilua, + chrony, cifs-utils, cjson, collectd, connman, conntrack-tools, + copas, cppcms, cppzmq, czmq, dash, dbus, dhcpcd, diffutils, + directfb, dmidecode, dnsmaqs, docker, dosfstools, dropbear, + dropwatch, ebtables, eglibc, elf2flt, empty, enchant, erlang, + ethtool, fbgrab, fbv, fdk-aac, feh, ffmpeg, file, findutils, + fltk, fmtools, freetype, gdk-pixbuf, gettext, git, + glib-networking, gmp, gnupg, gnutls, gpu-viv-bin-mx6q, gsl, + gstreamer, gstreamer1, gst1-plugins-{bad,base,good,ugly}, + gtest, gutenprint, hplip, i2c-tools, icu, ifplugd, + imagemagick, iozone, iproute2, ipset, iptables, iw, jamvm, + jansson, jpeg-turbo, kismet, kmod, lcms2, libassuan, libcap, + libcap-ng, libcdaudio, libcec, libcue, libcurl, libdrm, + libedit, libevas, libevent, libfreefare, libfuse, + libgpg-error, libiconv, liblog4c-localtime, libmicrohttpd, + libmnl, libmodbus, + libnetfilter_{acct,conntrack,cthelper,cttimeout,log,queue}, + libnfnetlink, libnl, libpng, libqmi, libqrencode, libroxml, + libsecret, libsigsegv, libsoup, libtirpc, libunwind, libusb, + libvpx, lighttpd, linphone, linux-pam, lmbench, + lockfile-progs, log4cxx, logrotate, logsurfer, ltp-testsuite, + ltrace, luacrypto, luaposix, lvm2, m4, matchbox-lib, + media-ctl, mediastreamer, minicom, minidlna, mongoose, monit, + mpc, mpd, mpg123, mplayer, mrouted, mtdev, mutt, mysql_client, + nano, ncftp, ndisc6, neard, neardal, neon, net-snmp, netatalk, + netcat, netkitbase, netperf, netplug, nettle, nfacct, + nfs-utils, ngircd, ngrep, noip, nuttcp, olsr, openssh, opkg, + oprofile, opus-tools, orc, ortp, pciutils, pcre, pcsc-lite, + perf, perl, perl-cross, php, picocom, pkgconf, polarssl, + poppler, pppd, proftpd, protobuf, proxychains-ng, pulseaudio, + pv, qemu, qt, qt5base, qt5webkit, quagga, radvd, redis, + rpi-{firmware,userland}, rrdtool, rsync, rtorrent, ruby, + samba, scons, screen, sdl_sound, ser2net, setserial, + smartmontools, socat, socketcand, sqlcipher, sqlite, squid, + stress, strongswan, stunnel, sudo, syslinux, systemd, + sysvinit, tcl, ti-gfx, time, transmission, tremor, tslib, + tstools, tvheadend, tzdata, uboot-tools, uclibc, udpcast, + uemacs, ulogd, usb_modeswitch{,_data}, util-linux, vala, + valgrind, vde2, vorbus-tools, vpnc, vsftpd, vtun, wayland, + webkit, webp, webrtc-audio-processing, weston, wget, + wireshark, wsapi, xavante, xdriver_xf86-video-geode, xenomai, + xinetd, xlib_libpthread-stubs, xl2tp, xmlstarlet, + xserver_xorg-server, xz, zeromq, zic, zmqpp + + New packages: aiccu, autossh, bc, civetweb, cppdb, cryptsetup, + duma, eigen, harfbuzz, igmpproxy, iputils, jq, knock, kobs-ng, + lesstif, libcgroup, libsepol, libsoc, libssh2, luasec, luasql, + lxc, nut, ola, omniorb, openpowerlink, orbit, p910nd, psplash, + python-crc16, python-ipy, python-pyzmq, qt5sensors, + qt5serialport, qt5x11extras, snmppp, subversion, tcping, + trace-cmd, xscreensaver, zsh + + Removed packages: module-init-tools + + Issues resolved (http://bugs.uclibc.org): + + #1138: Buildroot fails to build packages if BR2_GCC_SHARED_LIBGCC=y + #5408: qt build failure with Sourcery CodeBench ARM 2010.09 + #5630: makefile error with toolchain helpers.mk + #5672: htop: remove X11 stuff + #5678: linux.mk: linux-menuconfig fails + #5696: python3 installation is too large, patches from python2 needed + #5978: Erlang does not build for arm in 2013.02-rc3 + #6392: Extended ARM uImage kernel options + #6404: Buildroot's coreutils 'uname -p' reports 'Unknown' on recent.. + #6428: util-linux libmount segfaults with patch from buildroot + #6452: eglibc from Linaro 2013.07 not copied to target correctly + #6566: PHP segfault when crosscompiled to mips64 - patch included + #6572: [PowerPC] Buildroot uses wrong external toolchain libraries.. + #6578: udisks package broken + #6602: ebtables 64 bit kernel + 32 bit userland alignment error.. + #6608: ebtables missing ethertypes - fix included + #6620: Sysvinit package missing killall5 and symlinks - patch included + #6632: CMake use host pkg-config + #6638: pkgconf doesn't download + #6644: "all" target doesn't work in out-of-tree builds + #6650: Segmentation fault when trying to build latest buildroot + #6668: iptables limit module alignment problem on mips64 + +2013.08, Released August 31th, 2013: + + Minor fixes. + + Documentation build fixed. + + Updated/fixed packages: ltrace, strongswan + +2013.08-rc3, Released August 29th, 2013: + + Fixes all over the tree. + + External toolchain lib32/lib64 handling, ABI name for EABIhf, + misc fixes for generatelocales, apply-patches and module + stripping. + + Top level menu names reordered and renamed for clarity. + + Updated/fixed packages: acl, attr, bash, dbus, directfb, + dvb-apps, kexec, kmod, libbsd, linux-fusion, mesa3d, minidlna, + openssh, openssl, pulseaudio, python-setuptools, qt5, + qt5webkit, redis, strongswan, sunxi-mali + + Issues resolved (http://bugs.uclibc.org): + + #6464: dbus-daemon-launch-helper needs setuid + +2013.08-rc2, Released August 16th 2013: + + Documentation improvements. + + External toolchains fixes. + + Updated/fixed packages: aircrack-ng, bash, boost, cairo, + cppcms, eglibc, ffmpeg, gcc, git, gnupg, imagemagick, libcec, + libffi, libgcrypt, linux, linux-headers, ltrace, netatalk, + opencv, opengl, readline, samba, strongswan, sunxi-cedarx, + uclibc, udev, wayland, webkit, zeromq. + + Issues resolved (http://bugs.uclibc.org): + + #6440: typo in ffmpeg makefile + +2013.08-rc1, Released August 5th, 2013: + + Architectures: + - improved support for floating point on ARM and Thumb/Thumb2 + - support for ARM OABI removed + + Toolchains: + - support added for Sourcery CodeBench ARM and MIPS 2013.05 + - Linaro ARM and Aarch64 toolchains updated + - support added for the Arago ARMv5 and ARMv7 toolchains + - gcc 4.8.x version bumped + - support for installing both FDPIC and FLAT libraries on + Blackfin + - support for uClibc 0.9.31 removed, + - convert the internal toolchain backend to use the package + infrastructure + - support added for eglibc in the internal toolchain backend + - toolchain components for the ARC architecture updated and + gdb for ARC added. + - support for Blackfin in the internal toolchain fixed + + Defconfigs: beaglebone_defconfig updated, new defconfig for + CubieBoard, for Olimex mx233 Olinuxino, for Calao Systems + TNY-A9G20-LPW. + + A number of packages have been fixed to use the + _CONFIG_SCRIPTS mechanism to get their -config shell + script installed and modified properly. Licensing informations + has been added to a number of packages. + + Use XZ tarballs for a number of packages. + + Noticeable package changes/additions: + - The glib2/libgtk2/webkit stack has been updated to recent + versions. + - Support for Gstreamer 1.x has been added. + - OpenGL support for TI OMAP platforms has been added. + - OpenGL support for Allwinner platforms has been added. + - OpenMAX support for RasberryPi has been added. + + Updated/fixed packages: acl, attr, autoconf, avahi, barebox, + bind, binutils, busybox, bwm-ng, bzip2, cifs-utils, colletctd, + cpanminus, cups, curl, dash, dbus, dhcp, directfb, + directfb-examples, dnsmasq, dosfstools, dropbear, dtc, + e2fsprogs, ed, efl, enlightenment, erlang, ethtool, fbgrab, + fftw, firmware-imx, flot, fltk, freetype, gawk, gdk-pixbuf, + gettext, gmp, gnutls, gsl, gutenprint, gvfs, gzip, haserl, + hiawatha, httping, icu, imagemagick, imlib2, imx-lib, + intltool, iozone, ipset, iptables, jquery, jquery-keyboard, + jquery-sparkline, kmod, less, libart, libcdaudio, libcgicc, + libesmtp, libftdi, libfuse, libglib2, libgtk, libgtk2, libidn, + libiqrf, liblog4c-localtime, libnspr, libnss, libpcap, + libroxml, libserial, libsigsev, libsoup, libtool, libtpl, + libvncserver, libxml2, linphone, lm_sensors, logrotate, + ltrace, lttng, luafilesystem, luajit, minicom, monit, mpg123, + mtd, mutt, mxml, neard, netatask, netsnmp, nettle, + network-manager, nodejs, nss-mdns, openssh, openswan, openvpn, + opkg, opus, pcre, perl-cross, php, pixman, poco, polarssl, + pulseaudio, pv, python, python3, qt, qt5, qt5declarative, + qt5jsbackend, qt5quick1, readline, rpi-firmware, ruby, samba, + sane-backends, sconeserver, sdl_image, sdparm, ser2net, + socketcand, sqlite, squid, strace, tcl, tcpdump, tinyhttpd, + tvheadend, tzdata, uboot, udpcast, usb_modeswitch, + usb_modeswitch_data, usbutils, webkit, wireshark, wvstreams, + xapp_luit, xapp_xmodmap, xenomai, xfsprogs, xlib_libX11, zic, + zlib. + + New packages: a10disp, aespipe, am33x-cm3, cppcms, dhcpcd, + dropwatch, dtc, ecryptfs-utils, eglibc, elf2flt, fdk-aac, + gcc-final, gcc-initial, gcc-intermediate, git, + gpu-viv-bin-mx6q, gst1-plugins-bad, gst1-plugins-base, + gst1-plugins-good, gst1-plugins-ugly, gst-omx, + gst-plugin-x170, gstreamer1, jimtcl, lbase64, libassuan, + libbsd, libcec, libdvbsi, libedit, libgpgme, libqmi, + libqrencode, libsvg, libsvg-cairo, libunwind, libvpx, + linux-headers, lockdev, luabitop, luacrypto, lua-ev, + luaexpatutils, msgpack, ocrad, on2-8170-libs, + on2-8170-modules, p11-kit, pax-utils, ptpd, ptpd2, + python-pyro, ramspeed/smp, snappy, strongswan, sunxi-boards, + sunxi-cedarx, sunxi-mali, sunxi-tools, ti-gfx, tinymembench, + tree, tstools, uclibc, w_scan. + + Issues resolved (http://bugs.uclibc.org): + + #4718: python (built for powerpc) distutils has paths to host + compiler toolchain + #5516: appended device tree blobs on uImage fails + #6302: Versions of packages retrieved from github.com are wrong + #6308: dosfstools download link is wrong + #6326: Dropbear: Add options to allow better config for + different target devices (e.g. routers) + #6338: Wrong download link for minicom package + #6344: Wrong handling of license text files with same name and + different directory + #6374: gnutls package broken if linux cryptodev module + selected + #6410: omap3_beagle has uimage error load address error + +2013.05, Released May 31th, 2013: + + Minor fixes. + + External toolchain wrapper fix for if host/usr/bin is placed + in the patch. + + Updated/fixed packages: acpid, at91bootstrap, czmq, elf2flt, + flex, jamvm, kmod, libplayer, libtirpc, libv4, + lttng-babeltrace, opengl, qt5jsbackend, udpcast, wvstreams + + Issues resolved (http://bugs.uclibc.org): + + #4868: Buildroot compile failure for toolchain/gdb-7.4/intl/reloc... + #4988: flex and m4 problems + #5912: obsolete CVS files + +2013.05-rc3, Released May 25th, 2013: + + Minor fixes. + + Updated/fixed packages: aircrack-ng, bellagio, boost, crda, + dvb-apps, flot, libatomic_ops, libeXosip2, libosip2, libxml2, + mongrel2, poco, portaudio, pptp-linux, tvheadend, urg, weston, + wireshark + +2013.05-rc2, Released May 15th, 2013: + + Fixes all over the tree. + + Default number of parallel jobs is now number of CPUs + 1. + + Defconfigs: Add Telit EVK-PRO3, AT91SAM9260-EK Nand flash. + + Updated/fixed packages: aircrack-ng, busybox, cairo, + classpath, curlftpfs, czmq, dbus, f2fs-tools, fan-ctrl, + filemq, gst-plugin-bad, gutenprint, hplip, json-c, + libatomic_ops, libcurl, libdrm, libglib2, libnspr, libnss, + libsha1, libsigsegv, libxcb, linknx, linux-pam, lttng-modules, + lttng-tools, matchbox-lib, mcookie, mesa3d, neon, pixman, + pulseaudio, python-nfc, qt5imageformats, quota, openssl, + sconeserver, strace, sylpheed, wvstreams, + xapp_{appres,bdftopcf,beforelight,bitmap,edires,fonttosfnt}, + xapp_{fslsfonts,fstobdf,iceauth,ico,listres,luit,mkfontdir}, + xapp_{mkfontscale,oclock,rgb,rstart,scripts,sessreg,setxkbmap}, + xapp_{showfont,smproxy,twm,viewres,x11perf,xauth,xbacklight}, + xapp_x{biff,calc,clipboard,clock,cmsdb,cursorgen,dbedizzy,ditview}, + xapp_x{dm,dpyinfo,driinfo,edit,ev,eyes,f86dga,fd,fontsel,fs,fsinfo}, + xapp_x{gamma,gc,host,input-calibrator,input,kbcomp,kbevd,kbprint}, + xapp_x{kbutils,kill,load,logo,lsatoms,lsclients,lsfonts,mag,man}, + xapp_x{message,mh,modmap,more,pr,prop,randr,rdb,refresh,set,setmode}, + xapp_x{setpointer,setroot,sm,stdcmap,vidtune,vinfo,wd,wininfo,wud}, + xcb-util, xcursor-transparent-theme, xdata_xbitmaps, + xdata_xcursor-themes, + xdriver_xf86-input-{evdev,joystick,keyboard,mouse,synaptics}, + xdriver_xf86-input-{tslib,vmmouse,void}, + xdriver_xf86-video-{ark,ast,ati,cirrus,dummy,fbdev,geode,glide}, + xdriver_xf86-video-{glint,i128,intel,mach64,mga,neomagic,newport}, + xdriver_xf86-video-{nv,openchrome,r128,savage,siliconmotion,sis}, + xdriver_xf86-video-{tdfx,tga,trident,v4l,vesa,vmware,voodoo,wsfb}, + xfont_encodings, xfont_font-adobe-{100,75}dpi, + xfont_font-utopia-{100dpi,75dpi,type1}, + xfont_font-{alias,arabic-misc,bh-100dpi,bh-75dpi}, + xfont_font-bh-lucidatypewriter-{100,75}dpi, xfont_font-bh-{ttf,type1}, + xfont_font-bitstream-{100dpi,75dpi,type1}, xfont_font-cronyx-cyrillic, + xfont_font-{cursor,daewoo,dec,isas,jis,micro}-misc, + xfont_font-ibm-type1, xfont_font-misc-{cyrillic,ethiopic,meltho,misc}, + xfont_font-{mutt,schumacher}-misc, + xfont_font-{screen-cyrillic,sony-misc,sun-misc,util}, + xfont_font-winitzki-cyrillic, xfont_font-xfree86-type1, + xlib_lib{FS,ICE,SM,X11,XScrnSaver,Xau,Xaw,Xcomposite,Xcursor}, + xlib_libX{damage,dmcp,ext,fixes,font,ft,i,inerama,mu,pm,randr}, + xlib_libX{render,res,t,tst,v,vMC,xf86dga,xf86vm}, + xlib_lib{dmx,fontenc,pciaccess,pthread-stubs,xkbfile}, xlib_xtrans, + xproto_{applewm,bigreqs,composite,damage,dmx,dri2,fixes}proto, + xproto_{fontcache,font,gl,input,kb,randr,record,render}proto, + xproto_{resource,scrnsaver,video,windowswm,xcmisc,xext}proto, + xproto_{xf86bigfont,xf86dga,xf86dri,xf86vidmode,xinerama,x}proto, + xserver_xorg-server, xutil_{makedepend,util-macros} + + Readded Packages: xapp_xinit + + Issues resolved (http://bugs.uclibc.org): + + #5054: amd64: cannot find init - due to missing /lib64 folder + +2013.05-rc1, Released May 8th, 2013: + + Architectures: ARC support, Blackfin support, FLAT binary + format, ARM: Drop old CPU variants, add fa526/626, Marvell PJ4 + + Toolchains: Add new Microblaze external toolchains, Linaro + ARM/Aarch64 updates, GCC 4.6.4 / 4.7.3 / 4.8.0 added to + internal toolchain, default to GCC 4.7.x. Internal + Crosstool-ng backend deprecated. + + Defconfigs: Add Atmel at91sam9g45m10ek, freescale mpc8315erdb + & p1010rdb, Armadeus apf27 / apf28, Openblocks A6, Raspberry + pi, gnublin board. + + FS: LZO and XZ compression methods, extra ubifs options, + ext2 rev 0/1 and ext3/4 support. + + Patch handling: apply-patches now has .patch.xz support, + Patch logic reworked as discussed during Febrary dev days: + http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013 + + -rsync now excludes version control files. + + linux: uImage load address for ARM multiplatform kernels + + Infrastructure for multiple OpenGL / ES / EGL / OpenVG + providers, similar to how libjpeg / libjpeg-turbo is handled. + + Infrastructure for packages to add system users. + + kconfig: updated to 3.9-rc2, support make olddefconfig + + Updated/fixed packages: alsa-lib, alsa-utils, apr, apr-util, + argp-standalone, at, at91bootstrap, audiofile, aumix, avahi, + bash, blackbox, bind, binutils, bison, boost, bridge-utils, + busybox, ccache, cifs-utils, cmake, collectd, connman, + conntrack-tools, cpanminus, crosstool-ng, diffutils, directfb, + directfb-examples, divine, dmalloc, dnsmasq, dosfstools, + dropbear, e2fsprogs, ebtables, eeprog, erlang, ethtool, + fb-test-app, fbset, feh, ffmpeg, file, flex, flot, foomatic, + fxload, gd, gdb, gdisk, genimage, gettext, gmp, gnuchess, + gnutls, gob2, gperf, gpsd, gstreamer, haserl, hiawatha, htop, + httping, icu, inotify-tools, intltool, iproute2, ipset, + iptables, iw, jpeg, jquery, jquery-{sparkline,validation}, + json-c, kbd, kexec, kismet, kmod, lcdproc, libarchive, + libatasmart, libcap, libconfig, libconfuse, libcurl, libdrm, + libeet, libev, libevas, libeXosip2, libffi, libfribi, libfuse, + libgcrypt, libglib2, libgtk2, libid3tag, libmicrohttpd, + libnetfilter_acct, libnetfilter_conntrack, libnl, libpcap, + libplayer, libsigc, libv4l, libxcb, linenoise, linux-pam, + lm_sensors, ltp-testsuite, luajit, lzop, madplay, make, mdadm, + mediastreamer, memtester, mesa3d, + mobile-broadband-provider-info, monit, mpd, mpfr, mpg123, + mrouted, msmtp, nbd, ncurses, ndisc6, neard, neardal, neon, + netperf, netsnmp, nettle, nfacct, ntfs-3g, ofono, olsr, + omap-u-boot-utils, openssh, openssl, openswan, openvpn, + oprofile, orc, patch, pciutils, pcre, perl, php, poco, + polarssl, proftpd, psmisc, pulseaudio, python, + python-{bottle,netifaces,serial,setuptools}, qt, quagga, + quota, radvd, rpi-firmware, rpi-userland, rt-tests, sam-ba, + samba, sawman, sdl, ser2net, smartmontools, socat, socketcand, + speex, squid, stress, stunnel, sudo, syslinux, sysstat, + sysvinit, tcl, tcprelay, tinyhttpd, tslib, tvheadend, + uboot-tools, udev, ulogd, util-linux, vala, vtun, webkit, + xapp_{iceauth,luit,makefontscale,sessreg,setxkbmap,smproxy}, + xapp_{xauth,xcmsdb,xdpyinfo,xev,xgamma,xhost,xinput,xkbcomp}, + xapp_{xkbevd,xlsatoms,xlsclients,xmodmap,xpr,xprop,xrandr,xrdb}, + xapp_{xset,xwd,xwininfo}, xcb-{proto,util}, + xdriver_xf86-input-{evdev,joystick,keyboard,mouse,synptics}, + xdriver_xf86-input-{tslib,vmmouse,void}, + xdriver_xf86-video-{ark,ast,ati,cirrus,dummy,geode,glide,glint}, + xdriver_xf86-video-{i128,intel,mach64,mga,neomagic,newport}, + xdriver_xf86-video-{openchrome,r128,savage,siliconmotion,sis}, + xdriver_xf86-video-{tdfx,trident,vesa,vmware,wsfb}, xenomai, + xfont, xinetd, xkeyboard-config, xlib_lib{FS,ICE,SM,X11}, + xlib_libX{scrnSaver,au,aw,cursor,dmcp,ext,fixes,font,ft,i}, + xlib_libX{inerama,mu,pm,randr,res,tst,v,vMC,xf86dga,xf86vm}, + xlib_lib{dmx,fontenc,pciaccess,xkbfile}, xlib_xtrans, + xproto_{applevm,bigreqs,dri2,fonts,gl,input,kbd,record}proto, + xproto_{resource,scrnsaver,xcmisc,xext,x}proto, + xserver_xorg-server, xutil_makedepend, xz, zeromq + + New packages: aircrack-ng, bcusdk, chrony, crda, + cryptodev-linux, cppzmq, czmq, dtach, enscript, exfat, + exfat-utils, f2fs-tools, fan-ctrl, filemq, foomatic-filters, + genimage, genpart, glibmm, gnuplot, gtest, gutenprint, hplip, + iozone, jansson, jhead, jquery-keyboard, jquery-ui, + jquery-ui-themes, json-glib, json-javascript, lcms2, libpfm4, + libpthsem, libserial, libsigsegv, libtasn1, libwebsockets, + libxkbcommon, libxml++, linknx, log4cxx, mongoose, mongrel2, + mtools, ne10, nmap, nodejs, openobex, openpgm, poppler, + protobuf-c, python-m2crypto, python-thrift, qjson, qt5base, + qt5declarative, qt5graphicaleffects, qt5imageformats, + qt5jsbackend, qt5multimedia, qt5quick1, qt5script, qt5svg, + qt5webkit qt5xmlpatterns, rapidjson, redis, swig, texinfo, + tzdata, urg, ussp-push, wayland, webp, weston, wireless-regdb, + wireshark, wvdial, wvstreams, xcb-util-image, xcb-util-wm, + xcursor-transparent-theme, zic, zmqpp, zyre + + Removed packages: microperl, ocf-linux, xapp_xinit, + xapp_xplsprinters, xapp_xprehashprinterlist, + xfont_font-bitstream-speedo, + xlib_lib{Xfontcache,XprintAppUtil,XprintUtil,Xp,oldX,xkbui}, + xproto_{print,xf86rush}proto + + Deprecated packages: vala + + Issues resolved (http://bugs.uclibc.org): + + #1291: Add support for Faraday 526 arm processor (fa526) + #2683: cups does not install correctly to target + #3313: mesa3d fails to build + #5186: initramfs/cpio should support lzo compression + #5636: agetty - cannot get controlling tty error - need updated... + #5906: collectd client headers not exported + #5966: bison unnecessarily required as build dependency + #6140: --enable-fileinfo not applied for php package + #6164: openvpn usage of ip tool from Busybox + +2013.02, Released February 28th, 2013: + + Misc manual updates. + + Updated/fixed packages: busybox, collectd, flashbench, + libgtk2, libupnp, mii-diag, quota + +2013.02-rc3, Released February 26th, 2013 + + Minor fixes. + + Updated/fixed packages: conntrack-tools, dialog, + enlightenment, haserl, keyutils, libfif, libmad, + linux-firmware, linux-fusion, matchbox-desktop, matchbox-wm, + ruby, spawn-fcgi, vtun + + Issues resolved (http://bugs.uclibc.org): + + #5960: fusion.ko driver does not install to target rootfs + +2013.02-rc2, Released February 19th, 2013 + + Fixes all over the tree. + + Various manual updates and fixes. + + Updated/fixed packages: busybox, collectd, gesftpserver, + glib-networking, gnutls, inotify-tools, libcurl, libffi, + libglib2, libtorrent, libvorbis, neard, network-manager, + ntfs-3g, openssl, qt, rpi-userland, rtorrent, thttpd, vim. + + Issues resolved (http://bugs.uclibc.org): + + #5906: collectd client headers not exported + +2013.02-rc1, Released February 10th, 2013 + + Toolchain: Crosstool-ng 1.17.0, default to GCC 4.6.3, target + libraries install fixed. Add Linaro ARM + 2012.11/2012.12/2013.01, AArch64 12.11/12.12/13.01. Sourcery + CodeBench MIPS 2012.03/09. Infrastructure to warn about + missing 32bit support for binary toolchains. Toolchain wrapper + is now relocatable. Add GDB 7.5.1 / Remove 6.8 / 7.0 / + 7.1. Deprecate uClibc 0.9.31. + + Architecture: Xtensa fixes, add missing powerpc variants, arm + 1136jf-s rev1, add A5/A15, neon support toggle, OABI + deprecated. Sparc: drop old unused variants + + Bootloaders: At91bootstap: fix upstream URL, Barebox: add + 2012.12/2013.01/2013.02, remove 2012.08/09/10, lzop fixes, + environment image support, U-Boot: add 2013.01.01 + + Linux: fix appended dtb handling for v3.8+ kernels, support + multiple device trees + + Defconfigs: calao USB-A9260, snowball, QEMU PPC440 on ML507 + board, QEMU ARM Exynos4210, Kernel version in QEMU defconfigs + updated, at91rm9200df: misc fixes. Lock kernel headers to + match kernel. + + Infrastructure: Git download fixes. Toolchain make target + renamed from 'cross' to 'toolchain'. Eclipse integration + support. Option to set root password, post image scripts, + config scripts handling. + + Updated/fixed packages: alsa-lib, argp-standalone, argus, + arptables, atk, audiofile, axel, beecrypt, bind, bison, + bluez_utils, boost, cairo, can-utils, bmon, boa, busybox, + cairo, ccache, cdrkit, cifs-utils, cjson, cmake, collectd, + connman, coreutils, cpanminus, cups, dbus, dhcp, dialog, + diffutils, directfb, distcc, divine, dnsmasq, docker, + dosfstools, dstat, e2fsprogs, ebtables, ed, empty, ethtool, + expedite, fbset, fbv, ffmpeg, flex, fltk, fluxbox, freetype, + gadget-test, gawk, gdb, genext2fs, gettext, giblib, + glib-networking, gmp, gmpc, gnupg, gnutls, gpsd, + gst-plugins-{bad,base,good}, gstreamer, gzip, haserl, hdparm, + heirloom-mailx, hiawanta, hostapd, icu, imagemagick, imlib2, + inadyn, infozip, iproute2, ipset, iptables, iw, jpeg, jquery, + jquery-sparklines, jqeury-validation, kismet, kmod, lame, + libao, libcap, libcurl, libdvdnav, libdvdread, libecore, + libedbus, libedje, libeet, libefreet, libeina, libeio, + liberation, libelementary, libembryo, libethumb, libev, + libevas, libffi, libfribidi, libfuse, libgcrypt, libglib2, + libgpg-error, libgtk2, libhid, libidn, libmicrohttpd, libmpd, + libnl, libnspr, libnss, libogg, libpcap, libplayer, libpng, + libroxml, librsvg, libseccomp, libsigc, libsndfile, libungif, + libupnp, liburcu, libusb-compat, libvncserver, libvorbis, + libxml2, libxslt, lighttpd, links, linux-firmware, + linux-fusion, ltp-testsuite, ltrace, + lttng-{babel,libust,modules,tools}, lvm2, lua, luajit, lzop, + matchbox-{desktop,lib}, mdadm, metacity, midori, minicom, mpd, + mpfr, mplayer, mtd, mysql_client, ncurses, neon, netatalk, + networkmanager, nspr, ntfs-3g, nuttcp, ofone, olsr, openssl, + openvpn, opkg, oprofile, opus, opus-tools, orc, ortp, pango, + pciutils, pcmanfm, pcre, pcsc-lite, perl, php, pixman, + pkgconf, polarssl, pptp-linux, proxychains, pulseaudio, + python, python3, qemu, qextserialport, qt, quagga, radvd, + readline, rng-tools, rt-tests, rubix, ruby, sam-ba, samba, + sane-backends, sconeserver, scons, screen, sdl, sdl_gfx, + sdl_mixer, sdl_ttf, sdparm, sed, ser2net, smartmontools, + speex, sqlite, squid, sshfs, strace, sudo, sylpheed, tn5250, + taglib, tar, torsmo, transmission, tslib, uboot-tools, ulogd, + usb_modeswitch, util-linux, valgrind, vim, vsftpd, wavpack, + webkit, wipe, wireless_tools, wpa_supplicant, xapp_xinit, + xapp_xinput-calibrator, xapp_xman, xapp_xmh, xlib_libX11, + xlib_libXdmcp, xlib_libXft, xlib_libpthread-stubs, + xlib_xtrans, xproto_xcmiscproto, xproto_xextproto, + xserver_xorg-server, xstroke, xvkbd, xz + + New packages: b43-firmware, b43-fwcutter, bustle, + cache-calibrator, cegui06, celt051, classpath, curlftpfs, + dvb-apps, dvbsnoop, elfutils, enlightenment, firmware-imx, + flashbench, gd, gesftpserver, gst-fsl-plugins, httping, iftop, + imx-lib, jamvm, jpeg-turbo, keyutils, libatasmart, libcofi, + libebml, libevas-generic-loaders, libfslcodec, libfslparser, + libfslvpuwrap, libgsasl, libiscsi, libmatroska, libmcrypt, + libmhash, libqwt, libseccomp, libsha1, linenoise, mcrypt, + media-ctl, ncdu, neard, neardal, nettle, perf, polkit, + proxychains, python-bottle, python-pyparsing, rpi-firmware, + rpi-userland, sg3_utils, slirp, snowball-hdmiservice, spice, + spice-protocol, tcllib, tvheadend, udisks, usbredir + ux500-firmware, vde2, xcb-utils-keysyms, yavta, + zd1211-firmware + + Removed packages: customize, xdriver_xf86-input-{acecad,aiptek}, + xdriver_xf86-video-{apm,chips,i740,rendition,s3,s3virge,sisusb}, + xdriver_xf86-video-sun{cg14,cg3,cg6,ffb,leo,tcx}, + xdriver_xf86-video-{tsend,xgi,xgixp} + + Deprecated packages: xstroke + + Issues resolved (http://bugs.uclibc.org): + + #4237: building shared openssl w/-Os fails due to gcc bug + #5690: python3 does not obey to BR2_PACKAGE_PYTHON3_PYC_ONLY=y + #5602: python3 should install a "python" symbolic link + #5846: Extra slash added to last slash in URL + +2012.11.1, Released January 3rd, 2013: + + Toolchain: Fixed non-largefile builds on recent Ubuntu + versions. + + Arch: fix missing x86/generic handling, Build for Xtensa with + longcalls option. + + Updated/fixed packages: dosfstools, qt + +2012.11, Released December 2nd, 2012: + + Git shallow clone fix for older git version. + + Updated/fixed packages: ctuio, libtool + + Issues resolved (http://bugs.uclibc.org): + + #5726: List all the available hook points + +2012.11-rc2, Released November 30th, 2012: + + Minor fixes around the tree. + + Various manual updates and fixes. + + Add checks for legacy features. + + Updated/fixed packages: acpid, alsa-lib, arptables, binutils, + busybox, ccache, cjson, cramfs, directfb, flex, fluxbox, gdb, + hiawatha, igh-ethercat, imagemagick, imlib2, lcdproc, + libdaemon, libecore, libhid, libmad, libpcap, libsigc, libusb, + linux-fusion, matchbox, ocf-linux, owl-linux, python, rrdtool, + scons, strace, sylpheed + + Issues resolved (http://bugs.uclibc.org): + + #5732: Error : package/alsa-lib/alsa-lib.mk + +2012.11-rc1, Released November 17th, 2012 + + Fixes all over the tree and new features. + + Defconfigs: use u-boot 2012.10 on at91 and beaglebone, + sheevaplug + qemu: bump kernel version, add qemu-mips64-malta + + nitrogen6x defconfigs. + + Bootloaders: add u-boot 2012.07/10, ais target format, add + barebox 2012.08/09/10/11, linker overlap issue fix for + at91bootstrap, mxs-bootlets updated for new Barebox versions. + + Toolchains: binutils 2.23.1, gcc 4.7.2, default to gcc 4.6.x, + Codebench arm/sh/x86 2012.03/09, Linaro 2012.08/09/10. + Libtirpc support for modern glibc variants. Toolchain on + target has been deprecated. + + Initial Aarch64 support, Xtensa support re-added. + + Infrastructure: Use shallow git clone when possible, use + tarballs rather than git URLs for github. Moved to pkgconf + rather than pkg-config. System directory added, default + skeleton/device tables moved. More than 1 post-build script + can now be used. output/target now contains a + THIS_IS_NOT_YOUR_ROOT_FILESYSTEM warning, to help people + understand how to (not) use it. + + Manual has been reworked and extended. + + Legal-info: Lots of package annotations, CSV file fixes, + _LICENSE / _REDISTRIBUTE splitup, per-package hooks. + + Updated/fixed packages: acpid, alsa-lib, alsa-utils, + alsamixergui, attr, autoconf, automake, bash, bind, binutils, + bison, blackbox, bluez-utils, busybox, cairo, can-utils, + cifs-utils, cjson, cmake, collectd, connman, conntrack-tools, + coreutils, cups, cvs, dbus, dhcp, directfb, dmalloc, dnsmasq, + dropbear, e2fsprogs, ethtool, fbdump, feh, fftw, file, + flashrom, fluxbox, gdb, gdisk, gdk-pixbuf, genext2fs, gettext, + gnutls, gpsd, gqview, grep, gsl, gst-plugins-{bad,good}, + hdparm, hiawatha, hostapd, input-tools, iproute2, ipset, + iptables, iw, json-c, kexec, kmod, lcdproc, leafpad, less, + libcurl, libdrm, libdvdnav, libdvdread, libffi, libfuse, + libglib2, libhid, liblockfile, libmad, libmbus, libmnl, + libnetfilter_{acct,conntrack,cthelper,cttimeout,queue}, + libnfc, libnfc-llcp, libnfnetlink, libnl, libnspr, libnss, + libpcap, libplayer, libtool, libtorrent, liburcu, libv4l, + libxcb, libxml2, libxslt, links, linux-firmware, lm-sensors, + lmbench, lockfile-progs, logrotate, lshw, lsof, + lttng-babeltrace, lttng-tools, lua, luajit, mesa3d, microperl, + mii-diag, module-init-tools, mpc, mpd, mpg123, mplayer, + mtd-utils, mysql_client, nbd, ncurses, netatalk, netkitbase, + netkittelnet, netsnmp, newt, nfs-utils, openntpd, openssh, + openssl, opkg, patch, pciutils, pcre, php, poco, polarssl, + popt, portmap, pppd, procps, pulseaudio, python, python-nfc, + python-protobuf, qt, quota, rp-pppoe, rtorrent, sam-ba, samba, + scons, sdl_gfx, smartmontools, sqlite, squid, strace, sudo, + sylpheed, tcpdump, tremor, ttcp, tiff, unionfs, + usb_modeswitch, usbutils, util-linux, vala, valgrind, vpnc, + vsftpd, webkit, wget, which, wpa_supplicant, x11vnc, xapp_*, + xdriver_*, xenomai, xfont_*, xinetd, xl2tp, xlib_*, xlsclient, + xproto_*, xserver_xorg-server, xutil_util-macros, xz, zeromq + + New packages: arptables, at91bootstrap3, boot-wrapper-aarch64, + ccid, cpanminus, cpuload, erlang, evtest, fb-test-apps, + fxload, gdbm, gnupg, googlefontdirectory, grantlee, gsl, + lcdapi, liblo, liblog4c-localtime, libtirpc, linux-pam, + lua-msgpack-native, macchanger, mtdev, mtdev2tuio, nfacct, + opus, opus-tools, pcsc-lite, perl, pkgconf, python-meld3, + python3, qemu, qextserialport, qtuio, rpcbind, schifra, + sconeserver, supervisor, time, ulogd, usb_modeswitch_data, + yasm + + Deprecated packages: netkitbase, netkittelnet + + Issues resolved (http://bugs.uclibc.org): + + #807: [PATCH] samba - make iconv and smbd optional + #3049: binutils have a sysroot bug in ld + #5330: update vsftpd to 3.0.0 + #5486: libglib2 build fails on: libs/libglib-2.0.so: undefined... + #5666: Fails to build python 2.7.2 for 2440 arm + +2012.08, Release August 31th, 2012 + + Updated/fixed packages: microperl, cups, luajit, rrdtool, + prboom, oprofile. + + Added license information for: sqlite. + + Changed the source URLs of all packages located on Sourceforge + in order to use the automatic mirror selection URL + downloads.sourceforge.net, and get rid of the + BR2_SOURCEFORGE_MIRROR option. + +2012.08-rc3, Released August 25th, 2012 + + Updated/fixed packages: libglib2, netsnmp, freetype, libfuse, + libpng, x11vnc, zlib, gpsd, ifplugd, bash, distcc. + + Added license informations for: barebox, grub, syslinux, + uboot, xloader, yajl, zlib, zxing, alsa-lib, alsa-utils, + faad2, nano, fbdump, rsync, librsync, fontconfig, + inotify-tools, + +2012.08-rc2, Released August 15th, 2012 + + Updated/fixed packages: imagemagick, sudo, crosstool-ng. + + Added license informations for: mxml, nanocom, empty, expat, + lua, lucjson, xinetd, cjson, luaexpat, lmbench, bwm-ng, + input-event-daemon, luajit, cgilua, copas, coxpcall, + luafilesystem, luasocket, rings, wsapi, xavante, libtpl, + avahi, busybox, libfcgi, ifplugd, libcgicc, libcurl, + libdaemon, libdnet, libgpg-error, libpcap, libpng, lighttpd, + mtd, openssl, psmisc, socat, spawn-fcgi. + + Fixes to Microblaze external toolchains + configuration. Improvements of the pkg-stats + script. Out-of-tree fix for the graph-depends script. + + Kernel headers version bump. + +2012.08-rc1, Released August 1st, 2012 + + Fixes all over the tree and new features. + + Integration of a legal information reporting infrastructure, + which allows to generate detailed informations about the + licenses and source code of all components of a system + generated by Buildroot. License information will progressively + be added on packages. + + Default configuration files added for Calao-systems USB-A9263 + and Calao-systems USB-A9G20-LPW. + + External toolchains update: allow download of a custom + toolchain, add Linaro 2012.05 and 2012.06 for ARM, add + Blackfin toolchain 2012R1-BETA1, add Sourcery CodeBench MIPS + 2011.09. + + Allow the restriction of downloads to the primary site only. + This is useful for project developers who want to ensure that + the project can be built even if the upstream tarball + locations disappear. + + Add a 'System configuration' choice to select between 3 + different init systems: Busybox init, SysV init and Systemd + init. + + Cleanups to the package infrastructure. The visible change to + developers is that $(eval $(call AUTOTARGETS)) is now $(eval + $(autotools-package)), and similarly for other package + infrastructures and host packages. Refer to the documentation + for details. + + By default, automatic detection of the number of compilation + jobs to use, depending on the number of CPUs available. + + Improvements to generate systems with static libraries only + (infrastructure and package fixes). + + Add proper support in the Linux kernel package to generate + Device Tree Blobs or combined Device Tree / Kernel + images. This will be useful on Microblaze, PowerPC and ARM, + which are architectures making extensive use of the Device + Tree. + + Updated/fixed packages: audiofile, autoconf, automake, axel, + barebox, bash, beecrypt, berkeleydb, bind, bison, bluez_utils, + bonnie, boost, busybox, bsdiff, bwm-ng, bzip2, cifs-utils, + cgilua, cmake, connman, conntrack-tools, crosstool-ng, cups, + dbus, dhcp, dnsmasq, e2fsprogs, eeprog, ethtool, faad2, fbv, + ffmpeg, freetype, gmp, gnutls, gob2, gpsd, grep, + gst-plugins-base, gst-plugins-good, gzip, hiawatha, hostapd, + htop, icu, igh-ethercat, imagemagick, input-tools, iostat, + iproute2, ipset, iptables, iw, kmod, less, libcap, libgci, + libconfig, libcurl, libelf, libevas, libeXosip2, libexif, + libfuse, libidn, libmad, libmbus, libmnl, + libnetfilter-conntrack, libnl, libnspr, libnss, libogg, + libosip2, libpcap, libpng, libroxml, liburcu, libusb, libxml2, + libxslt, lighttpd, linux, ltrace, lttng-libust, lttng-modules, + lttng-tools, lua, m4, memtester, midori, mii-diag, + module-init-tools, mpfr, mpg123, mrouted, msmtp, mtd, mxml, + mysql_client, nasm, nbd, ncurses, nfs-utils, opencv, openocd, + openssl, pciutils, php, polarssl, portaudio, pppd, + pthread-stubs, pulseaudio, qt, quagga, quota, radvd, rpm, + rrdtool, samba, sam-ba, scons, sdl_gfx, sdl_sound, speex, + sqlite, squashfs, squid, sudo, synergy, syslinux, systemd, + tar, tcpdump, tcpreplay, udev, usbutils, valgrind, wget, + wpa_supplicant, wsapi, xavante, xserver_xorg-server, zlib + + New packages: cjson, collectd, dfu-util, dmidecode, elftosb, + fbterm, flashrom, freerdp, inadyn, libfreefare, + libnetfilter_cttimeout, libnfc, libnfc-llcp, liboping, + libtorrent, linphone, logsurfer, lshw, luacjson, luaexpat, + luajit, mediastreamer, mobile-broadband-provider-info, monit, + mxs-bootlets, nanocom, nss-mdns, ofone, omap-u-boot-utils, + opkg, ortp, owl-linux, python-id3, python-nfc, quota, + ramspeed, rtorrent, sound-theme-borealis, + sound-theme-freedesktop, sysprof, webrtc-audio-processing, + xinetd, zxing + + Issues resolved (http://bugs.uclibc.org): + + #1315: Allow use of older external toolchains without sysroot + support [won't fix] + #5276: Hiawatha needs to manage IPV6 if so [fixed] + #5360: buildroot fails when building "host-libglib2 2.30.2 + Building" [won't fix, upstream problem] + #5384: Can't build packages relying on gets on newer glibc + [fixed] + +2012.05, Released May 30th, 2012: + + Updated/fixed packages: busybox, netsnmp, pptp-linux + +2012.05-rc3, Released May 25th, 2012: + + Minor fixes around the tree. + + Infra: Fix for DOWNLOAD macro when using primary mirrors with + scp targets. + + Toolchain: Kernel headers 3.2.18 / 3.3.7. + + Updated/fixed packages: binutils, bison, busybox, cifs-utils, + gnuchess, gpsd, iperf, libmpeg2, mtd, ntfs-3g, oprofile, + xserver-xorg + +2012.05-rc2, Released May 18th, 2012: + + Fixes all over the tree. + + Toolchain: uClibc: Use 0.9.33.2, Crosstool-ng: fix gperf + dependency, disable decimal floats support, Linux 3.2.17 / + 3.3.6 kernel headers. Fix sysroot copy handling for toolchains + without C++ support. + + Updated/fixed packages: apr, apr-util, ccache, dnsmasq, + heirloom-mailx, gdb, ndisc6, opencv, openssl, socat, vala + +2012.05-rc1, Released May 10th, 2012: + + Fixes all over the tree and new features. + + Use /etc/os-release for version info rather than + /etc/br-version. + + CMake toolchain file moved to $HOST_DIR/usr/share/buildroot. + + Apply-patches.sh: cleanups, archived patches handling fixes, + support series files. + + Defconfigs: beaglebone, mx53qsb, pandaboard, qemu configs for + arm-vexpress/microblaze/ppc-mpc88544ds, use 3.2.x for + atngw100, use 3.3.x for qemu configs. + + Menu structure: Libraries moved out of multimedia section + + Atom processor support. Prescott fix, blackfin ABI fix, + Microblaze architecture support (using ext toolchain). Cleanup + architecture names, deprecate Xtensa support. + + Toolchain: Add GCC 4.4.7, 4.6.3, 4.7.0. uClibc 0.9.33.1, + default to uClibc 0.9.33.x, enable + UCLIBC_SUPPORT_AI_ADDRCONFIG by default, static and 64bit + fixes for external toolchains, linaro ext toolchains, new + sourcery codebench ext toolchains, GDB 7.4.1, crosstool-ng + 1.15.2. + + Bootloaders: U-Boot: add 2012.04.01, SPL and u-boot.img + support. Barebox: add 2012.04, remove 2011.12. + + Updated/fixed packages: alsa-lib, alsa-utils, at, atk, avahi, + barebox, berkeleydb, bind, bluez_utils, boost, busybox, + can-utils, ccache, cifs-utils, coreutils, cups, dbus, dhcp, + directfb, dnsmasq, doom-wad, dosfstools, e2fsprogs, expat, + fakeroot, feh, ffmpeg, file, fis, freetype, gamin, gawk, + gdk-pixbuf, gettext, giblib, glib-networking, gmp, gnutls, + gpsd, grep, gstreamer, gst-plugins-{bad,base,good,ugly}, + haserl, hdparm, imagemagick, iproute2, iptable, iw, kexec, + kmod, lame, libaio, libarchive, libatomic_ops, libconfig, + libcurl, libdvdnav, libdvdread, libedbus, libethumb, libffi, + libfuse, libglib2, libgtk2, libhid, libmad, libmbus, libmpeg2, + libnl, libplayer, libpng, libsigc, libsoup, libupnp, liburcu, + libusb, libusb-compat, libxml2, libxml-parser-perl, libxslt, + lighttpd, linux-firmware, linux-fusion, lite, lsof, ltrace, + lttng-libust, lua, m4, makedevs, microperl, mpd, mpfr, mpg123, + mrouted, mtd, mysql_client, nbd, ncftp, ncurses, neon, + netsnmp, network-manager, nfs-utils, ngrep, ntfs-3g, openntpd, + openssh, openssl, parted, pango, pcre, php, pixman, poco, + psmisc, pulseaudio, python, qt, quagga, radvd, rpm, rsync, + ruby, samba, sam-ba, sane-backends, sawman, screen, sdl_net, + smartmontools, speex, sqlite, squashfs3, squid, sshfs, sudo, + syslinux, sysstat, taglib, tcpdump, tftp-hpa, transmission, + tiff, tinyhttpd, uboot-tools, udev, uemacs, unionfs, usbutils, + util-linux, vala, valgrind, vim, vsftpd, wget, wipe, + wpa_supplicant, xdriver_xf86-{input-vmmouse,video-fbdev}, + xfsprogs, zlib + + New packages: apr, apr-util, audiofile, bellagio, + conntrack-tools, empty, fmtools, glib-networking, + heirloom-mailx, hiawatha, latencytop, lcdproc, libcap-ng, + libdmtx, libfcgi, libnetfilter_conntrack, libnfnetlink, + libtpl, localedef, minicom, msmtp, ndisc6, netatalk, + ocf-linux, openswan, parted, polarssl, protobuf, read-edid, + socketcand, stress, systemd, ushare, zeromq + + Deprecated packages: ttcp + + Removed packages: ntfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #2353: [lua] fix build with 2010.08-rc1 + #2503: Microperl fails build on MIPSel or with Fedora13.x86_64 + #2557: [PATCH] mkfs.xfs complains about missing libxfs.so.0 + #2881: Can't build project statically with external toolchain + #3751: MIPS: fix BR2_GCC_TARGET_ABI for MIPS n64 + #4808: ccache may build against wrong zlib + #4880: New package lcdproc + #4886: New package protobuf + #4892: build fails on ltp-testsuite-20101031/testcases/kernel/fs/... + #4898: * make: [target-finalize] Error 1 (ignored)* + #4985: Qt 4.7.4 build crashes with Linux 2.6.29 + #4970: udev 181 fails to build if kernel version 3.3 is selected + #5018: dialog broken: exits with assert in uClibc + #5102: qt package moc, uic, rcc read from wrong place + #5144: Patch to fix ixon bug in uemacs + #5198: Line graphics output is broken in GNU Screen + #5204: Missing terminfo file(s) for GNU screen terminal type + +2012.02, Released February 29th, 2012: + + Updated/fixed packages: libecore + +2012.02-rc3, Released February 27th, 2012: + + Fixes all over the tree. + + Automatic host dependencies handling for cmake packages + fixed. Customize package deprecated as using a post-build + script is nowadays the preferred way of adding extra stuff to + the rootfs. + + Linux-headers 3.0.x / 3.2.x stable version bumped. + + QEMU defconfigs updated to 3.2.x kernels and readme fixed. + + Updated/fixed packages: dropbear, ffmpeg, libpng + +2012.02-rc2, Released February 19th, 2012: + + Fixes all over the tree. + + Toolchain: uClibc: Added upstream post-0.9.33 fixes, Bump + linux-headers 3.0.x / 3.2.x stable versions. + + Documentation: Added makedev / _DEVICES / + _PERMISSIONS documentation. + + Updated/fixed packages: busybox, ffmpeg, gst-dsp, libecore, + libvncserver, mxml, python. + +2012.02-rc1, Released February 12th, 2012: + + Fixes all over the tree and new features. + + Toolchain: Default to GCC 4.5.x, add binutils 2.22. Java + support removed, Powerpc SPE ABI support. GDB ELF support fix, + GDB 7.4, crosstool-NG 1.13.4. + + Gentargets: scp and mercurial support. + Autotools: derive host dependencies from target by default. + Packages can now declare device table snippets. + + Host utilities menu with commonly used host tools. + + defconfigs: qemu configs for x86-64, mips and sparc, at91 + defconfigs now use modern U-Boot / mainline Linux, added + lpc3250 defconfigs. + + uClibc: remove 0.9.30, backport unshare() support, add + 0.9.32.1 / 0.9.33, use same config for ctng. + + Bootloaders: U-Boot: add 2011.12, remove 2010.xx versions, + Barebox: add 2012.01/02, remove 2011.10/11, LPC32xx + bootloaders added. + + Various manual updates. Release tarballs now contain generated + manual in text/html/pdf formats. + + Buildroot now calls the stop function of scripts in + /etc/init.d at shutdown. + + Updated/fixed packages: atk, avahi, barebox, bash, beecrypt, + bind, binutils, bison, bluez_utils, bzip2, busybox, cairo, + ccache, cdrkit, coreutils, cramfs, dbus, dbus-glib, dialog, + diffutils, dmalloc, dropbear, e2fsprogs, ebtables, ed, + ethtool, expat, ffmpeg, file, fis, flex, fluxbox, fontconfig, + freetype, gawk, grep, gst-dsp, gst-ffmpeg, gst-plugins-base, + hdparm, hostapd, htop, i2c-tools, icu, iproute2, ipsec-tools, + ipset, iptables, iw, jpeg, kismet, lame, libcap, libcgi, + libev, libeXosip2, libffi, libftdi, libgpg-error, libgtk2, + libidn, libmms, libmnl, libmodbus, libnl, libogg, libosip, + libpcap, libpng, libraw1394, libroxml, libusb, libusb-compat, + libv4l, libvorbis, libxcb, libxml-parser-perl, libxslt, + lighttpd, links, lm-sensors, lua, m4, module-init-tools, mpc, + mesa3d, mpd, mpfr, mplayer, mtd-utils, nano, nbd, ncurses, + netperf, netsnmp, ntp, opencv, openocd, openssl, openvpn, orc, + pciutils, pcre, pixman, pkg-config, poco, popt, proftpd, + python, python-serial, qt, ruby, samba, sdl, sdparm, + squashfs3, sshfs, sqlite, squid, sudo, syslinux, tcl, tcpdump, + ti-utils, tiff, tremor, uboot, uboot-tools, udev, usbmount, + util-linux, vala, valgrind, vsftpd, wpa_supplicant, + xapp_{bdftopcf,mkfontdir,mkfontscale,xkbcomp,xcursorgen,xinit}, + xapp_xinput, xapp_xman, xcb-util, xdm, xenomai, + xf86-video-sis, xfont_{encodings,font-util}, + xlib_lib{fontenc,X11,Xau,Xcursor,Xdmcp,Xfixes,Xfont,Xrender}, + xlib_libxkbfile, xterm, xutil_makedepend, yajl + + New packages: boost, connman, dstat, expedite, explorercanvas, + feh, flot, giblib, igh-ethercat, imlib2, jquery, + jquery-sparklines, jquery-validation, jsmin, kmod, libecore, + libedbus, libedje, libeet, libeina, libelementary, libesmtp, + libethumb, libevas, libical, libmbus, liboauth, liburcu, + libvncserver, linux-firmware, + lttng-{babeltrace,libust,modules,tools}, NetworkManager, + open2300, python-distutilscross, python-dpkt, + python-netifaces, python-pygame, python-setuptools, rt-tests, + sam-ba, sane-backends, sqlcipher, transmission, unionfs, + xf86-input-tslib, xinput-calibrator + + Issues resolved (http://bugs.uclibc.org): + + #743: Add Transmission bit torrent option to buildroot + #755: Add Boost libraries as a package + #2299: Add crypto support to libsoup + #2617: Pixman 0.19.2 & Cairo 1.10.0 + #3403: libgpg-error: bump to version 1.10 + #3409: libgpg-error: download from gnupg.org + #3421: nano: make tiny flag optional + #3691: New EFL packages + #4664: Cannot patch AT91Bootstrap + #4700: setlocalversion not working for combination svn/ubuntu 11.10... + #4760: Qt: add host-pkg-config to dependency-list + +2011.11, Released November 30th, 2011: + + Fixes all over the tree. + + Bump kernel headers / default Linux version to 3.1.4. + + Updated/fixed packages: ruby + +2011.11-rc3, Released November 26th, 2011: + + Fixes all over the tree. + + Toolchain: Fix gdb dependencies for external toolchains, + adjust uClibc patches so they don't confuse modern versions of + patch, bump crosstool-ng, kernel headers and linux versions. + + Updated/fixed packages: busybox, freetype, mplayer, opencv, + php, rsyslog, ruby, thttpd, xapp_xf86dga + + Issues resolved (http://bugs.uclibc.org): + + #4357: Prevent patch commands from accessing source control + #4369: Fix permissions on untared lsof archive + +2011.11-rc2, Released November 18th, 2011: + + Fixes all over the tree and new features. + + Updated asciidoc documentation + + Toolchain: Bumped 3.x stable kernel headers, use wget in + crosstool-ng as well, bump crosstool-ng version, gdb fixes, + uClibc sparc fix. + + Updated/fixed packages: distcc, file, gst-plugins-bad, libxcb, + mplayer, newt, qt, rpm, rrdtool, tar, tftpd + + Issues resolved (http://bugs.uclibc.org): + + #3355: mplayer fails to build + #4021: uClibc: undefined reference to `__GI___errno_location' + #4297: Qt's qmake uses wrong pkg-config + +2011.11-rc1, Released November 11th, 2011: + + Fixes all over the tree and new features. + + Moved misc scripts and support stuff to support/. Renamed + patch-kernel.sh to support/scripts/apply-patches.sh. + + Documentation: Moved to asciidoc format, make targets to + generate text/html/pdf/epub output added. + + Defconfigs: Qemu configs updated to 3.1 kernel and readmes + added. + + Bootloaders: Add support for custom git tree / tarballs for + barebox, similar to how it's handled for u-boot. Clean up + menuconfig options. + + Toolchain: Update external codesourcery toolchain download + URLs after Codesourcery got bought by Mentor, add x86 + toolchain, update toolchain versions and optimize toolchain + sysroot copying. Fix uClibc 0.9.32 builds for e500 PPC, + updated GDB versions / download URLs. Binutils + libbfd/libopcodes static/dynamic linking fix. GCC 4.6.2 added, + use ctng-1.13.0. + + Package infrastructure: Support for local packages / + overrides, package dir / name arguments dropped from + {GEN,AUTO,CMAKE}TARGETS. + + Linux: Kernel extensions infrastructure support, Xenomai + + RTAI support. + + Updated/fixed packages: acpid, bind, busybox, dash, dbus, + dbus-glib, directfb, dnsmasq, drystone, e2fsprogs, ethtool, + fakeroot, fbdump, file, freetype, fuse, gamin, gmp, gmpc, + gnutls, gob2, gst-plugins-{base,bad,good,ugly}, gstreamer, + hostapd, ifplugd, imagemagick, intltool, ipsec-tools, ipset, + iptables, iw, jpeg, kexec, leafpad, less, libargtable2, libao, + libconfuse, libcuefile, libcurl, libdaemon, libevent, + libglib2, libiconv, libmpd, libreplaygain, libroxml, + libsamplerate, libsndfile, libsoup, libsvgtiny, libtool, + libxcb, lighttpd, links, linux-fusion, lite, lrzsz, lsof, lzo, + lzop, makedevs, mcookie, mpg123, mpd, mpfr, mtd, musepack, + mutt, mysql_client, ncftp, ncurses, neon, netcat, netsnmp, + ntfs-3g, ntfsprogs, ntp, openntpd, openssh, openssl, oprofile, + orc, pciutils, psmisc, python, qt, quagga, radvd, rpm, rsync, + samba, sawman, sdl_sound, smartmontools, sqlite, squid, + stunnel, sudo, sylpheed, sysstat, taglib, tar, tcpreplay, + tslib, usbutils, util-linux, valgrind, wget, whetstone, which, + wpa-supplicant, xdata_xcursor-themes, xmlstarlet, xterm + + New packages: bluez-utils, cifs-utils, fftw, fluxbox, json-c, + libev, libftdi, libgeotiff, libmodbus, libplayer, live555, + ngrep, noip, opencv, openocd, picocom, poco, portaudio, + pulseaudio, pv, rtai, vala, xenomai. + + Removed packages: liboil, sfdisk, swfdec, webif + + Issues resolved (http://bugs.uclibc.org): + + #505: live555: new package + #507: Enable live and tv options in MPlayer-1.0rc2 + #531: let e2fsprogs package to export headers to staging dir if needed + #1171: Linuxthreads new cannot find sysdep.h + #1357: Add bluez to buildroot system + #2107: New package: input-event-daemon + #2599: New package: orc (Oil Runtime Compiler) + #2605: gstreamer: Update to 0.10.30 + #2677: introducing util-linux-ng as replacement for util-linux + #2917: Qt: Add declarative module + #3145: jffs2 image generation fails + #3271: netperf-2.4.5 fails to compile + #3331: xdata_xcursor-themes depends on xcursorgen + #3343: Add file:// download SITE_METHOD + #3391: Add support for specifying an external kernel tree + #3631: Error while compiling with Xorg + #3709: oprofile doesn't build for mipsel + #3925: midori not getting compile + #4045: Add support for downloading i386 toolchains from codesourcery + #4165: lrzsz-fix-symlink-at-rebuild.patch + #4171: makedevs-unused-but-set-variable.patch + #4183: Codesourcery toolchain download site has changed + #4231: libneon.so: undefined reference to `SSL_SESSION_cmp' + #4381: Add option to lighttpd to enable Lua support + #4387: Make sure that dest dir exists before installing mtd files + +2011.08, Released August 31th, 2011: + + Fixes all over the tree. + + Toolchain: Fix codesourcery 2009q3 ARM download, Linux 3.0.4 + kernel headers. + + Updated/fixed packages: ipset, python + +2011.08-rc2, Released August 29th, 2011: + + Fixes all over the tree. + + Toolchain: crosstool-NG 1.12.1, use binutils 2.21 on + mips/sh/older uClibc, disallow uClibc 0.9.32 on avr32/sh + (broken). + + Defconfigs: kernel updates, fix mini2440 serial port config, + remove old arm toolchain configs. + + Bootloaders: Fix grub patching, add barebox-{n,x,menuconfig} + targets similar to linux/busybox. + + Updated/fixed packages: barebox, directfb, libsoup, + libxml-parser-perl, mtd, ncurses, python, ti-utils, udev, + usbmount, util-linux, xfont_font-misc-misc + + Issues resolved (http://bugs.uclibc.org): + + #3685: ncurses installation hangs due to old version of tic + #4093: Grub fails to install bz2 patch after conversion to... + +2011.08-rc1, Released August 4th, 2011: + + Fixes all over the tree and new features. + + Toolchain: uClibc 0.9.32 / NPTL support, 0.9.29 removed, + ext-toolchain-wrapper improvements, improved non-MMU + support. GCC 4.3.6 / 4.6.1. + + GENTARGETS infrastructure extended to cover bootloaders and + Linux kernel as well. Options to retrive Linux/U-Boot from a + custom git repo instead of upstream tarballs. + Support for Linux 3.x and release candidate tarballs. + X-Loader bootloader for omap added. + + Make source/external-deps now also works for external + toolchains / crosstool-ng backend. + + Updated/fixed packages: autoconf, berkeleydb, bind, binutils, + bmon, bridge-utils, busybox, cmake, dbus, dbus-glib, + e2fsprogs, ethtool, ffmpeg, gst-plugins-{bad,base,good,ugly}, + gvfs, hostapd, iproute2, iptables, iw, jpeg, lame, libarchive, + libdnet, libdrm, libgcrypt, libgtk2, libmpeg2, libpng, + libsoup, lighttpd, linux-fusion, lzo, midori, mtd-utils, + nfs-utils, openvpn, oprofile, orc, pkg-config, proftpd, qt, + ruby, samba, sdl, shared-mime-info, sudo, sqlite, squid, + synergy, udev, usbmount, usbutils, util-linux, valgrind, + webkit, xorg-xserver, xz, zlib + + New packages: acl, attr, ebtables, gnutls, inotify-tools, + ipset, libargtable2, libiqrf, libmnl, libnspr, libnss, + libroxml, libyaml, live555, mxml, orc, rsyslog, sredird, + statserial, stunnel, ti-utils, uboot-tools, yajl + + Deprecated packages: liboil, swfdec + + Removed packages: hal + + Issues resolved (http://bugs.uclibc.org): + + #3559: libnspr: Add new package + #3595: patch to add libroxml + #3565: libnss: Add new package + #3583: xfonts_font-adobe-100dpi fails due to missing map file + #3649: [PATCH] Add mapdir to existing pkg-config patch + #3907: 2011.05 - Qt 4.7.3 not building on ARM + #3961: Nfs-utils: Remove SUSv3-function index + #3985: "help" target's defconfig list needs sort + #3997: bump libroxml to v2.1.0 + +2011.05, Released May 27th, 2011: + + Updated/fixed packages: makedevs + +2011.05-rc2, Released May 24th, 2011: + + Fixes all over the tree. + + Toolchain: Code sourcery ARM 2009q1 download URL fixed / + 2009q3 external toolchains added. Crosstool-NG bumped to + 1.11.3, eglic/glibc configuration fixes. Linux kernel 2.6.38.x + bumped to 2.6.38.7. + + Updated/fixed packages: bind, fakeroot, kbd, psmisc, qt + +2011.05-rc1, Released May 18th, 2011: + + Fixes all over the tree and new features. + + External toolchain improvements: We now build a binary + toolchain wrapper and install it into HOST_DIR/usr/bin, which + enforces the correct compiler arguments, making an external + toolchain as easy to use outside of Buildroot as the internal + ones are. This also brought a cleanup of CFLAGS, making the + Buildroot build output easier to read. + + Rootfs device handling improvements: Choice between static + /dev, devtmpfs and devtmpfs with either mdev or udev. + + Toolchain: More preconfigured codesourcery external + toolchains, improved Crosstool-NG support, fix for GCC + snapshot versions, GCC 4.4.6 / 4.5.3, experimental GCC 4.6.0 + support, target-GCC fixes, uClibc fixes, 0.9.32-rc3 support. + + Bootloaders: U-boot 2011.03, Barebox 2011.05.0 + + Linux: support for custom kernel image targets, E.G. for + powerpc builds with embedded device trees. + + Misc fixes for qemu defconfigs, ensuring correct serial + terminal setup out of the box. + + Misc gentarget / autotools handling fixes. + + Updated/fixed packages: alsa-lib, alsa-utils, alsamixergui, + atk, avahi, bind, bison, busybox, copas, dbus-glib, dhcp, + dhcpdump, dnsmasq, dropbear, ethtool, fakeroot, ffmpeg, file, + gamin, gnuconfig, gst-ffmpeg, gst-plugins-good, gtk2-engines, + haserl, hostapd, icu, imagemagick, iproute2, iw, kismet, less, + libcap, libdnet, libglade, libglib2, libgtk2, libnl, libpng, + libxml2, libxml2, libxslt, lighttpd, lockfile-progs, makedevs, + midori, mpg123, mpc, mpd, mpfr, mplayer, mtd-utils, ncurses, + netsnmp, openssh, openssl, openvpn, pango, pkg-config, popt, + procps, proftpd, qt, quagga, readline, rsync, samba, sdl, + socat, squashfs, squid, sudo, tslib, udev, usbutils, webkit, + wpa_supplicant, xerces, xfont_font-misc-misc, xlib_libX11, + xlib_libXfont, xlib_xtrans, xorg-server, xterm, xz + + New packages: bonnie++, can-utils, gdisk, htop, + input-event-daemon, libexif, libraw, libv4l, ngircd + + Removed packages: festival + + Issues resolved (http://bugs.uclibc.org): + + #2131: Add OpenMP support to the toolchain + #3379: New Package: bonnie++ + #3445: Not working openssl-10.0.0d on 386sx + #3451: fakeroot package: wrong FAKEROOT_SITE variable + #3457: alsamixergui: broken URL + #3475: Calling sync on large filesystems when not always necessary + #3511: make busybox-menuconfig does not download busybox package + #3541: Quotes in the top Makefile:217 break buildroot/kernel config... + #3571: u-boot: fw_printenv does not build + #3643: popt source url is not responding + #3733: dropbear: make zlib optional + #3757: Buildroot can't build mplayer with libmad + +2011.02, Released February 28th, 2011: + + Fixes all over the tree. + + Updated/fixed packages: alsamixergui, avahi, ffmpeg, icu, mpd, + nuttcp, qt, slang, squashfs, sylpheed, synergy, xerces + + Deprecated packages: devmem2, webif + + Issues resolved (http://bugs.uclibc.org): + + #2911: Qt: Disable qt3support-option, if gui-module isn't selected + #3259: Unable to build webkit (on arm) + #3295: slang fails to build on mipsel + #3325: ffmpeg fails to build + +2011.02-rc2, Released February 24th, 2011: + + Fixes all over the tree. + + Festival packages marked as broken. Unless someone steps up + to support them, they will be removed during the 2011.05 + development cycle. + + Updated/fixed packages: atk, avahi, bind, cairo, dbus, + enchant, fakeroot, gmpc, gpsd, gvfs, iperf, jpeg, libarchive, + libcgicc, libdaemon, libdrm, libevent, libgail, libglib2, + libgpg-error, libmicrohttpd, librsvg, libsoup, libxcp, + makedevs, matchbox-fakekey, matchbox-startup-monitor, mdadm, + metacity, mpd, nasm, nfs-utils, olsr, openssl, popt, + pthread-stubs, quagga, rpm, samba, sdl, sdl_gfx, sdl_image, + sdl_mixer, sdl_sound, sdl_ttf, squashfs, synergy, taglib, + tcpreplay, tiff, wpa_supplicant, xcb-util, + xdriver_xf86-input-{acepad,aiptek,evdev,joystick,keyboard}, + xdriver_xf86-input-{mouse,synaptics,void}, + xdriver_xf86-video-{chips,dummy,geode,glide,intel,nv,wsfb}, + xlib_lib{ICE,SM,XScrnSaver,Xau,Xcursor,Xdmcp,Xi,Xinerama}, + xlib_lib{Xrandr,Xt,Xtst,Xxf86dga,Xxf86vm,dmx,fontenc,pciaccess}, + xserver_xorg-server, xz + + Removed packages: ace_of_penguins, vlc + + Issues resolved (http://bugs.uclibc.org): + + #3205: Failing chmod when running "make" in buildroot (openssl)... + #3277: quagga fails to build with SNMP support + #3283: See why nfs-utils needs fakeroot, and convert to autotools + #3307: synergy fails to build due to missing XTest library + +2011.02-rc1, Released February 14th, 2011: + + Fixes all over the tree and new features. + + External toolchain improvements: clarification of the options, + and introduction of the toolchain profile concept, for + well-known toolchains. Buildroot is now capable of + automatically downloading and extracting well-known toolchains + (for the moment, CodeSourcery ARM, PowerPC, MIPS and SuperH + toolchains are supported). Crosstool-NG backend updated and + improved. + + Complete rework of how hardware boards are supported. + Each board now only has a single defconfig file, and all + board-specific options have been removed. See + docs/buildroot.html#board_support for details. + + Added support for the following boards: Mini2440, Qemu ARM + Versatile, Qemu MIPSel Malta, Qemu PowerPC G3beige, Qemu SH4 + r2d and Qemu x86. The Qemu boards support allows to easily + build systems that are known to work under Qemu. + + Initial support for Blackfin processors. + + Staging directory moved into $(O)/host/usr//sysroot, in + preparation for support of SDK. For the same reason, the + toolchain binaries (cross-compiler and other related tools) + are now installed in $(O)/host/usr/bin/. The cross pkg-config + now also automatically returns correct values for cross + compilation, without needing any environment variables to be + set. + + Ccache support reworked. Now used for both host and target + compilation, and cache is stored in ~/.buildroot-ccache. + + Toolchain: uClibc 0.9.32-rc2, several components moved to + normal AUTOTARGET packages. + + Generic cmake infrastructure, similar to the existing + GENTARGETS/AUTOTARGETS. + + Support for bzr downloads, next to the existing git/svn support. + + Kconfig infrastructure rebased against 2.6.38-rc3, bringing + misc fixes. 'xconfig' now uses Qt4 rather than Qt3. + + EXT2 file system size handling improved, UBI image support, fs + configuration options cleanup, U-Boot/Barebox version bumps. + + Updated/fixed packages: alsa-utils, at, autoconf, automake, + bash, binutils, bison, busybox, bzip2, cdrkit, cloop, cmake, + coreutils, cups, dbus, dbus-python, dhcp, directfb, + direcfb-examples, dmalloc, dnsmasq, dosfstools, e2fsprogs, ed, + fbset, ffmpeg, findutils, flac, freetype, gdk-pixbuf, gmp, + grep, gperf, gst-ffmpeg, gst-plugins-bad, gst-plugins-base, + gst-plugins-good, gst-plugins-ugly, gstreamer, gvfs, hdparm, + hostapd, i2c-tools, icu, imagemagick, input-tools, iproute2, + iptables, iw, jpeg, kexec, libaio, libart, libcap, libconfig, + libfuse, libglib2, libidn, libmad, libogg, libpcap, libpng, + libsndfile, libtheora, libtool, libusb-compat, libvorbis, + libxcb, libxml2, libxslt, links, linux-fusion, lm-sensors, + lsof, ltp-testsuite, ltrace, lvm2, lzo, m4, makedevs, + memtester, mesa3d, mii-diag, mpc, mpfr, mpg123, mplayer, + mrouted, mtd-utils, nano, netperf, netplug, ntfs-3g, ntp, + openssh, openssl, openvpn, oprofile, pango, patch, pciutils, + php, pkgconfig, portmap, psmisc, python, qt, rsync, ruby, + sawman, screen, sdl_gfx, sdl_sound, smartmontools, socat, + sqlite, squid, sshfs, sstrip, sysklogd, sysstat, sysvinit, + tar, tcpdump, tslib, udev, usbutils, vim, vtun, webkit, wipe, + x11vnc, xapp_xlogo, xcb-proto, xfont_font-util, + xkeyboard-config, xlib_libX11, xz, zlib + + New packages: dhrystone, dsp-tools, faad2, fbgrab, gst-dsp, + gst-omapfb, irda-utils, lame, libao, libcue, libcuefile, + libffi, libhid, libreplaygain, libsamplerate, libsigc++, + lsuio, mpd, musepack, python-mad, python-serial, rsh-redone, + sdparm, tidsp-binaries, vorbis-tools, wavpack, whetstone, + xl2tp, xmlstarlet + + Removed packages: hotplug, l2tp, libfloat, microcom, + ng-spice-rework + + Issues resolved (http://bugs.uclibc.org): + + #267: The make target: cross fails because toolchain_build_... + #415: Berkeley DB: mut_pthread.o: relocation R_X86_64_32 against... + #561: ltp-testsuite failed to install + #1447: Installing gfortran on PowerPC + #1651: Build fail caused by ccache in module-init-tools + #1681: Cross-compiled binaries shouldn't be installed into staging + #1723: [PATCH] axel: convert to generic package infrastructure and... + #1735: [PATCH] mplayer: convert to autotools infrastructure + #2551: [PATCH] native toolchain in the target filesystem fails + #2623: buildroot-snapshot-20100922 fails when compiling development... + #2647: makedevs package lacks support for 16-bit major/minor numbers + #2371: QT MYSQL Module does not build when MySQL installed on the host + #2839: compile fails in various packages with a odd message "error:... + #2887: tar "buffer overflow detected" error + #2893: Broken "make source" with external toolchain + #2905: Qt: Speed up compilation, if gui-module isn't selected + #2929: genext2fs: couldn't allocate a block (no free space) + #2935: Ntpdate isn't installed + #2965: Broken linkage to xkbcomp (blocking X server startup) + #2983: xlib_libX11 build failed + #3007: kexec doesn't build: Missing regdef.h file + #3085: Init scripts are not compatible with sysVinit (when busybox... + #3103: make external-deps wants to download gcc-.tar.bz2 when... + #3109: abnormal `make busybox-menuconfig` + #3115: How about board specific makefiles? + #3169: python patch has typo, aborts build in scenario + #3181: dhcp.mk copies S80dhcp-server to etc/init.d, not etc/init.d/ + +2010.11, Released November 30th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: libgcrypt, qt, squid, sysstat, tcpdump, + xserver-xorg + + Issues resolved (http://bugs.uclibc.org): + + #2773: squid with openssl support needs openssl on the host + #2857: OBJDUMP definition is missing from TARGET_CONFIGURE_OPTS + +2010.11-rc2, Released November 25th, 2010: + + Fixes all over the tree. + + Add support for LEON Sparc architecture variants. Fix make + source/external-deps for host packages. + + Updated/fixed packages: bash, bind, busybox, dialog, gpsd, + libglib2, libcurl, libmad, lrzsz, midori, module-init-tools, + mtd-utils, openssh, openssl, pciutils, php, qt, sqlite, + sysstat, webkit, zlib + + Issues resolved (http://bugs.uclibc.org): + + #759: Sysstat build broken without libintl + #2479: host-module-init-tools 3.11 fails to build + #2725: Buildroot overrides kernel config + #2785: mtd-utils build fails due to missing libmtd + #2791: Added PHP-Process Control to the PHP-Package + #2797: pciutils dependencies on zlib not taken into account + #2809: failed to compile libglib2 + #2821: [PATCH] Patch for JavaScriptCore in QtWebKit module + #2827: qt-4.7.0-pthread_getattr_np.patch invalid for qt 4.6... + #2833: Failed to compile webkit without X11 + +2010.11-rc1, Released November 8th, 2010: + + Fixes all over the tree and new features. + + Kconfig infrastructure rebased against 2.6.36-rc1, bringing + misc fixes + nconfig and savedefconfig targets. + + Toolchain: ARM cortex A9 support, experimental crosstool-ng + backend, GCC 4.5.x. + + Fs: Squashfs 4.1 with lzo support + + Old-style package hooks (*_HOOK_POST_*) removed. Use the more + generic new-style ones instead. + + Download handling reworked and support for git/svn downloads + added. + + Removed experimental shared config.cache support, as it is + too unreliable. + + A convenience Makefile wrapper is created when using + out-of-tree building, similar to how it is done for the kernel. + + Alpha, Cris, IA64 and Sparc64 architecture support removed. + + New packages: argp-standalone, gdk-pixbuf, gpsd, gst-ffmpeg, + libmpeg2, kbd, librsvg, nuttcp, rng-tools, rrdtool, xz + + Updated/fixed packages: acpid, alsa-lib, argus, at, autoconf, + automake, avahi, axel, beecrypt, berkeleydb, bind, bmon, boa, + bootutils, bridge-utils, bsdiff, busybox, cvs, dbus, directfb, + dmraid, docker, dosfstools, dropbear, e2fsprogs, ethtool, + expat, ezxml, fbset, fconfig, ffmpeg, freetype, gadgetfs-test, + gamin, gawk, genext2fs, gperf, gst-plugins-base, + gst-plugins-ugly, gtk2-themes, gtkperf, gvfs, haserl, hdparm, + hostapd, hwdata, ifplugd, imagemagick, iperf, ipsec-tools, + iproute2, iptables, iw, jpeg, kexec, kismet, less, libcgi, + libcurl, libdaemon, libdnet, liberation, libevent, libeXosip2, + libglade, libgtk2, libiconv, libidn, libintl, libmms, libmpd, + libnl, liboil, libosip2, libpcap, libpng, libtool, libungif, + libxml2, libxslt, lighttpd, lite, lm-sensors, lockfile-progs, + logrotate, m4, matchbox, mdadm, mesa3d, metacity, mplayer, + mtd-utils, mysql_client, nano, nbd, ncftp, neon, netperf, + netsnmp, ng-spice-rework, ntfsprogs, ntp, openntpd, openssh, + openssl, openvpn, oprofile, pango, patch, pcre, php, + pkg-config, portmap, pppd, pptp-linux, prboom, proftpd, radvd, + rdesktop, readline, rp-pppoe, ruby, qt, quagga, samba, sawman, + sdl_mixer, sdl_sound, sed, setserial, shared-mime-info, slang, + speex, sqlite, squashfs, startup-notification, strace, + sylpheed, sysstat, taglib, tcpdump, thttpd, tiff, tn5250, + torsmo, tslib, udev, udpcast, usbmount, usbutils, vsftpd, + vtun, which, wireless-tools, wpa_supplicant, xapp_twm, + xapp_xbacklight, xapp_xcursorgen, xapp_xinit, xapp_xinput, + xapp_xmore, + xdriver_xf86-input-{acecad,aiptek,evdev,joystick,keyboard}, + xdriver-xf86-input-{mouse,synaptics,vmmouse,void}, + xdriver-xf86-video-{apm,ark,ast,ati,chips,cirrus,dummy,fbdev}, + xdriver-xf86-video-{geode,glide,glint,i128,i740,intel,mach64}, + xdriver-xf86-video-{mga,neomagic,newport,nv,openchrome,r128}, + xdriver-xf86-video-{rendition,s3,s3virge,savage,siliconmotion}, + xdriver-xf86-video-{sis,sisusb,suncg3,suncg6,suncg14,sunffb}, + xdriver-xf86-video-{sunleo,suntcx,tdfx,tga,trident,v4l,vesa}, + xdriver-xf86-video-{vmware,voodeo,wsfb,xgi,xgixp}, + xkeyboard-config, xlib_libX11, xserver_xorg-server, xstroke, + xterm, xvkbd, zlib + + Deprecated packages: hotplug, lzma, ng-spice-rework, sfdisk + + Removed packages: dillo, libglib12, libgtk12, microwin, + pcmcia + + Issues resolved (http://bugs.uclibc.org): + + #901: new package: gpsd + #2389: Generate a Makefile wrapper in $(O) + #2461: wireless_tools: install shared library if needed + #2521: Can't compile sdl_mixer, mikmod.h can't be found + #2533: xserver_xorg-server: Enable glx, if mesa3d is built + #2563: [PATCH] cairo: Expose the configure option to disable some... + #2581: libmms: Update to 0.6, and patch to work on architectures... + #2707: Can't compile linux kernel using buildroot + crosstool-ng + #2731: Build order + #2737: buildroot configuration tool crashing when the path exceeds... + #2767: Build for lsof broken in buildroot-2010.08 + +2010.08: Released August 31th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: atk, xstroke + + Removed packages: lxdoom + +2010.08-rc2, Released August 30th, 2010: + + Fixes all over the tree. + + Mark the combination of uClibc 0.9.31, gcc 4.2.x, C++ and + locale support as broken. Remove deprecated GCC 4.2.[1-3] + versions. + + Mark CRIS architecture as deprecated, as it is discontinued + upstream. + + Marked shared config.cache as experimental and disabled by + default as it is known to break with certain package + combinations. + + Toolchain: fixed gcc 4.2.x build after uClibc NPTL support got + added. + + fs: old-style squashfs for big endian archs fixed. + + Updated/fixed packages: busybox, gst-plugins-base, + imagemagick, kismet, libgail, libglib2, libgtk2, lua, + luafilesystem, lzo, ncurses, netcat, pango, php, pppd, + proftpd, qt, samba, startup-notification, swfdec, sysvinit, + util-linux + + Removed packages: stunnel + + Issues resolved (http://bugs.uclibc.org): + + #635: util-linux fails to build in 2009.08 + #2239: netcat package installs its binary to target as avr32-linux... + #2395: libglib2-2.24.1 and libxml2-2.7.7 fails build on MIPS because... + #2443: Initramfs: Don't overwrite $(TARGET_DIR)/init if it exists + #2449: Minor fixes for squashfs makefile and correct PowerPC e500 ... + +2010.08-rc1, Released July 30th, 2010: + + Fixes all over the tree and new features. + + Toolchain: GCC 4.3.5, older 4.3.x versions removed. GCC 4.1.2 + and non-sysroot support removed. Added support for (snapshot) + NPTL in uClibc, 0.9.28.3 removed, + + Bootloaders: Various cleanups, moved to boot/, added Barebox, + removed yaboot. Support building u-boot from custom tarball, + u-boot 2010.06. + + New GTK-based configurator, usable using 'make gconfig'. + + Java packages marked as broken. Unless someone steps up to + support this, they will be removed during the 2010.11 + development cycle. + + Alpha, IA64 and Sparc64 architectures marked as deprecated. + GTK+ on DirectFB has also been marked as deprecated, as it is + not supported in recent GTK+ versions, and more and more + packages depends on the new versions. + Unless someone steps up to support them, they will be removed + during the 2010.11 development cycle. + + New packages: cgilua, copas, coxpcall, ffmpeg, libsvgtiny, + libgail, luafilesystem, luasocket, rings, wsapi, xavante, xterm + + Updated/fixed packages: alsa-lib, alsamixergui, at, atk, + avahi, berkeleydb, bash, blackbox, busybox, bzip2, cairo, + cdrkit, cmake, dash, dhcp, dialog, diffutils, distcc, dmalloc, + dnsmasq, dropbear, e2fsprogs, fbv, file, flex, fontconfig, + gawk, gmpc, gnuchess, gst-plugins-base, gst-plugins-good, + gstreamer, gzip, icu, intltool, iostat, ipsec-tools, iptables, + iw, libart, libcgi, libcurl, libdrm, libeXosip, libfuse, + libglib2, libgpg-error, libiconv, libidn, liblockfile, libpng, + libsoup, lighttpd, links, linux-fusion, lmbench, lrzsz, + ltrace, make, midori, module-init-tools, mplayer, + mysql_client, nbd, ncurses, neon, netcat, netperf, netsnmp, + ntfsprogs, openssl, oprofile, pango, php, qt, quagga, samba, + setserial, sdl, sdl_mixer, sdl_sound, sdl_ttf, speech-tools, + sqlite, squashfs, swfdec, tftpd, thttpd, tn5250, tremor, + usbutils, webif, webkit, wireless_tools, xerces, + xkeyboard-config, xserver_xorg-server, xvkbd, zlib + + Removed packages: modutils, portage, rxvt + + Deprecated packages: dillo, libglib12, libgtk12, microwin, pcmcia + + Issues resolved (http://bugs.uclibc.org): + + #321: alsa-lib uses host include files for python which breaks ... + #361: linux kernel configuration choice works incorrectly + #387: Tremor not installed to toolchain + #401: new package: ffmpeg + #475: uImage target for U-boot failed generating + #543: ATK requires X11 on DirectFB target + #575: webkit: Buildroot Libtool Patch Fails + #583: build fails with external x86_64 toolchain + #729: sstrip creates corrupted headers + #829: Webkit r44552 needs libXt + #835: Package Dataflashboot-1.05 does not compile with buildroot... + #847: Compiling target-gcc v4.4 fails with "libc.so.0: cannot open... + #859: Add (head of) nptl branch to list of uClibc versions + #949: compile with debug info + #955: Grub fails to build with External Toolchain + #1051: Webkit doesn't compile (Linuxthreads new, x86) + #1213: Move .config into output directory + #1225: Buildroot fails to account for "nof" subdirectory (no float... + #1231: (sparc) Linux kernel fails to build + #1261: The getline() in output/build/linux-2.6.28/scripts/unifdef.c... + #1339: Busybox needs -fno-strict-aliasing to compile cleanly + #1393: neon config fails libxml/parser.h: libxml2 requires, but not ... + #1405: WebKit fails to build because pthread_getattr_np is not impl... + #1675: GMP Error during buildroot make process + #1741: external toolchain linking error + #1753: lmbench: convert to generic package infrastructure + #1771: Fakeroot and the target/generic/device_table.txt create bad... + #1807: LZMA 4.32.7, Required header file(s) are missing + #1813: xkeyboard-config fails to build because of intltool problem + #1879: Bump iptables to 1.4.8 + #1885: Add a bunch of lua modules + #1897: Bump libusb to 1.0.7 + #1903: Bump tn5250 to 0.17.4 and migrate to autotargets + #1909: netperf-2.4.5 fails to build because of undeclared SOCK_DCCP + #1927: Bump file to 5.03 and migrate to autotargets + #1933: Bump gawk to 3.1.8 and migrate to autotargets + #1945: PHP: add sqlite3 dependency when using external lib + #1951: Bump openssl to 0.9.8o + #1957: Bump sqlite to 3.6.23.1 + #1975: Package removal/deprecation + #1981: zlib: bump to 1.2.5 + #1987: intltool: Fix spelling mistake + #1993: Bump bash to 4.1.7(1) and migrate to autotargets + #1999: Typo in path checking + #2005: Bump dnsmasq to 2.55 and migrate to gentargets + #2035: ipsec-tools-0.7.2 fails to build with gcc-4.4.x + #2038: Bump ncurses to 5.7 + #2095: make gconfig: undefined reference to symbol 'dlsym@@GLIBC_2.2.5' + #2101: blackbox depends on locale support + #2119: Tries to build kernel, although disabled in config + #2125: libXfont build fail + #2143: buildroot compiler generates segfaulting statically linked exe.. + #2149: xterm build failure + #2155: Compression lzo don't set for ubifs + #2161: [SECURITY] Update libpng to 1.2.44 + #2167: Bump busybox to 1.17.0, convert to gentargets, drop 1.12, ... + #2181: pixman can't apply pixman-0.10.0-no-tests.patch + #2191: linux-fusion build fail + #2221: Qt does not compile (dependencies not taken into account?) + #2233: Atmel atstk target skeletons have /etc/mtab as a file, not ... + #2245: Netcat does not work due to incorrect assumptions about signed.. + #2251: directory output/build after make *_defconfig not found + #2257: Convert netsnmp package to autotargets + #2263: Bump samba to 3.3.13 + #2269: setserial causes make error + +2010.05, Released May 30th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: coreutils, hal, libcap, + lockfile-progs, ncftp, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #1789: binutils fails to build for i386 + #1843: Fix libcap build failure + #1855: XORG Keyboard driver fails to compile + +2010.05-rc3, Released May 27th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: aumix, atk, avahi, bmon, busybox, cairo, + cdrkit, dbus-glib, dbus-python, docker, enchant, fltk, gamin, + gettext, gmpc, gob2, grep, gstreamer, gst-plugins-bad, + gst-plugins-base, gvfs, hal, iconv, icu, iperf, libcgicc, + libdvdnav, libdvdread, libglade, libglib2, libgtk2, libidn, + libmms, libmpd, libpcap, libsoup, lmbench, lsof, ltrace, lvm2, + make, metacity, microperl, mtd-utils, mutt, nbd, netsnmp, + ntfsprogs, ntp, olsr, pango, pciutils, pcmanfm, php, + pkg-config, psmisc, qt, samba, shared-mime-info, squashfs, + squashfs3, sshfs, startup-notification, swfdec, sylpheed, + uemacs, util-linux, valgrind, vpnc, vsftpd, webkit, xstroke + + Issues resolved (http://bugs.uclibc.org): + + #75: arm buildroot "unrecognized option" error + #699: Buildroot fails to copy libstdc++ to target when using external... + #1693: NTP trys IPV6 even if not configured error: 'IPV6_MULTICAST... + #1729: alsamixergui fails to build + #1801: Avahi-autoipd doesn't create TARGET_DIR/var/lib + #1819: pciutils small bugs + #2065: Internal toolchain: bump gcc 4.3.x series to 4.3.5 + +2010.05-rc2, Released May 11th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: busybox, customize, gawk, gnuchess, + hal, hostapd, less, libgcrypt, libnl, libxcb, linux-fusion, + ltp-testsuite, mplayer, netplug, pciutils, php, sed, + shared-mime-info usb_modeswitch, usbutils, vlc wpa_supplicant, + xapp_bdftopcf, xapp_mkfontdir, xdriver_xf86-video-openchrome, + xfont_encodings, xlib_libX11, xlib_libXfont, xlib_xtrans, + xproto_fontcacheproto, xproto_fontsproto, xvkbd + + Removed packages: vice + + Issues resolved (http://bugs.uclibc.org): + + #849: "customize" package copies files to wrong place in target tree + #985: Bump usb_modeswitch package to 1.1.0 + #1135: Package customize. Wrong copying + #1525: Package hal deletes a whole /etc/rc.d directory + #1531: libxcb 1.5 build fails, due to missing xcbgen Python module + #1669: Busybox failed to compile when using an external toolchain + #1699: Fix usbutils dependencies and bump + #1705: Fix pciutils broken cross compiling + #1717: External toolchain fixes for hostapd & wpa_supplicant + +2010.05-rc1, Released May 3rd, 2010: + + Cleaned up / restructured package menu. + + Toolchain: uClibc 0.9.30.3 / 0.9.31, older 0.9.30.x removed. + 2.6.33 kernel headers, binutils 2.20.1, GCC 4.4.4, + removed broken nios2 support, ppc e300cX/e500mc support, + improved external toolchain support, GDB 7.x support. + + X.org updated to 7.5. + + New packages: cdrkit, cramfs, genext2fs, genromfs, + libatomic_ops, librsync, libusb-compat, lmbench, netperf, + squashfs, squashfs3, squid + + Updated/fixed packages: alsa-utils, argus, autoconf, bison, + busybox, bzip2, directfb, dnsmasq, dosfstools, e2fsprogs, + eeprog, fakeroot, fbv, findutils, freetype, haserl, hostapd, + iperf, iptables, iw, less, libaio, libcgi, libcgicc, libdrm, + libgcrypt, libglib2, libid3tag, libmad, liboil, libosip2, + libpng, libraw1394, libsysfs, libxml2, libxslt, linux-fusion, + ltrace, lua, lzma, madplay, makedevs, matchbox, mdadm, + memstat, mesa3d, mtd-utils, nano, ncurses, openssl, patch, + pciutils, php, pixman, portage, pppd, pthread-stubs, python, + qt, radvd, samba, setserial, smartmontools, tar, tslib, + udpcast, usb_modeswith, vtun, wget, xdata_xcursor-themes, + xdriver_xf86-video-intel, xkeyboard-config, xlib_libX11, + xlib_libXaw, xlib_libXfont, xlib_libXfontcache, + xlib_libXxf86misc, xlib_libXtst, xlib_libpciaccess, + xproto_dri2proto, xproto_eviext, xproto_fontcacheproto, + xproto_xf86miscproto, xserver_xorg-server + + Removed packages: xapp_xtrap, xlib_libXTrap, xlib_libXevie, + xlib_libXxf86misc, xxproto_evieext, proto_trapproto, + xproto_xf86miscproto + + Issues resolved (http://bugs.uclibc.org): + + #513: Add new squid package + #661: lmbench: new package + #719: Add lua option to haserl + #800: [PATCH] iperf update to 2.0.4 + #803: [PATCH] lua - add shared library patch and config option for... + #805: [PATCH] mdadm - version update + #817: integrator926_defconfig uses unsupported uboot board name + #851: Add option to specify --sysroot value for external toolchain + #1093: Upgrade libusb to v1.0.3 and add new libusb-compat + package for compatibility with old packages that expect + the pre-1.0 API. + #1105: Add new netperf package + #1111: Bump wget to 1.12 and migrate to Makefile.autotools.in + #1117: Bump nano to 2.2.3 and migrate to Makefile.autotools.in + #1123: Bump less to 436 and migrate to Makefile.autotools.in + #1129: Bump memstat to 0.8 and migrate to Makefile.package.in + #1189: Wrong u-boot configuration name for integrator926 target + #1219: kernel headers not correctly installed into toolchain/staging + #1267: Wrong BR2_EXTRA_VERSION + #1273: BR2_INET_IPV6 does not enable IPv6 in pppd + #1303: Add librsync package + #1321: Busybox link fails due to lack of --sysroot option + #1327: mtd-utils compile failure due to lack of --sysroot in CFLAGS + #1345: Bump pppd to 2.4.5 and convert to Makefile.autotools.in + #1369: cannot build radvd (flex problem) + #1387: xlib_libX11-1.3.2 can't find libjpeg + #1411: [SECURITY] Update openssl package to 0.9.8n + #1417: Bump iptables to 1.4.7 + #1423: Bump e2fsprogs to 1.41.11 + #1429: [SECURITY] Update php to 5.2.13 + #1441: Add binutils 2.20.1 + #1447: Package installation on target with debug symbols is broken + #1459: Misc QA fixes + #1489: radvd update to 1.6 + #1513: Enable powerpc e300c2, e300c3 and e500mc optimization + #1537: dev entries not created anymore + #1555: Fix default uclibc-0.9.31 configuration + #1561: [SECURITY] Update samba to 3.3.12 + #1567: openssl0.9.8n fails to compile + #1573: Alsa-utils alsactl/init/* not installed to target + #1591: portmap fails to compile + #1615: Convert eeprog package to gentargets + #1645: Bump hostapd package to 0.7.2 + +2010.02, Release February 26th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: avahi, busybox, cramfs, ipsec-tools, libcgicc, + libgtk2, libraw1394, madplay, netsnmp, pango, squashfs, sylpheed, qt, + xfont_font-util + + Removed packages: hostap, openmotif, xpdf + + Issues resolved (http://bugs.uclibc.org): + + #165: openmotif does not build + #1147: Remove obsolete hostap package + #1183: make source fails to download gmp, mpfr and patches + +2010.02-rc2, Released February 23th, 2010: + + Fixes all over the tree and new features. + + New packages: intltool + + Updated/fixed packages: ace_of_penguins, alsa-lib, alsa-utils, argus, + at, automake, ccache, dosfstools, e2fsprogs, flex, gob2, gmpc, + gst-plugins-good, imagemagick, iw, kexec, libeXosip, libgtk2, + libpcap, libpng, libsoup, libxcb, libxml-parser-perl, libxml2, + libxslt, lvm2, matchbox, mplayer, rsync, rubix, shared-mime-info, + tcl, webkit, xapp_mkfontscale, xfont_encodings, xfont_font-util, + xlib_libfontenc, xproto_trapproto, zlib + + Removed package: xboard + + Issues resolved (http://bugs.uclibc.org): + + #335: atk looks for the path to the gnome library on the host + #355: Please update WebKit - it doesn't compile! + #453: libglib2 autoreconf + #457: e2fsprogs link problem + #459: libgtk2 autoreconf + #469: build of libgtk2 for host incorrectly assumes that X.org ... + #671: Bash fails to build when building buildront on Ubuntu 9.04 + #711: WebKit host dependencies problems + #821: cp: illegal operation + #1039: Not compiled on ubuntu karmic + #1069: [PATCH] The AT91BOOTSTRAP makefile contains a typo + +2010.02-rc1, Released February 9th, 2010: + + Fixes all over the tree and new features. + + Generalized autotools infrastructure to be usable for + non-autotools packages, see package/Makefile.package.in for + details. + + Cleaned up avr32 toolchain config, external source-based + toolchain support is gone. + + Dependency checks: Also check for makeinfo, only print output + on errors. + + Toolchain: uClibc 0.9.30.2, gcc 4.4.3 + + New packages: libcdaudio, libdvdnav, libdvdread, hostapd, ser2net, + tcpreplay + + Updated/fixed packages: alsa-lib, alsa-utils, at, autoconf, bash, + bind, binutils, bootutils, busybox, dbus, directfb, dnsmasq, + e2fsprogs, gstreamer, gperf, gst-plugins-bad, gvfs, fbdump, flex, + hal, iptables, iw, jpeg, kismet, libfuse, libglib2, liboil, libpcap, + libungif, libxml2, libxslt, lighttpd, mesa, mpg123, mtd-utils, nbd, + neon, netstat-nat, newt, openvpn, pcre, php, qt, rdesktop, readline, + rpm, sawman, sdl, sdl_ttf, sqlite, sshfs, tremor, u-boot, + usb_modeswitch, usbutils, webkit, wpa_supplicant, xfsprogs, zlib + + Removed package: asterisk, openswan + + Issues resolved (http://bugs.uclibc.org): + + #515: tcpreplay: new package + #553: Wrong DirectFB ps2mouse limitation + #559: mesa3d build fails + #679: Autoconf cannot find M4 + #739: New/updated hostapd package + #749: Bump usbutils package to version 0.86 + #751: Kernel 2.6 snapshot fetch fail + #753: Bump lighttpd package to 1.4.25 + #757: U-Boot: mkimage cannot be installed using external toolchain + #761: Add binutils 2.20 to toolchain options + #763: [SECURITY] Update pcre to 7.9 + #765: Add buildroot branding to gcc + #767: Bump iw package to 0.9.18 + #773: [SECURITY] Update bind to 9.5.2-P1 + #795: Minor edits to fix typos, grammar, spelling, usage in documen... + #813: Drop not very useful generic package selection options ... + #823: Editor backup files (~) is copied from the target_skeleton + #827: Bump mtd-utils package to version 1.2.0 + #841: Build error + #913: Bump iptables to 1.4.6 + #919: Bump usb_modeswitch package to 1.0.7 + #925: Bump wpa_supplicant package to 0.6.10 + #931: Bump kismet package to 2010-01-R1 + #937: Bump openvpn package to 2.1.1 + #943: Bump sqlite package to 3.6.22 + #961: Bump dnsmasq to 2.52 + #967: Bump netstat-nat to 1.4.10 + #973: Bump iw to 0.9.19 + #1003: DHCP options disabled with busybox-1.16.0 + #1009: [SECURITY] Bump php to 5.2.12 + #1015: [SECURITY] Bump bind to 9.5.1-P2 + #1027: Busybox flash commands conflict with those from mtd-utils + #1063: [SECURITY] Update lighttpd to 1.4.26 + +2009.11, Released December 1st, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: alsamixergui, autoconf, coreutils, fltk, + microperl, ncurses, vim + + Issues resolved (http://bugs.uclibc.org): + + #707: Cant configure fltk-1.1.7. configure: error: Configure could ... + +2009.11-rc2, Released November 29th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: busybox, dbus, fltk, gvfs, ltrace + +2009.11-rc1, Released November 23rd, 2009: + + Fixes all over the tree and new features. + + Cleaned up / Simplified build directory layout. Refer to + docs/buildroot.html#using for details. + + Target defconfig files moved to configs/ and listed in 'make help' + output. + + Fixed *clean targets. Now clean removes everything generated, + so you can do a fresh rebuild. Distclean furthermore removes + kbuild tools and .config, bringing the source tree back in a + pristine state. + + Toolchain: ARM cortex A8 support, GCC 4.4.2, sensible default + soft / hardfloat setting for architecture, ensure target-ldd + gets installed. + + New packages: divine, gvfs, libarchive, libmicrohttpd, + sdl_sound, swfdec, sysstat + + Updated/fixed packages: alsa-lib, alsamixergui, autoconf, bootutils, + busybox, gcc, directfb, dnsmasq, e2fsprogs, festival, gamin, gperf, + gqview, gstreamer, gst-plugins-bad, gst-plugins-base, gst-plugins-good, + imagemagick, ipkg, iptables, iw, kernel-headers, kismet, leafpad, + libelf, libevent, libglib2, libidn, liblockfile, libmad, libpcap, + libupnp, libuuid, libxml2, lighttpd, ltrace, lua, lzma, magiccube4d, + matchbox, mdadm, nbd, ncftp, ncurses, netkittelnet, netsnmp, + ng-spice-rework, ntfs-3g, openntp, openssl, pcmanfm, php, psmisc, + python, quagga, radvd, rpm, rsync, rubix, samba, sawman, sdl, sdl_image, + shared-mime-info, sfdisk, spawn-fcgi, speech-tools, sqlite, squashfs, + synergy, syslinux, sysklogd, target-binutils, tcpdump, torsmo, u-boot, + udpcast, util-linux, valgrind, vsftpd, wipe, wpa-supplicant, x11vnc, + xdata_xcursor-themes, xboard, xfsprogs, xstroke, zlib[5~ + + Removed package: mdnsresponder, mpatrol, gcc 3.4.6 + 4.0.4, vice + + Issues resolved (http://bugs.uclibc.org): + + #301: allow to install libsmbclient + #303: add gvfs package + #477: Add sdl_sound package + #487: Make kismet package sexier + #511: New package usb_modeswitch + #527: misc fixes for dnsmasq package + #565: libevent: Bump version and clean up makefile + #587: Use iptables multipurpose binaries and bump to 1.4.4 + #593: Missing early check for patch(1) + #597: (REOP) Selecting busybox in buildroot's config clobbers ar ... + #609: libmicrohttpd: New package + #615: python: Don't delete .py files unless asked + #617: netkit/inetd requires RPC and fails to build if RPC is disabled + #619: netkittelnet requires netkitbase to install, but there's no ... + #645: allow to build nbd-server with NBD package + #653: [SECURITY] Update php package to version 5.2.11 + #655: Update sqlite package to version 3.6.18 + #657: Bug in imagemagick-clean target + #663: Add option for NAND flash with 512B Page and 16 kB erasesize ... + #665: [PATCH] Samba package + #667: [PATCH] e2fsprogs + #683: SDL-dfb does not select directfb + #701: make install problem with unstripped binaries + #703: [SECURITY] Update openssl package to 0.9.8l + #705: Bump spawn-fcgi package to 1.6.3 + #709: Bump lighttpd package to 1.4.24 + #713: Migrate openntpd package to Makefile.autotools.in + #715: Bump libidn package to 1.15 and other fixes + #717: Bump dnsmasq to 2.51 and introduce new IDN option + #731: Bump iw package to 0.9.17 + +2009.08, Released August 31th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: ctorrent, saveconfig/getconfig, + sdl_net, util-linux. + + Issues resolved (http://bugs.uclibc.org): + + #529: util-linux doesn't find headers and include libs correctly + #557: Build ctorrent with SSL support if available + +2009.08-rc3, Released August 26th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: alsa-utils, berkeleydb, busybox, dbus, + directfb, enchant, kernel headers. + + Issues resolved (http://bugs.uclibc.org): + + #471: Allow directfb compilation with debug + #541: Removal of CVS directories in target filesystem broken + #547: berkeleydb: Update config.{sub, guess} + #549: enchant: Fix dependencies. + #569: Fix alsa-utils build for x86 on x86-64 + +2009.08-rc2, Released August 6th, 2009: + + Additional fixes and new features. + + New packages: libuuid, gcc 4.3.4. + + Updated/fixed packages: busybox, classpath, gzip, ipsec-tools, + jamvm, libusb, microperl, neon, popt, sed, webkit. + + Fixed issue with 'make oldconfig' + + Issues resolved (http://bugs.uclibc.org): + + #525: sed broken with external toolchain + #537: Fix gzip build with recent glibc + +2009.08-rc1, Released August 2nd, 2009: + + Fixes all over the tree and new features. + + Improvement of external toolchain support: + - Support for glibc toolchains. + - The toolchain configuration announced to Buildroot is + verified against the real toolchain configuration. + - Fixes, documentation. + + Cleanup X.org support: clarified configuration options, and + removed mandatory dependency on useless libraries such as + libXt or libXaw. + + New QT-based configurator, usable using 'make xconfig'. + + Support for the Xtensa architecture. + + Toolchain: GCC 4.4.1, 2.6.30 kernel headers, removed < 2.6.26 + headers. + + New packages: bmon, ctorrent, dosfstools, enchant, + gst-plugins-bad, iw, libmms, libnl, netstat-nat, ntfsprogs, + sdl_gfx, spawn-fcgi. + + Updated packages: bind, busybox, coreutils, sqlite, directfb, + expat, gamin, gnuconfig, haserl, ipsec-tools, classpath, + libcurl, libglib2, liblockfile, libpng, libsoup, libxml2, + lighttpd, ltp-testsuite, lvm2, matchbox, memstat, + gst-plugins-good, gstreamer, libogg, libvorbis, mplayer, + neon, openssl, pciutils, php, qt, ruby, sawman, webkit, + wpa-supplicant, xdriver_xf86-input-synaptics, + xdriver_xf86-video-intel, xlib_libXfont, xlib_libXft, + xlib_libXt, xproto_xproto, xserver-xorg, xutil_makedepend, + xutil_util-macros. + + Issues resolved (http://bugs.uclibc.org): + + #83: liblockfile fails to compile due to eaccess redefinition + #163: Xtensa architecture port + #171: xorg-server / kernel headers 2.6.26 - vm86.c compilation issue + #241: device mapper + lvm2: build together + #243: ctorrent: new package + #247: ntfsprogs: new package + #271: Library 'libgcc_s.so.1' not installed in search path + #287: New package libnl + #289: New package iw + #331: Update MPlayer to version 1.0rc2 + #333: Bump sqlite package to 3.6.15 + #349: update libsoup to version 2.26.2 + #357: New package netstat-nat + #359,#413: Upgrade openvpn to Makefile.autotools.in + #367: linux kernel compile error for arm926t + #369: Add SDL_gfx package + #373: Support for building gstreamer without libxml + #379: update DirectFB to version 1.4.0 + #383: gst-plugins-good: Allow soup plugin to be configured + #385: neon: Fix pkgconfig dependency + #387: Tremor not installed to toolchain + #389: New package bmon + #391: gstreamer: Bump version to 0.10.23 + #393: gst-plugins-base: Bump version to 0.10.23 + #395: gst-plugins-bad: New package + #403: Error while building iso9660 image + #409: Bump php package to 5.2.10 + #411: ipsec-tools: Bump version to 0.7.2 + #417: New package spawn-fcgi + #419: Bump lighttpd package to 1.4.23 + #421: toolchain: Clean up toolchain locale support menu + #427: webkit: Update to WebKit svn r44552 + #437: ltp-testsuite: Bump version to 20090630 + #451: Upgrade from unmaintained dosfstools-2.11 to dosfstools-3.0.3 + #467: DirectFB 1.4.1 + #473: memstat_0.5.tar.gz has install with -D and that fails "make" + #491: libxml2: Bump version to 0.7.3 + #495: Bump bind package to 9.5.1-P3 (security) + #497: OpenSSL RSA key generation hangs on x86_64 + #509: Bump sqlite package to 3.6.16 + #523: pciutils broken with external toolchain + #533: Update gamin to 0.1.10 to fix compilation + +2009.05, Released June 1st, 2009: + + Fixes for dropbear & diffutils, bump linux-advanced 2.6.29.x + version and marked ubifsroot as broken. + +2009.05-rc3, Released May 27th, 2009: + + Fixes for toolchain (gcc arm pr37436), stable kernel versions, + busybox, curl, libusb, readline, python and strace. + + Issues resolved (http://bugs.uclibc.org): + + #345: libcurl package needs a urandom fix + +2009.05-rc2, Released May 19th, 2009: + + Fixes for toolchain (gcc w/softfloat on ppc, 3.4.6 buildfix + for newer hosts), stable kernel versions, busybox, cups, + dmraid, docker, mesa3d, rsync and updated defconfigs. + + xserver marked as broken on AVR32 and atngw100-expanded + config removed. + + Issues resolved (http://bugs.uclibc.org): + + #167: metacity does not build + #295: gamin installs python support even if python is disabled + #323: gen_matypes fails to execute during build of Mesa when us... + +2009.05-rc1, Released May 5th, 2009: + + Fixes all over the tree, further conversion of packages to + Makefile.autotools.in and we now build host versions of + packages where needed for build time dependencies instead of + relying on the correct versions being available on the build + host. Ancient toolchain / busybox versions have furthermore + been removed as announced in the 2009.02 release notes. + + New packages: flac, gob2, lzop, taglib, wpa_supplicant + + Updated packages: avahi, bind, binutils, busybox, dbus, dbus-glib, + directfb, dnsmasq, freetype, gcc, gmp, gstreamer, iptables, kernel + headers, kexec, libglib2, libpng, libsndfile, lua, mpfr, ntfs-3g, + openssl, php, qtopia4, rsync, samba, sqlite, tar, uboot, uclibc, + util-linux, xorg7, xerces + + Issues resolved (http://bugs.uclibc.org): + + #5,#77,#141,#143: Convert php package to Makefile.autotools.in + and a ton of other improvements + #19: page.h missing by util-linux + #37: update libglib2 to version 2.18.4 + #61: tslib puts staging_dir into pkgconfig file + #69: tar refuses to build + #71,#175: ./wchar.h:41:12: error: empty filename in #include + #73: Bump openssl package to the latest version + #81: New package wpa_supplicant + #99: new package: flac + #101: update gstreamer packages + #105,#313: menuconfig segfaults on tinyx if wchar is not + selected + #107: convert libvorbis to Makefile.autotools.in + #109: Make pppd package avoid bsd err + #111: binutils 2.17 fails to build when texinfo >= 4.10 + #133: Modify ncurses5-config to get correct include path + #137: Bump php to version 5.2.9 + #139: Bump sqlite to 3.6.11 and convert to + Makefile.autotools.in + #145: Bump bind package to 9.5.1-P1 (security) + #147: buildroot toolchain fails to build w/binutils-2.19.1 + #151: openssl package trivial fixes + #161: vim fails on patching with errors in configure.patch + #169: blackbox-0.70.1 does not build + #177: xdriver_xf86-input-keyboard does not build + #179: Upgrade dropbear to Makefile.autotools.in + #181: Update to Xorg 7.4 + #187: ntfs-3g: could not build cross + #191: alsa-lib ARM binaries always built with EABI + #213: Bump wpa_supplicant package to version 0.6.9 + #217: Bump openssl package to 0.9.8k (security) + #219: Toolchain build fails on m4 + #225: m4 macros are out of place + #233: make ipv6 optional in iptables + #237: ncftp: convert to Makefile.autotools.in + #239: ntfs-3g: convert to Makefile.autotools.in + #245: lzop: new package + #271: Bump bind package to 9.5.1-P2 (security) + #277: Bump sqlite package to 3.6.16 + #279: update libglib2 to version 2.20.1 + #281: update DirectFB to version 1.2.8 + #283: add taglib + #285: compilation of samba fails if IPV6 support is missing + #293: update samba to version 3.3.3 + #299: add shared-mime-info package + #307: make openssl package respect build flags diff --git a/features/buildroot/COPYING b/features/buildroot/COPYING new file mode 100644 index 00000000..0c018b03 --- /dev/null +++ b/features/buildroot/COPYING @@ -0,0 +1,355 @@ +With the exceptions below, Buildroot is distributed under the terms of +the GNU General Public License, reproduced below; either version 2 of +the License, or (at your option) any later version. + +Some files in Buildroot contain a different license statement. Those +files are licensed under the license contained in the file itself. + +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. + +----------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means 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. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/features/buildroot/Config.in b/features/buildroot/Config.in new file mode 100644 index 00000000..757ad1ca --- /dev/null +++ b/features/buildroot/Config.in @@ -0,0 +1,868 @@ +# + +mainmenu "Buildroot $BR2_VERSION Configuration" + +config BR2_HAVE_DOT_CONFIG + bool + default y + +config BR2_VERSION + string + option env="BR2_VERSION_FULL" + +config BR2_HOSTARCH + string + option env="HOSTARCH" + +config BR2_BUILD_DIR + string + option env="BUILD_DIR" + +# Hidden config symbols for packages to check system gcc version +config BR2_HOST_GCC_VERSION + string + option env="HOST_GCC_VERSION" + +config BR2_HOST_GCC_AT_LEAST_4_5 + bool + default y if BR2_HOST_GCC_VERSION = "4 5" + +config BR2_HOST_GCC_AT_LEAST_4_6 + bool + default y if BR2_HOST_GCC_VERSION = "4 6" + select BR2_HOST_GCC_AT_LEAST_4_5 + +config BR2_HOST_GCC_AT_LEAST_4_7 + bool + default y if BR2_HOST_GCC_VERSION = "4 7" + select BR2_HOST_GCC_AT_LEAST_4_6 + +config BR2_HOST_GCC_AT_LEAST_4_8 + bool + default y if BR2_HOST_GCC_VERSION = "4 8" + select BR2_HOST_GCC_AT_LEAST_4_7 + +config BR2_HOST_GCC_AT_LEAST_4_9 + bool + default y if BR2_HOST_GCC_VERSION = "4 9" + select BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_HOST_GCC_AT_LEAST_5 + bool + default y if BR2_HOST_GCC_VERSION = "5" + select BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_HOST_GCC_AT_LEAST_6 + bool + default y if BR2_HOST_GCC_VERSION = "6" + select BR2_HOST_GCC_AT_LEAST_5 + +config BR2_HOST_GCC_AT_LEAST_7 + bool + default y if BR2_HOST_GCC_VERSION = "7" + select BR2_HOST_GCC_AT_LEAST_6 + +config BR2_HOST_GCC_AT_LEAST_8 + bool + default y if BR2_HOST_GCC_VERSION = "8" + select BR2_HOST_GCC_AT_LEAST_7 + +# When adding new entries above, be sure to update +# the HOSTCC_MAX_VERSION variable in the Makefile. + +# Hidden boolean selected by packages in need of Java in order to build +# (example: kodi) +config BR2_NEEDS_HOST_JAVA + bool + +# Hidden boolean selected by packages in need of javac in order to build +# (example: classpath) +config BR2_NEEDS_HOST_JAVAC + bool + +# Hidden boolean selected by packages in need of jar in order to build +# (example: classpath) +config BR2_NEEDS_HOST_JAR + bool + +# 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.). +config BR2_HOSTARCH_NEEDS_IA32_LIBS + bool + +# Hidden boolean selected by packages that need to build 32 bits +# binaries with the host compiler, even on 64 bits build machines (e.g +# bootloaders). +config BR2_HOSTARCH_NEEDS_IA32_COMPILER + bool + +# Hidden boolean selected by packages that need the host to have an +# UTF8 locale. +config BR2_NEEDS_HOST_UTF8_LOCALE + bool + +source "arch/Config.in" + +menu "Build options" + +menu "Commands" + +config BR2_WGET + string "Wget command" + default "wget --passive-ftp -nd -t 3" + +config BR2_SVN + string "Subversion (svn) command" + default "svn --non-interactive" + +config BR2_BZR + string "Bazaar (bzr) command" + default "bzr" + +config BR2_GIT + string "Git command" + default "git" + +config BR2_CVS + string "CVS command" + default "cvs" + +config BR2_LOCALFILES + string "Local files retrieval command" + default "cp" + +config BR2_SCP + string "Secure copy (scp) command" + default "scp" + +config BR2_HG + string "Mercurial (hg) command" + default "hg" + +config BR2_ZCAT + string "zcat command" + default "gzip -d -c" + help + Command to be used to extract a gzip'ed file to stdout. zcat + is identical to gunzip -c except that the former may not be + available on your system. + Default is "gzip -d -c" + Other possible values include "gunzip -c" or "zcat". + +config BR2_BZCAT + string "bzcat command" + default "bzcat" + help + Command to be used to extract a bzip2'ed file to stdout. + bzcat is identical to bunzip2 -c except that the former may + not be available on your system. + Default is "bzcat" + Other possible values include "bunzip2 -c" or "bzip2 -d -c". + +config BR2_XZCAT + string "xzcat command" + default "xzcat" + help + Command to be used to extract a xz'ed file to stdout. + Default is "xzcat" + +config BR2_LZCAT + string "lzcat command" + default "lzip -d -c" + help + Command to be used to extract a lzip'ed file to stdout. + Default is "lzip -d -c" + +config BR2_TAR_OPTIONS + string "Tar options" + default "" + help + Options to pass to tar when extracting the sources. + E.g. " -v --exclude='*.svn*'" to exclude all .svn internal + files and to be verbose. + +endmenu + +config BR2_DEFCONFIG_FROM_ENV + string + option env="BR2_DEFCONFIG" + +config BR2_DEFCONFIG + string "Location to save buildroot config" + default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" + default "$(CONFIG_DIR)/defconfig" + help + When running 'make savedefconfig', the defconfig file will be + saved in this location. + +config BR2_DL_DIR + string "Download dir" + default "$(TOPDIR)/dl" + help + Directory to store all the source files that we need to fetch. + If the Linux shell environment has defined the BR2_DL_DIR + environment variable, then this overrides this configuration + item. + The directory is organized with a subdirectory for each + package. Each package has its own $(LIBFOO_DL_DIR) variable + that can be used to find the correct path. + + The default is $(TOPDIR)/dl + +config BR2_HOST_DIR + string "Host dir" + default "$(BASE_DIR)/host" + help + Directory to store all the binary files that are built for the + host. This includes the cross compilation toolchain when + building the internal buildroot toolchain. + + The default is $(BASE_DIR)/host + +menu "Mirrors and Download locations" + +config BR2_PRIMARY_SITE + string "Primary download site" + default "" + help + Primary site to download from. If this option is set then + buildroot will try to download package source first from this + site and try the default if the file is not found. + Valid URIs are: + - URIs recognized by $(WGET) + - local URIs of the form file://absolutepath + - scp URIs of the form scp://[user@]host:path. + +config BR2_PRIMARY_SITE_ONLY + bool "Only allow downloads from primary download site" + depends on BR2_PRIMARY_SITE != "" + help + If this option is enabled, downloads will only be attempted + from the primary download site. Other locations, like the + package's official download location or the backup download + site, will not be considered. Therefore, if the package is not + present on the primary site, the download fails. + + This is useful for project developers who want to ensure that + the project can be built even if the upstream tarball + locations disappear. + +if !BR2_PRIMARY_SITE_ONLY + +config BR2_BACKUP_SITE + string "Backup download site" + default "http://sources.buildroot.net" + help + Backup site to download from. If this option is set then + buildroot will fall back to download package sources from here + if the normal location fails. + +config BR2_KERNEL_MIRROR + string "Kernel.org mirror" + default "https://cdn.kernel.org/pub" + help + kernel.org is mirrored on a number of servers around the + world. The following allows you to select your preferred + mirror. By default, a CDN is used, which automatically + redirects to a mirror geographically close to you. + + Have a look on the kernel.org site for a list of mirrors, then + enter the URL to the base directory. Examples: + + http://www.XX.kernel.org/pub (XX = country code) + http://mirror.aarnet.edu.au/pub/ftp.kernel.org + +config BR2_GNU_MIRROR + string "GNU Software mirror" + default "http://ftpmirror.gnu.org" + help + GNU has multiple software mirrors scattered around the + world. The following allows you to select your preferred + mirror. By default, a generic address is used, which + automatically selects an up-to-date and local mirror. + + Have a look on the gnu.org site for a list of mirrors, then + enter the URL to the base directory. Examples: + + http://ftp.gnu.org/pub/gnu + http://mirror.aarnet.edu.au/pub/gnu + +config BR2_LUAROCKS_MIRROR + string "LuaRocks mirror" + default "http://rocks.moonscript.org" + help + LuaRocks repository. + + See http://luarocks.org + +config BR2_CPAN_MIRROR + string "CPAN mirror (Perl packages)" + default "http://cpan.metacpan.org" + help + CPAN (Comprehensive Perl Archive Network) is a repository of + Perl packages. It has multiple software mirrors scattered + around the world. This option allows you to select a mirror. + + The list of mirrors is available at: + http://search.cpan.org/mirror + +endif + +endmenu + +config BR2_JLEVEL + int "Number of jobs to run simultaneously (0 for auto)" + default "0" + help + Number of jobs to run simultaneously. If 0, determine + automatically according to number of CPUs on the host system. + +config BR2_CCACHE + bool "Enable compiler cache" + help + This option will enable the use of ccache, a compiler cache. + It will cache the result of previous builds to speed up future + builds. By default, the cache is stored in + $HOME/.buildroot-ccache. + + Note that Buildroot does not try to invalidate the cache + contents when the compiler changes in an incompatible way. + Therefore, if you make a change to the compiler version and/or + configuration, you are responsible for purging the ccache + cache by removing the $HOME/.buildroot-ccache directory. + +if BR2_CCACHE + +config BR2_CCACHE_DIR + string "Compiler cache location" + default "$(HOME)/.buildroot-ccache" + help + Where ccache should store cached files. + If the Linux shell environment has defined the BR2_CCACHE_DIR + environment variable, then this overrides this configuration + item. + +config BR2_CCACHE_INITIAL_SETUP + string "Compiler cache initial setup" + help + Initial ccache settings to apply, such as --max-files or + --max-size. + + For example, if your project is known to require more space + than the default max cache size, then you might want to + increase the cache size to a suitable amount using the -M + (--max-size) option. + + The string you specify here is passed verbatim to ccache. + Refer to ccache documentation for more details. + + These initial settings are applied after ccache has been + compiled. + +config BR2_CCACHE_USE_BASEDIR + bool "Use relative paths" + default y + help + Allow ccache to convert absolute paths within the output + directory into relative paths. + + During the build, many -I include directives are given with an + absolute path. These absolute paths end up in the hashes that + are computed by ccache. Therefore, when you build from a + different directory, the hash will be different and the cached + object will not be used. + + To improve cache performance, set this option to y. This + allows ccache to rewrite absolute paths within the output + directory into relative paths. Note that only paths within the + output directory will be rewritten; therefore, if you change + BR2_HOST_DIR to point outside the output directory and + subsequently move it to a different location, this will lead + to cache misses. + + This option has as a result that the debug information in the + object files also has only relative paths. Therefore, make + sure you cd to the build directory before starting gdb. See + the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache + manual for more information. + +endif + +config BR2_ENABLE_DEBUG + bool "build packages with debugging symbols" + help + Build packages with debugging symbols enabled. All libraries + and binaries in the 'staging' directory will have debugging + symbols, which allows remote debugging even if libraries and + binaries are stripped on the target. Whether libraries and + binaries are stripped on the target is controlled by the + BR2_STRIP_* options below. + +if BR2_ENABLE_DEBUG +choice + prompt "gcc debug level" + default BR2_DEBUG_2 + help + Set the debug level for gcc + +config BR2_DEBUG_1 + bool "debug level 1" + help + Debug level 1 produces minimal information, enough for making + backtraces in parts of the program that you don't plan to + debug. This includes descriptions of functions and external + variables, but no information about local variables and no + line numbers. + +config BR2_DEBUG_2 + bool "debug level 2" + help + The default gcc debug level is 2 + +config BR2_DEBUG_3 + bool "debug level 3" + help + Level 3 includes extra information, such as all the macro + definitions present in the program. Some debuggers support + macro expansion when you use -g3. +endchoice +endif + +config BR2_STRIP_strip + bool "strip target binaries" + default y + depends on !BR2_PACKAGE_HOST_ELF2FLT + help + Binaries and libraries in the target filesystem will be + stripped using the normal 'strip' command. This allows to save + space, mainly by removing debugging symbols. Debugging symbols + on the target are needed for native debugging, but not when + remote debugging is used. + +config BR2_STRIP_EXCLUDE_FILES + string "executables that should not be stripped" + default "" + depends on BR2_STRIP_strip + help + You may specify a space-separated list of binaries and + libraries here that should not be stripped on the target. + +config BR2_STRIP_EXCLUDE_DIRS + string "directories that should be skipped when stripping" + default "" + depends on BR2_STRIP_strip + help + You may specify a space-separated list of directories that + should be skipped when stripping. Binaries and libraries in + these directories will not be touched. The directories should + be specified relative to the target directory, without leading + slash. + +choice + prompt "gcc optimization level" + default BR2_OPTIMIZE_S + help + Set the optimization level for gcc + +config BR2_OPTIMIZE_0 + bool "optimization level 0" + help + Do not optimize. + +config BR2_OPTIMIZE_1 + bool "optimization level 1" + help + Optimize. Optimizing compilation takes somewhat more time, and + a lot more memory for a large function. With -O, the compiler + tries to reduce code size and execution time, without + performing any optimizations that take a great deal of + compilation time. -O turns on the following optimization + flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability + -fcprop-registers -floop-optimize -fif-conversion + -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts + -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename + -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O + also turns on -fomit-frame-pointer on machines where doing so + does not interfere with debugging. + +config BR2_OPTIMIZE_2 + bool "optimization level 2" + help + Optimize even more. GCC performs nearly all supported + optimizations that do not involve a space-speed tradeoff. The + compiler does not perform loop unrolling or function inlining + when you specify -O2. As compared to -O, this option increases + both compilation time and the performance of the generated + code. -O2 turns on all optimization flags specified by -O. It + also turns on the following optimization flags: + -fthread-jumps -fcrossjumping -foptimize-sibling-calls + -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm + -fexpensive-optimizations -fstrength-reduce + -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves + -fpeephole2 -fschedule-insns -fschedule-insns2 + -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing + -fdelete-null-pointer-checks -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please + note the warning under -fgcse about invoking -O2 on programs + that use computed gotos. + +config BR2_OPTIMIZE_3 + bool "optimization level 3" + help + Optimize yet more. -O3 turns on all optimizations specified by + -O2 and also turns on the -finline-functions, -funswitch-loops + and -fgcse-after-reload options. + +config BR2_OPTIMIZE_G + bool "optimize for debugging" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + Optimize for debugging. This enables optimizations that do not + interfere with debugging. It should be the optimization level + of choice for the standard edit-compile-debug cycle, offering + a reasonable level of optimization while maintaining fast + compilation and a good debugging experience. + +config BR2_OPTIMIZE_S + bool "optimize for size" + help + Optimize for size. -Os enables all -O2 optimizations that do + not typically increase code size. It also performs further + optimizations designed to reduce code size. -Os disables the + following optimization flags: -falign-functions -falign-jumps + -falign-loops -falign-labels -freorder-blocks + -freorder-blocks-and-partition -fprefetch-loop-arrays + -ftree-vect-loop-version + This is the default. + +config BR2_OPTIMIZE_FAST + bool "optimize for fast" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + help + Optimize for fast. Disregard strict standards + compliance. -Ofast enables all -O3 optimizations. It also + enables optimizations that are not valid for all + standard-compliant programs. It turns on -ffast-math and the + Fortran-specific -fstack-arrays, unless -fmax-stack-var-size + is specified, and -fno-protect-parens. + +endchoice + +config BR2_GOOGLE_BREAKPAD_ENABLE + bool "Enable google-breakpad support" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + select BR2_PACKAGE_GOOGLE_BREAKPAD + help + This option will enable the use of google breakpad, a library + and tool suite that allows you to distribute an application to + users with compiler-provided debugging information removed, + record crashes in compact "minidump" files, send them back to + your server and produce C and C++ stack traces from these + minidumps. Breakpad can also write minidumps on request for + programs that have not crashed. + +if BR2_GOOGLE_BREAKPAD_ENABLE + +config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES + string "List of executables and libraries to extract symbols from" + default "" + help + You may specify a space-separated list of binaries and + libraries with full paths relative to $(TARGET_DIR) of which + debug symbols will be dumped for further use with google + breakpad. + + A directory structure that can be used by minidump-stackwalk + will be created at: + + $(STAGING_DIR)/usr/share/google-breakpad-symbols + +endif + +choice + bool "libraries" + default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED + default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED + help + Select the type of libraries you want to use on the target. + + The default is to build dynamic libraries and use those on the + target filesystem, except when the architecture and/or the + selected binary format does not support shared libraries. + +config BR2_STATIC_LIBS + bool "static only" + help + Build and use only static libraries. No shared libraries will + be installed on the target. This potentially increases your + code size and should only be used if you know what you are + doing. Note that some packages may not be available when this + option is enabled, due to their need for dynamic library + support. + +config BR2_SHARED_LIBS + bool "shared only" + depends on BR2_BINFMT_SUPPORTS_SHARED + help + Build and use only shared libraries. This is the recommended + solution as it saves space and build time. + +config BR2_SHARED_STATIC_LIBS + bool "both static and shared" + depends on BR2_BINFMT_SUPPORTS_SHARED + help + Build both shared and static libraries, but link executables + dynamically. While building both shared and static libraries + take more time and more disk space, having static libraries + may be useful to link some of the applications statically. + +endchoice + +config BR2_PACKAGE_OVERRIDE_FILE + string "location of a package override file" + default "$(CONFIG_DIR)/local.mk" + help + A package override file is a short makefile that contains + variable definitions of the form _OVERRIDE_SRCDIR, which + allows to tell Buildroot to use an existing directory as the + source directory for a particular package. See the Buildroot + documentation for more details on this feature. + +config BR2_GLOBAL_PATCH_DIR + string "global patch directories" + help + You may specify a space separated list of one or more + directories containing global package patches. For a specific + version of a specific package , + patches are applied as follows: + + First, the default Buildroot patch set for the package is + applied from the package's directory in Buildroot. + + Then for every directory - - that exists in + BR2_GLOBAL_PATCH_DIR, if the directory + /// exists, + then all *.patch files in this directory will be applied. + + Otherwise, if the directory / + exists, then all *.patch files in the directory will be + applied. + +menu "Advanced" + +config BR2_COMPILER_PARANOID_UNSAFE_PATH + bool "paranoid check of library/header paths" + default y + help + By default, when this option is disabled, when the Buildroot + cross-compiler will encounter an unsafe library or header path + (such as /usr/include, or /usr/lib), the compiler will display + a warning. + + By enabling this option, this warning is turned into an error, + which will completely abort the build when such unsafe paths + are encountered. + + Note that this mechanism is available for both the internal + toolchain (through the toolchain wrapper and binutils patches) + and external toolchain backends (through the toolchain + wrapper). + +config BR2_FORCE_HOST_BUILD + bool "Force the building of host dependencies" + help + Build all available host dependencies, even if they are + already installed on the system. + + This option can be used to ensure that the download cache of + source archives for packages remain consistent between + different build hosts. + + This option will increase build time. + +config BR2_REPRODUCIBLE + bool "Make the build reproducible (experimental)" + # SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + help + This option will remove all sources of non-reproducibility + from the build process. For a given Buildroot configuration, + this allows to generate exactly identical binaries from one + build to the other, including on different machines. + + The current implementation is restricted to builds with the + same output directory. Many (absolute) paths are recorded in + intermediary files, and it is very likely that some of these + paths leak into the target rootfs. If you build with the + same O=... path, however, the result is identical. + + This is labeled as an experimental feature, as not all + packages behave properly to ensure reproducibility. + +endmenu + +comment "Security Hardening Options" + +choice + bool "Stack Smashing Protection" + default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy + depends on BR2_TOOLCHAIN_HAS_SSP + help + Enable stack smashing protection support using GCC's + -fstack-protector option family. + + See + http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt + for details. + + Note that this requires the toolchain to have SSP support. + This is always the case for glibc and eglibc toolchain, but is + optional in uClibc toolchains. + +config BR2_SSP_NONE + bool "None" + help + Disable stack-smashing protection. + +config BR2_SSP_REGULAR + bool "-fstack-protector" + help + Emit extra code to check for buffer overflows, such as stack + smashing attacks. This is done by adding a guard variable to + functions with vulnerable objects. This includes functions + that call alloca, and functions with buffers larger than 8 + bytes. The guards are initialized when a function is entered + and then checked when the function exits. If a guard check + fails, an error message is printed and the program exits. + +config BR2_SSP_STRONG + bool "-fstack-protector-strong" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Like -fstack-protector but includes additional functions to be + protected - those that have local array definitions, or have + references to local frame addresses. + +comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_SSP_ALL + bool "-fstack-protector-all" + help + Like -fstack-protector except that all functions are + protected. This option might have a significant performance + impact on the compiled binaries. + +endchoice + +config BR2_SSP_OPTION + string + default "-fstack-protector" if BR2_SSP_REGULAR + default "-fstack-protector-strong" if BR2_SSP_STRONG + default "-fstack-protector-all" if BR2_SSP_ALL + +comment "Stack Smashing Protection needs a toolchain w/ SSP" + depends on !BR2_TOOLCHAIN_HAS_SSP + +choice + bool "RELRO Protection" + depends on BR2_SHARED_LIBS + help + Enable a link-time protection know as RELRO (RELocation Read + Only) which helps to protect from certain type of exploitation + techniques altering the content of some ELF sections. + +config BR2_RELRO_NONE + bool "None" + help + Disables Relocation link-time protections. + +config BR2_RELRO_PARTIAL + bool "Partial" + help + This option makes the dynamic section not writeable after + initialization (with almost no performance penalty). + +config BR2_RELRO_FULL + bool "Full" + help + This option includes the partial configuration, but also marks + the GOT as read-only at the cost of initialization time during + program loading, i.e every time an executable is started. + +endchoice + +comment "RELocation Read Only (RELRO) needs shared libraries" + depends on !BR2_SHARED_LIBS + +choice + bool "Buffer-overflow Detection (FORTIFY_SOURCE)" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_OPTIMIZE_0 + help + Enable the _FORTIFY_SOURCE macro which introduces additional + checks to detect buffer-overflows in the following standard + library functions: memcpy, mempcpy, memmove, memset, strcpy, + stpcpy, strncpy, strcat, strncat, sprintf, vsprintf, snprintf, + vsnprintf, gets. + + NOTE: This feature requires an optimization level of s/1/2/3/g + + Support for this feature has been present since GCC 4.x. + +config BR2_FORTIFY_SOURCE_NONE + bool "None" + help + Disables additional checks to detect buffer-overflows. + +config BR2_FORTIFY_SOURCE_1 + bool "Conservative" + # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 + depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + This option sets _FORTIFY_SOURCE to 1 and only introduces + checks that shouldn't change the behavior of conforming + programs. Adds checks at compile-time only. + +config BR2_FORTIFY_SOURCE_2 + bool "Aggressive" + # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 + depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + This option sets _FORTIFY_SOURCES to 2 and some more + checking is added, but some conforming programs might fail. + Also adds checks at run-time (detected buffer overflow + terminates the program) + +endchoice + +comment "Fortify Source needs a glibc toolchain and optimization" + depends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0) +endmenu + +source "toolchain/Config.in" + +source "system/Config.in" + +source "linux/Config.in" + +source "package/Config.in" + +source "fs/Config.in" + +source "boot/Config.in" + +source "package/Config.in.host" + +source "Config.in.legacy" + +source "$BR2_BUILD_DIR/.br2-external.in" diff --git a/features/buildroot/Config.in.legacy b/features/buildroot/Config.in.legacy new file mode 100644 index 00000000..7a7f8814 --- /dev/null +++ b/features/buildroot/Config.in.legacy @@ -0,0 +1,4372 @@ +# +# Config.in.legacy - support for backward compatibility +# +# When an existing Config.in symbol is removed, it should be added again in +# this file, and take appropriate action to approximate backward compatibility. +# This will make the transition for the user more convenient. +# +# When adding legacy symbols to this file, add them to the front. The oldest +# symbols will be removed again after about two years. +# +# The symbol should be copied as-is from the place where it was previously +# defined, but the help text should be removed or replaced with something that +# explains how to fix it. +# +# For bool options, the old symbol should select BR2_LEGACY, so that the user +# is informed at build-time about selected legacy options. +# If there is an equivalent (set of) new symbols, these should be select'ed by +# the old symbol for backwards compatibility. +# It is not possible to select an option that is part of a choice. In that +# case, the new option should use the old symbol as default. This requires a +# change outside of Config.in.legacy, and this should be clearly marked as such +# in a comment, so that removal of legacy options also include the removal of +# these external references. +# +# [Example: renaming a bool option that is part of a choice from FOO to BAR] +# original choice: +# choice +# prompt "Choose foobar" +# config BR2_FOO_1 +# bool "foobar 1" +# config BR2_FOO_2 +# bool "foobar 2" +# endchoice +# +# becomes: +# choice +# prompt "Choose foobar" +# default BR2_BAR_1 if BR2_FOO_1 # legacy +# default BR2_BAR_2 if BR2_FOO_2 # legacy +# config BR2_BAR_1 +# bool "foobar 1" +# config BR2_BAR_2 +# bool "foobar 2" +# endchoice +# +# and in Config.in.legacy: +# config BR2_FOO_1 +# bool "foobar 1 has been renamed" +# help +# +# # Note: BR2_FOO_1 is still referenced from package/foo/Config.in +# config BR2_FOO_2 +# bool "foobar 2 has been renamed" +# help +# +# # Note: BR2_FOO_2 is still referenced from package/foo/Config.in +# +# [End of example] +# +# For string options, it is not possible to directly select another symbol. In +# this case, a hidden wrap bool option has to be added, that defaults to y if +# the old string is not set at its default value. The wrap symbol should select +# BR2_LEGACY. +# If the original symbol has been renamed, the new symbol should use the value +# of the old symbol as default. Like for choice options, a comment should be +# added to flag that the symbol is still used in another file. +# +# [Example: renaming a string option from FOO to BAR] +# original symbol: +# config BR2_FOO_STRING +# string "Some foo string" +# +# becomes: +# config BR2_BAR_STRING +# string "Some bar string" +# default BR2_FOO_STRING if BR2_FOO_STRING != "" # legacy +# +# and in Config.in.legacy: +# config BR2_FOO_STRING +# string "The foo string has been renamed" +# help +# +# +# config BR2_FOO_STRING_WRAP +# bool +# default y if BR2_FOO_STRING != "" +# select BR2_LEGACY +# +# # Note: BR2_FOO_STRING is still referenced from package/foo/Config.in +# +# [End of example] + +config BR2_SKIP_LEGACY + bool + option env="SKIP_LEGACY" + +if !BR2_SKIP_LEGACY + +config BR2_LEGACY + bool + help + This option is selected automatically when your old .config + uses an option that no longer exists in current buildroot. In + that case, the build will fail. Look for config options which + are selected in the menu below: they no longer exist and + should be replaced by something else. + +# This comment fits exactly in a 80-column display +comment "Legacy detected: check the content of the menu below" + depends on BR2_LEGACY + +menu "Legacy config options" + +if BR2_LEGACY +comment "----------------------------------------------------" +comment "Your old configuration uses legacy options that no " +comment "longer exist in buildroot, as indicated in the menu " +comment "below. As long as these options stay selected, or in" +comment "case of string options are non-empty, the build " +comment "will fail. " +comment "* " +comment "Where possible, an automatic conversion from old to " +comment "new symbols has been performed. Before making any " +comment "change in this legacy menu, make sure to exit the " +comment "configuration editor a first time and save the " +comment "configuration. Otherwise, the automatic conversion " +comment "of symbols will be lost. " +comment "* " +comment "After this initial save, reopen the configuration " +comment "editor, inspect the options selected below, read " +comment "their help texts, and verify/update the new " +comment "configuration in the corresponding configuration " +comment "menus. When everything is ok, you can disable the " +comment "legacy options in the menu below. Once you have " +comment "disabled all legacy options, this text will " +comment "disappear and you will be able to start the build. " +comment "* " +comment "Note: legacy options older than 5 years have been " +comment "removed, and configuration files that still have " +comment "those options set, will fail to build, or run in " +comment "unpredictable ways. " +comment "----------------------------------------------------" +endif + +############################################################################### + +comment "Legacy options removed in 2019.08" + +config BR2_PACKAGE_XAPP_MKFONTDIR + bool "mkfontdir is now included in xapp_mkfontscale" + select BR2_PACKAGE_XAPP_MKFONTSCALE + select BR2_LEGACY + help + xapp_mkfontscale now includes the mkfontdir script previously + distributed separately for compatibility with older X11 + versions. + +config BR2_GDB_VERSION_8_0 + bool "gdb 8.0.x has been removed" + select BR2_LEGACY + help + The 8.0.x version of gdb has been removed. Use a newer + version instead. + +config BR2_KERNEL_HEADERS_4_20 + bool "kernel headers version 4.20.x are no longer supported" + select BR2_LEGACY + help + Version 4.20.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_5_0 + bool "kernel headers version 5.0.x are no longer supported" + select BR2_LEGACY + help + Version 5.0.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +comment "Legacy options removed in 2019.05" + +config BR2_CSKY_DSP + bool "C-SKY DSP support removed" + select BR2_LEGACY + help + C-SKY DSP instruction support for ck810 / ck807 was removed, + as it was no longer supported in C-SKY gcc. Perhaps the VDSP + instructions should be used instead, using the BR2_CSKY_VDSP + option. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR + bool "compositor moved to gst1-plugins-base" + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR + select BR2_LEGACY + help + The gst1-plugins-bad compositor plugin has moved + to gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA + bool "gst-plugins-bad IQA option was removed" + select BR2_LEGACY + help + The gst1-plugins-bad IQA option was removed. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV + bool "gst-plugins-bad opencv option was removed" + select BR2_LEGACY + help + The gst1-plugins-bad opencv option was removed because + buildroot does not have the opencv_contrib package which + is required for the bgsegm module which gst1-plugins-bad + now requires along with opencv3. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO + bool "stereo was merged into audiofx in gst1-plugins-good" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX + help + The gst1-plugins-bad stereo plugin has merged with the + gst1-plugins-base audiofx plugin. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD + bool "gst-plugins-bad vcd plugin was removed." + select BR2_LEGACY + help + The gst1-plugins-bad vcd plugin was removed. + +config BR2_PACKAGE_LUNIT + bool "lunit package removed" + select BR2_LEGACY + select BR2_PACKAGE_LUA_LUNITX + help + The lunit package was removed in favor of its fork lunitx, + which supports all versions of Lua. + +config BR2_PACKAGE_FFMPEG_FFSERVER + bool "ffmpeg ffserver removed" + select BR2_LEGACY + help + On July 10th, 2016, ffserver program has been dropped. + +config BR2_PACKAGE_LIBUMP + bool "libump package removed" + select BR2_LEGACY + help + The libump package was removed, it was only used as a + dependency of sunxi-mali, which itself was removed. + +config BR2_PACKAGE_SUNXI_MALI + bool "sunxi-mali package removed" + select BR2_LEGACY + select BR2_PACKAGE_SUNXI_MALI_MAINLINE + help + The sunxi-mali package was removed, as the + sunxi-mali-mainline package replaces it for mainline + kernels on Allwinner platforms. + +config BR2_BINUTILS_VERSION_2_29_X + bool "binutils version 2.29 support removed" + select BR2_LEGACY + help + Support for binutils version 2.29 has been removed. The + current default version (2.31 or later) has been selected + instead. + +config BR2_BINUTILS_VERSION_2_28_X + bool "binutils version 2.28 support removed" + select BR2_LEGACY + help + Support for binutils version 2.28 has been removed. The + current default version (2.31 or later) has been selected + instead. + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK + bool "gst-plugins-bad apexsink option removed" + select BR2_LEGACY + help + The gst-plugins-bad apexsink option was removed. + +comment "Legacy options removed in 2019.02" + +config BR2_PACKAGE_QT + bool "qt package removed" + select BR2_LEGACY + help + The qt package was removed. + +config BR2_PACKAGE_QTUIO + bool "qtuio package removed" + select BR2_LEGACY + help + The qtuio package was removed. + +config BR2_PACKAGE_PINENTRY_QT4 + bool "pinentry-qt4 option removed" + select BR2_LEGACY + help + The pinentry-qt4 option was removed. + +config BR2_PACKAGE_POPPLER_QT + bool "poppler qt option removed" + select BR2_LEGACY + help + The poppler qt option was removed. + +config BR2_PACKAGE_OPENCV3_WITH_QT + bool "opencv3 qt backend option removed" + select BR2_LEGACY + help + The opencv3 qt backend option was removed. + +config BR2_PACKAGE_OPENCV_WITH_QT + bool "opencv qt backend option removed" + select BR2_LEGACY + help + The opencv qt backend option was removed. + +config BR2_PACKAGE_AMD_CATALYST_CCCLE + bool "catalyst control center option removed" + select BR2_LEGACY + help + The AMD Catalyst Control Center option was removed. + +config BR2_PACKAGE_SDL_QTOPIA + bool "sdl qtopia video driver option removed" + select BR2_LEGACY + help + The SDL QTopia video driver option was removed. + +config BR2_PACKAGE_PYTHON_PYQT + bool "python-pyqt package removed" + select BR2_LEGACY + help + The python-pyqt package was removed. Consider python-pyqt5 + instead. + +config BR2_PACKAGE_GNURADIO_QTGUI + bool "gnuradio gr-qtgui option removed" + select BR2_LEGACY + help + The gr-qtgui option was removed. + +config BR2_PACKAGE_LUACRYPTO + bool "luacrypto package removed" + select BR2_LEGACY + help + The luacrypto package was removed. Consider luaossl instead. + +config BR2_PACKAGE_TN5250 + bool "tn5250 package removed" + select BR2_LEGACY + help + The tn5250 package was removed. + +config BR2_PACKAGE_BOOST_SIGNALS + bool "Boost signals removed" + select BR2_LEGACY + help + Its removal was announced in boost 1.68 and its deprecation + was announced in 1.54. Users are encouraged to use Signals2 + instead. + +config BR2_PACKAGE_FFTW_PRECISION_SINGLE + bool "single" + select BR2_LEGACY + select BR2_PACKAGE_FFTW_SINGLE + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_SINGLE. + +config BR2_PACKAGE_FFTW_PRECISION_DOUBLE + bool "double" + select BR2_LEGACY + select BR2_PACKAGE_FFTW_DOUBLE + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_DOUBLE. + +config BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE + bool "long double" + depends on !(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && \ + (BR2_arm || BR2_mips || BR2_mipsel)) + select BR2_LEGACY + select BR2_PACKAGE_FFTW_LONG_DOUBLE + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_LONG_DOUBLE. + +config BR2_PACKAGE_FFTW_PRECISION_QUAD + bool "quad" + depends on (BR2_i386 || BR2_x86_64) && BR2_USE_WCHAR + select BR2_LEGACY + select BR2_PACKAGE_FFTW_QUAD + help + This option has been removed in favor of + BR2_PACKAGE_FFTW_QUAD. + +config BR2_PACKAGE_LUA_5_2 + bool "Lua 5.2.x version removed" + select BR2_LEGACY + select BR2_PACKAGE_LUA_5_3 + help + The Lua 5.2.x version was removed. + +config BR2_TARGET_GENERIC_PASSWD_MD5 + bool "target passwd md5 format support has been removed" + select BR2_LEGACY + help + The default has been moved to SHA256 and all C libraries + now support that method by default + +comment "Legacy options removed in 2018.11" + +config BR2_TARGET_XLOADER + bool "xloader has been removed" + select BR2_LEGACY + help + The package has been removed as u-boot SPL provides + similar functionality + +config BR2_PACKAGE_TIDSP_BINARIES + bool "tidsp-binaries package removed" + select BR2_LEGACY + help + The tidsp-binaries package was removed. + +config BR2_PACKAGE_DSP_TOOLS + bool "dsp-tools package removed" + select BR2_LEGACY + help + The dsp-tools package was removed. + +config BR2_PACKAGE_GST_DSP + bool "gst-dsp package removed" + select BR2_LEGACY + help + The gst-dsp package was removed. + +config BR2_PACKAGE_BOOTUTILS + bool "bootutils package removed" + select BR2_LEGACY + help + The bootutils package was removed. + +config BR2_PACKAGE_EXPEDITE + bool "expedite package has been removed" + select BR2_LEGACY + help + expedite is not actively maintained anymore. + https://sourceforge.net/p/enlightenment/mailman/message/36428571 + +config BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT + bool "mesa3d opengl texture float option removed" + select BR2_LEGACY + help + mesa3d now unconditionally enables floating-point textures, + as the corresponding patent has expired. + +config BR2_KERNEL_HEADERS_4_10 + bool "kernel headers version 4.10.x are no longer supported" + select BR2_LEGACY + help + Version 4.10.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_11 + bool "kernel headers version 4.11.x are no longer supported" + select BR2_LEGACY + help + Version 4.11.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_12 + bool "kernel headers version 4.12.x are no longer supported" + select BR2_LEGACY + help + Version 4.12.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_13 + bool "kernel headers version 4.13.x are no longer supported" + select BR2_LEGACY + help + Version 4.13.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_15 + bool "kernel headers version 4.15.x are no longer supported" + select BR2_LEGACY + help + Version 4.15.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_17 + bool "kernel headers version 4.17.x are no longer supported" + select BR2_LEGACY + help + Version 4.17.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_LIBNFTNL_XML + bool "libnftl no longer supports XML output" + select BR2_LEGACY + help + libnftnl removed integration with libmxml. + +config BR2_KERNEL_HEADERS_3_2 + bool "kernel headers version 3.2.x are no longer supported" + select BR2_LEGACY + help + Version 3.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_1 + bool "kernel headers version 4.1.x are no longer supported" + select BR2_LEGACY + help + Version 4.1.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_16 + bool "kernel headers version 4.16.x are no longer supported" + select BR2_LEGACY + help + Version 4.16.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_18 + bool "kernel headers version 4.18.x are no longer supported" + select BR2_LEGACY + help + Version 4.18.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +############################################################################### +comment "Legacy options removed in 2018.08" + +config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT + bool "docker-engine static client option renamed" + select BR2_LEGACY + select BR2_PACKAGE_DOCKER_CLI_STATIC + help + BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT has been renamed to + BR2_PACKAGE_DOCKER_CLI_STATIC, following the package split of + docker-engine and docker-cli. + +config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19 + bool "Modular X.org server was updated to version 1.20.0" + select BR2_LEGACY + select BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_20 + help + Modular X.org server was updated to version 1.20.0 + +config BR2_PACKAGE_XPROTO_APPLEWMPROTO + bool "xproto-applewmproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-applewmproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_BIGREQSPROTO + bool "xproto-bigreqsproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-bigreqsproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_COMPOSITEPROTO + bool "xproto-compositeproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-compositeproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DAMAGEPROTO + bool "xproto-dameproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dameproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DMXPROTO + bool "xproto-dmxproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dmxproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DRI2PROTO + bool "xproto-dri2proto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dri2proto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_DRI3PROTO + bool "xproto-dri3proto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-dri3proto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_FIXESPROTO + bool "xproto-fixesproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-fixesproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_FONTCACHEPROTO + bool "xproto-fontcacheproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-fontcacheproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_FONTSPROTO + bool "xproto-fontsproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-fontsproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_GLPROTO + bool "xproto-glproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-glproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_INPUTPROTO + bool "xproto-inputproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-inputproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_KBPROTO + bool "xproto-kbproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-kbproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_PRESENTPROTO + bool "xproto-presentproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-presentproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RANDRPROTO + bool "xproto-randrproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-randrproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RECORDPROTO + bool "xproto-recordproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-recordproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RENDERPROTO + bool "xproto-renderproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-renderproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_RESOURCEPROTO + bool "xproto-resourceproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-resourceproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_SCRNSAVERPROTO + bool "xproto-scrnsaverprot package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-scrnsaverprot package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_VIDEOPROTO + bool "xproto-videoproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-videoproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_WINDOWSWMPROTO + bool "xproto-windowswmproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-windowswmproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XCMISCPROTO + bool "xproto-xcmiscproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xcmiscproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XEXTPROTO + bool "xproto-xextproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xextproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO + bool "xproto-xf86bigfontproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86bigfontproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86DGAPROTO + bool "xproto-xf86dgaproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86dgaproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86DRIPROTO + bool "xproto-xf86driproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86driproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO + bool "xproto-xf86vidmodeproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xf86vidmodeproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XINERAMAPROTO + bool "xproto-xineramaproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xineramaproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XPROTO + bool "xproto-xproto package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xproto package has been replaced by the + xorgproto package, which combines all xproto_* packages. + +config BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL + bool "xproto-xproxymanagementprotocol package replaced by xorgproto" + select BR2_LEGACY + select BR2_PACKAGE_XORGPROTO + help + The xproto-xproxymanagementprotocol package has been + replaced by the xorgproto package, which combines all + xproto_* packages. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL + bool "gst1-plugins-bad opengl option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL + help + The opengl option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2 + bool "gst1-plugins-bad gles2 option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2 + help + The gles2 option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX + bool "gst1-plugins-bad glx option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX + help + The glx option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL + bool "gst1-plugins-bad egl option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + help + The egl option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11 + bool "gst1-plugins-bad x11 option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11 + help + The x11 option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND + bool "gst1-plugins-bad wayland option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND + help + The wayland option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX + bool "gst1-plugins-bad dispmanx option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX + help + The dispmanx option has been moved from gst1-plugins-mad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER + bool "gst1-plugins-bad audiomixer option moved to gst1-plugins-base" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER + help + The audiomixer option has been moved from gst1-plugins-bad to + gst1-plugins-base. + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME + bool "gst1-plugins-ugly lame option moved to gst1-plugins-good" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME + help + The lame option has been moved from gst1-plugins-ugly to + gst1-plugins-good. + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123 + bool "gst1-plugins-ugly mpg123 option moved to gst1-plugins-good" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123 + help + The mpg123 option has been moved from gst1-plugins-ugly to + gst1-plugins-good. + +config BR2_GDB_VERSION_7_11 + bool "gdb 7.11 has been removed" + select BR2_LEGACY + help + The 7.11 version of gdb has been removed. Use a newer version + instead. + +config BR2_GDB_VERSION_7_10 + bool "gdb 7.10 has been removed" + select BR2_LEGACY + help + The 7.10 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2018.05" + +config BR2_PACKAGE_MEDIAART_BACKEND_NONE + bool "libmediaart none backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_NONE has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE + +config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF + bool "libmediaart gdk-pixbuf backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF + +config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF + bool "libmediaart qt backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_QT has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_QT + +# Note: BR2_PACKAGE_TI_SGX_AM335X is still referenced from +# package/ti-sgx-km/Config.in +config BR2_PACKAGE_TI_SGX_AM335X + bool "ti-sgx-km AM335X option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM335X has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM335X. + +# Note: BR2_PACKAGE_TI_SGX_AM437X is still referenced from +# package/ti-sgx-km/Config.in +config BR2_PACKAGE_TI_SGX_AM437X + bool "ti-sgx-km AM437X option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM437X has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM437X. + +# Note: BR2_PACKAGE_TI_SGX_AM4430 is still referenced from +# package/ti-sgx-km/Config.in +config BR2_PACKAGE_TI_SGX_AM4430 + bool "ti-sgx-km AM4430 option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM4430 has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM4430. + +# Note: BR2_PACKAGE_TI_SGX_AM5430 is still referenced from +# package/ti-sgx-km/Config.in +config BR2_PACKAGE_TI_SGX_AM5430 + bool "ti-sgx-km AM5430 option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM5430 has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM5430. + +config BR2_PACKAGE_JANUS_AUDIO_BRIDGE + bool "janus-gateway audio-bridge option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_AUDIO_BRIDGE has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE. + +config BR2_PACKAGE_JANUS_ECHO_TEST + bool "janus-gateway echo-test option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_ECHO_TEST has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST. + +config BR2_PACKAGE_JANUS_RECORDPLAY + bool "janus-gateway recordplay option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_RECORDPLAY has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY. + +config BR2_PACKAGE_JANUS_SIP_GATEWAY + bool "janus-gateway sip-gateway option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_SIP_GATEWAY has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY. + +config BR2_PACKAGE_JANUS_STREAMING + bool "janus-gateway streaming option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_STREAMING + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_STREAMING has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_STREAMING. + +config BR2_PACKAGE_JANUS_TEXT_ROOM + bool "janus-gateway text-room option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_TEXT_ROOM has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM. + +config BR2_PACKAGE_JANUS_VIDEO_CALL + bool "janus-gateway video-call option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_VIDEO_CALL has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL. + +config BR2_PACKAGE_JANUS_VIDEO_ROOM + bool "janus-gateway video-room option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_VIDEO_ROOM has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM. + +config BR2_PACKAGE_JANUS_MQTT + bool "janus-gateway mqtt option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_MQTT + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_MQTT has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_MQTT. + +config BR2_PACKAGE_JANUS_RABBITMQ + bool "janus-gateway rabbitmq option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_RABBITMQ has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ. + +config BR2_PACKAGE_JANUS_REST + bool "janus-gateway rest option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_REST + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_REST has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_REST. + +config BR2_PACKAGE_JANUS_UNIX_SOCKETS + bool "janus-gateway unix-sockets option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_UNIX_SOCKETS has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS. + +config BR2_PACKAGE_JANUS_WEBSOCKETS + bool "janus-gateway websockets option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_WEBSOCKETS has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS. + +config BR2_PACKAGE_IPSEC_SECCTX_DISABLE + bool "ipsec-tools security context disable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_DISABLE was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE. + +config BR2_PACKAGE_IPSEC_SECCTX_ENABLE + bool "ipsec-tools SELinux security context enable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_ENABLE was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE. + +config BR2_PACKAGE_IPSEC_SECCTX_KERNEL + bool "ipsec-tools kernel security context enable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_KERNEL was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL. + +config BR2_PACKAGE_LIBTFDI_CPP + bool "libftdi C++ bindings option renamed" + select BR2_LEGACY + select BR2_PACKAGE_LIBFTDI_CPP + help + The option BR2_PACKAGE_LIBTFDI_CPP was renamed to + BR2_PACKAGE_LIBFTDI_CPP in order to fix a typo in the option + name. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE + bool "jquery-ui-themes option black-tie renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + black-tie theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE to + BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLITZER + bool "jquery-ui-themes option blitzer renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + blitzer theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_BLITZER to + BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER. + +config BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO + bool "jquery-ui-themes option cupertino renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + cupertino theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO to + BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO. + +config BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE + bool "jquery-ui-themes option dark-hive renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + dark-hive theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE to + BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE. + +config BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV + bool "jquery-ui-themes option dot-luv renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + dot-luv theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV to + BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV. + +config BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT + bool "jquery-ui-themes option eggplant renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + eggplant theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT to + BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT. + +config BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE + bool "jquery-ui-themes option excite-bike renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + excite-bike theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE to + BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE. + +config BR2_PACKAGE_JQUERY_UI_THEME_FLICK + bool "jquery-ui-themes option flick renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + flick theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_FLICK to + BR2_PACKAGE_JQUERY_UI_THEMES_FLICK. + +config BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS + bool "jquery-ui-themes option hot-sneaks renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + hot-sneaks theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS to + BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS. + +config BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY + bool "jquery-ui-themes option humanity renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + humanity theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY to + BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY. + +config BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG + bool "jquery-ui-themes option le-frog renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + le-frog theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG to + BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG. + +config BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC + bool "jquery-ui-themes option mint-choc renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + mint-choc theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC to + BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC. + +config BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST + bool "jquery-ui-themes option overcast renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + overcast theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST to + BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST. + +config BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER + bool "jquery-ui-themes option pepper-grinder renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + pepper-grinder theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER to + BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER. + +config BR2_PACKAGE_JQUERY_UI_THEME_REDMOND + bool "jquery-ui-themes option redmond renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + redmond theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_REDMOND to + BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND. + +config BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS + bool "jquery-ui-themes option smoothness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + smoothness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET + bool "jquery-ui-themes option south-street renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + south-street theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET to + BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET. + +config BR2_PACKAGE_JQUERY_UI_THEME_START + bool "jquery-ui-themes option start renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + start theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_START to + BR2_PACKAGE_JQUERY_UI_THEMES_START. + +config BR2_PACKAGE_JQUERY_UI_THEME_SUNNY + bool "jquery-ui-themes option sunny renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + sunny theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SUNNY to + BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY. + +config BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE + bool "jquery-ui-themes option swanky-purse renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + swanky-purse theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE to + BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE. + +config BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC + bool "jquery-ui-themes option trontastic renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + trontastic theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC to + BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC. + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS + bool "jquery-ui-themes option ui-darkness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + ui-darkness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS + bool "jquery-ui-themes option ui-lightness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + ui-lightness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_VADER + bool "jquery-ui-themes option vader renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + vader theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_VADER to + BR2_PACKAGE_JQUERY_UI_THEMES_VADER. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH + bool "bluez5-utils health plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI + bool "bluez5-utils midi plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_NFC + bool "bluez5-utils nfc plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_NFC has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SAP + bool "bluez5-utils sap plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_SAP has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS + bool "bluez5-utils sixaxis plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS. + +config BR2_PACKAGE_TRANSMISSION_REMOTE + bool "transmission remote tool option removed" + select BR2_LEGACY + select BR2_PACKAGE_TRANSMISSION_DAEMON + help + Upstream does not provide a separate configure option for + the tool transmission-remote, it is built when the + transmission daemon has been enabled. Therefore, Buildroot + has automatically enabled BR2_PACKAGE_TRANSMISSION_DAEMON + for you. + +config BR2_PACKAGE_LIBKCAPI_APPS + bool "libkcapi test applications removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBKCAPI_HASHER if !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBKCAPI_RNGAPP + select BR2_PACKAGE_LIBKCAPI_SPEED + select BR2_PACKAGE_LIBKCAPI_TEST + help + Test applications (hasher, rng read, speed-test, test) now + have their own configuration options in the libkcapi menu. + +config BR2_PACKAGE_MPLAYER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_MPLAYER_MPLAYER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_MPLAYER_MENCODER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_LIBPLAYER_MPLAYER + bool "mplayer support in libplayer removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_IQVLINUX + bool "iqvlinux package removed" + select BR2_LEGACY + help + This package contained a kernel module from Intel, which + could only be used together with Intel userspace tools + provided under NDA, which also come with the same kernel + module. The copy of the kernel module available on + SourceForge is provided only to comply with the GPLv2 + requirement. Intel engineers were even surprised it even + built and were not willing to make any effort to fix their + tarball naming to contain a version number. Therefore, it + does not make sense for Buildroot to provide such a package. + + See https://sourceforge.net/p/e1000/bugs/589/ for the + discussion. + +config BR2_BINFMT_FLAT_SEP_DATA + bool "binfmt FLAT with separate code and data removed" + select BR2_LEGACY + help + This FLAT binary format was only used on Blackfin, which has + been removed. + +config BR2_bfin + bool "Blackfin architecture support removed" + select BR2_LEGACY + help + Following the removal of Blackfin support for the upstream + Linux kernel, Buildroot has removed support for this CPU + architecture. + +config BR2_PACKAGE_KODI_ADSP_BASIC + bool "kodi-adsp-basic package removed" + select BR2_LEGACY + help + kodi-adsp-basic is unmaintained + +config BR2_PACKAGE_KODI_ADSP_FREESURROUND + bool "kodi-adsp-freesurround package removed" + select BR2_LEGACY + help + kodi-adsp-freesurround is unmaintained + +############################################################################### +comment "Legacy options removed in 2018.02" + +config BR2_KERNEL_HEADERS_3_4 + bool "kernel headers version 3.4.x are no longer supported" + select BR2_LEGACY + help + Version 3.4.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_10 + bool "kernel headers version 3.10.x are no longer supported" + select BR2_LEGACY + help + Version 3.10.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_12 + bool "kernel headers version 3.12.x are no longer supported" + select BR2_LEGACY + help + Version 3.12.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_BINUTILS_VERSION_2_27_X + bool "binutils version 2.27 support removed" + select BR2_LEGACY + help + Support for binutils version 2.27 has been removed. The + current default version (2.29 or later) has been selected + instead. + +config BR2_PACKAGE_EEPROG + bool "eeprog package removed" + select BR2_LEGACY + select BR2_PACKAGE_I2C_TOOLS + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The eeprog program is now provided by the i2c-tools package. + +config BR2_PACKAGE_GNUPG2_GPGV2 + bool "gnupg2 gpgv2 option removed" + select BR2_LEGACY + select BR2_PACKAGE_GNUPG2_GPGV + help + The gpgv2 executable is now named gpgv. The config option + has been renamed accordingly. + +config BR2_PACKAGE_IMX_GPU_VIV_APITRACE + bool "Vivante apitrace tool option removed" + select BR2_LEGACY + help + The apitrace tool for Vivante is not provided by the + imx-gpu-viv package any longer. + +config BR2_PACKAGE_IMX_GPU_VIV_G2D + bool "Vivante G2D libraries from imx-gpu-viv removed" + select BR2_LEGACY + select BR2_PACKAGE_IMX_GPU_G2D + help + The G2D libraries are now provided by the imx-gpu-g2d package. + +############################################################################### +comment "Legacy options removed in 2017.11" + +config BR2_PACKAGE_RFKILL + bool "rfkill package removed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_RFKILL + help + The rfkill program is now provided by the util-linux package. + +config BR2_PACKAGE_UTIL_LINUX_RESET + bool "util-linux reset option removed" + select BR2_LEGACY + help + The util-linux package no longer offers a "reset" command. Use + either the reset command provided by BusyBox or select ncurses + programs, which will install a symlink from "tset" to reset. + +config BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW + bool "policycoreutils audit2allow option removed" + select BR2_LEGACY + select BR2_PACKAGE_SELINUX_PYTHON + select BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW + help + The policycoreutils package no longer offers audit2allow + as a option. This package has been moved into the + selinux-python package by the SELinux maintainers. + +config BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND + bool "policycoreutils restorecond option removed" + select BR2_LEGACY + select BR2_PACKAGE_RESTORECOND + help + The policycoreutils package no longer offers restorecond + as a option. This package has been moved into a seperate + package maintained by the SELinux maintainers. + +config BR2_PACKAGE_SEPOLGEN + bool "sepolgen package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_SELINUX_PYTHON + select BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + help + Sepolgen is no longer a individual package, but instead has + been moved into the selinux-python package by the SELinux + maintainers. + +config BR2_PACKAGE_OPENOBEX_BLUEZ + bool "openobex bluez option removed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ_UTILS + help + The OpenOBEX package no longer offers an option to enable or + disable BlueZ support. Instead, BlueZ support is always + included when the bluez5_utils or bluez_utils package is + selected. + +config BR2_PACKAGE_OPENOBEX_LIBUSB + bool "openobex libusb option removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBUSB + help + The OpenOBEX package no longer offers an option to enable or + disable libusb support. Instead, USB support is always + included when the libusb package is selected. + +config BR2_PACKAGE_OPENOBEX_APPS + bool "openobex apps option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable apps support. + +config BR2_PACKAGE_OPENOBEX_SYSLOG + bool "openobex syslog option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable syslog support. + +config BR2_PACKAGE_OPENOBEX_DUMP + bool "openobex dump option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable dump support. + +config BR2_PACKAGE_AICCU + bool "aiccu utility removed" + select BR2_LEGACY + help + As the SixXS project has ceased its operation on 2017-06-06, + the AICCU utility has no use anymore and has been removed. + + https://www.sixxs.net/sunset/ + +config BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS + bool "util-linux login utilities option removed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX_LAST + select BR2_PACKAGE_UTIL_LINUX_LOGIN + select BR2_PACKAGE_UTIL_LINUX_RUNUSER + select BR2_PACKAGE_UTIL_LINUX_SU + select BR2_PACKAGE_UTIL_LINUX_SULOGIN + help + Login utilities (last, login, runuser, su, sulogin) now have + their own configuration options in the util-linux menu. + +############################################################################### +comment "Legacy options removed in 2017.08" + +config BR2_TARGET_GRUB + bool "grub (aka grub-legacy) has been removed" + select BR2_LEGACY + help + grub-legacy is no longer maintained, and no longer builds with + recent binutils versions. + + Use grub2 or syslinux instead. + +config BR2_PACKAGE_SIMICSFS + bool "simicsfs support removed" + select BR2_LEGACY + help + Support for simicsfs kernel driver that provides access to a + host computer's local filesystem when the target is + executing within a SIMICS simulation has been removed. + + Simics is now moving away from the simicsfs kernel module, + as the kernel module has required too much maintenance + work. Users should move to the user mode Simics agent + instead. + +config BR2_BINUTILS_VERSION_2_26_X + bool "binutils version 2.26 support removed" + select BR2_LEGACY + help + Support for binutils version 2.26 has been removed. The + current default version (2.28 or later) has been selected + instead. + +config BR2_XTENSA_OVERLAY_DIR + string "The BR2_XTENSA_OVERLAY_DIR option has been removed" + help + The BR2_XTENSA_OVERLAY_DIR has been removed in favour of + BR2_XTENSA_OVERLAY_FILE. You must now pass the complete + path to the overlay file, not to the directory containing + it. + +config BR2_XTENSA_OVERLAY_DIR_WRAP + bool + default y if BR2_XTENSA_OVERLAY_DIR != "" + select BR2_LEGACY + +config BR2_XTENSA_CUSTOM_NAME + string "The BR2_XTENSA_CUSTOM_NAME option has been removed" + help + The BR2_XTENSA_CUSTOM_NAME option has been removed. + +config BR2_XTENSA_CUSTOM_NAME_WRAP + bool + default y if BR2_XTENSA_CUSTOM_NAME != "" + select BR2_LEGACY + +config BR2_PACKAGE_HOST_MKE2IMG + bool "host mke2img has been removed" + select BR2_LEGACY + help + We now call mkfs directly to generate ext2/3/4 filesystem + image, so mke2img is no longer necessary. + +config BR2_TARGET_ROOTFS_EXT2_BLOCKS + int "exact size in blocks has been removed" + default 0 + help + This option has been removed in favor of + BR2_TARGET_ROOTFS_EXT2_SIZE. It has been set automatically + to the value you had before. Set to 0 here to remove the + warning. + +config BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 0 && \ + BR2_TARGET_ROOTFS_EXT2_BLOCKS != 61440 # deprecated default value + select BR2_LEGACY + +# Note: BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP still referenced in fs/ext2/Config.in + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES + int "ext2 extra inodes has been removed" if BR2_TARGET_ROOTFS_EXT2_INODES = 0 + default 0 + help + Buildroot now uses mkfs.ext2/3/4 to generate ext2/3/4 + images. It now automatically selects the number of inodes + based on the image size. The extra number of inodes can no + longer be provided; instead, provide the total number of + inodes needed in BR2_TARGET_ROOTFS_EXT2_INODES. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES != 0 + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE + bool "cdxaparse removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC + bool "dataurisrc moved to gstreamer1" + select BR2_LEGACY + help + Dataurisrc has moved to gstreamer core and is always built. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP + bool "dccp removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE + bool "hdvparse removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE + bool "mve removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX + bool "nuvdemux removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT + bool "patchdetect removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI + bool "sdi removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA + bool "tta removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE + bool "videomeasure removed" + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA + select BR2_LEGACY + help + videomeasure plugin has been removed and has been replaced by + iqa, which has automatically been enabled. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK + bool "apexsink removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL + bool "sdl removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD + bool "mad (*.mp3 audio) removed" + select BR2_LEGACY + +config BR2_STRIP_none + bool "Strip command 'none' has been removed" + select BR2_LEGACY + help + The strip command choice has been changed into a single + boolean option. Please check that the new setting is + correct (in the "Build options" sub-menu) + +config BR2_PACKAGE_BEECRYPT_CPP + bool "C++ support removed in beecrypt" + select BR2_LEGACY + help + Support for C++ depends on icu. The beecrypt package is + incompatible with icu 59+. + +config BR2_PACKAGE_SPICE_CLIENT + bool "spice client support removed" + select BR2_LEGACY + help + Spice client support has been removed upstream. The + functionality now lives in the spice-gtk widget and + virt-viewer. + +config BR2_PACKAGE_SPICE_GUI + bool "spice gui support removed" + select BR2_LEGACY + help + Spice gui support has been removed upstream. The + functionality now lives in the spice-gtk widget and + virt-viewer. + +config BR2_PACKAGE_SPICE_TUNNEL + bool "spice network redirection removed" + select BR2_LEGACY + help + Spice network redirection, aka tunnelling has been removed + upstream. + +config BR2_PACKAGE_INPUT_TOOLS + bool "input-tools removed" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + help + input-tools has been removed, it is replaced by + linuxconsoletools, which has automatically been enabled. + +config BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH + bool "inputattach moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH + help + input-tools has been removed, inputattach is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_PACKAGE_INPUT_TOOLS_JSCAL + bool "jscal moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + help + input-tools has been removed, jscal is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_PACKAGE_INPUT_TOOLS_JSTEST + bool "jstest moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + help + input-tools has been removed, jstest is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH + bool "SH Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the sh architecture has + been removed, since it uses glibc older than 2.17 that + requires -lrt to link executables using clock_* system calls. + This makes this toolchain difficult to maintain over time. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 + bool "x86 Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the x86 architecture has + been removed, since it uses glibc older than 2.17 that + requires -lrt to link executables using clock_* system calls. + This makes this toolchain difficult to maintain over time. + +config BR2_GCC_VERSION_4_8_X + bool "gcc 4.8.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.8.x has been removed. The current + default version (5.x or later) has been selected instead. + +############################################################################### +comment "Legacy options removed in 2017.05" + +config BR2_PACKAGE_SUNXI_MALI_R2P4 + bool "sunxi-mali r2p4 removed" + select BR2_LEGACY + help + sunxi-mali libMali for r2p4 Mali kernel module has been + removed since the libump package only provides libUMP.so.3. + libMali for r2p4 Mali kernel module requires libUMP.so.2. + +config BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT + bool "CoffeeScript option has been removed" + select BR2_LEGACY + help + The option to enable NodeJS CoffeeScript has been removed. + To continue using it, add "coffee-script" to + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL. + +config BR2_PACKAGE_NODEJS_MODULES_EXPRESS + bool "Express web application framework option has been removed" + select BR2_LEGACY + help + The option to enable the NodeJS Express web application + framework has been removed. To continue using it, add + "express" to BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL. + +config BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL + bool "bluez5_utils gatttool install option removed" + select BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED + help + The option to install gatttool specifically has been removed. + Since version 5.44 gatttool is in the list of deprecated + tools. The option to build and install deprecated tools has + been automatically enabled. + +config BR2_PACKAGE_OPENOCD_FT2XXX + bool "openocd ft2232 support has been removed" + select BR2_PACKAGE_OPENOCD_FTDI + select BR2_LEGACY + help + FT2232 support in OpenOCD has been removed, it's replaced by + FDTI support, which has automatically been enabled. + +config BR2_PACKAGE_KODI_RTMPDUMP + bool "kodi rtmp has been removed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_INPUTSTREAM_RTMP + help + Internal rtmp support was removed from Kodi. + +config BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN + bool "kodi-visualisation-fountain has been removed" + select BR2_LEGACY + help + According to upstream 'the visualization is not currently + in a working shape.' + +config BR2_PACKAGE_PORTMAP + bool "portmap has been removed" + select BR2_LEGACY + select BR2_PACKAGE_RPCBIND + help + The portmap upstream tarball is removed, no releases since + ten years and latest change in upstream git in 2014. + You should better use rpcbind as a RPC portmapper. + +config BR2_BINUTILS_VERSION_2_25_X + bool "binutils version 2.25 support removed" + select BR2_LEGACY + help + Support for binutils version 2.25 has been removed. The + current default version (2.27 or later) has been selected + instead. + +config BR2_TOOLCHAIN_BUILDROOT_INET_RPC + bool "uclibc RPC support has been removed" + select BR2_LEGACY + help + uClibc-ng removed internal RPC implementation in 1.0.23. You + should use libtirpc instead. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS + int "extra size in blocks has been removed" + default 0 + help + Since the support for auto calculation of the filesystem size + has been removed, this option is now useless and must be 0. + You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS + matchs your needs. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0 + select BR2_LEGACY + +config BR2_PACKAGE_SYSTEMD_KDBUS + bool "systemd-kdbus has been removed" + select BR2_LEGACY + help + --enable/disable-kdbus configure option has been removed since + systemd-231. + +config BR2_PACKAGE_POLARSSL + bool "polarssl has been removed" + select BR2_LEGACY + help + The polarssl crypto library has been removed since the 1.2.x + release branch is no longer maintained. Newer upstream + branches/releases (mbedtls) have API changes so they're not + drop-in replacements. + +config BR2_NBD_CLIENT + bool "nbd client option was renamed" + select BR2_LEGACY + select BR2_PACKAGE_NBD_CLIENT + help + The nbd client option has been renamed to + BR2_PACKAGE_NBD_CLIENT. + +config BR2_NBD_SERVER + bool "nbd server option was renamed" + select BR2_LEGACY + select BR2_PACKAGE_NBD_SERVER + help + The nbd server option has been renamed to + BR2_PACKAGE_NBD_SERVER. + +config BR2_PACKAGE_GMOCK + bool "gmock merged into gtest package" + select BR2_LEGACY + select BR2_PACKAGE_GTEST + select BR2_PACKAGE_GTEST_GMOCK + help + GMock is now a suboption of the GTest package. + +config BR2_KERNEL_HEADERS_4_8 + bool "kernel headers version 4.8.x are no longer supported" + select BR2_LEGACY + help + Version 4.8.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_18 + bool "kernel headers version 3.18.x are no longer supported" + select BR2_LEGACY + help + Version 3.18.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_GLIBC_VERSION_2_22 + bool "glibc 2.22 removed" + select BR2_LEGACY + help + Support for glibc version 2.22 has been removed. The current + default version has been selected instead. + +############################################################################### +comment "Legacy options removed in 2017.02" + +config BR2_PACKAGE_PERL_DB_FILE + bool "perl-db-file removed" + select BR2_LEGACY + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_PERL + help + DB_File can be built as a core Perl module, so the separate + perl-db-file package has been removed. + +config BR2_KERNEL_HEADERS_4_7 + bool "kernel headers version 4.7.x are no longer supported" + select BR2_LEGACY + help + Version 4.7.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_6 + bool "kernel headers version 4.6.x are no longer supported" + select BR2_LEGACY + help + Version 4.6.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_5 + bool "kernel headers version 4.5.x are no longer supported" + select BR2_LEGACY + help + Version 4.5.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_3_14 + bool "kernel headers version 3.14.x are no longer supported" + select BR2_LEGACY + help + Version 3.14.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS + bool "musl-cross 1.1.12 toolchain removed" + select BR2_LEGACY + help + The support for the prebuilt toolchain based on the Musl C + library provided by the musl-cross project has been removed. + Upstream doesn't provide any prebuilt toolchain anymore, use + the Buildroot toolchain instead. + +config BR2_UCLIBC_INSTALL_TEST_SUITE + bool "uClibc tests now in uclibc-ng-test" + select BR2_LEGACY + select BR2_PACKAGE_UCLIBC_NG_TEST + help + The test suite of the uClibc C library has been moved into a + separate package, uclibc-ng-test. + +config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX + bool "Blackfin.uclinux.org 2014R1 toolchain removed" + select BR2_LEGACY + help + The ADI Blackfin toolchain has many bugs which are fixed in + more recent gcc and uClibc-ng releases. Use the Buildroot + toolchain instead. + +config BR2_PACKAGE_MAKEDEVS + bool "makedevs removed" + select BR2_LEGACY + help + The makedevs tool is part of busybox. The Buildroot fork + should not be used outside of the Buildroot infrastructure. + +config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A + bool "Arago ARMv7 2011.09 removed" + select BR2_LEGACY + help + The Arago toolchains are every old and not updated anymore. + +config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE + bool "Arago ARMv5 2011.09 removed" + select BR2_LEGACY + help + The Arago toolchains are every old and not updated anymore. + +config BR2_PACKAGE_SNOWBALL_HDMISERVICE + bool "snowball-hdmiservice removed" + select BR2_LEGACY + help + We no longer have support for the Snowball platform in + Buildroot, so this package was no longer useful. + +config BR2_PACKAGE_SNOWBALL_INIT + bool "snowball-init removed" + select BR2_LEGACY + help + We no longer have support for the Snowball platform in + Buildroot, so this package was no longer useful. + +config BR2_GDB_VERSION_7_9 + bool "gdb 7.9 has been removed" + select BR2_LEGACY + help + The 7.9 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2016.11" + +config BR2_PACKAGE_PHP_SAPI_CLI_CGI + bool "PHP CGI and CLI options are now seperate" + select BR2_PACKAGE_PHP_SAPI_CLI + select BR2_PACKAGE_PHP_SAPI_CGI + select BR2_LEGACY + help + The PHP Interface options have been split up into a + separate option for each interface. + +config BR2_PACKAGE_PHP_SAPI_CLI_FPM + bool "PHP CLI and FPM options are now separate" + select BR2_PACKAGE_PHP_SAPI_CLI + select BR2_PACKAGE_PHP_SAPI_FPM + select BR2_LEGACY + help + The PHP Interface options have been split up into a + separate option for each interface. + +config BR2_PACKAGE_WVSTREAMS + bool "wvstreams removed" + select BR2_LEGACY + help + wvstreams is not maintained anymore since about 2009. It also + doesn't build anymore with recent compilers (GCC 5+). + +config BR2_PACKAGE_WVDIAL + bool "wvdial removed" + select BR2_LEGACY + help + wvdial is not maintained anymore since about 2009. It also + doesn't build anymore with recent compilers (GCC 5+). + +config BR2_PACKAGE_WEBKITGTK24 + bool "webkitgtk 2.4.x removed" + select BR2_LEGACY + help + This legacy package only existed because some other packages + depended on that specific version of webkitgtk. However, the + other packages have been fixed. webkitgtk 2.4 is full of + security issues so it needs to be removed. + +config BR2_PACKAGE_TORSMO + bool "torsmo removed" + select BR2_LEGACY + help + torsmo has been unmaintained for a long time, and nobody + seems to be interested in it. + +config BR2_PACKAGE_SSTRIP + bool "sstrip removed" + select BR2_LEGACY + help + sstrip is unmaintained and potentially harmful. It doesn't + save so much compared to normal binutils strip, and there is + a big risk of binaries that don't work. Use normal strip + instead. + +config BR2_KERNEL_HEADERS_4_3 + bool "kernel headers version 4.3.x are no longer supported" + select BR2_LEGACY + help + Version 4.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_KERNEL_HEADERS_4_2 + bool "kernel headers version 4.2.x are no longer supported" + select BR2_LEGACY + help + Version 4.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. + +config BR2_PACKAGE_KODI_ADDON_XVDR + bool "kodi-addon-xvdr removed" + select BR2_LEGACY + help + According to the github project page: + https://github.com/pipelka/xbmc-addon-xvdr + this package is discontinued. + +config BR2_PACKAGE_IPKG + bool "ipkg removed" + select BR2_LEGACY + help + ipkg dates back to the early 2000s when Compaq started the + handhelds.org project and it hasn't seen development since + 2006. Use opkg as a replacement. + +config BR2_GCC_VERSION_4_7_X + bool "gcc 4.7.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.7.x has been removed. The current + default version (4.9.x or later) has been selected instead. + +config BR2_BINUTILS_VERSION_2_24_X + bool "binutils version 2.24 support removed" + select BR2_LEGACY + help + Support for binutils version 2.24 has been removed. The + current default version (2.26 or later) has been selected + instead. + +config BR2_PACKAGE_WESTON_RPI + bool "Weston propietary RPI support is gone" + select BR2_LEGACY + help + Upstream decided the propietary (rpi-userland) weston composer + support wasn't worth the effort so it was removed. Switch to + the open VC4 support. + +config BR2_LINUX_KERNEL_TOOL_CPUPOWER + bool "linux-tool cpupower" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_CPUPOWER + help + Linux tool cpupower option was renamed. + +config BR2_LINUX_KERNEL_TOOL_PERF + bool "linux-tool perf" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_PERF + help + Linux tool perf option was renamed. + +config BR2_LINUX_KERNEL_TOOL_SELFTESTS + bool "linux-tool selftests" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_SELFTESTS + help + Linux tool selftests option was renamed. + +config BR2_GCC_VERSION_4_8_ARC + bool "gcc arc option renamed" + select BR2_LEGACY + select BR2_GCC_VERSION_ARC + help + The option that selects the gcc version for the ARC + architecture has been renamed to BR2_GCC_VERSION_ARC. + +config BR2_KERNEL_HEADERS_4_0 + bool "kernel headers version 4.0.x are no longer supported" + select BR2_LEGACY + help + Version 4.0.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_19 + bool "kernel headers version 3.19.x are no longer supported" + select BR2_LEGACY + help + Version 3.19.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS + bool "libevas-generic-loaders package removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.18, libevas-generic-loaders is now provided by the + efl package. + +config BR2_PACKAGE_ELEMENTARY + bool "elementary package removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.18, elementary is now provided by the efl package. + +config BR2_LINUX_KERNEL_CUSTOM_LOCAL + bool "Linux kernel local directory option removed" + help + The option to select a local directory as the source of the + Linux kernel has been removed. It hurts reproducibility of + builds. + + In case you were using this option during development of your + Linux kernel, use the override mechanism instead. + +############################################################################### +comment "Legacy options removed in 2016.08" + +config BR2_PACKAGE_EFL_JP2K + bool "libevas jp2k loader has been removed" + select BR2_LEGACY + help + JP2K support in EFL requires openjpeg 1.x (libopenjpeg1.pc) + while Buildroot only packages openjpeg 2.x. Therefore, the + JP2K loader has been removed from EFL. + +config BR2_PACKAGE_SYSTEMD_COMPAT + bool "systemd compatibility libraries have been removed" + select BR2_LEGACY + help + The systemd option to enable the compatibility libraries has + been removed. Theses libraries have been useless since a few + version, and have been fully dropped from the source since + v230. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER + bool "gst1-plugins-bad liveadder plugin removed" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER + help + The functionality of the liveadder plugin of the + gst1-plugins-bad package has been merged into audiomixer. + +config BR2_PACKAGE_LIBFSLVPUWRAP + bool "libfslvpuwrap has been renamed to imx-vpuwrap" + select BR2_LEGACY + select BR2_PACKAGE_IMX_VPUWRAP + help + The libfslvpuwrap has been renamed to match the renamed + package. + +config BR2_PACKAGE_LIBFSLPARSER + bool "libfslparser has been renamed to imx-parser" + select BR2_LEGACY + select BR2_PACKAGE_IMX_PARSER + help + The libfslparser has been renamed to match the renamed + package. + +config BR2_PACKAGE_LIBFSLCODEC + bool "libfslcodec has been renamed to imx-codec" + select BR2_LEGACY + select BR2_PACKAGE_IMX_CODEC + help + The libfslcodec has been renamed to match the renamed package. + +config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT + bool "FIT support in uboot-tools has been refactored" + select BR2_LEGACY + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + select BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + select BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + select BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE + help + This option has been removed in favor of a more fine-grained + configuration, which is recommended. Selecting this option + enables FIT and FIT signature support for the target packages. + It will also select the dtc and openssl packages. + +config BR2_PTHREADS_OLD + bool "linuxthreads (stable/old)" + select BR2_LEGACY + help + Linuxthreads have been reworked, BR2_PTHREADS_OLD is now + BR2_PTHREADS and the old BR2_PTHREADS - LT.new got removed. + +config BR2_BINUTILS_VERSION_2_23_X + bool "binutils 2.23 removed" + select BR2_LEGACY + help + Binutils 2.23 has been removed, using a newer version is + recommended. + +config BR2_TOOLCHAIN_BUILDROOT_EGLIBC + bool "eglibc support has been removed" + select BR2_LEGACY + help + The eglibc project no longer exists, as it has been merged + back into the glibc project. Therefore, support for eglibc + has been removed, and glibc should be used instead. + +config BR2_GDB_VERSION_7_8 + bool "gdb 7.8 has been removed" + select BR2_LEGACY + help + The 7.8 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2016.05" + +config BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL + bool "openvpn polarssl crypto backend removed" + select BR2_LEGACY + help + The OpenVPN polarssl crypto backend option has been removed. + Version from 2.3.10 onwards need polarssl >= 1.3.8 but aren't + compatible with mbedtls (polarssl) series 2.x which is the + version provided in buildroot. And both can't coexist. + It now uses OpenSSL as the only option. + +config BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE + bool "nginx http spdy module removed" + select BR2_LEGACY + select BR2_PACKAGE_NGINX_HTTP_V2_MODULE + help + The ngx_http_spdy_module has been superseded by the + ngx_http_v2_module since nginx v1.9.5. The + ngx_http_v2_module modules has been automatically selected + in your configuration. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP + bool "gst1-plugins-bad rtp plugin moved to good" + select BR2_LEGACY + help + The rtp plugin has been moved from gst1-plugins-base to + gst1-plugins-good. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 + bool "gst1-plugins-bad mpg123 plugin moved to ugly" + select BR2_LEGACY + help + The mpg123 plugin has been moved from gst1-plugins-bad to + gst1-plugins-ugly. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC + bool "PowerPC Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the PowerPC + architecture has been removed, as it was very old, not + maintained, and causing numerous build failures with modern + userspace packages. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 + bool "PowerPC Sourcery E500v2 toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the PowerPC E500v2 + architecture has been removed, as it was very old, not + maintained, and causing numerous build failures with modern + userspace packages. + +config BR2_x86_i386 + bool "x86 i386 support removed" + select BR2_LEGACY + help + The support for the i386 processors of the x86 architecture + has been removed. + +config BR2_PACKAGE_QT5QUICK1 + bool "qt5quick1 package removed" + select BR2_LEGACY + help + The qt5quick1 package has been removed, since it was removed + from upstream starting from Qt 5.6. + +config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR + string "uboot custom patch dir has been removed" + help + The uboot custom patch directory option has been removed. Use + the improved BR2_TARGET_UBOOT_PATCH option instead. + +config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR is still referenced from +# boot/uboot/Config.in + +config BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID + bool "xf86-input-void removed" + select BR2_LEGACY + help + The xf86-input-void package has been removed, there's no need + for it in any modern (post-2007) xorg server. + +config BR2_KERNEL_HEADERS_3_17 + bool "kernel headers version 3.17.x are no longer supported" + select BR2_LEGACY + help + Version 3.17.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_GDB_VERSION_7_7 + bool "gdb 7.7 has been removed" + select BR2_LEGACY + help + The 7.7 version of gdb has been removed. Use a newer version + instead. + +config BR2_PACKAGE_FOOMATIC_FILTERS + bool "foomatic-filters" + select BR2_LEGACY + help + The foomatic-filters package was removed. + +config BR2_PACKAGE_SAMBA + bool "samba" + select BR2_LEGACY + help + The samba package was removed in favour of samba4 since the + 3.x series isn't supported by upstream any longer. + +config BR2_PACKAGE_KODI_WAVPACK + bool "wavpack" + select BR2_LEGACY + help + wavpack support was removed in favour of ffmpeg: + https://github.com/xbmc/xbmc/commit/7916902c9e6f7a523265594f3ad7f921f93f1cd4 + +config BR2_PACKAGE_KODI_RSXS + bool "rsxs support in Kodi was moved to an addon" + select BR2_LEGACY + select BR2_PACKAGE_KODI_SCREENSAVER_RSXS + help + rsxs support in Kodi was moved to an addon + +config BR2_PACKAGE_KODI_GOOM + bool "Goom support in Kodi was moved to an addon" + select BR2_LEGACY + select BR2_PACKAGE_KODI_VISUALISATION_GOOM + help + Goom support in Kodi was moved to an addon + +config BR2_PACKAGE_SYSTEMD_ALL_EXTRAS + bool "systemd all extras option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_XZ + select BR2_PACKAGE_LIBGCRYPT + help + The systemd option to enable "all extras" has been + removed. To get the same features, the libgcrypt and xz + package should now be enabled. + +config BR2_GCC_VERSION_4_5_X + bool "gcc 4.5.x has been removed" + select BR2_LEGACY + help + The 4.5.x version of gcc has been removed. Use a newer + version instead. + +config BR2_PACKAGE_SQLITE_READLINE + bool "sqlite command-line editing support was updated" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + select BR2_LEGACY + help + This option was removed in favour of the sqlite package + deciding itself depending on the enabled packages whether + command-line editing should be enabled, it also also takes + libedit into account. + +############################################################################### +comment "Legacy options removed in 2016.02" + +config BR2_PACKAGE_DOVECOT_BZIP2 + bool "bzip2 support option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_BZIP2 + help + Bzip2 support is built if the bzip2 package is selected. + +config BR2_PACKAGE_DOVECOT_ZLIB + bool "zlib support option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_ZLIB + help + Zlib support is built if the zlib package is selected. + +config BR2_PACKAGE_E2FSPROGS_FINDFS + bool "e2fsprogs findfs option has been removed" + select BR2_LEGACY + help + This option attempted to enable findfs capabilities from + e2fsprogs but has not worked since July 2015 (due to + packaging changes). One can use BusyBox's findfs support or + enable the BR2_PACKAGE_UTIL_LINUX_BINARIES option. + +config BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL + bool "openpowerlink debug option has been removed" + select BR2_LEGACY + help + This option depends on BR2_ENABLE_DEBUG which should not be + used by packages anymore. + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE + bool "openpowerlink package has been updated" + select BR2_LEGACY + select BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + help + openpowerlink kernel modules are built if the + kernel stack library is selected. + +config BR2_PACKAGE_OPENPOWERLINK_LIBPCAP + bool "openpowerlink package has been updated" + select BR2_LEGACY + select BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB + help + The user space support has been split in two part: + - a monolitic user space library + - a user spae deamon driver + +config BR2_LINUX_KERNEL_SAME_AS_HEADERS + bool "using the linux headers version for the kernel has been removed" + select BR2_LEGACY + help + The option to use the version of the kernel headers for the + kernel to build has been removed. + + There is now the converse, better-suited and more versatile + option to use the kernel version for the linux headers. + +config BR2_PACKAGE_CUPS_PDFTOPS + bool "Pdftops support has been removed from Cups" + select BR2_PACKAGE_CUPS_FILTERS + select BR2_LEGACY + help + Pdftops support has been removed from the cups package + It is now part of the cups-filters package. + +config BR2_KERNEL_HEADERS_3_16 + bool "kernel headers version 3.16.x are no longer supported" + select BR2_LEGACY + help + Version 3.16.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_PACKAGE_PYTHON_PYXML + bool "python-pyxml package has been removed" + select BR2_LEGACY + help + PyXML is obsolete and its functionality is covered either via + native Python XML support or python-lxml package. + +# BR2_ENABLE_SSP is still referenced in Config.in (default in choice) +config BR2_ENABLE_SSP + bool "Stack Smashing protection now has different levels" + help + The protection offered by SSP can now be selected from + different protection levels. Be sure to review the SSP level + in the build options menu. + +config BR2_PACKAGE_DIRECTFB_CLE266 + bool "cle266 driver for directfb removed" + select BR2_LEGACY + help + The cle266 directfb driver support has been removed. + It doesn't build in the latest version and it's unlikely + anyone has any use for it. + +config BR2_PACKAGE_DIRECTFB_UNICHROME + bool "unichrome driver for directfb removed" + select BR2_LEGACY + help + The unichrome directfb driver support has been removed. + It doesn't build in the latest version and it's unlikely + anyone has any use for it. + +config BR2_PACKAGE_LIBELEMENTARY + bool "libelementary has been renamed to elementary" + select BR2_LEGACY + select BR2_PACKAGE_ELEMENTARY + help + The libelementary package has been renamed to match the + upstream name. + +config BR2_PACKAGE_LIBEINA + bool "libeina package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeina is now provided by the efl package. + +config BR2_PACKAGE_LIBEET + bool "libeet package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeet is now provided by the efl package. + +config BR2_PACKAGE_LIBEVAS + bool "libevas package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libevas is now provided by the efl package. + +config BR2_PACKAGE_LIBECORE + bool "libecore package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libecore is now provided by the efl package. + +config BR2_PACKAGE_LIBEDBUS + bool "libedbus package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libedbus is now provided by the efl package. + +config BR2_PACKAGE_LIBEFREET + bool "libefreet package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libefreet is now provided by the efl package. + +config BR2_PACKAGE_LIBEIO + bool "libeio package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeio is now provided by the efl package. + +config BR2_PACKAGE_LIBEMBRYO + bool "libembryo package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libembryo is now provided by the efl package. + +config BR2_PACKAGE_LIBEDJE + bool "libedje package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libedje is now provided by the efl package. + +config BR2_PACKAGE_LIBETHUMB + bool "libethumb package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libethumb is now provided by the efl package. + +config BR2_PACKAGE_INFOZIP + bool "infozip option has been renamed to zip" + select BR2_LEGACY + select BR2_PACKAGE_ZIP + help + Info-Zip's Zip package has been renamed from infozip to zip, + to avoid ambiguities with Info-Zip's UnZip which has been + added in the unzip package. + +config BR2_BR2_PACKAGE_NODEJS_0_10_X + bool "nodejs 0.10.x option removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs 0.10.x option has been removed. 0.10.x is now + automatically chosen for ARMv5 architectures only and the + latest nodejs for all other supported architectures. The + correct nodejs version has been automatically selected in your + configuration. + +config BR2_BR2_PACKAGE_NODEJS_0_12_X + bool "nodejs version 0.12.x has been removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs version 0.12.x has been removed. As an alternative, + the latest nodejs version has been automatically selected in + your configuration. + +config BR2_BR2_PACKAGE_NODEJS_4_X + bool "nodejs version 4.x has been removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs version 4.x has been removed. As an alternative, + the latest nodejs version has been automatically selected in + your configuration. + +############################################################################### +comment "Legacy options removed in 2015.11" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL + bool "gst1-plugins-bad real plugin has been removed" + select BR2_LEGACY + help + The real plugin from GStreamer 1 bad plugins has been + removed. + +config BR2_PACKAGE_MEDIA_CTL + bool "media-ctl package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBV4L + select BR2_PACKAGE_LIBV4L_UTILS + help + media-ctl source and developement have been moved to v4l-utils + since June 2014. For an up-to-date media-ctl version select + BR2_PACKAGE_LIBV4L and BR2_PACKAGE_LIBV4L_UTILS. + +config BR2_PACKAGE_SCHIFRA + bool "schifra package has been removed" + select BR2_LEGACY + help + Schifra package has been maked broken since 2014.11 release + and haven't been fixed since then. + +config BR2_PACKAGE_ZXING + bool "zxing option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_ZXING_CPP + help + ZXing no longer provides the cpp bindings, it has been renamed + to BR2_PACKAGE_ZXING_CPP which uses a new upstream. + +# Since FreeRDP has new dependencies, protect this legacy to avoid the +# infamous "unmet direct dependencies" kconfig error. +config BR2_PACKAGE_FREERDP_CLIENT + bool "freerdp client option renamed" + depends on BR2_PACKAGE_FREERDP + select BR2_LEGACY + select BR2_PACKAGE_FREERDP_CLIENT_X11 + +config BR2_PACKAGE_BLACKBOX + bool "blackbox package has been removed" + select BR2_LEGACY + help + Upstream is dead and the package has been deprecated for + some time. There are other alternative maintained WMs. + +config BR2_KERNEL_HEADERS_3_0 + bool "kernel headers version 3.0.x are no longer supported" + select BR2_LEGACY + help + Version 3.0.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_11 + bool "kernel headers version 3.11.x are no longer supported" + select BR2_LEGACY + help + Version 3.11.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_KERNEL_HEADERS_3_13 + bool "kernel headers version 3.13.x are no longer supported" + select BR2_LEGACY + help + Version 3.13.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_KERNEL_HEADERS_3_15 + bool "kernel headers version 3.15.x are no longer supported" + select BR2_LEGACY + help + Version 3.15.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI + bool "DirectFB example df_andi has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD + bool "DirectFB example df_bltload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD + bool "DirectFB example df_cpuload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER + bool "DirectFB example df_databuffer has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD + bool "DirectFB example df_dioload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK + bool "DirectFB example df_dok has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST + bool "DirectFB example df_drivertest has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE + bool "DirectFB example df_fire has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP + bool "DirectFB example df_flip has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS + bool "DirectFB example df_fonts has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT + bool "DirectFB example df_input has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK + bool "DirectFB example df_joystick has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES + bool "DirectFB example df_knuckles has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER + bool "DirectFB example df_layer has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX + bool "DirectFB example df_matrix has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER + bool "DirectFB example df_matrix_water has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO + bool "DirectFB example df_neo has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD + bool "DirectFB example df_netload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE + bool "DirectFB example df_palette has been removed" + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE + bool "DirectFB example df_particle has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER + bool "DirectFB example df_porter has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS + bool "DirectFB example df_stress has been removed" + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE + bool "DirectFB example df_texture has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO + bool "DirectFB example df_video has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE + bool "DirectFB example df_video_particle has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW + bool "DirectFB example df_window has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_KOBS_NG + bool "kobs-ng was replaced by imx-kobs" + select BR2_LEGACY + select BR2_PACKAGE_IMX_KOBS + help + The outdated kobs-ng has been replaced by the Freescale- + maintained imx-kobs package. + +config BR2_PACKAGE_SAWMAN + bool "sawman package removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_SAWMAN + help + This option has been removed because the sawman package no + longer exists: it was merged inside DirectFB itself. This + feature can now be enabled using the + BR2_PACKAGE_DIRECTFB_SAWMAN option. + +config BR2_PACKAGE_DIVINE + bool "divine package removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_DIVINE + help + This option has been removed because the divine package no + longer exists: it was merged inside DirectFB itself. This + feature can now be enabled using the + BR2_PACKAGE_DIRECTFB_DIVINE option. + +############################################################################### +comment "Legacy options removed in 2015.08" + +config BR2_PACKAGE_KODI_PVR_ADDONS + bool "Kodi PVR addon was split" + select BR2_LEGACY + select BR2_PACKAGE_KODI_PVR_ARGUSTV + select BR2_PACKAGE_KODI_PVR_DVBLINK + select BR2_PACKAGE_KODI_PVR_DVBVIEWER + select BR2_PACKAGE_KODI_PVR_FILMON + select BR2_PACKAGE_KODI_PVR_HTS + select BR2_PACKAGE_KODI_PVR_IPTVSIMPLE + select BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER + select BR2_PACKAGE_KODI_PVR_MYTHTV + select BR2_PACKAGE_KODI_PVR_NEXTPVR + select BR2_PACKAGE_KODI_PVR_NJOY + select BR2_PACKAGE_KODI_PVR_PCTV + select BR2_PACKAGE_KODI_PVR_STALKER + select BR2_PACKAGE_KODI_PVR_VBOX + select BR2_PACKAGE_KODI_PVR_VDR_VNSI + select BR2_PACKAGE_KODI_PVR_VUPLUS + select BR2_PACKAGE_KODI_PVR_WMC + help + Kodi PVR addon was split into seperate modules + +config BR2_BINUTILS_VERSION_2_23_2 + bool "binutils 2.23 option renamed" + select BR2_LEGACY + help + Binutils 2.23.2 has been removed, using a newer version is + recommended. + +config BR2_BINUTILS_VERSION_2_24 + bool "binutils 2.24 option renamed" + select BR2_LEGACY + select BR2_BINUTILS_VERSION_2_24_X + help + The binutils version option has been renamed to match the + same patchlevel logic used by gcc. The new option is now + BR2_BINUTILS_VERSION_2_24_X. + +config BR2_BINUTILS_VERSION_2_25 + bool "binutils 2.25 option renamed" + select BR2_LEGACY + select BR2_BINUTILS_VERSION_2_25_X + help + The binutils version option has been renamed to match the + same patchlevel logic used by gcc. The new option is now + BR2_BINUTILS_VERSION_2_25_X. + +config BR2_PACKAGE_PERF + bool "perf option has been renamed" + select BR2_LEGACY + select BR2_LINUX_KERNEL_TOOL_PERF + help + The perf package has been moved as a Linux tools package, + and the option to enable it is now + BR2_LINUX_KERNEL_TOOL_PERF. + +config BR2_BINUTILS_VERSION_2_22 + bool "binutils 2.22 removed" + select BR2_LEGACY + help + Binutils 2.22 has been removed, using a newer version is + recommended. + +config BR2_PACKAGE_GPU_VIV_BIN_MX6Q + bool "gpu-viv-bin-mx6q" + select BR2_LEGACY + select BR2_PACKAGE_IMX_GPU_VIV + help + Vivante graphics libraries have been renamed to + BR2_PACKAGE_IMX_GPU_VIV to be aligned with upstream package + name. + +config BR2_PACKAGE_LIBSEMANAGE_PYTHON_BINDINGS + bool "libsemanage python bindings removed" + depends on BR2_PACKAGE_PYTHON + select BR2_LEGACY + help + This option has been removed, since the libsemanage Python + bindings on the target were not useful. + +config BR2_TARGET_UBOOT_NETWORK + bool "U-Boot custom network settings removed" + select BR2_LEGACY + help + U-Boot's custom network settings options have been removed. + +############################################################################### +comment "Legacy options removed in 2015.05" + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K + bool "jffs2 16kB erasesize NAND flash option renamed" + select BR2_LEGACY + select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + help + The JFFS2 NAND flash options now longer include the page + size. + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K + bool "jffs2 128kB erasesize NAND flash option renamed" + select BR2_LEGACY + select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + help + The JFFS2 NAND flash options now longer include the page + size. + +config BR2_PACKAGE_MONO_20 + bool "2.0/3.5 .Net Runtime" + select BR2_LEGACY + help + This option no longer exists, all versions of the .Net + runtime are now installed. + +config BR2_PACKAGE_MONO_40 + bool "4.0 .Net Runtime" + select BR2_LEGACY + help + This option no longer exists, all versions of the .Net + runtime are now installed. + +config BR2_PACKAGE_MONO_45 + bool "4.5 .Net Runtime" + select BR2_LEGACY + help + This option no longer exists, all versions of the .Net + runtime are now installed. + +config BR2_CIVETWEB_WITH_LUA + bool "civetweb lua option renamed" + select BR2_LEGACY + select BR2_PACKAGE_CIVETWEB_WITH_LUA + help + civetweb's lua option has been renamed to + BR2_PACKAGE_CIVETWEB_WITH_LUA to be aligned with how other + packages name options. + +config BR2_PACKAGE_TIFF_TIFF2PDF + bool "tiff utility-specific option removed" + select BR2_LEGACY + select BR2_PACKAGE_TIFF_UTILITIES + help + utility-specific options have been removed in favour of + the new option BR2_PACKAGE_TIFF_UTILITIES. + +config BR2_PACKAGE_TIFF_TIFFCP + bool "tiff utility-specific option removed" + select BR2_LEGACY + select BR2_PACKAGE_TIFF_UTILITIES + help + utility-specific options have been removed in favour of + the new option BR2_PACKAGE_TIFF_UTILITIES. + +config BR2_LINUX_KERNEL_EXT_RTAI_PATCH + bool "RTAI patch file path has been removed" + select BR2_LEGACY + help + This option has never worked, so it has been removed. + +config BR2_TARGET_GENERIC_PASSWD_DES + bool "Encoding passwords with DES has been removed" + select BR2_LEGACY + help + Paswords can now only be encoded with either of md5, sha256 or + sha512. The default is md5, which is stronger that DES (but + still pretty weak). + +config BR2_PACKAGE_GTK2_THEME_HICOLOR + bool "hicolor (default theme) is a duplicate" + select BR2_LEGACY + select BR2_PACKAGE_HICOLOR_ICON_THEME + help + The option was just a duplicate of hicolor icon theme. + +config BR2_PACKAGE_VALGRIND_PTRCHECK + bool "valgrind's PTRCheck was renamed to SGCheck" + select BR2_LEGACY + select BR2_PACKAGE_VALGRIND_SGCHECK + help + PTRCheck was renamed to SGCheck in valgrind + +############################################################################### +comment "Legacy options removed in 2015.02" + +config BR2_PACKAGE_LIBGC + bool "libgc package removed" + select BR2_LEGACY + select BR2_PACKAGE_BDWGC + help + libgc has been removed because we have the same package under + a different name, bdwgc. + +config BR2_PACKAGE_WDCTL + bool "util-linux' wdctl option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX_WDCTL + help + util-linux' wdctl option has been renamed to + BR2_PACKAGE_UTIL_LINUX_WDCTL to be aligned with how the other + options are named. + +config BR2_PACKAGE_UTIL_LINUX_ARCH + bool "util-linux' arch option has been removed" + select BR2_LEGACY + help + util-linux' arch was dropped in util-linux 2.23, in favor of + the coreutils version. + +config BR2_PACKAGE_UTIL_LINUX_DDATE + bool "util-linux' ddate option has been removed" + select BR2_LEGACY + help + util-linux' ddate was dropped in util-linux 2.23. + +config BR2_PACKAGE_RPM_BZIP2_PAYLOADS + bool "rpm's bzip2 payloads option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_BZIP2 + help + The bzip2 payloads option rely entirely on the dependant + package bzip2. So, you need to select it to enable this + feature. + +config BR2_PACKAGE_RPM_XZ_PAYLOADS + bool "rpm's xz payloads option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_XZ + help + The xz payloads option rely entirely on the dependant package + xz. So, you need to select it to enable this feature. + +config BR2_PACKAGE_M4 + bool "m4 target package removed" + select BR2_LEGACY + help + The m4 target package has been removed, it's been + deprecated for some time now. + +config BR2_PACKAGE_FLEX_BINARY + bool "flex binary in target option removed" + select BR2_LEGACY + help + The flex binary in the target option has been removed. + It's been deprecated for some time now and is essentially a + development tool which isn't very useful in the target. + +config BR2_PACKAGE_BISON + bool "bison target package removed" + select BR2_LEGACY + help + The bison target package has been removed, it's been + deprecated for some time now and is essentially a development + tool which isn't very useful in the target. + +config BR2_PACKAGE_GOB2 + bool "gob2 target package removed" + select BR2_LEGACY + help + The gob2 target package has been removed, it's been + deprecated for some time now and was essentially useless + without a target toolchain. + +config BR2_PACKAGE_DISTCC + bool "distcc target package removed" + select BR2_LEGACY + help + The distcc target package has been removed, it's been + deprecated for some time now and was essentially useless + without a target toolchain. + +config BR2_PACKAGE_HASERL_VERSION_0_8_X + bool "haserl 0.8.x version removed" + select BR2_LEGACY + help + The 0.8.x version option for haserl has been removed since it + has been deprecated for some time now. + You should be able to use the 0.9.x version without issues. + +config BR2_PACKAGE_STRONGSWAN_TOOLS + bool "strongswan option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_STRONGSWAN_PKI + select BR2_PACKAGE_STRONGSWAN_SCEP + help + The tools option has been removed upstream and the different + tools have been split between the pki and scep options, with + others deprecated. + +config BR2_PACKAGE_XBMC_ADDON_XVDR + bool "xbmc-addon-xvdr removed" + select BR2_LEGACY + help + According to the github project page: + https://github.com/pipelka/xbmc-addon-xvdr + this package is discontinued. + +config BR2_PACKAGE_XBMC_PVR_ADDONS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_PVR_ADDONS + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_ALSA_LIB + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_ALSA_LIB + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_AVAHI + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_AVAHI + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_DBUS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_DBUS + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBBLURAY + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBBLURAY + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_GOOM + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_GOOM + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_RSXS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_RSXS + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBCEC + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBCEC + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBMICROHTTPD + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBMICROHTTPD + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBNFS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBNFS + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_RTMPDUMP + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_RTMPDUMP + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBSHAIRPLAY + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBSHAIRPLAY + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBSMBCLIENT + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBSMBCLIENT + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBTHEORA + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBTHEORA + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBUSB + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBUSB + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_LIBVA + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBVA + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PACKAGE_XBMC_WAVPACK + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_WAVPACK + help + The XBMC media center project was renamed to Kodi + entertainment center + +config BR2_PREFER_STATIC_LIB + bool "static library option renamed" + select BR2_LEGACY + help + The BR2_PREFER_STATIC_LIB was renamed to BR2_STATIC_LIBS. It + highlights the fact that the option no longer "prefers" + static libraries, but "enforces" static libraries (i.e + shared libraries are completely unused). + + Take care of updating the type of libraries you want under the + "Build options" menu. + +############################################################################### +comment "Legacy options removed in 2014.11" + +config BR2_x86_generic + bool "x86 generic variant has been removed" + select BR2_LEGACY + help + The generic x86 CPU variant has been removed. Use another + CPU variant instead. + +config BR2_GCC_VERSION_4_4_X + bool "gcc 4.4.x has been removed" + select BR2_LEGACY + help + The 4.4.x version of gcc has been removed. Use a newer + version instead. + +config BR2_sparc_sparchfleon + bool "sparchfleon CPU has been removed" + select BR2_LEGACY + help + The sparchfleon CPU was only supported in a patched gcc 4.4 + version. Its support has been removed in favor of the leon3 + CPU starting from gcc 4.8.x. + +config BR2_sparc_sparchfleonv8 + bool "sparchfleonv8 CPU has been removed" + select BR2_LEGACY + help + The sparchfleonv8 CPU was only supported in a patched gcc + 4.4 version. Its support has been removed in favor of the + leon3 CPU starting from gcc 4.8.x. + +config BR2_sparc_sparcsfleon + bool "sparcsfleon CPU has been removed" + select BR2_LEGACY + help + The sparcsfleon CPU was only supported in a patched gcc 4.4 + version. Its support has been removed in favor of the leon3 + CPU starting from gcc 4.8.x. + +config BR2_sparc_sparcsfleonv8 + bool "sparcsfleonv8 CPU has been removed" + select BR2_LEGACY + help + The sparcsfleonv8 CPU was only supported in a patched gcc + 4.4 version. Its support has been removed in favor of the + leon3 CPU starting from gcc 4.8.x. + +config BR2_PACKAGE_XLIB_LIBPCIACCESS + bool "xlib-libpciaccess option has been renamed" + depends on BR2_PACKAGE_XORG7 + select BR2_LEGACY + select BR2_PACKAGE_LIBPCIACCESS + help + libpciaccess neither depends on X11 nor Xlib. Thus the + package has been renamed BR2_PACKAGE_LIBPCIACCESS + +config BR2_PACKAGE_LINUX_FIRMWARE_XC5000 + bool "Xceive xc5000 option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_XCx000 + help + The Xceive xc5000 option now also handles older firmwares from + Xceive (the xc4000 series), as well as new firmwares (the + xc5000c) from Cresta, who bought Xceive. + +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 + bool "Chelsio T4 option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4 + help + The Chelsio T4 option BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 + has been renamed to BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4 + to better account for the fact that a T5 variant exists. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 + bool "BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 has been renamed" + select BR2_LEGACY + help + The option BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 was + renamed to BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_REV_7. You must + select it in: + Target packages -> Hardware handling -> + Firmware -> linux-firmware -> WiFi firmware -> + iwlwifi 3160/726x revision to use (revision 7) + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 + bool "BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 has been renamed" + select BR2_LEGACY + help + The option BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 was + renamed to BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_REV_8. You must + select it in: + Target packages -> Hardware handling -> + Firmware -> linux-firmware -> WiFi firmware -> + iwlwifi 3160/726x revision to use (revision 8) + +############################################################################### +comment "Legacy options removed in 2014.08" + +config BR2_PACKAGE_LIBELF + bool "libelf has been removed" + select BR2_PACKAGE_ELFUTILS + select BR2_LEGACY + help + The libelf package provided an old version of the libelf + library and is deprecated. The libelf library is now provided + by the elfutils package. + +config BR2_KERNEL_HEADERS_3_8 + bool "kernel headers version 3.8.x are no longer supported" + select BR2_LEGACY + help + Version 3.8.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_PACKAGE_GETTEXT_TOOLS + bool "support for gettext-tools on target has been removed" + select BR2_LEGACY + help + The option to install the gettext utilities on the target + has been removed. This is not necessary as Buildroot is not + designed to provide a full development environment on the + target. gettext tools should be used on the build machine + instead. + +config BR2_PACKAGE_PROCPS + bool "procps has been replaced by procps-ng" + select BR2_PACKAGE_PROCPS_NG + select BR2_LEGACY + help + The procps package has been replaced by the equivalent + procps-ng. + +config BR2_BINUTILS_VERSION_2_20_1 + bool "binutils 2.20.1 has been removed" + select BR2_LEGACY + help + The 2.20.1 version of binutils has been removed. Use a newer + version instead. + +config BR2_BINUTILS_VERSION_2_21 + bool "binutils 2.21 has been removed" + select BR2_LEGACY + help + The 2.21 version of binutils has been removed. Use a newer + version instead. + +config BR2_BINUTILS_VERSION_2_23_1 + bool "binutils 2.23.1 has been removed" + select BR2_LEGACY + help + The 2.23.1 version of binutils has been removed. Use a newer + version instead. + +config BR2_UCLIBC_VERSION_0_9_32 + bool "uclibc 0.9.32 has been removed" + select BR2_LEGACY + help + The 0.9.32 version of uClibc has been removed. Use a newer + version instead. + +config BR2_GCC_VERSION_4_3_X + bool "gcc 4.3.x has been removed" + select BR2_LEGACY + help + The 4.3.x version of gcc has been removed. Use a newer + version instead. + +config BR2_GCC_VERSION_4_6_X + bool "gcc 4.6.x has been removed" + select BR2_LEGACY + help + The 4.6.x version of gcc has been removed. Use a newer + version instead. + +config BR2_GDB_VERSION_7_4 + bool "gdb 7.4 has been removed" + select BR2_LEGACY + help + The 7.4 version of gdb has been removed. Use a newer version + instead. + +config BR2_GDB_VERSION_7_5 + bool "gdb 7.5 has been removed" + select BR2_LEGACY + help + The 7.5 version of gdb has been removed. Use a newer version + instead. + +config BR2_BUSYBOX_VERSION_1_19_X + bool "busybox version selection has been removed" + select BR2_LEGACY + help + The possibility of selecting the Busybox version has been + removed. Use the latest version provided by the Busybox + package instead. + +config BR2_BUSYBOX_VERSION_1_20_X + bool "busybox version selection has been removed" + select BR2_LEGACY + help + The possibility of selecting the Busybox version has been + removed. Use the latest version provided by the Busybox + package instead. + +config BR2_BUSYBOX_VERSION_1_21_X + bool "busybox version selection has been removed" + select BR2_LEGACY + help + The possibility of selecting the Busybox version has been + removed. Use the latest version provided by the Busybox + package instead. + +config BR2_PACKAGE_LIBV4L_DECODE_TM6000 + bool "decode_tm6000" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_IR_KEYTABLE + bool "ir-keytable" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE + bool "v4l2-compliance" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_V4L2_CTL + bool "v4l2-ctl" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_V4L2_DBG + bool "v4l2-dbg" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. + +############################################################################### +comment "Legacy options removed in 2014.05" + +config BR2_PACKAGE_EVTEST_CAPTURE + bool "evtest-capture support removed (dropped since evtest 1.31)" + select BR2_LEGACY + help + Support for evtest-capture has been removed (dropped from + evtest package since version 1.31), use evemu package + instead. + +config BR2_KERNEL_HEADERS_3_6 + bool "kernel headers version 3.6.x are no longer supported" + select BR2_LEGACY + help + Version 3.6.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_7 + bool "kernel headers version 3.7.x are no longer supported" + select BR2_LEGACY + help + Version 3.7.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_PACKAGE_VALA + bool "vala target package has been removed" + select BR2_LEGACY + help + The 'vala' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: the host vala package still exists. + +config BR2_TARGET_TZ_ZONELIST + default BR2_PACKAGE_TZDATA_ZONELIST if BR2_PACKAGE_TZDATA_ZONELIST != "" + +config BR2_PACKAGE_TZDATA_ZONELIST + string "tzdata: the timezone list option has been renamed" + help + The option BR2_PACKAGE_TZDATA_ZONELIST has been renamed to + BR2_TARGET_TZ_ZONELIST, and moved to the "System + configuration" menu. You'll need to select BR2_TARGET_TZ_INFO. + +config BR2_PACKAGE_TZDATA_ZONELIST_WRAP + bool + default y if BR2_PACKAGE_TZDATA_ZONELIST != "" + select BR2_LEGACY + +config BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE + bool "Lua command-line editing none has been renamed" + select BR2_LEGACY + help + The BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE option has been + renamed to BR2_PACKAGE_LUA_EDITING_NONE. You will have to + select it in the corresponding choice. + +config BR2_PACKAGE_LUA_INTERPRETER_READLINE + bool "Lua command-line editing using readline has been renamed" + select BR2_LEGACY + help + The BR2_PACKAGE_LUA_INTERPRETER_READLINE option has been + renamed to BR2_PACKAGE_LUA_READLINE. You will have to select + it in the corresponding choice. + +config BR2_PACKAGE_LUA_INTERPRETER_LINENOISE + bool "Lua command-line editing using linenoise has been renamed" + select BR2_LEGACY + help + The BR2_PACKAGE_LUA_INTERPRETER_LINENOISE option has been + renamed to BR2_PACKAGE_LUA_LINENOISE. You will have to select + it in the corresponding choice. + +config BR2_PACKAGE_DVB_APPS_UTILS + bool "dvb-apps utilities now built by default" + select BR2_LEGACY + help + The dvb-apps utilities are now always built when the dvb-apps + package is selected. + +config BR2_KERNEL_HEADERS_SNAP + bool "Local Linux snapshot support removed" + select BR2_LEGACY + help + Support for using a custom snapshot to install the Linux + kernel headers has been removed. + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV + bool "/dev management by udev removed" + select BR2_LEGACY + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + Therefore, if you are not using 'systemd' as init system, you + must choose 'Dynamic using eudev' in the '/dev management' + menu to get the same behaviour as in your old configuration. + + If you are using 'systemd', its internal implementation of + 'udev' will be used automatically. + + You must also check the packages depending on 'udev' are still + selected. + +config BR2_PACKAGE_UDEV + bool "udev is now a virtual package" + select BR2_LEGACY + select BR2_PACKAGE_HAS_UDEV + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + Your old configuration refers to packages depending on 'udev', + either for build or at runtime. + + Check that a 'udev' provider is selected. If you are not using + 'systemd' as init system, 'eudev' should be selected, which is + the case if '/dev management' is set to 'Dynamic using eudev'. + + If you are using 'systemd', its internal implementation of + 'udev' is used. + +config BR2_PACKAGE_UDEV_RULES_GEN + bool "udev rules generation handled by provider" + select BR2_LEGACY + select BR2_PACKAGE_EUDEV if !BR2_INIT_SYSTEMD + select BR2_PACKAGE_EUDEV_RULES_GEN if !BR2_INIT_SYSTEMD + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + If you are not using 'systemd' as init system, udev rules + generation will be handled by 'eudev'. Check that + '/dev management' is set to 'Dynamic using eudev' to get + the same behaviour as in your old configuration. + + If you are using 'systemd', it internal implementation of + 'udev' will generate the rules. + +config BR2_PACKAGE_UDEV_ALL_EXTRAS + bool "udev extras removed" + select BR2_LEGACY + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + The option to enable the extra features of 'udev' (gudev, ...) + has been removed. These features are automatically enabled in + the 'udev' providers if the dependencies are selected. For + example, selecting 'libglib2' will trigger the build of gudev. + +config BR2_PACKAGE_XLIB_LIBPTHREAD_STUBS + bool "xlib-libpthread-stubs option has been renamed" + depends on BR2_PACKAGE_XORG7 + select BR2_LEGACY + select BR2_PACKAGE_LIBPTHREAD_STUBS + help + The pthread stubs neither depend on X11 nor Xlib. Thus the + package has been renamed BR2_PACKAGE_LIBPTHREAD_STUBS + +############################################################################### +comment "Legacy options removed in 2014.02" + +config BR2_sh2 + bool "sh2 support removed" + select BR2_LEGACY + help + Due to an inexistent user base and generally poor Linux + support, the support for the SH2 architecture was removed. + +config BR2_sh3 + bool "sh3 support removed" + select BR2_LEGACY + help + Due to an inexistent user base and generally poor Linux + support, the support for the SH3 architecture was removed. + +config BR2_sh3eb + bool "sh3eb support removed" + select BR2_LEGACY + help + Due to an inexistent user base and generally poor Linux + support, the support for the SH3eb architecture was removed. + +config BR2_KERNEL_HEADERS_3_1 + bool "kernel headers version 3.1.x are no longer supported" + select BR2_LEGACY + help + Version 3.1.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_3 + bool "kernel headers version 3.3.x are no longer supported" + select BR2_LEGACY + help + Version 3.3.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_KERNEL_HEADERS_3_5 + bool "kernel headers version 3.5.x are no longer supported" + select BR2_LEGACY + help + Version 3.5.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + +config BR2_GDB_VERSION_7_2 + bool "gdb 7.2.x is no longer supported" + select BR2_GDB_VERSION_7_6 + select BR2_LEGACY + help + Version 7.2.x of gdb has been deprecated for more than four + buildroot releases and is now removed. As an alternative, gdb + 7.5.x has been automatically selected in your configuration. + +config BR2_GDB_VERSION_7_3 + bool "gdb 7.3.x is no longer supported" + select BR2_GDB_VERSION_7_6 + select BR2_LEGACY + help + Version 7.3.x of gdb has been deprecated for more than four + buildroot releases and is now removed. As an alternative, gdb + 7.5.x has been automatically selected in your configuration. + +config BR2_PACKAGE_CCACHE + bool "ccache target package has been removed" + select BR2_LEGACY + help + The 'ccache' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: using ccache for speeding up builds is still supported. + +config BR2_HAVE_DOCUMENTATION + bool "support for documentation on target has been removed" + select BR2_LEGACY + help + Support for documentation on target has been removed since it + has been deprecated for more than four buildroot releases. + +config BR2_PACKAGE_AUTOMAKE + bool "automake target package has been removed" + select BR2_LEGACY + help + The 'automake' target package has been removed since it has + been deprecated for more than four buildroot releases. + Note: the host automake still exists. + +config BR2_PACKAGE_AUTOCONF + bool "autoconf target package has been removed" + select BR2_LEGACY + help + The 'autoconf' target package has been removed since it has + been deprecated for more than four buildroot releases. + Note: the host autoconf still exists. + +config BR2_PACKAGE_XSTROKE + bool "xstroke has been removed" + select BR2_LEGACY + help + The 'xstroke' package has been removed since it has been + deprecated for more than four buildroot releases. + +config BR2_PACKAGE_LZMA + bool "lzma target package has been removed" + select BR2_LEGACY + help + The 'lzma' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: generating lzma-compressed rootfs images is still + supported. + +config BR2_PACKAGE_TTCP + bool "ttcp has been removed" + select BR2_LEGACY + help + The 'ttcp' package has been removed since it has been + deprecated for more than four buildroot releases. + +config BR2_PACKAGE_LIBNFC_LLCP + bool "libnfc-llcp has been replaced by libllcp" + select BR2_LEGACY + select BR2_PACKAGE_LIBLLCP + help + The 'libnfc-llcp' package has been removed since upstream + renamed to 'libllcp'. We have added a new package for + 'libllcp' and bumped the version at the same time. + +config BR2_PACKAGE_MYSQL_CLIENT + bool "MySQL client renamed to MySQL" + select BR2_LEGACY + select BR2_PACKAGE_MYSQL + help + The option has been renamed BR2_PACKAGE_MYSQL + +config BR2_PACKAGE_SQUASHFS3 + bool "squashfs3 has been removed" + select BR2_LEGACY + select BR2_PACKAGE_SQUASHFS + help + The 'squashfs3' package has been removed since it has been + deprecated for more than four buildroot releases. Package + 'squashfs' (4) has been selected automatically as replacement. + +config BR2_TARGET_ROOTFS_SQUASHFS3 + bool "squashfs3 rootfs support has been removed" + select BR2_LEGACY + help + Together with the removal of the squashfs3 package, support + for squashfs3 root filesystems has been removed too. Squashfs + root filesystems will automatically use squashfs4 now. + +config BR2_PACKAGE_NETKITBASE + bool "netkitbase has been removed" + select BR2_LEGACY + help + The 'netkitbase' package has been removed since it has been + deprecated since 2012.11. This package provided 'inetd' + which is replaced by 'xinet' and 'ping' which is replaced by + 'busybox' or 'fping'. + +config BR2_PACKAGE_NETKITTELNET + bool "netkittelnet has been removed" + select BR2_LEGACY + help + The 'netkittelnet' package has been removed since it has + been deprecated since 2012.11. 'busybox' provides a telnet + client and should be used instead. + +config BR2_PACKAGE_LUASQL + bool "luasql has been replaced by luasql-sqlite3" + select BR2_PACKAGE_LUASQL_SQLITE3 + select BR2_LEGACY + help + The option has been renamed BR2_PACKAGE_LUASQL_SQLITE3. + +config BR2_PACKAGE_LUACJSON + bool "luacjson has been replaced by lua-cjson" + select BR2_PACKAGE_LUA_CJSON + select BR2_LEGACY + help + The option has been renamed BR2_PACKAGE_LUA_CJSON. + +############################################################################### +comment "Legacy options removed in 2013.11" + +config BR2_PACKAGE_LVM2_DMSETUP_ONLY + bool "lvm2's 'dmsetup only' option removed" + select BR2_LEGACY + help + The BR2_PACKAGE_LVM2_DMSETUP_ONLY was a negative option, which + led to problems with other packages that need the full lvm2 + suite. Therefore, the option has been replaced with the + positive BR2_PACKAGE_LVM2_STANDARD_INSTALL option. + +# Note: BR2_PACKAGE_LVM2_DMSETUP_ONLY is still referenced in package/lvm2/Config.in +# in order to automatically propagate old configs + +config BR2_PACKAGE_QT_JAVASCRIPTCORE + bool "qt javascriptcore option removed" + select BR2_LEGACY + help + The BR2_PACKAGE_QT_JAVASCRIPTCORE option was available to + force the activation or disabling of the JIT compiler in the + Qt Javascript interpreter. However, the JIT compiler is not + available for all architectures, so forcing its activation + does not always work. Moreover, Qt knows by itself for which + architectures JIT support is possible, and will + automatically enable it if possible. + + Therefore, this option was in fact useless, and causing + build problems when enabled on architectures for which the + JIT support was not available. It has been removed, and + there is no replacement: Qt will enable JIT at compile time + when possible. + +config BR2_PACKAGE_MODULE_INIT_TOOLS + bool "module-init-tools replaced by kmod" + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_KMOD_TOOLS + select BR2_LEGACY + help + The 'module-init-tools' package has been removed, since it + has been depracated upstream and replaced by 'kmod'. + +config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL + string "u-boot: the git repository URL option has been renamed" + help + The option BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL has + been renamed to BR2_TARGET_UBOOT_CUSTOM_REPO_URL. + +config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL is still referenced from +# boot/uboot/Config.in + +config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION + string "u-boot: the git repository version option has been renamed" + help + The option BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION has + been renamed to BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION. + +config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION is still referenced from +# boot/uboot/Config.in + +config BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL + string "linux: the git repository URL option has been renamed" + help + The option BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL has + been renamed to + BR2_LINUX_KERNEL_CUSTOM_REPO_URL. + +config BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL_WRAP + bool + default y if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != "" + select BR2_LEGACY + +# Note: BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL is still referenced from +# linux/Config.in + +config BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION + string "linux: the git repository version option has been renamed" + help + The option BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION has + been renamed to + BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION. + +config BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION_WRAP + bool + default y if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" + select BR2_LEGACY + +# Note: BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION is still referenced from +# linux/Config.in + +############################################################################### +comment "Legacy options removed in 2013.08" + +config BR2_ARM_OABI + bool "ARM OABI support has been removed" + select BR2_LEGACY + help + The support for the ARM OABI was deprecated since a while, + and has been removed completely from Buildroot. It is also + deprecated in upstream gcc, since gcc 4.7. People should + switch to EABI instead, which should not be a problem as + long as you don't have pre-built OABI binaries in your + system that you can't recompile. + +config BR2_PACKAGE_DOSFSTOOLS_DOSFSCK + bool "dosfstools dosfsck renamed to fsck.fat" + select BR2_LEGACY + select BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT + help + dosfsck was renamed upstream to fsck.fat for consistency. + +config BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL + bool "dosfstools dosfslabel renamed to fatlabel" + select BR2_LEGACY + select BR2_PACKAGE_DOSFSTOOLS_FATLABEL + help + doslabel was renamed upstream to fatlabel for consistency. + +config BR2_PACKAGE_DOSFSTOOLS_MKDOSFS + bool "dosfstools mkdosfs renamed to mkfs.fat" + select BR2_LEGACY + select BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT + help + mkdosfs was renamed upstream to mkfs.fat for consistency. + +config BR2_ELF2FLT + bool "the elf2flt option has been renamed" + select BR2_LEGACY + help + The BR2_ELF2FLT option has been renamed to + BR2_PACKAGE_HOST_ELF2FLT due to the conversion of elf2flt to + the package infrastructure. + +config BR2_VFP_FLOAT + bool "the ARM VFP floating point option has been renamed" + select BR2_LEGACY + help + Due to a major refactoring of the floating-point handling of + the ARM architecture support, the BR2_VFP_FLOAT option has + been replaced with a choice of options that allows to select + between various VFP versions/capabilities. + +config BR2_PACKAGE_GCC_TARGET + bool "gcc on the target filesystem has been removed" + select BR2_LEGACY + help + The support for gcc in the target filesystem was deprecated + since a while, and has been removed completely from Buildroot. + See Buildroot's documentation for more explanations. + +config BR2_HAVE_DEVFILES + bool "development files in target filesystem has been removed" + select BR2_LEGACY + help + The installation of the development files in the target + filesystem was deprecated since a while, and has been removed + completely from Buildroot. + See Buildroot's documentation for more explanations. + +endmenu + +endif # !SKIP_LEGACY diff --git a/features/buildroot/DEVELOPERS b/features/buildroot/DEVELOPERS new file mode 100644 index 00000000..877bb36a --- /dev/null +++ b/features/buildroot/DEVELOPERS @@ -0,0 +1,2413 @@ +# Syntax: +# +# N: Firstname Lastname +# F: file pattern or directory +# F: file pattern or directory +# +# The "F" entries can be: +# +# - A directory, in which case all patches touching any file in this +# directory or its subdirectories will be CC'ed to the developer. +# - A pattern, in which case the pattern will be expanded, and then +# all files/directories (and their subdirectories) will be +# considered when matching against a patch +# +# Notes: +# +# - When a developer adds an "arch/Config.in." file to its list +# of files, he is considered a developer of this architecture. He +# will receive e-mail notifications about build failures occuring on +# this architecture. Not more than one e-mail per day is sent. +# - When a developer adds a directory that contains one or several +# packages, this developer will be notified when build failures +# occur. Not more than one e-mail per day is sent. +# - When a developer adds an "package/pkg-.mk" file to its list +# of files, he is considered interested by this package +# infrastructure, and will be CC'ed on all patches that add or +# modify packages that use this infrastructure. + +N: Abhilash Tuse +F: package/gstreamer1/gst1-rtsp-server/ + +N: Adam Duskett +F: package/audit/ +F: package/busybox/ +F: package/checkpolicy/ +F: package/cppdb/ +F: package/gstreamer1/gstreamer1/ +F: package/gstreamer1/gstreamer1-mm/ +F: package/gstreamer1/gst1-plugins-bad/ +F: package/gstreamer1/gst1-plugins-base/ +F: package/gstreamer1/gst1-plugins-good/ +F: package/gstreamer1/gst1-plugins-ugly/ +F: package/gstreamer1/gst1-vaapi/ +F: package/imx-usb-loader/ +F: package/janus-gateway/ +F: package/json-for-modern-cpp/ +F: package/libcpprestsdk/ +F: package/libressl/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/libwebsockets/ +F: package/mender-grubenv/ +F: package/nginx-naxsi/ +F: package/openjdk/ +F: package/openjdk-bin/ +F: package/php/ +F: package/policycoreutils/ +F: package/python3/ +F: package/python-flask-sqlalchemy/ +F: package/python-mutagen/ +F: package/python-pip/ +F: package/python-psycopg2/ +F: package/python-sqlalchemy/ +F: package/python-visitor/ +F: package/restorecond/ +F: package/refpolicy/ +F: package/selinux-python/ +F: package/semodule-utils/ +F: package/setools/ +F: package/sngrep/ +F: package/systemd/ + +N: Adrian Perez de Castro +F: package/brotli/ +F: package/cog/ +F: package/libepoxy/ +F: package/libwpe/ +F: package/webkitgtk/ +F: package/woff2/ +F: package/wpebackend-fdo/ +F: package/wpewebkit/ + +N: Adrien Gallouët +F: package/bird/ +F: package/glorytun/ + +N: Aleksander Morgado +F: package/libmbim/ +F: package/libqmi/ +F: package/modem-manager/ + +N: Alex Suykov +F: board/chromebook/snow/ +F: configs/chromebook_snow_defconfig +F: package/vboot-utils/ + +N: Alexander Clouter +F: package/odhcp6c/ + +N: Alexander Dahl +F: package/fastd/ +F: package/libuecc/ +F: package/putty/ + +N: Alexander Lukichev +F: package/openpgm/ + +N: Alexander Mukhin +F: package/hostapd/ + +N: Alexander Sverdlin +F: package/mini-snmpd/ + +N: Alexander Varnin +F: package/liblog4c-localtime/ + +N: Alexandre Belloni +F: package/tz/ + +N: Alexandre Esse +F: package/kvazaar/ +F: package/v4l2loopback/ + +N: Alistair Francis +F: boot/opensbi/ +F: package/xen/ + +N: Alvaro G. M +F: package/dcron/ +F: package/libxmlrpc/ +F: package/python-docopt/ + +N: Anders Darander +F: package/ktap/ + +N: André Hentschel +F: board/freescale/imx8qxpmek/ +F: configs/freescale_imx8qxpmek_defconfig +F: package/azure-iot-sdk-c/ +F: package/freescale-imx/imx-sc-firmware/ +F: package/libkrb5/ +F: package/openal/ +F: package/p7zip/ +F: package/wine/ + +N: Andrey Smirnov +F: package/python-backports-shutil-get-terminal-size/ +F: package/python-decorator/ +F: package/python-ipython-genutils/ +F: package/python-pathlib2/ +F: package/python-pickleshare/ +F: package/python-scandir/ +F: package/python-simplegeneric/ +F: package/python-systemd/ +F: package/python-traitlets/ +F: package/zstd/ + +N: Andrey Yurovsky +F: package/rauc/ + +N: Andy Kennedy +F: package/libunwind/ + +N: Angelo Compagnucci +F: package/corkscrew/ +F: package/fail2ban/ +F: package/i2c-tools/ +F: package/mender/ +F: package/mender-artifact/ +F: package/mono/ +F: package/mono-gtksharp3/ +F: package/monolite/ +F: package/python-can/ +F: package/python-pillow/ +F: package/python-pydal/ +F: package/python-web2py/ +F: package/sysdig/ + +N: Anisse Astier +F: package/go/ +F: package/nghttp2/ +F: package/pkg-golang.mk + +N: Anthony Viallard +F: package/gnuplot/ + +N: Antoine Ténart +F: package/wf111/ + +N: Antony Pavlov +F: package/lsscsi/ + +N: ARC Maintainers +F: arch/Config.in.arc +F: board/synopsys/ +F: configs/snps_arc700_axs101_defconfig +F: configs/snps_archs38_axs103_defconfig +F: configs/snps_archs38_haps_defconfig +F: configs/snps_archs38_hsdk_defconfig +F: configs/snps_archs38_vdk_defconfig + +N: Ariel D'Alessandro +F: package/axfsutils/ +F: package/mali-t76x/ + +N: Arnaud Aujon +F: package/espeak/ + +N: Arnout Vandecappelle +F: package/arp-scan/ +F: package/dehydrated/ +F: package/freescale-imx/firmware-imx/ +F: package/freescale-imx/imx-lib/ +F: package/gstreamer/gst-fsl-plugins/ +F: package/libpagekite/ +F: package/lua-bit32/ +F: package/owfs/ +F: package/python-bottle/ +F: package/sqlcipher/ +F: package/stress/ + +N: Asaf Kahlon +F: package/libuv/ +F: package/python* +F: package/uftp/ +F: package/zeromq/ + +N: Ash Charles +F: package/pru-software-support/ +F: package/ti-cgt-pru/ + +N: Assaf Inbal +F: package/lbase64/ +F: package/luabitop/ +F: package/luaexpatutils/ +F: package/luaposix/ +F: package/luasec/ +F: package/lua-ev/ +F: package/orbit/ + +N: Bartosz Bilas +F: package/qt5/qt5scxml/ + +N: Bartosz Golaszewski +F: package/autoconf-archive/ +F: package/doxygen/ +F: package/libgpiod/ +F: package/libserialport/ +F: package/libsigrok/ +F: package/libsigrokdecode/ +F: package/libzip/ +F: package/pulseview/ +F: package/sigrok-cli/ + +N: Baruch Siach +F: board/solidrun/clearfog_gt_8k/ +F: configs/solidrun_clearfog_gt_8k_defconfig +F: package/18xx-ti-utils/ +F: package/daemon/ +F: package/dropbear/ +F: package/ebtables/ +F: package/i2c-tools/ +F: package/libcurl/ +F: package/libpcap/ +F: package/openipmi/ +F: package/socat/ +F: package/strace/ +F: package/tcpdump/ +F: package/ti-uim/ +F: package/uhubctl/ + +N: Ben Boeckel +F: package/taskd/ + +N: Benjamin Kamath +F: package/lapack/ + +N: Bernd Kuhls +F: package/alsa-lib/ +F: package/alsa-utils/ +F: package/apache/ +F: package/apr/ +F: package/apr-util/ +F: package/asterisk/ +F: package/bcg729/ +F: package/bluez-tools/ +F: package/boinc/ +F: package/clamav/ +F: package/dovecot/ +F: package/dovecot-pigeonhole/ +F: package/dtv-scan-tables/ +F: package/eudev/ +F: package/exim/ +F: package/fetchmail/ +F: package/ffmpeg/ +F: package/freeswitch/ +F: package/freeswitch-mod-bcg729/ +F: package/freetype/ +F: package/ghostscript/ +F: package/giflib/ +F: package/gli/ +F: package/glmark2/ +F: package/hdparm/ +F: package/jsoncpp/ +F: package/kodi* +F: package/lame/ +F: package/leafnode2/ +F: package/libaacs/ +F: package/libasplib/ +F: package/libass/ +F: package/libbdplus/ +F: package/libbluray/ +F: package/libbroadvoice/ +F: package/libcdio/ +F: package/libcec/ +F: package/libcodec2/ +F: package/libcrossguid/ +F: package/libdcadec/ +F: package/libdrm/ +F: package/libdvbcsa/ +F: package/libdvdcss/ +F: package/libdvdnav/ +F: package/libdvdread/ +F: package/libebur128/ +F: package/libfreeglut/ +F: package/libg7221/ +F: package/libglew/ +F: package/libglfw/ +F: package/libglu/ +F: package/libhdhomerun/ +F: package/libilbc/ +F: package/libldns/ +F: package/libmicrohttpd/ +F: package/libminiupnpc/ +F: package/libnatpmp/ +F: package/libnpth/ +F: package/libogg/ +F: package/libopenh264/ +F: package/libpciaccess/ +F: package/libplatform/ +F: package/libpng/ +F: package/libsidplay2/ +F: package/libsilk/ +F: package/libsndfile/ +F: package/libsoil/ +F: package/libsoundtouch/ +F: package/libsquish/ +F: package/liburiparser/ +F: package/libva/ +F: package/libva-intel-driver/ +F: package/libva-utils/ +F: package/libvorbis/ +F: package/libvpx/ +F: package/libyuv/ +F: package/mesa3d/ +F: package/minidlna/ +F: package/mjpg-streamer/ +F: package/perl-crypt-openssl-guess/ +F: package/perl-crypt-openssl-random/ +F: package/perl-crypt-openssl-rsa/ +F: package/perl-digest-sha1/ +F: package/perl-encode-detect/ +F: package/perl-encode-locale/ +F: package/perl-file-listing/ +F: package/perl-html-parser/ +F: package/perl-html-tagset/ +F: package/perl-http-cookies/ +F: package/perl-http-daemon/ +F: package/perl-http-date/ +F: package/perl-http-message/ +F: package/perl-http-negotiate/ +F: package/perl-io-html/ +F: package/perl-lwp-mediatypes/ +F: package/perl-mail-dkim/ +F: package/perl-mailtools/ +F: package/perl-mime-base64/ +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/pixman/ +F: package/pngquant/ +F: package/pound/ +F: package/pure-ftpd/ +F: package/python-couchdb/ +F: package/python-cssutils/ +F: package/python-futures/ +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/rtmpdump/ +F: package/samba4/ +F: package/softether/ +F: package/spandsp/ +F: package/sqlite/ +F: package/taglib/ +F: package/tinyxml2/ +F: package/tor/ +F: package/transmission/ +F: package/tvheadend/ +F: package/unixodbc/ +F: package/vdr/ +F: package/vdr-plugin-vnsiserver/ +F: package/vlc/ +F: package/vnstat/ +F: package/waylandpp/ +F: package/x11r7/ +F: package/x264/ +F: package/x265/ +F: package/znc/ + +N: Biagio Montaruli +F: board/acmesystems/ +F: configs/acmesystems_* + +N: Bimal Jacob +F: package/nginx-upload/ + +N: Bogdan Radulescu +F: package/iftop/ +F: package/ncdu/ + +N: Brandon Maier +F: package/vmtouch/ + +N: Brock Williams +F: package/pdmenu/ + +N: Carlo Caione +F: package/sunxi-boards/ + +N: Carlos Santos +F: package/busybox/ +F: package/gtest/ +F: package/initscripts/ +F: package/intel-microcode/ +F: package/libpam-radius-auth/ +F: package/libpam-tacplus/ +F: package/liburiparser/ +F: package/modem-manager/ +F: package/pamtester/ +F: package/pcm-tools/ +F: package/perl-file-util/ +F: package/skeleton-custom/ +F: package/skeleton-init-common/ +F: package/skeleton-init-none/ +F: package/skeleton-init-systemd/ +F: package/skeleton-init-sysv/ +F: package/skeleton/ +F: package/sysvinit/ +F: package/util-linux/ +F: package/tpm2-abrmd/ +F: package/tpm2-tools/ +F: package/tpm2-totp/ +F: package/tpm2-tss/ + +N: Carsten Schoenert +F: package/dvbsnoop/ +F: package/libdvbsi/ +F: package/libsvg/ +F: package/libsvg-cairo/ + +N: Cédric Chépied +F: package/znc/ + +N: Chakra Divi +F: board/friendlyarm/nanopi-m1 +F: board/friendlyarm/nanopi-m1-plus +F: board/olimex/a13_olinuxino +F: board/orangepi/orangepi-plus +F: configs/nanopi_m1_defconfig +F: configs/nanopi_m1_plus_defconfig +F: configs/olimex_a13_olinuxino_defconfig +F: configs/orangepi_plus_defconfig + +N: Chris Packham +F: package/eventlog/ +F: package/gstreamer1/gst1-shark/ +F: package/micropython/ +F: package/micropython-lib/ +F: package/syslog-ng/ + +N: Christian Kellermann +F: package/python-pylibftdi/ + +N: Christian Stewart +F: linux/linux-ext-aufs.mk +F: package/aufs/ +F: package/aufs-util/ +F: package/batman-adv/ +F: package/docker-cli/ +F: package/docker-containerd/ +F: package/docker-engine/ +F: package/docker-proxy/ +F: package/go/ +F: package/mosh/ +F: package/pkg-golang.mk +F: package/rtl8821au/ +F: package/runc/ +F: package/tini/ + +N: Christophe Vu-Brugier +F: package/drbd-utils/ +F: package/iotop/ +F: package/python-configshell-fb/ +F: package/python-rtslib-fb/ +F: package/python-urwid/ +F: package/targetcli-fb/ + +N: Christopher McCrory +F: package/perl-appconfig/ +F: package/perl-astro-suntime/ +F: package/perl-class-load/ +F: package/perl-class-std/ +F: package/perl-class-std-fast/ +F: package/perl-data-dump/ +F: package/perl-data-optlist/ +F: package/perl-data-uuid/ +F: package/perl-date-manip/ +F: package/perl-dbd-mysql/ +F: package/perl-dbi/ +F: package/perl-device-serialport/ +F: package/perl-dist-checkconflicts/ +F: package/perl-file-slurp/ +F: package/perl-io-interface/ +F: package/perl-io-socket-multicast/ +F: package/perl-json-maybexs/ +F: package/perl-mime-tools/ +F: package/perl-module-implementation/ +F: package/perl-module-runtime/ +F: package/perl-number-bytes-human/ +F: package/perl-package-stash/ +F: package/perl-params-util/ +F: package/perl-sub-install/ +F: package/perl-sys-cpu/ +F: package/perl-sys-meminfo/ +F: package/perl-sys-mmap/ +F: package/perl-time-parsedate/ +F: package/perl-x10/ + +N: Clayton Shotwell +F: package/audit/ +F: package/checkpolicy/ +F: package/cpio/ +F: package/libcgroup/ +F: package/libee/ +F: package/libestr/ +F: package/liblogging/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/policycoreutils/ +F: package/ustr/ + +N: Corentin Guillevic +F: package/libloki/ + +N: Cyril Bur +F: arch/Config.in.powerpc +F: package/kvm-unit-tests + +N: Dagg Stompler +F: board/hardkernel/odroidc2 +F: configs/odroidc2_defconfig +F: package/libamcodec/ +F: package/odroid-mali/ +F: package/odroid-scripts/ + +N: Daniel J. Leach +F: package/dacapo/ + +N: Damien Lanson +F: package/libvdpau/ +F: package/log4cpp/ + +N: Daniel Nicoletti +F: package/cutelyst/ + +N: Daniel Nyström +F: package/e2tools/ + +N: Daniel Price +F: package/nodejs/ +F: package/redis/ + +N: Daniel Sangue +F: package/libftdi1/ + +N: Danomi Manchego +F: package/cjson/ +F: package/jq/ +F: package/libwebsockets/ +F: package/ljsyscall/ +F: package/lua-cjson/ +F: package/luaexpat/ +F: package/xinetd/ + +N: David Bachelart +F: package/ccrypt/ +F: package/dos2unix/ +F: package/ipmiutil/ +F: package/jsmn/ +F: package/python-daemon/ +F: package/sslh/ +F: package/udpxy/ + +N: David Bender +F: package/benejson/ +F: package/cgic/ +F: package/freeradius-client/ +F: package/openldap/ + +N: David du Colombier <0intro@gmail.com> +F: package/x264/ + +N: David Graziano +F: package/libcsv/ + +N: David Lechner +F: board/lego/ev3/ +F: configs/lego_ev3_defconfig +F: linux/linux-ext-ev3dev-linux-drivers.mk +F: package/brickd/ +F: package/ev3dev-linux-drivers/ + +N: Davide Viti +F: package/flann/ +F: package/python-paho-mqtt/ +F: package/qhull/ +F: package/tcllib/ + +N: Denis Bodor +F: package/libstrophe/ + +N: Dimitrios Siganos +F: package/wireless-regdb/ + +N: Dominik Faessler +F: package/logsurfer/ +F: package/python-id3/ + +N: Doug Kehn +F: package/nss-pam-ldapd/ +F: package/sp-oops-extract/ +F: package/unscd/ + +N: Dushara Jayasinghe +F: package/prosody/ + +N: Ed Swierk +F: package/xxhash/ + +N: Eloi Bail +F: package/bayer2rgb-neon/ +F: package/gstreamer1/gst1-plugins-bayer2rgb-neon/ + +N: Eric Le Bihan +F: docs/manual/adding-packages-meson.txt +F: package/adwaita-icon-theme/ +F: package/cargo-bin/ +F: package/cargo/ +F: package/darkhttpd/ +F: package/eudev/ +F: package/execline/ +F: package/hicolor-icon-theme/ +F: package/jemalloc/ +F: package/meson/ +F: package/ninja/ +F: package/pkg-meson.mk +F: package/rust-bin/ +F: package/rust/ +F: package/s6/ +F: package/s6-dns/ +F: package/s6-linux-init/ +F: package/s6-linux-utils/ +F: package/s6-networking/ +F: package/s6-portable-utils/ +F: package/s6-rc/ +F: package/skalibs/ +F: package/smack/ +F: package/xvisor/ + +N: Eric Limpens +F: package/pifmrds/ +F: package/ympd/ + +N: Erico Nunes +F: board/aarch64-efi/ +F: configs/aarch64_efi_defconfig +F: package/acpica/ +F: package/acpitool/ +F: package/efibootmgr/ +F: package/efivar/ +F: package/fwts/ +F: package/spi-tools/ +F: package/xdotool/ +F: configs/pc_x86_64_* + +N: Erik Larsson +F: package/imx-mkimage/ + +N: Erik Stromdahl +F: package/mxsldr/ + +N: Ernesto L. Williams Jr +F: package/szip/ + +N: Esben Haabendal +F: boot/gummiboot/ + +N: Etienne Carriere +F: boot/optee-os/ +F: package/optee-benchmark/ +F: package/optee-client/ +F: package/optee-examples/ +F: package/optee-test/ + +N: Eugene Tarassov +F: package/tcf-agent/ + +N: Evan Zelkowitz +F: package/sdl_gfx/ + +N: Ezequiel Garcia +F: board/ci20/ +F: configs/ci20_defconfig +F: arch/Config.in.nios2 +F: package/fio/ +F: package/iptraf-ng/ +F: package/jimtcl/ +F: package/mimic/ +F: package/nodm/ +F: package/openbox/ +F: package/rtl8723bs/ +F: package/supertuxkart/ + +N: Fabio Estevam +F: board/warp7/ +F: configs/freescale_imx* +F: configs/imx23evk_defconfig +F: configs/imx6-sabre* +F: configs/imx6slevk_defconfig +F: configs/imx6sx-sdb_defconfig +F: configs/imx6ulevk_defconfig +F: configs/imx6ulpico_defconfig +F: configs/imx7d-sdb_defconfig +F: configs/imx7dpico_defconfig +F: configs/mx25pdk_defconfig +F: configs/mx51evk_defconfig +F: configs/mx53loco_defconfig +F: configs/mx6cubox_defconfig +F: configs/mx6sx_udoo_neo_defconfig +F: configs/mx6udoo_defconfig +F: configs/wandboard_defconfig +F: configs/warp7_defconfig +F: package/atest/ +F: package/kmscube/ + +N: Fabio Porcedda +F: package/netsurf-buildsystem/ + +N: Fabrice Fontaine +F: package/domoticz/ +F: package/libmediaart/ +F: package/libmaxminddb/ +F: package/openzwave/ + +N: Fabrice Fontaine +F: package/alljoyn/ +F: package/alljoyn-base/ +F: package/alljoyn-tcl/ +F: package/alljoyn-tcl-base/ +F: package/boinc/ +F: package/cairo/ +F: package/duktape/ +F: package/expat/ +F: package/flatbuffers/ +F: package/gerbera/ +F: package/gtksourceview/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-dlna/ +F: package/gupnp-tools/ +F: package/haproxy/ +F: package/hiredis/ +F: package/i2pd/ +F: package/igd2-for-linux/ +F: package/json-c/ +F: package/lcms2/ +F: package/lftp/ +F: package/libcap-ng/ +F: package/libcdio-paranoia/ +F: package/libcgicc/ +F: package/libconfig/ +F: package/libcue/ +F: package/libebml/ +F: package/libgee/ +F: package/libglib2/ +F: package/libgtk2/ +F: package/libgtk3/ +F: package/libhtp/ +F: package/libidn/ +F: package/libidn2/ +F: package/libjpeg/ +F: package/liblockfile/ +F: package/libmatroska/ +F: package/libmpdclient/ +F: package/libnetfilter_conntrack/ +F: package/libnetfilter_queue/ +F: package/liboping/ +F: package/libpfm4/ +F: package/libraw/ +F: package/libraw1394/ +F: package/libroxml/ +F: package/librsvg/ +F: package/librsync/ +F: package/libsoup/ +F: package/libsoxr/ +F: package/libupnp/ +F: package/libupnp18/ +F: package/libv4l/ +F: package/libxslt/ +F: package/mbedtls/ +F: package/minissdpd/ +F: package/minizip/ +F: package/mongodb/ +F: package/motion/ +F: package/mutt/ +F: package/ncmpc/ +F: package/oniguruma/ +F: package/oprofile/ +F: package/pcmanfm/ +F: package/python-backcall/ +F: package/python-jedi/ +F: package/python-parso/ +F: package/rygel/ +F: package/safeclib/ +F: package/suricata/ +F: package/tinycbor/ +F: package/tinydtls/ +F: package/tinymembench/ +F: package/whois/ + +N: Falco Hyfing +F: package/python-pymodbus/ + +N: Floris Bos +F: package/ipmitool/ +F: package/odhcploc/ + +N: Francisco Gonzalez +F: package/ser2net/ + +N: Francois Perrad +F: board/olimex/a20_olinuxino +F: configs/olimex_a20_olinuxino_* +F: package/4th/ +F: package/chipmunk/ +F: package/cog/ +F: package/dado/ +F: package/ficl/ +F: package/libtomcrypt/ +F: package/libtommath/ +F: package/libwpe/ +F: package/linenoise/ +F: package/ljlinenoise/ +F: package/lpeg/ +F: package/lpty/ +F: package/lrandom/ +F: package/lsqlite3/ +F: package/lua* +F: package/lzlib/ +F: package/moarvm/ +F: package/netsurf/ +F: package/perl* +F: package/pkg-perl.mk +F: package/pkg-luarocks.mk +F: package/tekui/ +F: package/wpebackend-fdo/ +F: package/wpewebkit/ +F: package/wsapi-fcgi/ +F: package/wsapi-xavante/ +F: utils/scancpan + +N: Frank Hunleth +F: package/am335x-pru-package/ +F: package/libconfuse/ +F: package/libdmtx/ +F: package/libsodium/ +F: package/php-amqp/ +F: package/python-cherrypy/ +F: package/rabbitmq-server/ +F: package/sane-backends/ +F: package/ucl/ +F: package/upx/ +F: package/zxing-cpp/ + +N: Gaël Portay +F: package/qt5/qt5virtualkeyboard/ +F: package/qt5/qt5webengine/ +F: package/qt5/qt5webkit/ +F: package/qt5/qt5webkit-examples/ + +N: Gary Bisson +F: board/boundarydevices/ +F: configs/nitrogen* +F: package/freescale-imx/ +F: package/gstreamer1/gst1-imx/ +F: package/libimxvpuapi/ +F: package/mfgtools/ +F: package/sshpass/ +F: package/x11r7/xdriver_xf86-video-imx-viv/ + +N: Geoff Levand +F: package/flannel/ + +N: Geoffrey Ragot +F: package/python-pycli/ +F: package/python-pyyaml/ + +N: Gilles Talis +F: board/freescale/imx8mmevk/ +F: configs/freescale_imx8mmevk_defconfig +F: package/fdk-aac/ +F: package/httping/ +F: package/iozone/ +F: package/leptonica/ +F: package/ocrad/ +F: package/tesseract-ocr/ +F: package/webp/ +F: package/xapian/ + +N: Giulio Benetti +F: package/minicom/ +F: package/sunxi-mali-mainline/ +F: package/sunxi-mali-mainline-driver/ + +N: Gregory Dymarek +F: package/ding-libs/ +F: package/gengetopt/ +F: package/janus-gateway/ +F: package/libnice/ +F: package/libsrtp/ +F: package/libwebsock/ +F: package/sofia-sip/ + +N: Grzegorz Blach +F: fs/f2fs/ +F: package/bluez5_utils-headers/ +F: package/f2fs-tools/ +F: package/pigpio/ +F: package/python-aioblescan/ +F: package/python-falcon/ +F: package/python-mimeparse/ +F: package/python-pigpio/ +F: package/python-pyjwt/ +F: package/python-wtforms/ + +N: Guillaume Gardet +F: package/c-icap/ +F: package/c-icap-modules/ +F: package/sdl2/ + +N: Guillaume William Brs +F: package/liquid-dsp/ +F: package/pixiewps/ +F: package/reaver/ + +N: Guo Ren +F: arch/Config.in.csky +F: board/csky/ +F: configs/csky_* + +N: Gustavo Pimentel +F: configs/arm_juno_defconfig +F: board/arm/juno/ + +N: Gwenhael Goavec-Merou +F: package/gnuradio/ +F: package/gqrx/ +F: package/gr-osmosdr/ +F: package/libusbgx/ +F: package/python-cheetah/ +F: package/python-markdown/ +F: package/python-remi/ +F: package/python-sip/ + +N: Henrique Camargo +F: package/json-glib/ + +N: Hiroshi Kawashima +F: package/gauche/ +F: package/gmrender-resurrect/ +F: package/squeezelite/ + +N: Ian Haylock +F: package/python-rpi-gpio/ + +N: Ignacy GawÄ™dzki +F: package/angularjs/ + +N: Ilias Apalodimas +F: package/keepalived/ + +N: Ilya Averyanov +F: package/exempi/ + +N: Ismael Luceno +F: package/axel/ + +N: Jagan Teki +F: board/amarula/ +F: board/asus/ +F: board/bananapi/ +F: board/engicam/ +F: board/friendlyarm/nanopi-a64/ +F: board/friendlyarm/nanopi-neo2/ +F: board/olimex/a64-olinuxino/ +F: board/orangepi/orangepi-lite2/ +F: board/orangepi/orangepi-one-plus +F: board/orangepi/orangepi-pc2/ +F: board/orangepi/orangepi-prime/ +F: board/orangepi/orangepi-win/ +F: board/orangepi/orangepi-zero-plus2/ +F: board/pine64/ +F: configs/amarula_a64_relic_defconfig +F: configs/amarula_vyasa_rk3288_defconfig +F: configs/asus_tinker_rk3288_defconfig +F: configs/bananapi_m1_defconfig +F: configs/bananapi_m64_defconfig +F: configs/engicam_imx6qdl_icore_defconfig +F: configs/engicam_imx6qdl_icore_qt5_defconfig +F: configs/engicam_imx6qdl_icore_rqs_defconfig +F: configs/engicam_imx6ul_geam_defconfig +F: configs/engicam_imx6ul_isiot_defconfig +F: configs/friendlyarm_nanopi_a64_defconfig +F: configs/friendlyarm_nanopi_neo2_defconfig +F: configs/olimex_a64_olinuxino_defconfig +F: configs/orangepi_lite2_defconfig +F: configs/orangepi_one_plus_defconfig +F: configs/orangepi_pc2_defconfig +F: configs/orangepi_prime_defconfig +F: configs/orangepi_win_defconfig +F: configs/orangepi_zero_plus2_defconfig +F: configs/pine64_defconfig +F: configs/pine64_sopine_defconfig + +N: James Hilliard +F: package/lua-std-debug/ +F: package/lua-std-normalize/ +F: package/python-aioconsole/ +F: package/python-aiodns/ +F: package/python-aiohttp/ +F: package/python-aiohttp-cors/ +F: package/python-aiohttp-jinja2/ +F: package/python-aiohttp-remotes/ +F: package/python-aiohttp-security/ +F: package/python-aiohttp-session/ +F: package/python-aiohttp-sse/ +F: package/python-aiomonitor/ +F: package/python-aiojobs/ +F: package/python-aiorwlock/ +F: package/python-async-timeout/ +F: package/python-cchardet/ +F: package/python-multidict/ +F: package/python-pycares/ +F: package/python-terminaltables/ +F: package/python-yarl/ + +N: James Knight +F: package/atkmm/ +F: package/cairomm/ +F: package/google-material-design-icons/ +F: package/glibmm/ +F: package/gtkmm3/ +F: package/libpqxx/ +F: package/pangomm/ +F: package/rpm/ +F: package/yad/ + +N: Jan Heylen +F: package/opentracing-cpp/ + +N: Jan Kraval +F: board/orangepi/orangepi-lite +F: configs/orangepi_lite_defconfig + +N: Jan Kundrát +F: configs/solidrun_clearfog_defconfig +F: board/solidrun/clearfog/ + +N: Jan Pedersen +F: package/zip/ + +N: Jan Viktorin +F: package/python-pexpect/ +F: package/python-ptyprocess/ +F: package/zynq-boot-bin/ + +N: Jared Bents +F: package/davici/ + +N: Jarkko Sakkinen +F: package/quota/ + +N: Jason Pruitt +F: package/librtlsdr/ + +N: Jens Rosenboom +F: package/sl/ + +N: Jens Zettelmeyer +F: package/batctl/ + +N: Jeremy Rosen +F: package/fxload/ + +N: Jérôme Oufella +F: package/libdri2/ +F: package/qt-webkit-kiosk/ + +N: Jérôme Pouiller +F: package/apitrace/ +F: package/freescale-imx/gpu-amd-bin-mx51/ +F: package/freescale-imx/libz160/ +F: package/lxc/ +F: package/strongswan/ +F: package/wmctrl/ +F: package/x11r7/xdriver_xf86-video-imx/ +F: package/x11r7/xdriver_xf86-video-imx-viv/ + +N: Joel Carlson +F: package/c-capnproto/ +F: package/capnproto/ +F: package/cmocka/ +F: package/flatcc/ +F: package/libcorrect/ + +N: Joel Stanley +F: package/pdbg/ +F: board/qemu/ppc64le-pseries/ +F: configs/qemu_ppc64le_pseries_defconfig +F: board/qemu/ppc-mac99/ +F: configs/qemu_ppc_mac99_defconfig + +N: Johan Derycke +F: package/python-libconfig/ + +N: Johan Oudinet +F: package/ejabberd/ +F: package/erlang-eimp/ +F: package/erlang-goldrush/ +F: package/erlang-jiffy/ +F: package/erlang-lager/ +F: package/erlang-p1-cache-tab/ +F: package/erlang-p1-iconv/ +F: package/erlang-p1-oauth2/ +F: package/erlang-p1-sip/ +F: package/erlang-p1-stringprep/ +F: package/erlang-p1-stun/ +F: package/erlang-p1-tls/ +F: package/erlang-p1-utils/ +F: package/erlang-p1-xml/ +F: package/erlang-p1-xmpp/ +F: package/erlang-p1-yaml/ +F: package/erlang-p1-zlib/ +F: package/nginx-dav-ext/ + +N: John Stile +F: package/dhcpcd/ + +N: John Faith +F: package/python-inflection/ + +N: Jonathan Ben Avraham +F: arch/Config.in.xtensa +F: package/autofs/ +F: package/dawgdic/ +F: package/libphidget/ +F: package/phidgetwebservice/ +F: package/rapidxml/ +F: package/sphinxbase/ + +N: Jonathan Liu +F: package/python-meld3/ +F: package/supervisor/ + +N: Jörg Krause +F: board/lemaker/bananapro/ +F: configs/bananapro_defconfig +F: package/augeas/ +F: package/bluez-alsa/ +F: package/freescale-imx/imx-alsa-plugins/ +F: package/libopusenc/ +F: package/libupnpp/ +F: package/luv/ +F: package/luvi/ +F: package/mpd/ +F: package/shairport-sync/ +F: package/swupdate/ +F: package/upmpdcli/ +F: package/wavemon/ + +N: Joris Lijssens +F: package/emlog/ +F: package/libcoap/ +F: package/libnet/ +F: package/libuio/ +F: package/netsniff-ng/ +F: package/rabbitmq-c/ + +N: Joseph Kogut +F: package/at-spi2-atk/ +F: package/at-spi2-core/ +F: package/clang/ +F: package/gconf/ +F: package/libnss/ +F: package/llvm/ +F: package/python-cython/ +F: package/python-raven/ +F: package/python-schedule/ +F: package/python-sentry-sdk/ +F: package/python-websockets/ +F: package/python-xlib/ + +N: Joshua Henderson +F: package/qt5/qt5wayland/ + +N: Jugurtha BELKALEM +F: package/python-cycler/ +F: package/python-matplotlib/ + +N: Juha Rantanen +F: package/acsccid/ + +N: Julian Scheel +F: package/bitstream/ +F: package/cbootimage/ +F: package/cryptopp/ +F: package/dvblast/ +F: package/tegrarcm/ + +N: Julien Boibessot +F: board/armadeus/ +F: configs/armadeus* +F: package/abootimg/ +F: package/gpm/ +F: package/lbreakout2/ +F: package/libcddb/ +F: package/libmodbus/ +F: package/ltris/ +F: package/opentyrian/ +F: package/python-pygame/ + +N: Julien Corjon +F: package/qt5/ + +N: Julien Floret +F: package/lldpd/ + +N: Julien Grossholtz +F: package/paho-mqtt-c + +N: Julien Olivain +F: board/technexion/imx8mmpico/ +F: board/technexion/imx8mpico/ +F: configs/imx8mmpico_defconfig +F: configs/imx8mpico_defconfig + +N: Julien Viard de Galbert +F: package/dieharder/ +F: package/easy-rsa/ + +N: Justin Maggard +F: package/dtach/ + +N: Karoly Kasza +F: package/irqbalance/ +F: package/openvmtools/ + +N: Kelvin Cheung +F: package/cpuload/ +F: package/bwm-ng/ +F: package/ramsmp/ + +N: Kevin Joly +F: package/libgphoto2/ + +N: Kieran Bingham +F: package/libcamera/ + +N: Koen Martens +F: package/capnproto/ +F: package/linuxconsoletools/ + +N: Kurt Van Dijck +F: package/bcusdk/ +F: package/libpthsem/ +F: package/nilfs-utils/ + +N: Laurent Cans +F: package/aircrack-ng/ + +N: Laurent Charpentier +F: package/open-lldp/ + +N: Lee Jones +F: boot/afboot-stm32/ + +N: Leon Anavi +F: board/olimex/a10_olinuxino +F: configs/olimex_a10_olinuxino_lime_defconfig + +N: Lionel Flandrin +F: package/python-babel/ +F: package/python-daemonize/ +F: package/python-flask/ +F: package/python-flask-babel/ +F: package/python-gunicorn/ + +N: Lionel Orry +F: package/mongrel2/ + +N: Lothar Felten +F: board/bananapi/bananapi-m2-ultra/ +F: configs/bananapi_m2_ultra_defconfig +F: package/ti-sgx-demos/ +F: package/ti-sgx-km/ +F: package/ti-sgx-um/ + +N: Louis-Paul Cordier +F: package/intel-gmmlib/ +F: package/intel-mediadriver/ +F: package/intel-mediasdk/ + +N: Luca Ceresoli +F: board/olimex/a20_olinuxino/ +F: board/zynq/ +F: board/zynqmp/ +F: configs/olimex_a20_olinuxino_* +F: configs/zynq_zed_defconfig +F: configs/zynqmp_zcu106_defconfig +F: package/agentpp/ +F: package/exim/ +F: package/libpjsip/ +F: package/qpid-proton/ +F: package/rtl8188eu/ +F: package/snmppp/ +F: package/stm32flash/ +F: package/unzip/ +F: support/legal-info/ + +N: Lucas De Marchi +F: package/fswebcam/ + +N: Ludovic Desroches +F: board/atmel/ +F: configs/at91* +F: configs/atmel_* +F: package/fb-test-app/ +F: package/python-json-schema-validator/ +F: package/python-keyring/ +F: package/python-simplejson/ +F: package/python-versiontools/ +F: package/wilc1000-firmware/ + +N: Mahyar Koshkouei +F: package/ffmpeg/ +F: package/mpv/ +F: package/rpi-firmware/ +F: package/rpi-userland/ + +N: Mamatha Inamdar +F: package/nvme/ + +N: Manuel Vögele +F: package/python-pyqt5/ +F: package/python-requests-toolbelt/ + +N: Marcin Bis +F: package/bluez5_utils/ +F: package/cc-tool/ +F: package/ecryptfs-utils/ + +N: Marcin Niestroj +F: board/grinn/ +F: configs/grinn_* +F: package/argparse/ +F: package/dt-utils/ +F: package/easydbus/ +F: package/lua-flu/ +F: package/lua-stdlib/ +F: package/luaossl/ +F: package/murata-cyw-fw/ +F: package/rs485conf/ +F: package/turbolua/ + +N: Marcin Nowakowski +F: package/libkcapi/ + +N: Marcus Folkesson +F: package/libostree/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/selinux-python/ +F: utils/config +F: utils/diffconfig + +N: Marek Belisko +F: package/libatasmart/ +F: package/polkit/ +F: package/sg3_utils/ +F: package/udisks/ + +N: Mario Lang +F: package/brltty/ +F: package/lynx/ + +N: Mario Rugiero +F: package/ratpoison/ + +N: Mark Corbin +F: arch/arch.mk.riscv +F: arch/Config.in.riscv +F: board/qemu/riscv32-virt/ +F: board/qemu/riscv64-virt/ +F: boot/riscv-pk/ +F: configs/qemu_riscv32_virt_defconfig +F: configs/qemu_riscv64_virt_defconfig + +N: Martin Bark +F: board/raspberrypi/ +F: configs/raspberrypi3_defconfig +F: package/ca-certificates/ +F: package/connman/ +F: package/nodejs/ +F: package/rpi-bt-firmware/ +F: package/rpi-firmware/ +F: package/rpi-wifi-firmware/ +F: package/tzdata/ +F: package/zic/ + +N: Martin Hicks +F: package/cryptsetup/ + +N: Martin Kepplinger +F: package/tslib/ +F: package/x11r7/xdriver_xf86-input-tslib/ +F: package/x11vnc/ + +N: Mathieu Audat +F: board/technologic/ts4900/ +F: configs/ts4900_defconfig +F: package/ts4900-fpga/ + +N: Matt Weber +F: board/freescale/p* +F: board/freescale/t* +F: board/qemu/ppc64-e5500/ +F: configs/freescale_p* +F: configs/freescale_t* +F: configs/qemu_ppc64_e5500_defconfig +F: package/argp-standalone/ +F: package/aufs/ +F: package/aufs-util/ +F: package/bc/ +F: package/bridge-utils/ +F: package/checkpolicy/ +F: package/checksec/ +F: package/cgroupfs-mount/ +F: package/crda/ +F: package/cunit/ +F: package/dacapo/ +F: package/devmem2/ +F: package/dnsmasq/ +F: package/dosfstools/ +F: package/eigen/ +F: package/ethtool/ +F: package/flashbench/ +F: package/fmc/ +F: package/fmlib/ +F: package/git/ +F: package/gnutls/ +F: package/hostapd/ +F: package/i2c-tools/ +F: package/ifplugd/ +F: package/igmpproxy/ +F: package/iperf/ +F: package/iperf3/ +F: package/iputils/ +F: package/iw/ +F: package/kvm-unit-tests/ +F: package/kvmtool/ +F: package/libcsv/ +F: package/libcurl/ +F: package/libeastl/ +F: package/libfcgi/ +F: package/libopenssl/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/libssh2/ +F: package/libqmi/ +F: package/lighttpd/ +F: package/logrotate/ +F: package/makedevs/ +F: package/memtester/ +F: package/mii-diag/ +F: package/mrouted/ +F: package/mtd/ +F: package/mtools/ +F: package/nginx-upload/ +F: package/omniorb/ +F: package/openresolv/ +F: package/paxtest/ +F: package/picocom/ +F: package/policycoreutils/ +F: package/proftpd/ +F: package/protobuf-c/ +F: package/protobuf/ +F: package/python-colorama/ +F: package/python-flask-cors/ +F: package/python-iptables/ +F: package/python-ipy/ +F: package/python-posix-ipc/ +F: package/python-pycairo/ +F: package/python-pypcap/ +F: package/python-pyrex/ +F: package/python-tinyrpc/ +F: package/python-txdbus/ +F: package/raptor/ +F: package/rcw/ +F: package/rng-tools/ +F: package/rsyslog/ +F: package/setools/ +F: package/smcroute/ +F: package/tclap/ +F: package/tini/ +F: package/uboot-tools/ +F: package/unionfs/ +F: package/valijson/ +F: package/wpa_supplicant/ +F: package/wireless_tools/ +F: package/xen/ +F: support/testing/tests/package/br2-external/openjdk/ +F: support/testing/tests/package/test_openjdk.py + +N: Mauro Condarelli +F: package/mc/ +F: package/python-autobahn/ +F: package/python-cbor/ +F: package/python-characteristic/ +F: package/python-click/ +F: package/python-crossbar/ +F: package/python-lmdb/ +F: package/python-mistune/ +F: package/python-netaddr/ +F: package/python-pyasn-modules/ +F: package/python-pygments/ +F: package/python-pynacl/ +F: package/python-pytrie/ +F: package/python-service-identity/ +F: package/python-setproctitle/ +F: package/python-shutilwhich/ +F: package/python-treq/ +F: package/python-txaio/ +F: package/python-ujson/ +F: package/python-wsaccel/ + +N: Max Filippov +F: arch/Config.in.xtensa + +N: Maxime Hadjinlian +F: package/babeld/ +F: package/dante/ +F: package/faifa/ +F: package/initscripts/ +F: package/intel-microcode/ +F: package/iucode-tool/ +F: package/jasper/ +F: package/kodi/ +F: package/libass/ +F: package/libbluray/ +F: package/libcdio/ +F: package/libcofi/ +F: package/libenca/ +F: package/libmodplug/ +F: package/libnfs/ +F: package/libplist/ +F: package/libshairplay/ +F: package/linux-zigbee/ +F: package/netcat-openbsd/ +F: package/open-plc-utils/ +F: package/rpi-firmware/ +F: package/rpi-userland/ +F: package/rtmpdump/ +F: package/skeleton/ +F: package/systemd/ +F: package/systemd-bootchart/ +F: package/tinyalsa/ +F: package/tinyxml/ + +N: Maxime Ripard +F: package/kmsxx/ + +N: Michael Durrant +F: board/arcturus/ +F: configs/arcturus_ucp1020_defconfig +F: configs/arcturus_ucls1012a_defconfig + +N: Michael Rommel +F: package/knock/ +F: package/python-crc16/ +F: package/python-pyzmq/ + +N: Michael Trimarchi +F: package/python-spidev/ + +N: MichaÅ‚ Åyszczek +F: board/altera/socrates_cyclone5/ +F: board/pine64/rock64 +F: configs/rock64_defconfig +F: configs/socrates_cyclone5_defconfig +F: package/openrc/ +F: package/skeleton-init-openrc/ + +N: Michel Stempin +F: board/licheepi/ +F: configs/licheepi_zero_defconfig + +N: Mike Harmony +F: board/sinovoip/m2-plus/ +F: configs/bananapi_m2_plus_defconfig + +N: Mikhail Boiko +F: package/libfribidi/ + +N: Min Xu +F: package/shadowsocks-libev/ + +N: Mirza Krak +F: package/mender/ +F: package/mender-artifact/ + +N: Morgan Delestre +F: package/monkey/ + +N: Murat Demirten +F: package/jpeg-turbo/ +F: package/libgeotiff/ + +N: Mylène Josserand +F: package/rtl8723bu/ + +N: Nathaniel Roach +F: package/bandwidthd/ +F: package/libgudev/ + +N: Naumann Andreas +F: package/evemu/ +F: package/libevdev/ + +N: Nicolas Cavallari +F: package/libgit2/ + +N: Nicolas Serafini +F: package/exiv2/ +F: package/nvidia-tegra23/nvidia-tegra23-binaries/ +F: package/nvidia-tegra23/nvidia-tegra23-codecs/ + +N: Nikolay Dimitrov +F: board/embest/riotboard/ +F: configs/riotboard_defconfig + +N: Nimai Mahajan +F: package/libucl/ + +N: Noé Rubinstein +F: package/tpm-tools/ +F: package/trousers/ + +N: Norbert Lange +F: package/tcf-agent/ + +N: Nylon Chen +F: arch/Config.in.nds32 +F: board/andes +F: configs/andes_ae3xx_defconfig +F: toolchain/toolchain-external/toolchain-external-andes-nds32/ + +N: Olaf Rempel +F: package/ctorrent/ + +N: Oleksandr Zhadan +F: board/arcturus/ +F: configs/arcturus_ucp1020_defconfig +F: configs/arcturus_ucls1012a_defconfig + +N: Oli Vogt +F: package/python-django/ +F: package/python-flup/ + +N: Olivier Matz +F: package/python-pyelftools/ + +N: Olivier Schonken +F: package/cups/ +F: package/cups-filters/ +F: package/ijs/ +F: package/poppler/ +F: package/qpdf/ +F: package/openjpeg/ + +N: Olivier Singla +F: package/shellinabox/ + +N: Paresh Chaudhary +F: package/checksec/ + +N: Parnell Springmeyer +F: package/scrypt/ + +N: Pascal Huerst +F: package/google-breakpad/ + +N: Patrick Gerber +F: package/yavta/ + +N: Paul Cercueil +F: package/libiio/ +F: package/lightning/ + +N: Pedro Aguilar +F: package/libunistring/ + +N: Peter Korsgaard +F: board/minnowboard/ +F: board/nexbox/a95x/ +F: board/openblocks/a6/ +F: board/orangepi/ +F: board/pandaboard/ +F: board/roseapplepi/ +F: boot/shim/ +F: configs/minnowboard_max-graphical_defconfig +F: configs/minnowboard_max_defconfig +F: configs/nexbox_a95x_defconfig +F: configs/openblocks_a6_defconfig +F: configs/orangepi_pc_defconfig +F: configs/orangepi_r1_defconfig +F: configs/pandaboard_defconfig +F: configs/roseapplepi_defconfig +F: configs/sheevaplug_defconfig +F: package/bats-core/ +F: package/docker-compose/ +F: package/dump1090/ +F: package/fatcat/ +F: package/flickcurl/ +F: package/fscryptctl/ +F: package/ifmetric/ +F: package/jo/ +F: package/jose/ +F: package/libfastjson/ +F: package/luksmeta/ +F: package/lzop/ +F: package/memtool/ +F: package/mosquitto/ +F: package/python-alsaaudio/ +F: package/python-backports-ssl-match-hostname/ +F: package/python-cached-property/ +F: package/python-docker/ +F: package/python-dockerpty/ +F: package/python-docker-pycreds/ +F: package/python-enum/ +F: package/python-enum34/ +F: package/python-functools32/ +F: package/python-ipaddr/ +F: package/python-pam/ +F: package/python-psutil/ +F: package/python-request-id/ +F: package/python-semver/ +F: package/python-texttable/ +F: package/python-validators/ +F: package/python-webob/ +F: package/python-websocket-client/ +F: package/sedutil/ +F: package/tpm2-totp/ +F: package/triggerhappy/ + +N: Peter Seiderer +F: board/raspberrypi/ +F: configs/raspberrypi3_defconfig +F: package/assimp/ +F: package/bcm2835/ +F: package/ddrescue/ +F: package/dejavu/ +F: package/dillo/ +F: package/edid-decode/ +F: package/ell/ +F: package/ghostscript-fonts/ +F: package/gstreamer1/gst1-interpipe/ +F: package/gstreamer1/gst1-validate/ +F: package/gstreamer1/gstreamer1-editing-services/ +F: package/iwd/ +F: package/libevdev/ +F: package/log4cplus/ +F: package/postgresql/ +F: package/qt5/ +F: package/quotatool/ +F: package/racehound/ +F: package/wiringpi/ + +N: Peter Thompson +F: package/sdl2_gfx/ +F: package/sdl2_image/ +F: package/sdl2_ttf/ + +N: Petr Kulhavy +F: package/linuxptp/ + +N: Petr Vorel +F: package/iproute2/ +F: package/iputils/ +F: package/linux-backports/ +F: package/ltp-testsuite/ +F: support/kconfig/ + +N: Phil Eichinger +F: package/libqrencode/ +F: package/psplash/ +F: package/sispmctl/ +F: package/zsh/ + +N: Philipp Richter +F: package/libtorrent-rasterbar/ + +N: Philippe Proulx +F: package/lttng-babeltrace/ +F: package/lttng-libust/ +F: package/lttng-modules/ +F: package/lttng-tools/ +F: package/python-ipython/ +F: package/liburcu/ + +N: Pierre Crokaert +F: board/hardkernel/odroidxu4/ +F: configs/odroidxu4_defconfig + +N: Pierre Ducroquet +F: package/kf5/ + +N: Pierre Floury +F: package/trace-cmd/ + +N: Pierre-Jean Texier +F: package/libubootenv/ +F: package/python-periphery/ +F: package/stunnel/ + +N: Pieter De Gendt +F: package/libvips/ + +N: Pieterjan Camerlynck +F: package/libdvbpsi/ +F: package/mraa/ +F: package/synergy/ + +N: Pranit Sirsat +F: package/paho-mqtt-c/ + +N: Rahul Bedarkar +F: package/cxxtest/ +F: package/gflags/ +F: package/glog/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-av/ +F: package/let-me-create/ +F: package/nanomsg/ + +N: Rahul Jain +F: package/uhttpd/ +F: package/ustream-ssl/ + +N: Refik Tuzakli +F: package/paho-mqtt-cpp/ + +N: Rémi Rérolle +F: package/libfreeimage/ + +N: Renaud Aubin +F: package/libhttpparser/ + +N: Rhys Williams +F: package/lirc-tools/ + +N: Ricardo Martincoski +F: package/atop/ + +N: Ricardo Martincoski +F: support/testing/ +F: utils/check-package +F: utils/checkpackagelib/ + +N: Richard Braun +F: package/curlftpfs/ +F: package/tzdata/ + +N: Rico Bachmann +F: package/apr-util/ +F: package/subversion/ + +N: RJ Ascani +F: package/azmq/ + +N: Robert Rose +F: package/grpc/ + +N: Rodrigo Rebello +F: package/chocolate-doom/ +F: package/irssi/ +F: package/vnstat/ + +N: Romain Naour +F: package/aubio/ +F: package/bullet/ +F: package/efl/ +F: package/enet/ +F: package/enlightenment/ +F: package/flare-engine/ +F: package/flare-game/ +F: package/irrlicht/ +F: package/liblinear/ +F: package/lensfun/ +F: package/libgta/ +F: package/libspatialindex/ +F: package/linux-syscall-support/ +F: package/lugaru/ +F: package/mcelog/ +F: package/mesa3d/ +F: package/minetest/ +F: package/minetest-game/ +F: package/openpowerlink/ +F: package/physfs/ +F: package/solarus/ +F: package/stress-ng/ +F: package/supertux/ +F: package/supertuxkart/ +F: package/terminology/ +F: package/tk/ +F: package/upower/ +F: package/waffle/ +F: package/xenomai/ +F: package/zziplib/ +F: toolchain/toolchain-external/toolchain-external-arm-aarch64/ +F: toolchain/toolchain-external/toolchain-external-arm-aarch64-be/ +F: toolchain/toolchain-external/toolchain-external-arm-arm/ + +N: Roman Gorbenkov +F: package/davfs2/ + +N: Ryan Barnett +F: package/atftp/ +F: package/miraclecast/ +F: package/python-pyasn/ +F: package/python-pycrypto/ +F: package/python-pysnmp/ +F: package/python-pysnmp-apps/ +F: package/python-pysnmp-mibs/ +F: package/python-tornado/ +F: package/websocketpp/ + +N: Ryan Coe +F: package/inadyn/ +F: package/libite/ +F: package/mariadb/ + +N: Ryan Wilkins +F: package/biosdevname/ + +N: Sam Bobroff +F: arch/Config.in.powerpc +F: package/librtas/ + +N: Samuel Martin +F: package/armadillo/ +F: package/canfestival/ +F: package/clapack/ +F: package/cwiid/ +F: package/flite/ +F: package/nginx/ +F: package/opencv/ +F: package/opencv3/ +F: package/openobex/ +F: package/pkg-cmake.mk +F: package/python-numpy/ +F: package/scrub/ +F: package/urg/ +F: package/ussp-push/ +F: support/misc/toolchainfile.cmake.in + +N: Santosh Multhalli +F: package/valijson/ + +N: Scott Fan +F: package/libssh/ +F: package/x11r7/xdriver_xf86-video-fbturbo/ + +N: Sébastien Szymanski +F: package/mmc-utils/ +F: package/python-flask-jsonrpc/ +F: package/python-flask-login/ +F: package/qt5/qt5charts/ + +N: Semyon Kolganov +F: package/fmt/ +F: package/libbson/ +F: package/lua-resty-http/ +F: package/mpir/ + +N: Sergey Matyukevich +F: boot/arm-trusted-firmware/ +F: boot/binaries-marvell/ +F: boot/mv-ddr-marvell/ +F: board/linksprite/pcduino +F: board/orangepi/orangepi-zero +F: board/orangepi/orangepi-one +F: board/orangepi/orangepi-pc-plus/ +F: board/solidrun/macchiatobin +F: configs/linksprite_pcduino_defconfig +F: configs/orangepi_one_defconfig +F: configs/orangepi_pc_plus_defconfig +F: configs/orangepi_zero_defconfig +F: configs/solidrun_macchiatobin_mainline_defconfig +F: configs/solidrun_macchiatobin_marvell_defconfig +F: package/armbian-firmware/ +F: package/rtl8189fs/ +F: package/xr819-xradio/ + +N: Sergio Prado +F: package/aoetools/ +F: package/curlpp/ +F: package/daq/ +F: package/libgdiplus/ +F: package/pimd/ +F: package/snort/ +F: package/stella/ +F: package/traceroute/ +F: package/tunctl/ +F: package/ubus/ +F: package/wolfssl/ + +N: Simon Dawson +F: boot/at91bootstrap3/ +F: package/cppzmq/ +F: package/czmq/ +F: package/filemq/ +F: package/googlefontdirectory/ +F: package/jansson/ +F: package/jquery-ui/ +F: package/jquery-ui-themes/ +F: package/json-javascript/ +F: package/lcdapi/ +F: package/libfreefare/ +F: package/libjson/ +F: package/libnfc/ +F: package/libnfc/ +F: package/libserial/ +F: package/libsigsegv/ +F: package/macchanger/ +F: package/minicom/ +F: package/minidlna/ +F: package/msgpack/ +F: package/nanocom/ +F: package/neard/ +F: package/neardal/ +F: package/owl-linux/ +F: package/python-nfc/ +F: package/rapidjson/ +F: package/sconeserver/ +F: package/sound-theme-borealis/ +F: package/sound-theme-freedesktop/ +F: package/vlc/ +F: package/xscreensaver/ +F: package/zmqpp/ +F: package/zyre/ + +N: Spenser Gilliland +F: arch/Config.in.microblaze +F: package/a10disp/ +F: package/glmark2/ +F: package/libvpx/ +F: package/mesa3d-demos/ +F: package/ti-gfx/ + +N: Stefan Sørensen +F: package/cracklib/ +F: package/libpwquality/ +F: package/libscrypt/ + +N: Stephan Hoffmann +F: package/cache-calibrator/ +F: package/gtest/ +F: package/mtdev/ +F: package/mtdev2tuio/ + +N: Steve Calfee +F: package/python-pymysql/ +F: package/python-pyratemp/ + +N: Steve James +F: package/leveldb/ +F: package/libcli/ + +N: Steve Kenton +F: package/dvdauthor/ +F: package/dvdrw-tools/ +F: package/memtest86/ +F: package/mjpegtools/ +F: package/tovid/ +F: package/udftools/ +F: package/xorriso/ + +N: Steve Thomas +F: package/isl/ + +N: Steven Noonan +F: package/hwloc/ +F: package/powertop/ + +N: Sven Haardiek +F: package/lcdproc/ +F: package/python-influxdb/ + +N: Sven Neumann +F: package/glib-networking/ +F: package/gstreamer1/gst1-libav/ +F: package/libmms/ +F: package/orc/ +F: package/wampcc/ + +N: Sven Oliver Moll +F: package/most/ + +N: Theo Debrouwere +F: package/pugixml/ + +N: Thierry Bultel +F: package/mpd-mpc/ + +N: Thijs Vermeir +F: package/ranger/ +F: package/x265/ + +N: Thomas Claveirole +F: package/fcgiwrap/ + +N: Thomas Davis +F: package/civetweb/ + +N: Thomas De Schampheleire +F: docs/manual/ +F: package/opkg-utils/ +F: package/perl-convert-asn1/ +F: package/perl-crypt-blowfish/ +F: package/perl-crypt-cbc/ +F: package/perl-digest-md5/ +F: package/perl-mime-base64-urlsafe/ +F: package/perl-mojolicious-plugin-authentication/ +F: package/perl-net-ping/ +F: package/perl-net-snmp/ +F: package/perl-net-ssh2/ +F: package/perl-net-telnet/ +F: package/pigz/ +F: package/xenomai/ +F: support/scripts/size-stats +F: utils/size-stats-compare +F: toolchain/ + +N: Thomas Petazzoni +F: arch/Config.in.arm +F: boot/boot-wrapper-aarch64/ +F: boot/grub2/ +F: boot/gummiboot/ +F: package/android-tools/ +F: package/b43-firmware/ +F: package/b43-fwcutter/ +F: package/c-periphery/ +F: package/cdrkit/ +F: package/cifs-utils/ +F: package/cloop/ +F: package/cmake/ +F: package/cramfs/ +F: package/dmidecode/ +F: package/flashrom/ +F: package/gcc/ +F: package/genext2fs/ +F: package/genromfs/ +F: package/getent/ +F: package/gnu-efi/ +F: package/heirloom-mailx/ +F: package/hiawatha/ +F: package/igh-ethercat/ +F: package/intltool/ +F: package/libcap/ +F: package/libffi/ +F: package/libsha1/ +F: package/libtirpc/ +F: package/libxkbcommon/ +F: package/libxml-parser-perl/ +F: package/localedef/ +F: package/log4cxx/ +F: package/monit/ +F: package/mpdecimal/ +F: package/msmtp/ +F: package/musl/ +F: package/ne10/ +F: package/pkg-python.mk +F: package/pkg-autotools.mk +F: package/pkg-generic.mk +F: package/python/ +F: package/python3/ +F: package/python-mad/ +F: package/python-serial/ +F: package/qextserialport/ +F: package/rpcbind/ +F: package/rt-tests/ +F: package/rtc-tools/ +F: package/sam-ba/ +F: package/scons/ +F: package/squashfs/ +F: package/wayland/ +F: package/weston/ +F: toolchain/ + +N: Timo Ketola +F: package/fbgrab/ + +N: Titouan Christophe +F: package/redis/ + +N: Trent Piepho +F: package/libp11/ + +N: Tzu-Jung Lee +F: package/dropwatch/ +F: package/tstools/ + +N: Vadim Kochan +F: package/brcm-patchram-plus/ +F: package/gettext-tiny/ + +N: Valentin Korenblit +F: package/clang/ +F: package/clinfo/ +F: package/libclc/ +F: package/llvm/ + +N: Vanya Sergeev +F: package/lua-periphery/ + +N: Vincent Prince +F: package/nss-myhostname/ +F: package/utp_com/ + +N: Vincent Stehlé +F: package/i7z/ +F: package/msr-tools/ +F: package/pixz/ + +N: Vinicius Tinti +F: package/python-thrift/ + +N: Vivien Didelot +F: board/technologic/ts5500/ +F: configs/ts5500_defconfig + +N: Volkov Viacheslav +F: package/v4l2grab/ +F: package/zbar/ + +N: Wade Berrier +F: package/ngrep/ + +N: Waldemar Brodkorb +F: package/uclibc/ +F: package/uclibc-ng-test/ + +N: Will Newton +F: package/enchant/ +F: package/erlang/ +F: package/libmicrohttpd/ +F: package/sysprof/ +F: package/time/ + +N: Will Wagner +F: package/yaffs2utils/ + +N: Wojciech M. Zabolotny +F: package/avrdude/ +F: package/jack2/ +F: package/python-msgpack/ +F: package/python-pyusb/ + +N: Wojciech NiziÅ„ski +F: package/fwup/ + +N: Yann E. MORIN +F: fs/squashfs/ +F: package/asterisk/ +F: package/cegui06/ +F: package/celt051/ +F: package/dahdi-linux/ +F: package/dahdi-tools/ +F: package/dtc/ +F: package/dtv-scan-tables/ +F: package/dvb-apps/ +F: package/freerdp/ +F: package/keyutils/ +F: package/libbsd/ +F: package/libedit/ +F: package/libgsm/ +F: package/libinput/ +F: package/libiscsi/ +F: package/libpri/ +F: package/libseccomp/ +F: package/libss7/ +F: package/linux-firmware/ +F: package/linux-tools/ +F: package/matchbox* +F: package/mesa3d-headers/ +F: package/nbd/ +F: package/nut/ +F: package/nvidia-driver/ +F: package/omxplayer/ +F: package/python-pyparsing/ +F: package/pkg-download.mk +F: package/pkg-waf.mk +F: package/slirp/ +F: package/snappy/ +F: package/spice/ +F: package/spice-protocol/ +F: package/systemd/ +F: package/systemd-bootchart/ +F: package/tmux/ +F: package/tvheadend/ +F: package/usbredir/ +F: package/vde2/ +F: package/w_scan/ +F: package/wayland/ +F: package/weston/ +F: package/zisofs-tools/ +F: support/download/ + +N: Yegor Yefremov +F: package/acl/ +F: package/attr/ +F: package/bluez_utils/ +F: package/boost/ +F: package/bootstrap/ +F: package/cannelloni/ +F: package/can-utils/ +F: package/circus/ +F: package/feh/ +F: package/giblib/ +F: package/imlib2/ +F: package/jquery-datetimepicker/ +F: package/jquery-sidebar/ +F: package/kmod/ +F: package/libical/ +F: package/libmbim/ +F: package/libndp/ +F: package/libnftnl/ +F: package/libsoc/ +F: package/libsocketcan/ +F: package/libubox/ +F: package/libuci/ +F: package/linux-firmware/ +F: package/modem-manager/ +F: package/nuttcp/ +F: package/parted/ +F: package/phytool/ +F: package/poco/ +F: package/python* +F: package/ser2net/ +F: package/socketcand/ +F: package/qt5/qt5serialbus/ +F: package/sdparm/ +F: package/ti-utils/ +F: package/x11r7/xapp_xconsole/ +F: package/x11r7/xapp_xinput-calibrator/ +F: package/zlog/ +F: utils/scanpypi + +N: Zoltan Gyarmati +F: package/crudini/ +F: package/grantlee/ +F: package/proj/ +F: package/python-configobj/ +F: package/python-iniparse/ +F: package/qjson/ +F: package/quazip/ +F: package/shapelib/ +F: package/tinc/ diff --git a/features/buildroot/Makefile b/features/buildroot/Makefile new file mode 100644 index 00000000..9cce9349 --- /dev/null +++ b/features/buildroot/Makefile @@ -0,0 +1,1212 @@ +# Makefile for buildroot +# +# Copyright (C) 1999-2005 by Erik Andersen +# Copyright (C) 2006-2014 by the Buildroot developers +# Copyright (C) 2014-2019 by the Buildroot developers +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +#-------------------------------------------------------------- +# Just run 'make menuconfig', configure stuff, then run 'make'. +# You shouldn't need to mess with anything beyond this point... +#-------------------------------------------------------------- + +# Delete default rules. We don't use them. This saves a bit of time. +.SUFFIXES: + +# we want bash as shell +SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ + else if [ -x /bin/bash ]; then echo /bin/bash; \ + else echo sh; fi; fi) + +# Set O variable if not already done on the command line; +# or avoid confusing packages that can use the O= syntax for out-of-tree +# build by preventing it from being forwarded to sub-make calls. +ifneq ("$(origin O)", "command line") +O := $(CURDIR)/output +endif + +# Check if the current Buildroot execution meets all the pre-requisites. +# If they are not met, Buildroot will actually do its job in a sub-make meeting +# its pre-requisites, which are: +# 1- Permissive enough umask: +# Wrong or too restrictive umask will prevent Buildroot and packages from +# creating files and directories. +# 2- Absolute canonical CWD (i.e. $(CURDIR)): +# Otherwise, some packages will use CWD as-is, others will compute its +# absolute canonical path. This makes harder tracking and fixing host +# machine path leaks. +# 3- Absolute canonical output location (i.e. $(O)): +# For the same reason as the one for CWD. + +# Remove the trailing '/.' from $(O) as it can be added by the makefile wrapper +# installed in the $(O) directory. +# Also remove the trailing '/' the user can set when on the command line. +override O := $(patsubst %/,%,$(patsubst %.,%,$(O))) +# Make sure $(O) actually exists before calling realpath on it; this is to +# avoid empty CANONICAL_O in case on non-existing entry. +CANONICAL_O := $(shell mkdir -p $(O) >/dev/null 2>&1)$(realpath $(O)) + +# gcc fails to build when the srcdir contains a '@' +ifneq ($(findstring @,$(CANONICAL_O)),) +$(error The build directory can not contain a '@') +endif + +CANONICAL_CURDIR = $(realpath $(CURDIR)) + +REQ_UMASK = 0022 + +# Make sure O= is passed (with its absolute canonical path) everywhere the +# toplevel makefile is called back. +EXTRAMAKEARGS := O=$(CANONICAL_O) + +# Check Buildroot execution pre-requisites here. +ifneq ($(shell umask):$(CURDIR):$(O),$(REQ_UMASK):$(CANONICAL_CURDIR):$(CANONICAL_O)) +.PHONY: _all $(MAKECMDGOALS) + +$(MAKECMDGOALS): _all + @: + +_all: + @umask $(REQ_UMASK) && \ + $(MAKE) -C $(CANONICAL_CURDIR) --no-print-directory \ + $(MAKECMDGOALS) $(EXTRAMAKEARGS) + +else # umask / $(CURDIR) / $(O) + +# This is our default rule, so must come first +all: +.PHONY: all + +# Set and export the version string +export BR2_VERSION := 2019.08-git +# Actual time the release is cut (for reproducible builds) +BR2_VERSION_EPOCH = 1559462000 + +# Save running make version since it's clobbered by the make package +RUNNING_MAKE_VERSION := $(MAKE_VERSION) + +# Check for minimal make version (note: this check will break at make 10.x) +MIN_MAKE_VERSION = 3.81 +ifneq ($(firstword $(sort $(RUNNING_MAKE_VERSION) $(MIN_MAKE_VERSION))),$(MIN_MAKE_VERSION)) +$(error You have make '$(RUNNING_MAKE_VERSION)' installed. GNU make >= $(MIN_MAKE_VERSION) is required) +endif + +# absolute path +TOPDIR := $(CURDIR) +CONFIG_CONFIG_IN = Config.in +CONFIG = support/kconfig +DATE := $(shell date +%Y%m%d) + +# Compute the full local version string so packages can use it as-is +# Need to export it, so it can be got from environment in children (eg. mconf) +export BR2_VERSION_FULL := $(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlocalversion) + +# List of targets and target patterns for which .config doesn't need to be read in +noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \ + defconfig %_defconfig allyesconfig allnoconfig alldefconfig syncconfig release \ + randpackageconfig allyespackageconfig allnopackageconfig \ + print-version olddefconfig distclean manual manual-% check-package + +# Some global targets do not trigger a build, but are used to collect +# metadata, or do various checks. When such targets are triggered, +# some packages should not do their configuration sanity +# checks. Provide them a BR_BUILDING variable set to 'y' when we're +# actually building and they should do their sanity checks. +# +# We're building in two situations: when MAKECMDGOALS is empty +# (default target is to build), or when MAKECMDGOALS contains +# something else than one of the nobuild_targets. +nobuild_targets := source %-source \ + legal-info %-legal-info external-deps _external-deps \ + clean distclean help show-targets graph-depends \ + %-graph-depends %-show-depends %-show-version \ + graph-build graph-size list-defconfigs \ + savedefconfig update-defconfig printvars +ifeq ($(MAKECMDGOALS),) +BR_BUILDING = y +else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),) +BR_BUILDING = y +endif + +# We call make recursively to build packages. The command-line overrides that +# are passed to Buildroot don't apply to those package build systems. In +# particular, we don't want to pass down the O= option for out-of-tree +# builds, because the value specified on the command line will not be correct +# for packages. +MAKEOVERRIDES := + +# Include some helper macros and variables +include support/misc/utils.mk + +# Set variables related to in-tree or out-of-tree build. +# Here, both $(O) and $(CURDIR) are absolute canonical paths. +ifeq ($(O),$(CURDIR)/output) +CONFIG_DIR := $(CURDIR) +NEED_WRAPPER = +else +CONFIG_DIR := $(O) +NEED_WRAPPER = y +endif + +# bash prints the name of the directory on 'cd ' if CDPATH is +# set, so unset it here to not cause problems. Notice that the export +# line doesn't affect the environment of $(shell ..) calls. +export CDPATH := + +BASE_DIR := $(CANONICAL_O) +$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist)) + + +# Handling of BR2_EXTERNAL. +# +# The value of BR2_EXTERNAL is stored in .br-external in the output directory. +# The location of the external.mk makefile fragments is computed in that file. +# On subsequent invocations of make, this file is read in. BR2_EXTERNAL can +# still be overridden on the command line, therefore the file is re-created +# every time make is run. + +BR2_EXTERNAL_FILE = $(BASE_DIR)/.br-external.mk +-include $(BR2_EXTERNAL_FILE) +$(shell support/scripts/br2-external \ + -m -o '$(BR2_EXTERNAL_FILE)' $(BR2_EXTERNAL)) +BR2_EXTERNAL_ERROR = +include $(BR2_EXTERNAL_FILE) +ifneq ($(BR2_EXTERNAL_ERROR),) +$(error $(BR2_EXTERNAL_ERROR)) +endif + +# To make sure that the environment variable overrides the .config option, +# set this before including .config. +ifneq ($(BR2_DL_DIR),) +DL_DIR := $(BR2_DL_DIR) +endif +ifneq ($(BR2_CCACHE_DIR),) +BR_CACHE_DIR := $(BR2_CCACHE_DIR) +endif + +# Need that early, before we scan packages +# Avoids doing the $(or...) everytime +BR_GRAPH_OUT := $(or $(BR2_GRAPH_OUT),pdf) + +BUILD_DIR := $(BASE_DIR)/build +BINARIES_DIR := $(BASE_DIR)/images +BASE_TARGET_DIR := $(BASE_DIR)/target +# initial definition so that 'make clean' works for most users, even without +# .config. HOST_DIR will be overwritten later when .config is included. +HOST_DIR := $(BASE_DIR)/host +GRAPHS_DIR := $(BASE_DIR)/graphs + +LEGAL_INFO_DIR = $(BASE_DIR)/legal-info +REDIST_SOURCES_DIR_TARGET = $(LEGAL_INFO_DIR)/sources +REDIST_SOURCES_DIR_HOST = $(LEGAL_INFO_DIR)/host-sources +LICENSE_FILES_DIR_TARGET = $(LEGAL_INFO_DIR)/licenses +LICENSE_FILES_DIR_HOST = $(LEGAL_INFO_DIR)/host-licenses +LEGAL_MANIFEST_CSV_TARGET = $(LEGAL_INFO_DIR)/manifest.csv +LEGAL_MANIFEST_CSV_HOST = $(LEGAL_INFO_DIR)/host-manifest.csv +LEGAL_WARNINGS = $(LEGAL_INFO_DIR)/.warnings +LEGAL_REPORT = $(LEGAL_INFO_DIR)/README + +BR2_CONFIG = $(CONFIG_DIR)/.config + +# Pull in the user's configuration file +ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) +-include $(BR2_CONFIG) +endif + +# Parallel execution of this Makefile is disabled because it changes +# the packages building order, that can be a problem for two reasons: +# - If a package has an unspecified optional dependency and that +# dependency is present when the package is built, it is used, +# otherwise it isn't (but compilation happily proceeds) so the end +# result will differ if the order is swapped due to parallel +# building. +# - Also changing the building order can be a problem if two packages +# manipulate the same file in the target directory. +# +# Taking into account the above considerations, if you still want to execute +# this top-level Makefile in parallel comment the ".NOTPARALLEL" line and +# use the -j option when building, e.g: +# make -j$((`getconf _NPROCESSORS_ONLN`+1)) +.NOTPARALLEL: + +# timezone and locale may affect build output +ifeq ($(BR2_REPRODUCIBLE),y) +export TZ = UTC +export LANG = C +export LC_ALL = C +endif + +# To put more focus on warnings, be less verbose as default +# Use 'make V=1' to see the full commands +ifeq ("$(origin V)", "command line") + KBUILD_VERBOSE = $(V) +endif +ifndef KBUILD_VERBOSE + KBUILD_VERBOSE = 0 +endif + +ifeq ($(KBUILD_VERBOSE),1) + Q = +ifndef VERBOSE + VERBOSE = 1 +endif +export VERBOSE +else + Q = @ +endif + +# kconfig uses CONFIG_SHELL +CONFIG_SHELL := $(SHELL) + +export SHELL CONFIG_SHELL Q KBUILD_VERBOSE + +ifndef HOSTAR +HOSTAR := ar +endif +ifndef HOSTAS +HOSTAS := as +endif +ifndef HOSTCC +HOSTCC := gcc +HOSTCC := $(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc) +endif +HOSTCC_NOCCACHE := $(HOSTCC) +ifndef HOSTCXX +HOSTCXX := g++ +HOSTCXX := $(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++) +endif +HOSTCXX_NOCCACHE := $(HOSTCXX) +ifndef HOSTCPP +HOSTCPP := cpp +endif +ifndef HOSTLD +HOSTLD := ld +endif +ifndef HOSTLN +HOSTLN := ln +endif +ifndef HOSTNM +HOSTNM := nm +endif +ifndef HOSTOBJCOPY +HOSTOBJCOPY := objcopy +endif +ifndef HOSTRANLIB +HOSTRANLIB := ranlib +endif +HOSTAR := $(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar) +HOSTAS := $(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as) +HOSTCPP := $(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp) +HOSTLD := $(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld) +HOSTLN := $(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln) +HOSTNM := $(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm) +HOSTOBJCOPY := $(shell which $(HOSTOBJCOPY) || type -p $(HOSTOBJCOPY) || echo objcopy) +HOSTRANLIB := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranlib) +SED := $(shell which sed || type -p sed) -i -e + +export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTLD +export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE + +# Determine the userland we are running on. +# +# Note that, despite its name, we are not interested in the actual +# architecture name. This is mostly used to determine whether some +# of the binary tools (e.g. pre-built external toolchains) can run +# on the current host. So we need to know if the userland we're +# running on can actually run those toolchains. +# +# For example, a 64-bit prebuilt toolchain will not run on a 64-bit +# kernel if the userland is 32-bit (e.g. in a chroot for example). +# +# So, we extract the first part of the tuple the host gcc was +# configured to generate code for; we assume this is our userland. +# +export HOSTARCH := $(shell LC_ALL=C $(HOSTCC_NOCCACHE) -v 2>&1 | \ + sed -e '/^Target: \([^-]*\).*/!d' \ + -e 's//\1/' \ + -e 's/i.86/x86/' \ + -e 's/sun4u/sparc64/' \ + -e 's/arm.*/arm/' \ + -e 's/sa110/arm/' \ + -e 's/ppc64/powerpc64/' \ + -e 's/ppc/powerpc/' \ + -e 's/macppc/powerpc/' \ + -e 's/sh.*/sh/' ) + +# When adding a new host gcc version in Config.in, +# update the HOSTCC_MAX_VERSION variable: +HOSTCC_MAX_VERSION := 8 + +HOSTCC_VERSION := $(shell V=$$($(HOSTCC_NOCCACHE) --version | \ + sed -n -r 's/^.* ([0-9]*)\.([0-9]*)\.([0-9]*)[ ]*.*/\1 \2/p'); \ + [ "$${V%% *}" -le $(HOSTCC_MAX_VERSION) ] || V=$(HOSTCC_MAX_VERSION); \ + printf "%s" "$${V}") + +# For gcc >= 5.x, we only need the major version. +ifneq ($(firstword $(HOSTCC_VERSION)),4) +HOSTCC_VERSION := $(firstword $(HOSTCC_VERSION)) +endif + +ifeq ($(BR2_NEEDS_HOST_UTF8_LOCALE),y) +# First, we try to use the user's configured locale (as that's the +# language they'd expect messages to be displayed), then we favour +# a non language-specific locale like C.UTF-8 if one is available, +# so we sort with the C locale to get it at the top. +# This is guaranteed to not be empty, because of the check in +# support/dependencies/dependencies.sh +HOST_UTF8_LOCALE := $(shell \ + ( echo $${LC_ALL:-$${LC_MESSAGES:-$${LANG}}}; \ + locale -a 2>/dev/null | LC_ALL=C sort \ + ) \ + | grep -i -E 'utf-?8$$' \ + | head -n 1) +HOST_UTF8_LOCALE_ENV := LC_ALL=$(HOST_UTF8_LOCALE) +endif + +# Make sure pkg-config doesn't look outside the buildroot tree +HOST_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH) +unexport PKG_CONFIG_PATH +unexport PKG_CONFIG_SYSROOT_DIR +unexport PKG_CONFIG_LIBDIR + +# Having DESTDIR set in the environment confuses the installation +# steps of some packages. +unexport DESTDIR + +# Causes breakage with packages that needs host-ruby +unexport RUBYOPT + +include package/pkg-utils.mk +include package/doc-asciidoc.mk + +ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +################################################################################ +# +# Hide troublesome environment variables from sub processes +# +################################################################################ +unexport CROSS_COMPILE +unexport ARCH +unexport CC +unexport LD +unexport AR +unexport CXX +unexport CPP +unexport RANLIB +unexport CFLAGS +unexport CXXFLAGS +unexport GREP_OPTIONS +unexport TAR_OPTIONS +unexport CONFIG_SITE +unexport QMAKESPEC +unexport TERMINFO +unexport MACHINE +unexport O +unexport GCC_COLORS +unexport PLATFORM +unexport OS + +GNU_HOST_NAME := $(shell support/gnuconfig/config.guess) + +PACKAGES := +PACKAGES_ALL := + +# silent mode requested? +QUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q) + +# Strip off the annoying quoting +ARCH := $(call qstrip,$(BR2_ARCH)) + +KERNEL_ARCH := $(shell echo "$(ARCH)" | sed -e "s/-.*//" \ + -e s/i.86/i386/ -e s/sun4u/sparc64/ \ + -e s/arcle/arc/ \ + -e s/arceb/arc/ \ + -e s/arm.*/arm/ -e s/sa110/arm/ \ + -e s/aarch64.*/arm64/ \ + -e s/nds32.*/nds32/ \ + -e s/or1k/openrisc/ \ + -e s/parisc64/parisc/ \ + -e s/powerpc64.*/powerpc/ \ + -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ + -e s/riscv.*/riscv/ \ + -e s/sh.*/sh/ \ + -e s/microblazeel/microblaze/) + +ZCAT := $(call qstrip,$(BR2_ZCAT)) +BZCAT := $(call qstrip,$(BR2_BZCAT)) +XZCAT := $(call qstrip,$(BR2_XZCAT)) +LZCAT := $(call qstrip,$(BR2_LZCAT)) +TAR_OPTIONS = $(call qstrip,$(BR2_TAR_OPTIONS)) -xf + +# packages compiled for the host go here +HOST_DIR := $(call qstrip,$(BR2_HOST_DIR)) + +# The target directory is common to all packages, +# but there is one that is specific to each filesystem. +TARGET_DIR = $(if $(ROOTFS),$(ROOTFS_$(ROOTFS)_TARGET_DIR),$(BASE_TARGET_DIR)) + +ifneq ($(HOST_DIR),$(BASE_DIR)/host) +HOST_DIR_SYMLINK = $(BASE_DIR)/host +$(HOST_DIR_SYMLINK): $(BASE_DIR) + ln -snf $(HOST_DIR) $(BASE_DIR)/host +endif + +# Quotes are needed for spaces and all in the original PATH content. +BR_PATH = "$(HOST_DIR)/bin:$(HOST_DIR)/sbin:$(PATH)" + +# Location of a file giving a big fat warning that output/target +# should not be used as the root filesystem. +TARGET_DIR_WARNING_FILE = $(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM + +ifeq ($(BR2_CCACHE),y) +CCACHE = $(HOST_DIR)/bin/ccache +BR_CACHE_DIR ?= $(call qstrip,$(BR2_CCACHE_DIR)) +export BR_CACHE_DIR +HOSTCC = $(CCACHE) $(HOSTCC_NOCCACHE) +HOSTCXX = $(CCACHE) $(HOSTCXX_NOCCACHE) +else +export BR_NO_CCACHE +endif + +# Scripts in support/ or post-build scripts may need to reference +# these locations, so export them so it is easier to use +export BR2_CONFIG +export BR2_REPRODUCIBLE +export TARGET_DIR +export STAGING_DIR +export HOST_DIR +export BINARIES_DIR +export BASE_DIR + +################################################################################ +# +# You should probably leave this stuff alone unless you know +# what you are doing. +# +################################################################################ + +all: world + +# Include legacy before the other things, because package .mk files +# may rely on it. +include Makefile.legacy + +include system/system.mk +include package/Makefile.in +# arch/arch.mk must be after package/Makefile.in because it may need to +# complement variables defined therein, like BR_NO_CHECK_HASH_FOR. +include arch/arch.mk +include support/dependencies/dependencies.mk + +include $(sort $(wildcard toolchain/*.mk)) +include $(sort $(wildcard toolchain/*/*.mk)) + +ifeq ($(BR2_REPRODUCIBLE),y) +# If SOURCE_DATE_EPOCH has not been set then use the commit date, or the last +# release date if the source tree is not within a Git repository. +# See: https://reproducible-builds.org/specs/source-date-epoch/ +BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2> /dev/null) +export SOURCE_DATE_EPOCH ?= $(or $(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH)) +endif + +# Include the package override file if one has been provided in the +# configuration. +PACKAGE_OVERRIDE_FILE = $(call qstrip,$(BR2_PACKAGE_OVERRIDE_FILE)) +ifneq ($(PACKAGE_OVERRIDE_FILE),) +-include $(PACKAGE_OVERRIDE_FILE) +endif + +include $(sort $(wildcard package/*/*.mk)) + +include boot/common.mk +include linux/linux.mk +include fs/common.mk + +# If using a br2-external tree, the BR2_EXTERNAL_$(NAME)_PATH variables +# are also present in the .config file. Since .config is included after +# we defined them in the Makefile, the values for those variables are +# quoted. We just include the generated Makefile fragment .br2-external.mk +# a third time, which will set those variables to the un-quoted values. +include $(BR2_EXTERNAL_FILE) + +# Nothing to include if no BR2_EXTERNAL tree in use +include $(BR2_EXTERNAL_MKS) + +# Now we are sure we have all the packages scanned and defined. We now +# check for each package in the list of enabled packages, that all its +# dependencies are indeed enabled. +# +# Only trigger the check for default builds. If the user forces building +# a package, even if not enabled in the configuration, we want to accept +# it. However; we also want to be able to force checking the dependencies +# if the user so desires. Forcing a dependency check is useful in the case +# of test-pkg, as we want to make sure during testing, that a package has +# all the dependencies selected in the config file. +# +ifeq ($(MAKECMDGOALS),) +BR_FORCE_CHECK_DEPENDENCIES = YES +endif + +ifeq ($(BR_FORCE_CHECK_DEPENDENCIES),YES) + +define CHECK_ONE_DEPENDENCY +ifeq ($$($(2)_TYPE),target) +ifeq ($$($(2)_IS_VIRTUAL),) +ifneq ($$($$($(2)_KCONFIG_VAR)),y) +$$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \ +has added it to its _DEPENDENCIES variable without selecting it or \ +depending on it from Config.in) +endif +endif +endif +endef + +$(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\ + $(foreach dep,$(call UPPERCASE,$($(pkg)_FINAL_ALL_DEPENDENCIES)),\ + $(eval $(call CHECK_ONE_DEPENDENCY,$(pkg),$(dep))$(sep)))) + +endif + +$(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) + $(MAKE1) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" syncconfig + +.PHONY: prepare +prepare: $(BUILD_DIR)/buildroot-config/auto.conf + +.PHONY: world +world: target-post-image + +.PHONY: prepare-sdk +prepare-sdk: world + @$(call MESSAGE,"Rendering the SDK relocatable") + $(TOPDIR)/support/scripts/fix-rpath host + $(TOPDIR)/support/scripts/fix-rpath staging + $(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh + mkdir -p $(HOST_DIR)/share/buildroot + echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location + +BR2_SDK_PREFIX ?= $(GNU_TARGET_NAME)_sdk-buildroot +.PHONY: sdk +sdk: prepare-sdk $(BR2_TAR_HOST_DEPENDENCY) + @$(call MESSAGE,"Generating SDK tarball") + $(if $(BR2_SDK_PREFIX),,$(error BR2_SDK_PREFIX can not be empty)) + $(Q)mkdir -p $(BINARIES_DIR) + $(TAR) czf "$(BINARIES_DIR)/$(BR2_SDK_PREFIX).tar.gz" \ + --owner=0 --group=0 --numeric-owner \ + --transform='s#^$(patsubst /%,%,$(HOST_DIR))#$(BR2_SDK_PREFIX)#' \ + -C / $(patsubst /%,%,$(HOST_DIR)) + +RSYNC_VCS_EXCLUSIONS = \ + --exclude .svn --exclude .git --exclude .hg --exclude .bzr \ + --exclude CVS + +# When stripping, obey to BR2_STRIP_EXCLUDE_DIRS and +# BR2_STRIP_EXCLUDE_FILES +STRIP_FIND_COMMON_CMD = \ + find $(TARGET_DIR) \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS)), \ + \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) \ + -prune -o \ + ) \ + $(if $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)), \ + -not \( $(call findfileclauses,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) ) + +# Regular stripping for everything, except libpthread, ld-*.so and +# kernel modules: +# - libpthread.so: a non-stripped libpthread shared library is needed for +# proper debugging of pthread programs using gdb. +# - ld.so: a non-stripped dynamic linker library is needed for valgrind +# - kernel modules (*.ko): do not function properly when stripped like normal +# applications and libraries. Normally kernel modules are already excluded +# by the executable permission check, so the explicit exclusion is only +# done for kernel modules with incorrect permissions. +STRIP_FIND_CMD = \ + $(STRIP_FIND_COMMON_CMD) \ + -type f \( -perm /111 -o -name '*.so*' \) \ + -not \( $(call findfileclauses,libpthread*.so* ld-*.so* *.ko) \) \ + -print0 + +# Special stripping (only debugging symbols) for libpthread and ld-*.so. +STRIP_FIND_SPECIAL_LIBS_CMD = \ + $(STRIP_FIND_COMMON_CMD) \ + \( -name 'ld-*.so*' -o -name 'libpthread*.so*' \) \ + -print0 + +ifeq ($(BR2_ECLIPSE_REGISTER),y) +define TOOLCHAIN_ECLIPSE_REGISTER + ./support/scripts/eclipse-register-toolchain `readlink -f $(O)` \ + $(notdir $(TARGET_CROSS)) $(BR2_ARCH) +endef +TARGET_FINALIZE_HOOKS += TOOLCHAIN_ECLIPSE_REGISTER +endif + +# Generate locale data. Basically, we call the localedef program +# (built by the host-localedef package) for each locale. The input +# data comes preferably from the toolchain, or if the toolchain does +# not have them (Linaro toolchains), we use the ones available on the +# host machine. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +GLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE)) +ifneq ($(GLIBC_GENERATE_LOCALES),) +PACKAGES += host-localedef + +define GENERATE_GLIBC_LOCALES + $(Q)mkdir -p $(TARGET_DIR)/usr/lib/locale/ + $(Q)for locale in $(GLIBC_GENERATE_LOCALES) ; do \ + inputfile=`echo $${locale} | cut -f1 -d'.'` ; \ + charmap=`echo $${locale} | cut -f2 -d'.' -s` ; \ + if test -z "$${charmap}" ; then \ + charmap="UTF-8" ; \ + fi ; \ + echo "Generating locale $${inputfile}.$${charmap}" ; \ + I18NPATH=$(STAGING_DIR)/usr/share/i18n:/usr/share/i18n \ + $(HOST_DIR)/bin/localedef \ + --prefix=$(TARGET_DIR) \ + --$(call LOWERCASE,$(BR2_ENDIAN))-endian \ + -i $${inputfile} -f $${charmap} \ + $${locale} ; \ + done +endef +TARGET_FINALIZE_HOOKS += GENERATE_GLIBC_LOCALES +endif +endif + +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +LOCALE_WHITELIST = $(BUILD_DIR)/locales.nopurge +LOCALE_NOPURGE = $(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST)) + +# This piece of junk does the following: +# First collect the whitelist in a file. +# Then go over all the locale dirs and for each subdir, check if it exists +# in the whitelist file. If it doesn't, kill it. +# Finally, specifically for X11, regenerate locale.dir from the whitelist. +define PURGE_LOCALES + rm -f $(LOCALE_WHITELIST) + for i in $(LOCALE_NOPURGE) locale-archive; do echo $$i >> $(LOCALE_WHITELIST); done + + for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/lib/locale)); \ + do \ + for langdir in $$dir/*; \ + do \ + if [ -e "$${langdir}" ]; \ + then \ + grep -qx "$${langdir##*/}" $(LOCALE_WHITELIST) || rm -rf $$langdir; \ + fi \ + done; \ + done + if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \ + then \ + for lang in $(LOCALE_NOPURGE); \ + do \ + if [ -f $(TARGET_DIR)/usr/share/X11/locale/$$lang/XLC_LOCALE ]; \ + then \ + echo "$$lang/XLC_LOCALE: $$lang"; \ + fi \ + done > $(TARGET_DIR)/usr/share/X11/locale/locale.dir; \ + fi +endef +TARGET_FINALIZE_HOOKS += PURGE_LOCALES +endif + +$(TARGETS_ROOTFS): target-finalize + +# Avoid the rootfs name leaking down the dependency chain +target-finalize: ROOTFS= + +host-finalize: $(HOST_DIR_SYMLINK) + +.PHONY: staging-finalize +staging-finalize: + @ln -snf $(STAGING_DIR) $(BASE_DIR)/staging + +.PHONY: target-finalize +target-finalize: $(PACKAGES) host-finalize + @$(call MESSAGE,"Finalizing target directory") + # Check files that are touched by more than one package + ./support/scripts/check-uniq-files -t target $(BUILD_DIR)/packages-file-list.txt + ./support/scripts/check-uniq-files -t staging $(BUILD_DIR)/packages-file-list-staging.txt + ./support/scripts/check-uniq-files -t host $(BUILD_DIR)/packages-file-list-host.txt + $(foreach hook,$(TARGET_FINALIZE_HOOKS),$($(hook))$(sep)) + rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \ + $(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \ + $(TARGET_DIR)/usr/lib/cmake $(TARGET_DIR)/usr/share/cmake + find $(TARGET_DIR)/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/lib/ $(TARGET_DIR)/usr/lib/ $(TARGET_DIR)/usr/libexec/ \ + \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f +ifneq ($(BR2_PACKAGE_GDB),y) + rm -rf $(TARGET_DIR)/usr/share/gdb +endif +ifneq ($(BR2_PACKAGE_BASH),y) + rm -rf $(TARGET_DIR)/usr/share/bash-completion +endif +ifneq ($(BR2_PACKAGE_ZSH),y) + rm -rf $(TARGET_DIR)/usr/share/zsh +endif + rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man + rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info + rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc + rm -rf $(TARGET_DIR)/usr/share/gtk-doc + rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true + $(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true + $(STRIP_FIND_SPECIAL_LIBS_CMD) | xargs -0 -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) 2>/dev/null || true + + test -f $(TARGET_DIR)/etc/ld.so.conf && \ + { echo "ERROR: we shouldn't have a /etc/ld.so.conf file"; exit 1; } || true + test -d $(TARGET_DIR)/etc/ld.so.conf.d && \ + { echo "ERROR: we shouldn't have a /etc/ld.so.conf.d directory"; exit 1; } || true + mkdir -p $(TARGET_DIR)/etc + ( \ + echo "NAME=Buildroot"; \ + echo "VERSION=$(BR2_VERSION_FULL)"; \ + echo "ID=buildroot"; \ + echo "VERSION_ID=$(BR2_VERSION)"; \ + echo "PRETTY_NAME=\"Buildroot $(BR2_VERSION)\"" \ + ) > $(TARGET_DIR)/usr/lib/os-release + ln -sf ../usr/lib/os-release $(TARGET_DIR)/etc + + @$(call MESSAGE,"Sanitizing RPATH in target tree") + $(TOPDIR)/support/scripts/fix-rpath target + +# For a merged /usr, ensure that /lib, /bin and /sbin and their /usr +# counterparts are appropriately setup as symlinks ones to the others. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) + + @$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \ + $(call MESSAGE,"Sanity check in overlay $(d)"); \ + not_merged_dirs="$$(support/scripts/check-merged-usr.sh $(d))"; \ + test -n "$$not_merged_dirs" && { \ + echo "ERROR: The overlay in $(d) is not" \ + "using a merged /usr for the following directories:" \ + $$not_merged_dirs; \ + exit 1; \ + } || true$(sep)) + +endif # merged /usr + + @$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \ + $(call MESSAGE,"Copying overlay $(d)"); \ + $(call SYSTEM_RSYNC,$(d),$(TARGET_DIR))$(sep)) + + @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ + $(call MESSAGE,"Executing post-build script $(s)"); \ + $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + + touch $(TARGET_DIR)/usr + +.PHONY: target-post-image +target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize + @rm -f $(ROOTFS_COMMON_TAR) + @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ + $(call MESSAGE,"Executing post-image script $(s)"); \ + $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + +.PHONY: source +source: $(foreach p,$(PACKAGES),$(p)-all-source) + +.PHONY: _external-deps external-deps +_external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps) +external-deps: + @$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u + +.PHONY: legal-info-clean +legal-info-clean: + @rm -fr $(LEGAL_INFO_DIR) + +.PHONY: legal-info-prepare +legal-info-prepare: $(LEGAL_INFO_DIR) + @$(call MESSAGE,"Buildroot $(BR2_VERSION_FULL) Collecting legal info") + @$(call legal-license-file,buildroot,buildroot,support/legal-info/buildroot.hash,COPYING,COPYING,HOST) + @$(call legal-manifest,TARGET,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES) + @$(call legal-manifest,HOST,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES) + @$(call legal-manifest,HOST,buildroot,$(BR2_VERSION_FULL),GPL-2.0+,COPYING,not saved,not saved) + @$(call legal-warning,the Buildroot source code has not been saved) + @cp $(BR2_CONFIG) $(LEGAL_INFO_DIR)/buildroot.config + +.PHONY: legal-info +legal-info: legal-info-clean legal-info-prepare $(foreach p,$(PACKAGES),$(p)-all-legal-info) \ + $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST) + @cat support/legal-info/README.header >>$(LEGAL_REPORT) + @if [ -r $(LEGAL_WARNINGS) ]; then \ + cat support/legal-info/README.warnings-header \ + $(LEGAL_WARNINGS) >>$(LEGAL_REPORT); \ + cat $(LEGAL_WARNINGS); fi + @rm -f $(LEGAL_WARNINGS) + @(cd $(LEGAL_INFO_DIR); \ + find * -type f -exec sha256sum {} + | LC_ALL=C sort -k2 \ + >.legal-info.sha256; \ + mv .legal-info.sha256 legal-info.sha256) + @echo "Legal info produced in $(LEGAL_INFO_DIR)" + +.PHONY: show-targets +show-targets: + @echo $(sort $(PACKAGES)) $(sort $(TARGETS_ROOTFS)) + +.PHONY: show-build-order +show-build-order: $(patsubst %,%-show-build-order,$(PACKAGES)) + +.PHONY: graph-build +graph-build: $(O)/build/build-time.log + @install -d $(GRAPHS_DIR) + $(foreach o,name build duration,./support/scripts/graph-build-time \ + --type=histogram --order=$(o) --input=$(<) \ + --output=$(GRAPHS_DIR)/build.hist-$(o).$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep)) + $(foreach t,packages steps,./support/scripts/graph-build-time \ + --type=pie-$(t) --input=$(<) \ + --output=$(GRAPHS_DIR)/build.pie-$(t).$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep)) + +.PHONY: graph-depends-requirements +graph-depends-requirements: + @dot -? >/dev/null 2>&1 || \ + { echo "ERROR: The 'dot' program from Graphviz is needed for graph-depends" >&2; exit 1; } + +.PHONY: graph-depends +graph-depends: graph-depends-requirements + @$(INSTALL) -d $(GRAPHS_DIR) + @cd "$(CONFIG_DIR)"; \ + $(TOPDIR)/support/scripts/graph-depends $(BR2_GRAPH_DEPS_OPTS) \ + --direct -o $(GRAPHS_DIR)/$(@).dot + dot $(BR2_GRAPH_DOT_OPTS) -T$(BR_GRAPH_OUT) \ + -o $(GRAPHS_DIR)/$(@).$(BR_GRAPH_OUT) \ + $(GRAPHS_DIR)/$(@).dot + +.PHONY: graph-size +graph-size: + $(Q)mkdir -p $(GRAPHS_DIR) + $(Q)$(TOPDIR)/support/scripts/size-stats --builddir $(BASE_DIR) \ + --graph $(GRAPHS_DIR)/graph-size.$(BR_GRAPH_OUT) \ + --file-size-csv $(GRAPHS_DIR)/file-size-stats.csv \ + --package-size-csv $(GRAPHS_DIR)/package-size-stats.csv + +.PHONY: check-dependencies +check-dependencies: + @cd "$(CONFIG_DIR)"; \ + $(TOPDIR)/support/scripts/graph-depends -C + +.PHONY: show-info +show-info: + @: + $(info $(call clean-json, \ + { $(foreach p, \ + $(sort $(foreach i,$(PACKAGES) $(TARGETS_ROOTFS), \ + $(i) \ + $($(call UPPERCASE,$(i))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ), \ + $(call json-info,$(call UPPERCASE,$(p)))$(comma) \ + ) } \ + ) \ + ) + +else # ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +# Some subdirectories are also package names. To avoid that "make linux" +# on an unconfigured tree produces "Nothing to be done", add an explicit +# rule for it. +# Also for 'all' we error out and ask the user to configure first. +.PHONY: linux toolchain +linux toolchain all: outputmakefile + $(error Please configure Buildroot first (e.g. "make menuconfig")) + @exit 1 + +endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +# configuration +# --------------------------------------------------------------------------- + +HOSTCFLAGS = $(CFLAGS_FOR_BUILD) +export HOSTCFLAGS + +.PHONY: prepare-kconfig +prepare-kconfig: outputmakefile $(BUILD_DIR)/.br2-external.in + +$(BUILD_DIR)/buildroot-config/%onf: + mkdir -p $(@D)/lxdialog + PKG_CONFIG_PATH="$(HOST_PKG_CONFIG_PATH)" $(MAKE) CC="$(HOSTCC_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" \ + obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F) + +DEFCONFIG = $(call qstrip,$(BR2_DEFCONFIG)) + +# We don't want to fully expand BR2_DEFCONFIG here, so Kconfig will +# recognize that if it's still at its default $(CONFIG_DIR)/defconfig +COMMON_CONFIG_ENV = \ + BR2_DEFCONFIG='$(call qstrip,$(value BR2_DEFCONFIG))' \ + KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \ + KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \ + KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \ + BR2_CONFIG=$(BR2_CONFIG) \ + HOST_GCC_VERSION="$(HOSTCC_VERSION)" \ + BUILD_DIR=$(BUILD_DIR) \ + SKIP_LEGACY= + +xconfig: $(BUILD_DIR)/buildroot-config/qconf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +gconfig: $(BUILD_DIR)/buildroot-config/gconf prepare-kconfig + @$(COMMON_CONFIG_ENV) srctree=$(TOPDIR) $< $(CONFIG_CONFIG_IN) + +menuconfig: $(BUILD_DIR)/buildroot-config/mconf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +nconfig: $(BUILD_DIR)/buildroot-config/nconf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +config: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +# For the config targets that automatically select options, we pass +# SKIP_LEGACY=y to disable the legacy options. However, in that case +# no values are set for the legacy options so a subsequent oldconfig +# will query them. Therefore, run an additional olddefconfig. + +randconfig allyesconfig alldefconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --$@ $(CONFIG_CONFIG_IN) + @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null + +randpackageconfig allyespackageconfig allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg + @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \ + KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \ + $< --$(subst package,,$@) $(CONFIG_CONFIG_IN) + @rm -f $(CONFIG_DIR)/.config.nopkg + @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null + +oldconfig syncconfig olddefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< --$@ $(CONFIG_CONFIG_IN) + +defconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN) + +define percent_defconfig +# Override the BR2_DEFCONFIG from COMMON_CONFIG_ENV with the new defconfig +%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(1)/configs/%_defconfig prepare-kconfig + @$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)/configs/$$@ \ + $$< --defconfig=$(1)/configs/$$@ $$(CONFIG_CONFIG_IN) +endef +$(eval $(foreach d,$(call reverse,$(TOPDIR) $(BR2_EXTERNAL_DIRS)),$(call percent_defconfig,$(d))$(sep))) + +update-defconfig: savedefconfig + +savedefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< \ + --savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \ + $(CONFIG_CONFIG_IN) + @$(SED) '/BR2_DEFCONFIG=/d' $(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) + +.PHONY: defconfig savedefconfig update-defconfig + +################################################################################ +# +# Cleanup and misc junk +# +################################################################################ + +# staging and target directories do NOT list these as +# dependencies anywhere else +$(BUILD_DIR) $(BASE_TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST): + @mkdir -p $@ + +# outputmakefile generates a Makefile in the output directory, if using a +# separate output directory. This allows convenient use of make in the +# output directory. +.PHONY: outputmakefile +outputmakefile: +ifeq ($(NEED_WRAPPER),y) + $(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O) +endif + +# Even though the target is a real file, we mark it as PHONY as we +# want it to be re-generated each time make is invoked, in case the +# value of BR2_EXTERNAL is changed. +.PHONY: $(BUILD_DIR)/.br2-external.in +$(BUILD_DIR)/.br2-external.in: $(BUILD_DIR) + $(Q)support/scripts/br2-external -k -o "$(@)" $(BR2_EXTERNAL) + +# printvars prints all the variables currently defined in our +# Makefiles. Alternatively, if a non-empty VARS variable is passed, +# only the variables matching the make pattern passed in VARS are +# displayed. +.PHONY: printvars +printvars: + @: + $(foreach V, \ + $(sort $(filter $(VARS),$(.VARIABLES))), \ + $(if $(filter-out environment% default automatic, \ + $(origin $V)), \ + $(if $(QUOTED_VARS),\ + $(info $V='$(subst ','\'',$(if $(RAW_VARS),$(value $V),$($V)))'), \ + $(info $V=$(if $(RAW_VARS),$(value $V),$($V)))))) +# ' Syntax colouring... + +.PHONY: clean +clean: + rm -rf $(BASE_TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) $(HOST_DIR_SYMLINK) \ + $(BUILD_DIR) $(BASE_DIR)/staging \ + $(LEGAL_INFO_DIR) $(GRAPHS_DIR) + +.PHONY: distclean +distclean: clean +ifeq ($(O),$(CURDIR)/output) + rm -rf $(O) +endif + rm -rf $(TOPDIR)/dl $(BR2_CONFIG) $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/..config.tmp \ + $(CONFIG_DIR)/.auto.deps $(BR2_EXTERNAL_FILE) + +.PHONY: help +help: + @echo 'Cleaning:' + @echo ' clean - delete all files created by build' + @echo ' distclean - delete all non-source files (including .config)' + @echo + @echo 'Build:' + @echo ' all - make world' + @echo ' toolchain - build toolchain' + @echo ' sdk - build relocatable SDK' + @echo + @echo 'Configuration:' + @echo ' menuconfig - interactive curses-based configurator' + @echo ' nconfig - interactive ncurses-based configurator' + @echo ' xconfig - interactive Qt-based configurator' + @echo ' gconfig - interactive GTK-based configurator' + @echo ' oldconfig - resolve any unresolved symbols in .config' + @echo ' syncconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' olddefconfig - Same as syncconfig but sets new symbols to their default value' + @echo ' randconfig - New config with random answer to all options' + @echo ' defconfig - New config with default answer to all options;' + @echo ' BR2_DEFCONFIG, if set on the command line, is used as input' + @echo ' savedefconfig - Save current config to BR2_DEFCONFIG (minimal config)' + @echo ' update-defconfig - Same as savedefconfig' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' alldefconfig - New config where all options are set to default' + @echo ' randpackageconfig - New config with random answer to package options' + @echo ' allyespackageconfig - New config where pkg options are accepted with yes' + @echo ' allnopackageconfig - New config where package options are answered with no' + @echo + @echo 'Package-specific:' + @echo ' - Build and install and all its dependencies' + @echo ' -source - Only download the source files for ' + @echo ' -extract - Extract sources' + @echo ' -patch - Apply patches to ' + @echo ' -depends - Build '\''s dependencies' + @echo ' -configure - Build up to the configure step' + @echo ' -build - Build up to the build step' + @echo ' -show-info - generate info about , as a JSON blurb' + @echo ' -show-depends - List packages on which depends' + @echo ' -show-rdepends - List packages which have as a dependency' + @echo ' -show-recursive-depends' + @echo ' - Recursively list packages on which depends' + @echo ' -show-recursive-rdepends' + @echo ' - Recursively list packages which have as a dependency' + @echo ' -graph-depends - Generate a graph of '\''s dependencies' + @echo ' -graph-rdepends - Generate a graph of '\''s reverse dependencies' + @echo ' -dirclean - Remove build directory' + @echo ' -reconfigure - Restart the build from the configure step' + @echo ' -rebuild - Restart the build from the build step' + $(foreach p,$(HELP_PACKAGES), \ + @echo $(sep) \ + @echo '$($(p)_NAME):' $(sep) \ + $($(p)_HELP_CMDS)$(sep)) + @echo + @echo 'Documentation:' + @echo ' manual - build manual in all formats' + @echo ' manual-html - build manual in HTML' + @echo ' manual-split-html - build manual in split HTML' + @echo ' manual-pdf - build manual in PDF' + @echo ' manual-text - build manual in text' + @echo ' manual-epub - build manual in ePub' + @echo ' graph-build - generate graphs of the build times' + @echo ' graph-depends - generate graph of the dependency tree' + @echo ' graph-size - generate stats of the filesystem size' + @echo ' list-defconfigs - list all defconfigs (pre-configured minimal systems)' + @echo + @echo 'Miscellaneous:' + @echo ' source - download all sources needed for offline-build' + @echo ' external-deps - list external packages used' + @echo ' legal-info - generate info about license compliance' + @echo ' show-info - generate info about packages, as a JSON blurb' + @echo ' printvars - dump internal variables selected with VARS=...' + @echo + @echo ' make V=0|1 - 0 => quiet build (default), 1 => verbose build' + @echo ' make O=dir - Locate all output files in "dir", including .config' + @echo + @echo 'For further details, see README, generate the Buildroot manual, or consult' + @echo 'it on-line at http://buildroot.org/docs.html' + @echo + +# List the defconfig files +# $(1): base directory +# $(2): br2-external name, empty for bundled +define list-defconfigs + @first=true; \ + for defconfig in $(1)/configs/*_defconfig; do \ + [ -f "$${defconfig}" ] || continue; \ + if $${first}; then \ + if [ "$(2)" ]; then \ + printf 'External configs in "$(call qstrip,$(2))":\n'; \ + else \ + printf "Built-in configs:\n"; \ + fi; \ + first=false; \ + fi; \ + defconfig="$${defconfig##*/}"; \ + printf " %-35s - Build for %s\n" "$${defconfig}" "$${defconfig%_defconfig}"; \ + done; \ + $${first} || printf "\n" +endef + +# We iterate over BR2_EXTERNAL_NAMES rather than BR2_EXTERNAL_DIRS, +# because we want to display the name of the br2-external tree. +.PHONY: list-defconfigs +list-defconfigs: + $(call list-defconfigs,$(TOPDIR)) + $(foreach name,$(BR2_EXTERNAL_NAMES),\ + $(call list-defconfigs,$(BR2_EXTERNAL_$(name)_PATH),\ + $(BR2_EXTERNAL_$(name)_DESC))$(sep)) + +release: OUT = buildroot-$(BR2_VERSION) + +# Create release tarballs. We need to fiddle a bit to add the generated +# documentation to the git output +release: + git archive --format=tar --prefix=$(OUT)/ HEAD > $(OUT).tar + $(MAKE) O=$(OUT) manual-html manual-text manual-pdf + $(MAKE) O=$(OUT) clean + tar rf $(OUT).tar $(OUT) + gzip -9 -c < $(OUT).tar > $(OUT).tar.gz + bzip2 -9 -c < $(OUT).tar > $(OUT).tar.bz2 + rm -rf $(OUT) $(OUT).tar + +print-version: + @echo $(BR2_VERSION_FULL) + +check-package: + find $(TOPDIR) -type f \( -name '*.mk' -o -name '*.hash' -o -name 'Config.*' \) \ + -exec ./utils/check-package {} + + +.PHONY: .gitlab-ci.yml +.gitlab-ci.yml: .gitlab-ci.yml.in + ./support/scripts/generate-gitlab-ci-yml $< > $@ + +include docs/manual/manual.mk +-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk))) + +.PHONY: $(noconfig_targets) + +endif #umask / $(CURDIR) / $(O) diff --git a/features/buildroot/Makefile.legacy b/features/buildroot/Makefile.legacy new file mode 100644 index 00000000..800c0892 --- /dev/null +++ b/features/buildroot/Makefile.legacy @@ -0,0 +1,59 @@ +# +# Makefile.legacy - support for backward compatibility +# +# This file contains placeholders to detect backward-compatibility problems. +# When a buildroot "API" feature is being deprecated, a rule should be added +# here that issues an error when the old feature is used. + +ifeq ($(BR2_LEGACY),y) +$(error "You have legacy configuration in your .config! Please check your configuration.") +endif + +# +# Legacy options from 2014.02 +# + +# The BUILDROOT_DL_DIR environment variable was renamed by BR2_DL_DIR. We +# want to detect someone using the old variable, _except_ if also the new +# variable was set. By the time we get here, however, we no longer have +# access to the BR2_DL_DIR environment variable (because it has been overridden +# by the .config inclusion). However, the environment variable (if defined) was +# saved in DL_DIR, so we can use that. +ifneq ($(BUILDROOT_DL_DIR),) +ifneq ($(BUILDROOT_DL_DIR),$(DL_DIR)) +$(error "The BUILDROOT_DL_DIR environment variable was renamed to BR2_DL_DIR.") +endif +endif + +# If a script is using the deprecated BUILDROOT_CONFIG, make sure it fails. +# Add some directories in front just in case someone used dirname on it. +BUILDROOT_CONFIG_FAKE = /tmp/deprecated/The-BUILDROOT_CONFIG-environment-variable-was-renamed-to-BR2_CONFIG + +# Similar to above for BUILDROOT_CONFIG, but here we have no .config equivalent. +ifneq ($(BUILDROOT_CONFIG),) +ifneq ($(BUILDROOT_CONFIG),$(BR2_CONFIG)) +ifneq ($(BUILDROOT_CONFIG),$(BUILDROOT_CONFIG_FAKE)) +$(error "The BUILDROOT_CONFIG environment variable was renamed to BR2_CONFIG.") +endif +endif +endif + +BUILDROOT_CONFIG = $(BUILDROOT_CONFIG_FAKE) +export BUILDROOT_CONFIG + +# +# Legacy options from 2012.08 +# + +host-pkg-config: + @$(call MESSAGE,host-pkg-config is replaced by host-pkgconf) + @$(call MESSAGE,please update your .mk files) + @false +.PHONY: host-pkg-config + +# +# Legacy options from 2012.05 +# +GENTARGETS = $$(error The GENTARGETS macro no longer exists; use $$$$(eval $$$$(generic-package)) or $$$$(eval $$$$(host-generic-package))) +AUTOTARGETS = $$(error The AUTOTARGETS macro no longer exists; use $$$$(eval $$$$(autotools-package)) or $$$$(eval $$$$(host-autotools-package))) +CMAKETARGETS = $$(error The CMAKETARGETS macro no longer exists; use $$$$(eval $$$$(cmake-package)) or $$$$(eval $$$$(host-cmake-package))) diff --git a/features/buildroot/README b/features/buildroot/README new file mode 100644 index 00000000..c6172524 --- /dev/null +++ b/features/buildroot/README @@ -0,0 +1,26 @@ +Buildroot is a simple, efficient and easy-to-use tool to generate embedded +Linux systems through cross-compilation. + +The documentation can be found in docs/manual. You can generate a text +document with 'make manual-text' and read output/docs/manual/manual.text. +Online documentation can be found at http://buildroot.org/docs.html + +To build and use the buildroot stuff, do the following: + +1) run 'make menuconfig' +2) select the target architecture and the packages you wish to compile +3) run 'make' +4) wait while it compiles +5) find the kernel, bootloader, root filesystem, etc. in output/images + +You do not need to be root to build or run buildroot. Have fun! + +Buildroot comes with a basic configuration for a number of boards. Run +'make list-defconfigs' to view the list of provided configurations. + +Please feed suggestions, bug reports, insults, and bribes back to the +buildroot mailing list: buildroot@buildroot.org +You can also find us on #buildroot on Freenode IRC. + +If you would like to contribute patches, please read +https://buildroot.org/manual.html#submitting-patches diff --git a/features/buildroot/arch/Config.in b/features/buildroot/arch/Config.in new file mode 100644 index 00000000..94bd2150 --- /dev/null +++ b/features/buildroot/arch/Config.in @@ -0,0 +1,472 @@ +menu "Target options" + +config BR2_ARCH_IS_64 + bool + +config BR2_KERNEL_64_USERLAND_32 + bool + +config BR2_SOFT_FLOAT + bool + +config BR2_ARCH_HAS_MMU_MANDATORY + bool + +config BR2_ARCH_HAS_MMU_OPTIONAL + bool + +choice + prompt "Target Architecture" + default BR2_i386 + help + Select the target architecture family to build for. + +config BR2_arcle + bool "ARC (little endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Synopsys' DesignWare ARC Processor Cores are a family of + 32-bit CPUs that can be used from deeply embedded to high + performance host applications. Little endian. + +config BR2_arceb + bool "ARC (big endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Synopsys' DesignWare ARC Processor Cores are a family of + 32-bit CPUs that can be used from deeply embedded to high + performance host applications. Big endian. + +config BR2_arm + bool "ARM (little endian)" + # MMU support is set by the subarchitecture file, arch/Config.in.arm + help + ARM is a 32-bit reduced instruction set computer (RISC) + instruction set architecture (ISA) developed by ARM Holdings. + Little endian. + http://www.arm.com/ + http://en.wikipedia.org/wiki/ARM + +config BR2_armeb + bool "ARM (big endian)" + # MMU support is set by the subarchitecture file, arch/Config.in.arm + help + ARM is a 32-bit reduced instruction set computer (RISC) + instruction set architecture (ISA) developed by ARM Holdings. + Big endian. + http://www.arm.com/ + http://en.wikipedia.org/wiki/ARM + +config BR2_aarch64 + bool "AArch64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + Aarch64 is a 64-bit architecture developed by ARM Holdings. + http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php + http://en.wikipedia.org/wiki/ARM + +config BR2_aarch64_be + bool "AArch64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + Aarch64 is a 64-bit architecture developed by ARM Holdings. + http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php + http://en.wikipedia.org/wiki/ARM + +config BR2_csky + bool "csky" + select BR2_ARCH_HAS_MMU_MANDATORY + # Most variants are supported by gcc-9+, except one that is + # handled as a special exception in package/gcc/Config.in.host + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + help + csky is processor IP from china. + http://www.c-sky.com/ + http://www.github.com/c-sky + +config BR2_i386 + bool "i386" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Intel i386 architecture compatible microprocessor + http://en.wikipedia.org/wiki/I386 + +config BR2_m68k + bool "m68k" + # MMU support is set by the subarchitecture file, arch/Config.in.m68k + help + Motorola 68000 family microprocessor + http://en.wikipedia.org/wiki/M68k + +config BR2_microblazeel + bool "Microblaze AXI (little endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Soft processor core designed for Xilinx FPGAs from Xilinx. AXI + bus based architecture (little endian) + http://www.xilinx.com + http://en.wikipedia.org/wiki/Microblaze + +config BR2_microblazebe + bool "Microblaze non-AXI (big endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Soft processor core designed for Xilinx FPGAs from Xilinx. PLB + bus based architecture (non-AXI, big endian) + http://www.xilinx.com + http://en.wikipedia.org/wiki/Microblaze + +config BR2_mips + bool "MIPS (big endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Big + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mipsel + bool "MIPS (little endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Little + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mips64 + bool "MIPS64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Big + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mips64el + bool "MIPS64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Little + endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_nds32 + bool "nds32" + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_ARCH_HAS_MMU_MANDATORY + help + nds32 is a 32-bit architecture developed by Andes Technology. + https://en.wikipedia.org/wiki/Andes_Technology + +config BR2_nios2 + bool "Nios II" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Nios II is a soft core processor from Altera Corporation. + http://www.altera.com/ + http://en.wikipedia.org/wiki/Nios_II + +config BR2_or1k + bool "OpenRISC" + select BR2_ARCH_HAS_MMU_MANDATORY + help + OpenRISC is a free and open processor for embedded system. + http://openrisc.io + +config BR2_powerpc + bool "PowerPC" + select BR2_ARCH_HAS_MMU_MANDATORY + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64 + bool "PowerPC64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64le + bool "PowerPC64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Little endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_riscv + bool "RISCV" + select BR2_ARCH_HAS_MMU_MANDATORY + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + help + RISC-V is an open, free Instruction Set Architecture created + by the UC Berkeley Architecture Research group and supported + and promoted by RISC-V Foundation. + https://riscv.org/ + https://en.wikipedia.org/wiki/RISC-V + +config BR2_sh + bool "SuperH" + select BR2_ARCH_HAS_MMU_OPTIONAL + help + SuperH (or SH) is a 32-bit reduced instruction set computer + (RISC) instruction set architecture (ISA) developed by + Hitachi. + http://www.hitachi.com/ + http://en.wikipedia.org/wiki/SuperH + +config BR2_sparc + bool "SPARC" + select BR2_ARCH_HAS_MMU_MANDATORY + help + SPARC (from Scalable Processor Architecture) is a RISC + instruction set architecture (ISA) developed by Sun + Microsystems. + http://www.oracle.com/sun + http://en.wikipedia.org/wiki/Sparc + +config BR2_sparc64 + bool "SPARC64" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + SPARC (from Scalable Processor Architecture) is a RISC + instruction set architecture (ISA) developed by Sun + Microsystems. + http://www.oracle.com/sun + http://en.wikipedia.org/wiki/Sparc + +config BR2_x86_64 + bool "x86_64" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + x86-64 is an extension of the x86 instruction set (Intel i386 + architecture compatible microprocessor). + http://en.wikipedia.org/wiki/X86_64 + +config BR2_xtensa + bool "Xtensa" + # MMU support is set by the subarchitecture file, arch/Config.in.xtensa + help + Xtensa is a Tensilica processor IP architecture. + http://en.wikipedia.org/wiki/Xtensa + http://www.tensilica.com/ + +endchoice + +# For some architectures or specific cores, our internal toolchain +# backend is not suitable (like, missing support in upstream gcc, or +# no ChipCo fork exists...) +config BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + bool + +config BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT + bool + default y if !BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + +# The following symbols are selected by the individual +# Config.in.$ARCH files +config BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + bool + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 + +# The following string values are defined by the individual +# Config.in.$ARCH files +config BR2_ARCH + string + +config BR2_ENDIAN + string + +config BR2_GCC_TARGET_ARCH + string + +config BR2_GCC_TARGET_ABI + string + +config BR2_GCC_TARGET_NAN + string + +config BR2_GCC_TARGET_FP32_MODE + string + +config BR2_GCC_TARGET_CPU + string + +# The value of this option will be passed as --with-fpu= when +# building gcc (internal backend) or -mfpu= in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_FPU + string + +# The value of this option will be passed as --with-float= when +# building gcc (internal backend) or -mfloat-abi= in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_FLOAT_ABI + string + +# The value of this option will be passed as --with-mode= when +# building gcc (internal backend) or -m in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_MODE + string + +# Must be selected by binary formats that support shared libraries. +config BR2_BINFMT_SUPPORTS_SHARED + bool + +# Must match the name of the architecture from readelf point of view, +# i.e the "Machine:" field of readelf output. See get_machine_name() +# in binutils/readelf.c for the list of possible values. +config BR2_READELF_ARCH_NAME + string + +# Set up target binary format +choice + prompt "Target Binary Format" + default BR2_BINFMT_ELF if BR2_USE_MMU + default BR2_BINFMT_FLAT + +config BR2_BINFMT_ELF + bool "ELF" + depends on BR2_USE_MMU + select BR2_BINFMT_SUPPORTS_SHARED + help + ELF (Executable and Linkable Format) is a format for libraries + and executables used across different architectures and + operating systems. + +config BR2_BINFMT_FLAT + bool "FLAT" + depends on !BR2_USE_MMU + help + FLAT binary is a relatively simple and lightweight executable + format based on the original a.out format. It is widely used + in environment where no MMU is available. + +endchoice + +# Set up flat binary type +choice + prompt "FLAT Binary type" + default BR2_BINFMT_FLAT_ONE + depends on BR2_BINFMT_FLAT + +config BR2_BINFMT_FLAT_ONE + bool "One memory region" + help + All segments are linked into one memory region. + +config BR2_BINFMT_FLAT_SHARED + bool "Shared binary" + depends on BR2_m68k + # Even though this really generates shared binaries, there is no libdl + # and dlopen() cannot be used. So packages that require shared + # libraries cannot be built. Therefore, we don't select + # BR2_BINFMT_SUPPORTS_SHARED and therefore force BR2_STATIC_LIBS. + # Although this adds -static to the compilation, that's not a problem + # because the -mid-shared-library option overrides it. + help + Allow to load and link indiviual FLAT binaries at run time. + +endchoice + +if BR2_arcle || BR2_arceb +source "arch/Config.in.arc" +endif + +if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be +source "arch/Config.in.arm" +endif + +if BR2_csky +source "arch/Config.in.csky" +endif + +if BR2_m68k +source "arch/Config.in.m68k" +endif + +if BR2_microblazeel || BR2_microblazebe +source "arch/Config.in.microblaze" +endif + +if BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el +source "arch/Config.in.mips" +endif + +if BR2_nds32 +source "arch/Config.in.nds32" +endif + +if BR2_nios2 +source "arch/Config.in.nios2" +endif + +if BR2_or1k +source "arch/Config.in.or1k" +endif + +if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le +source "arch/Config.in.powerpc" +endif + +if BR2_riscv +source "arch/Config.in.riscv" +endif + +if BR2_sh +source "arch/Config.in.sh" +endif + +if BR2_sparc || BR2_sparc64 +source "arch/Config.in.sparc" +endif + +if BR2_i386 || BR2_x86_64 +source "arch/Config.in.x86" +endif + +if BR2_xtensa +source "arch/Config.in.xtensa" +endif + +endmenu # Target options diff --git a/features/buildroot/arch/Config.in.arc b/features/buildroot/arch/Config.in.arc new file mode 100644 index 00000000..f7818e7e --- /dev/null +++ b/features/buildroot/arch/Config.in.arc @@ -0,0 +1,102 @@ +choice + prompt "Target CPU" + default BR2_arc770d + depends on BR2_arc + help + Specific CPU to use + +config BR2_arc750d + bool "ARC 750D" + +config BR2_arc770d + bool "ARC 770D" + +config BR2_archs38 + bool "ARC HS38" + help + Generic ARC HS capable of running Linux, i.e. with MMU, + caches and multiplier. Also it corresponds to the default + configuration in older GNU toolchain versions. + + If you're not sure which version of ARC HS core you build for + keep this one. + +config BR2_archs38_full + bool "ARC HS38 with Quad MAC & FPU" + help + Fully featured ARC HS with additional support for + - Dual- and quad multiply and MC oprations + - Double-precision FPU + + It corresponds to "hs38_slc_full" ARC HS template in + ARChitect. + +endchoice + +# Choice of atomic instructions presence +config BR2_ARC_ATOMIC_EXT + bool "Atomic extension (LLOCK/SCOND instructions)" + default y if BR2_arc770d || BR2_archs38 || BR2_archs38_full + +config BR2_ARCH + default "arc" if BR2_arcle + default "arceb" if BR2_arceb + +config BR2_arc + bool + default y if BR2_arcle || BR2_arceb + +config BR2_ENDIAN + default "LITTLE" if BR2_arcle + default "BIG" if BR2_arceb + +config BR2_GCC_TARGET_CPU + default "arc700" if BR2_arc750d + default "arc700" if BR2_arc770d + default "archs" if BR2_archs38 + default "hs38_linux" if BR2_archs38_full + +config BR2_READELF_ARCH_NAME + default "ARCompact" if BR2_arc750d || BR2_arc770d + default "ARCv2" if BR2_archs38 || BR2_archs38_full + +choice + prompt "MMU Page Size" + default BR2_ARC_PAGE_SIZE_8K + help + MMU starting from version 3 (found in ARC 770) and now + version 4 (found in ARC HS38) allows the selection of the + page size during ASIC design creation. + + The following options are available for MMU v3 and v4: 4kB, + 8kB and 16 kB. + + The default is 8 kB (that really matches the only page size + in MMU v2). It is important to build a toolchain with page + size matching the hardware configuration. Otherwise + user-space applications will fail at runtime. + +config BR2_ARC_PAGE_SIZE_4K + bool "4KB" + depends on BR2_arc770d || BR2_archs38 || BR2_archs38_full + +config BR2_ARC_PAGE_SIZE_8K + bool "8KB" + help + This is the one and only option available for MMUv2 and + default value for MMU v3 and v4. + +config BR2_ARC_PAGE_SIZE_16K + bool "16KB" + depends on BR2_arc770d || BR2_archs38 || BR2_archs38_full + +endchoice + +config BR2_ARC_PAGE_SIZE + string + default "4K" if BR2_ARC_PAGE_SIZE_4K + default "8K" if BR2_ARC_PAGE_SIZE_8K + default "16K" if BR2_ARC_PAGE_SIZE_16K + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.arm b/features/buildroot/arch/Config.in.arm new file mode 100644 index 00000000..4c0910e4 --- /dev/null +++ b/features/buildroot/arch/Config.in.arm @@ -0,0 +1,934 @@ +# arm cpu features +config BR2_ARM_CPU_HAS_NEON + bool + +# for some cores, NEON support is optional +config BR2_ARM_CPU_MAYBE_HAS_NEON + bool + +# For some cores, the FPU is optional +config BR2_ARM_CPU_MAYBE_HAS_FPU + bool + +config BR2_ARM_CPU_HAS_FPU + bool + +# for some cores, VFPv2 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV2 + bool + select BR2_ARM_CPU_MAYBE_HAS_FPU + +config BR2_ARM_CPU_HAS_VFPV2 + bool + select BR2_ARM_CPU_HAS_FPU + +# for some cores, VFPv3 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV3 + bool + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + +config BR2_ARM_CPU_HAS_VFPV3 + bool + select BR2_ARM_CPU_HAS_VFPV2 + +# for some cores, VFPv4 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV4 + bool + select BR2_ARM_CPU_MAYBE_HAS_VFPV3 + +config BR2_ARM_CPU_HAS_VFPV4 + bool + select BR2_ARM_CPU_HAS_VFPV3 + +# FPv4 is always optional +config BR2_ARM_CPU_MAYBE_HAS_FPV4 + bool + select BR2_ARM_CPU_MAYBE_HAS_FPU + +config BR2_ARM_CPU_HAS_FPV4 + bool + select BR2_ARM_CPU_HAS_FPU + +# FPv5 is always optional +config BR2_ARM_CPU_MAYBE_HAS_FPV5 + bool + select BR2_ARM_CPU_MAYBE_HAS_FPV4 + +config BR2_ARM_CPU_HAS_FPV5 + bool + select BR2_ARM_CPU_HAS_FPV4 + +config BR2_ARM_CPU_HAS_FP_ARMV8 + bool + select BR2_ARM_CPU_HAS_VFPV4 + +config BR2_ARM_CPU_HAS_ARM + bool + +config BR2_ARM_CPU_HAS_THUMB + bool + +config BR2_ARM_CPU_HAS_THUMB2 + bool + +config BR2_ARM_CPU_ARMV4 + bool + +config BR2_ARM_CPU_ARMV5 + bool + +config BR2_ARM_CPU_ARMV6 + bool + +config BR2_ARM_CPU_ARMV7A + bool + +config BR2_ARM_CPU_ARMV7M + bool + +config BR2_ARM_CPU_ARMV8A + bool + +choice + prompt "Target Architecture Variant" + default BR2_cortex_a53 if BR2_ARCH_IS_64 + default BR2_arm926t + help + Specific CPU variant to use + +if !BR2_ARCH_IS_64 +comment "armv4 cores" +config BR2_arm920t + bool "arm920t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm922t + bool "arm922t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_fa526 + bool "fa526/626" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_strongarm + bool "strongarm sa110/sa1100" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv5 cores" +config BR2_arm926t + bool "arm926t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV5 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_iwmmxt + bool "iwmmxt" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV5 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_xscale + bool "xscale" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV5 + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv6 cores" +config BR2_arm1136j_s + bool "arm1136j-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm1136jf_s + bool "arm1136jf-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm1176jz_s + bool "arm1176jz-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm1176jzf_s + bool "arm1176jzf-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm11mpcore + bool "mpcore" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv7a cores" +config BR2_cortex_a5 + bool "cortex-A5" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_MAYBE_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a7 + bool "cortex-A7" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a8 + bool "cortex-A8" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV3 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a9 + bool "cortex-A9" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_MAYBE_HAS_VFPV3 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a12 + bool "cortex-A12" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a15 + bool "cortex-A15" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a15_a7 + bool "cortex-A15/A7 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_cortex_a17 + bool "cortex-A17" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_cortex_a17_a7 + bool "cortex-A17/A7 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_pj4 + bool "pj4" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV3 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv7m cores" +config BR2_cortex_m3 + bool "cortex-M3" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7M +config BR2_cortex_m4 + bool "cortex-M4" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_MAYBE_HAS_FPV4 + select BR2_ARM_CPU_ARMV7M +config BR2_cortex_m7 + bool "cortex-M7" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_MAYBE_HAS_FPV5 + select BR2_ARM_CPU_ARMV7M + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +endif # !BR2_ARCH_IS_64 + +comment "armv8 cores" +config BR2_cortex_a32 + bool "cortex-A32" + depends on !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a35 + bool "cortex-A35" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a53 + bool "cortex-A53" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a57 + bool "cortex-A57" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a57_a53 + bool "cortex-A57/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a72 + bool "cortex-A72" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_cortex_a72_a53 + bool "cortex-A72/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a73 + bool "cortex-A73" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_cortex_a73_a35 + bool "cortex-A73/A35 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_cortex_a73_a53 + bool "cortex-A73/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_emag + bool "emag" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_exynos_m1 + bool "exynos-m1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_falkor + bool "falkor" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_phecda + bool "phecda" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_qdf24xx + bool "qdf24xx" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_thunderx + bool "thunderx (aka octeontx)" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_thunderxt81 + bool "thunderxt81 (aka octeontx81)" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt83 + bool "thunderxt83 (aka octeontx83)" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt88 + bool "thunderxt88" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt88p1 + bool "thunderxt88p1" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_xgene1 + bool "xgene1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +comment "armv8.1a cores" +config BR2_thunderx2t99 + bool "thunderx2t99" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderx2t99p1 + bool "thunderx2t99p1" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_vulcan + bool "vulcan" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + +comment "armv8.2a cores" +config BR2_cortex_a55 + bool "cortex-A55" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_cortex_a75 + bool "cortex-A75" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_cortex_a75_a55 + bool "cortex-A75/A55 big.LITTLE" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +config BR2_cortex_a76 + bool "cortex-A76" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_cortex_a76_a55 + bool "cortex-A76/A55 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_neoverse_n1 + bool "neoverse-N1 (aka ares)" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 +config BR2_tsv110 + bool "tsv110" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_9 + +comment "armv8.4a cores" +config BR2_saphira + bool "saphira" + depends on BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_8 +endchoice + +config BR2_ARM_ENABLE_NEON + bool "Enable NEON SIMD extension support" + depends on BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_HAS_NEON + help + For some CPU cores, the NEON SIMD extension is optional. + Select this option if you are certain your particular + implementation has NEON support and you want to use it. + +config BR2_ARM_ENABLE_VFP + bool "Enable VFP extension support" + depends on BR2_ARM_CPU_MAYBE_HAS_FPU + select BR2_ARM_CPU_HAS_FPV5 if BR2_ARM_CPU_MAYBE_HAS_FPV5 + select BR2_ARM_CPU_HAS_FPV4 if BR2_ARM_CPU_MAYBE_HAS_FPV4 + select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4 + select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3 + select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2 + help + For some CPU cores, the VFP extension is optional. Select + this option if you are certain your particular + implementation has VFP support and you want to use it. + +choice + prompt "Target ABI" + default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_FPU + default BR2_ARM_EABI + depends on BR2_arm || BR2_armeb + help + Application Binary Interface to use. The Application Binary + Interface describes the calling conventions (how arguments + are passed to functions, how the return value is passed, how + system calls are made, etc.). + +config BR2_ARM_EABI + bool "EABI" + help + The EABI is currently the standard ARM ABI, which is used in + most projects. It supports both the 'soft' floating point + model (in which floating point instructions are emulated in + software) and the 'softfp' floating point model (in which + floating point instructions are executed using an hardware + floating point unit, but floating point arguments to + functions are passed in integer registers). + + The 'softfp' floating point model is link-compatible with + the 'soft' floating point model, i.e you can link a library + built 'soft' with some other code built 'softfp'. + + However, passing the floating point arguments in integer + registers is a bit inefficient, so if your ARM processor has + a floating point unit, and you don't have pre-compiled + 'soft' or 'softfp' code, using the EABIhf ABI will provide + better floating point performances. + + If your processor does not have a floating point unit, then + you must use this ABI. + +config BR2_ARM_EABIHF + bool "EABIhf" + depends on BR2_ARM_CPU_HAS_FPU + help + The EABIhf is an extension of EABI which supports the 'hard' + floating point model. This model uses the floating point + unit to execute floating point instructions, and passes + floating point arguments in floating point registers. + + It is more efficient than EABI for floating point related + workload. However, it does not allow to link against code + that has been pre-built for the 'soft' or 'softfp' floating + point models. + + If your processor has a floating point unit, and you don't + depend on existing pre-compiled code, this option is most + likely the best choice. + +endchoice + +choice + prompt "Floating point strategy" + default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8 + default BR2_ARM_FPU_FPV5D16 if BR2_ARM_CPU_HAS_FPV5 + default BR2_ARM_FPU_FPV4D16 if BR2_ARM_CPU_HAS_FPV4 + default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4 + default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3 + default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2 + default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_FPU + +config BR2_ARM_SOFT_FLOAT + bool "Soft float" + depends on BR2_ARM_EABI + select BR2_SOFT_FLOAT + help + This option allows to use software emulated floating + point. It should be used for ARM cores that do not include a + Vector Floating Point unit, such as ARMv5 cores (ARM926 for + example) or certain ARMv6 cores. + +config BR2_ARM_FPU_VFPV2 + bool "VFPv2" + depends on BR2_ARM_CPU_HAS_VFPV2 + help + This option allows to use the VFPv2 floating point unit, as + available in some ARMv5 processors (ARM926EJ-S) and some + ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11 + MPCore). + + Note that this option is also safe to use for newer cores + such as Cortex-A, because the VFPv3 and VFPv4 units are + backward compatible with VFPv2. + +config BR2_ARM_FPU_VFPV3 + bool "VFPv3" + depends on BR2_ARM_CPU_HAS_VFPV3 + help + This option allows to use the VFPv3 floating point unit, as + available in some ARMv7 processors (Cortex-A{8, 9}). This + option requires a VFPv3 unit that has 32 double-precision + registers, which is not necessarily the case in all SOCs + based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16 + instead, which is guaranteed to work on all Cortex-A{8, 9}. + + Note that this option is also safe to use for newer cores + that have a VFPv4 unit, because VFPv4 is backward compatible + with VFPv3. They must of course also have 32 + double-precision registers. + +config BR2_ARM_FPU_VFPV3D16 + bool "VFPv3-D16" + depends on BR2_ARM_CPU_HAS_VFPV3 + help + This option allows to use the VFPv3 floating point unit, as + available in some ARMv7 processors (Cortex-A{8, 9}). This + option requires a VFPv3 unit that has 16 double-precision + registers, which is generally the case in all SOCs based on + Cortex-A{8, 9}, even though VFPv3 is technically optional on + Cortex-A9. This is the safest option for those cores. + + Note that this option is also safe to use for newer cores + such that have a VFPv4 unit, because the VFPv4 is backward + compatible with VFPv3. + +config BR2_ARM_FPU_VFPV4 + bool "VFPv4" + depends on BR2_ARM_CPU_HAS_VFPV4 + help + This option allows to use the VFPv4 floating point unit, as + available in some ARMv7 processors (Cortex-A{5, 7, 12, + 15}). This option requires a VFPv4 unit that has 32 + double-precision registers, which is not necessarily the + case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're + unsure, you should probably use VFPv4-D16 instead. + + Note that if you want binary code that works on all ARMv7 + cores, including the earlier Cortex-A{8, 9}, you should + instead select VFPv3. + +config BR2_ARM_FPU_VFPV4D16 + bool "VFPv4-D16" + depends on BR2_ARM_CPU_HAS_VFPV4 + help + This option allows to use the VFPv4 floating point unit, as + available in some ARMv7 processors (Cortex-A{5, 7, 12, + 15}). This option requires a VFPv4 unit that has 16 + double-precision registers, which is always available on + Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and + Cortex-A7. + + Note that if you want binary code that works on all ARMv7 + cores, including the earlier Cortex-A{8, 9}, you should + instead select VFPv3-D16. + +config BR2_ARM_FPU_NEON + bool "NEON" + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use the NEON SIMD unit, as available + in some ARMv7 processors, as a floating-point unit. It + should however be noted that using NEON for floating point + operations doesn't provide a complete compatibility with the + IEEE 754. + +config BR2_ARM_FPU_NEON_VFPV4 + bool "NEON/VFPv4" + depends on BR2_ARM_CPU_HAS_VFPV4 + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use both the VFPv4 and the NEON SIMD + units for floating point operations. Note that some ARMv7 + cores do not necessarily have VFPv4 and/or NEON support, for + example on Cortex-A5 and Cortex-A7, support for VFPv4 and + NEON is optional. + +config BR2_ARM_FPU_FPV4D16 + bool "FPv4-D16" + depends on BR2_ARM_CPU_HAS_FPV4 + help + This option allows to use the FPv4-SP (single precision) + floating point unit, as available in some ARMv7m processors + (Cortex-M4). + +config BR2_ARM_FPU_FPV5D16 + bool "FPv5-D16" + depends on BR2_ARM_CPU_HAS_FPV5 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + help + This option allows to use the FPv5-SP (single precision) + floating point unit, as available in some ARMv7m processors + (Cortex-M7). + + Note that if you want binary code that works on the earlier + Cortex-M4, you should instead select FPv4-D16. + +config BR2_ARM_FPU_FPV5DPD16 + bool "FPv5-DP-D16" + depends on BR2_ARM_CPU_HAS_FPV5 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + help + This option allows to use the FPv5-DP (double precision) + floating point unit, as available in some ARMv7m processors + (Cortex-M7). + + Note that if you want binary code that works on the earlier + Cortex-M4, you should instead select FPv4-D16. + +config BR2_ARM_FPU_FP_ARMV8 + bool "FP-ARMv8" + depends on BR2_ARM_CPU_HAS_FP_ARMV8 + help + This option allows to use the ARMv8 floating point unit. + +config BR2_ARM_FPU_NEON_FP_ARMV8 + bool "NEON/FP-ARMv8" + depends on BR2_ARM_CPU_HAS_FP_ARMV8 + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use both the ARMv8 floating point unit + and the NEON SIMD unit for floating point operations. + +endchoice + +choice + prompt "ARM instruction set" + depends on BR2_arm || BR2_armeb + +config BR2_ARM_INSTRUCTIONS_ARM + bool "ARM" + depends on BR2_ARM_CPU_HAS_ARM + help + This option instructs the compiler to generate regular ARM + instructions, that are all 32 bits wide. + +config BR2_ARM_INSTRUCTIONS_THUMB + bool "Thumb" + depends on BR2_ARM_CPU_HAS_THUMB + # Thumb-1 and VFP are not compatible + depends on BR2_ARM_SOFT_FLOAT + help + This option instructions the compiler to generate Thumb + instructions, which allows to mix 16 bits instructions and + 32 bits instructions. This generally provides a much smaller + compiled binary size. + +comment "Thumb1 is not compatible with VFP" + depends on BR2_ARM_CPU_HAS_THUMB + depends on !BR2_ARM_SOFT_FLOAT + +config BR2_ARM_INSTRUCTIONS_THUMB2 + bool "Thumb2" + depends on BR2_ARM_CPU_HAS_THUMB2 + help + This option instructions the compiler to generate Thumb2 + instructions, which allows to mix 16 bits instructions and + 32 bits instructions. This generally provides a much smaller + compiled binary size. + +endchoice + +config BR2_ARCH + default "arm" if BR2_arm + default "armeb" if BR2_armeb + default "aarch64" if BR2_aarch64 + default "aarch64_be" if BR2_aarch64_be + +config BR2_ENDIAN + default "LITTLE" if (BR2_arm || BR2_aarch64) + default "BIG" if (BR2_armeb || BR2_aarch64_be) + +config BR2_GCC_TARGET_CPU + # armv4 + default "arm920t" if BR2_arm920t + default "arm922t" if BR2_arm922t + default "fa526" if BR2_fa526 + default "strongarm" if BR2_strongarm + # armv5 + default "arm926ej-s" if BR2_arm926t + default "iwmmxt" if BR2_iwmmxt + default "xscale" if BR2_xscale + # armv6 + default "arm1136j-s" if BR2_arm1136j_s + default "arm1136jf-s" if BR2_arm1136jf_s + default "arm1176jz-s" if BR2_arm1176jz_s + default "arm1176jzf-s" if BR2_arm1176jzf_s + default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2 + default "mpcorenovfp" if BR2_arm11mpcore + # armv7a + default "cortex-a5" if BR2_cortex_a5 + default "cortex-a7" if BR2_cortex_a7 + default "cortex-a8" if BR2_cortex_a8 + default "cortex-a9" if BR2_cortex_a9 + default "cortex-a12" if BR2_cortex_a12 + default "cortex-a15" if BR2_cortex_a15 + default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7 + default "cortex-a17" if BR2_cortex_a17 + default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7 + default "marvell-pj4" if BR2_pj4 + # armv7m + default "cortex-m3" if BR2_cortex_m3 + default "cortex-m4" if BR2_cortex_m4 + default "cortex-m7" if BR2_cortex_m7 + # armv8a + default "cortex-a32" if BR2_cortex_a32 + default "cortex-a35" if BR2_cortex_a35 + default "cortex-a53" if BR2_cortex_a53 + default "cortex-a57" if BR2_cortex_a57 + default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53 + default "cortex-a72" if BR2_cortex_a72 + default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53 + default "cortex-a73" if BR2_cortex_a73 + default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35 + default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53 + default "emag" if BR2_emag + default "exynos-m1" if BR2_exynos_m1 + default "falkor" if BR2_falkor + default "phecda" if BR2_phecda + default "qdf24xx" if BR2_qdf24xx + default "thunderx" if BR2_thunderx && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "octeontx" if BR2_thunderx && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "thunderxt81" if BR2_thunderxt81 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "octeontx81" if BR2_thunderxt81 && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "thunderxt83" if BR2_thunderxt83 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "octeontx83" if BR2_thunderxt83 && BR2_TOOLCHAIN_GCC_AT_LEAST_9 + default "thunderxt88" if BR2_thunderxt88 + default "thunderxt88p1" if BR2_thunderxt88p1 + default "xgene1" if BR2_xgene1 + # armv8.1a + default "thunderx2t99" if BR2_thunderx2t99 + default "thunderx2t99p1" if BR2_thunderx2t99p1 + default "vulcan" if BR2_vulcan + # armv8.2a + default "cortex-a55" if BR2_cortex_a55 + default "cortex-a75" if BR2_cortex_a75 + default "cortex-a75.cortex-a55" if BR2_cortex_a75_a55 + default "cortex-a76" if BR2_cortex_a76 + default "cortex-a76.cortex-a55" if BR2_cortex_a76_a55 + default "neoverse-n1" if BR2_neoverse_n1 + default "tsv110" if BR2_tsv110 + # armv8.4a + default "saphira" if BR2_saphira + +config BR2_GCC_TARGET_ABI + default "aapcs-linux" if BR2_arm || BR2_armeb + default "lp64" if BR2_aarch64 || BR2_aarch64_be + +config BR2_GCC_TARGET_FPU + default "vfp" if BR2_ARM_FPU_VFPV2 + default "vfpv3" if BR2_ARM_FPU_VFPV3 + default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16 + default "vfpv4" if BR2_ARM_FPU_VFPV4 + default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16 + default "neon" if BR2_ARM_FPU_NEON + default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4 + default "fpv4-sp-d16" if BR2_ARM_FPU_FPV4D16 + default "fpv5-sp-d16" if BR2_ARM_FPU_FPV5D16 + default "fpv5-d16" if BR2_ARM_FPU_FPV5DPD16 + default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8 + default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8 + depends on BR2_arm || BR2_armeb + +config BR2_GCC_TARGET_FLOAT_ABI + default "soft" if BR2_ARM_SOFT_FLOAT + default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI + default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF + +config BR2_GCC_TARGET_MODE + default "arm" if BR2_ARM_INSTRUCTIONS_ARM + default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2 + +config BR2_READELF_ARCH_NAME + default "ARM" if BR2_arm || BR2_armeb + default "AArch64" if BR2_aarch64 || BR2_aarch64_be + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.csky b/features/buildroot/arch/Config.in.csky new file mode 100644 index 00000000..7e2029f7 --- /dev/null +++ b/features/buildroot/arch/Config.in.csky @@ -0,0 +1,49 @@ +choice + prompt "Target Architecture Variant" + default BR2_ck610 + help + Specific CPU variant to use + +config BR2_ck610 + # Not supported by upstream gcc <= 9, and handled as a special + # exception in package/gcc/Config.in.host + bool "ck610" + +config BR2_ck807 + bool "ck807" + +config BR2_ck810 + bool "ck810" + +config BR2_ck860 + bool "ck860" + +endchoice + +config BR2_CSKY_FPU + bool "Enable FPU coprocessor" + depends on BR2_ck810 || BR2_ck807 || BR2_ck860 + help + You can say N here if your C-SKY CPU doesn't have a + Floating-Point Coprocessor or if you don't need FPU support + for your user-space programs. + +config BR2_CSKY_VDSP + bool "Enable VDSP enhanced instructions Co-processor" + depends on BR2_CSKY_FPU + +config BR2_GCC_TARGET_FLOAT_ABI + default "soft" if !BR2_CSKY_FPU + default "hard" if BR2_CSKY_FPU + +config BR2_ARCH + default "csky" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "CSKY" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.m68k b/features/buildroot/arch/Config.in.m68k new file mode 100644 index 00000000..275f47f1 --- /dev/null +++ b/features/buildroot/arch/Config.in.m68k @@ -0,0 +1,43 @@ +config BR2_ARCH + default "m68k" if BR2_m68k + +config BR2_ENDIAN + default "BIG" + +# symbols used to distinguish between m68k and coldfire +# for gcc multilib +config BR2_m68k_m68k + bool + +config BR2_m68k_cf + bool + +# coldfire variants will be added later +choice + prompt "Target CPU" + default BR2_m68k_68040 + depends on BR2_m68k + help + Specific CPU variant to use + +config BR2_m68k_68040 + bool "68040" + select BR2_m68k_m68k + select BR2_ARCH_HAS_MMU_MANDATORY + +config BR2_m68k_cf5208 + bool "5208" + select BR2_m68k_cf + select BR2_SOFT_FLOAT + +endchoice + +config BR2_GCC_TARGET_CPU + default "68040" if BR2_m68k_68040 + default "5208" if BR2_m68k_cf5208 + +config BR2_READELF_ARCH_NAME + default "MC68000" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.microblaze b/features/buildroot/arch/Config.in.microblaze new file mode 100644 index 00000000..5fe2906d --- /dev/null +++ b/features/buildroot/arch/Config.in.microblaze @@ -0,0 +1,17 @@ +config BR2_ARCH + default "microblazeel" if BR2_microblazeel + default "microblaze" if BR2_microblazebe + +config BR2_ENDIAN + default "LITTLE" if BR2_microblazeel + default "BIG" if BR2_microblazebe + +config BR2_READELF_ARCH_NAME + default "Xilinx MicroBlaze" + +config BR2_microblaze + bool + default y if BR2_microblazeel || BR2_microblazebe + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.mips b/features/buildroot/arch/Config.in.mips new file mode 100644 index 00000000..619456c2 --- /dev/null +++ b/features/buildroot/arch/Config.in.mips @@ -0,0 +1,276 @@ +# mips default CPU ISAs +config BR2_MIPS_CPU_MIPS32 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R2 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R3 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS32R6 + bool + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS64 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R2 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R3 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS64R6 + bool + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +choice + prompt "Target Architecture Variant" + default BR2_mips_32 if BR2_mips || BR2_mipsel + default BR2_mips_64 if BR2_mips64 || BR2_mips64el + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + help + Specific CPU variant to use + + 64bit capable: 64, 64r2, 64r3, 64r5, 64r6 + non-64bit capable: 32, 32r2, 32r3, 32r5, 32r6 + +config BR2_mips_32 + bool "Generic MIPS32" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32 +config BR2_mips_32r2 + bool "Generic MIPS32R2" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 +config BR2_mips_32r3 + bool "Generic MIPS32R3" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R3 +config BR2_mips_32r5 + bool "Generic MIPS32R5" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 +config BR2_mips_32r6 + bool "Generic MIPS32R6" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_interaptiv + bool "interAptiv" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_m5150 + bool "M5150" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_m6250 + bool "M6250" + depends on !BR2_ARCH_IS_64 + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_p5600 + bool "P5600" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 + select BR2_MIPS_NAN_2008 +config BR2_mips_xburst + bool "XBurst" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 + help + The Ingenic XBurst is a MIPS32R2 microprocessor. It has a + bug in the FPU that can generate incorrect results in + certain cases. The problem shows up when you have several + fused madd instructions in sequence with dependant + operands. This requires the -mno-fused-madd compiler option + to be used in order to prevent emitting these instructions. + + See http://www.ingenic.com/en/?xburst.html +config BR2_mips_64 + bool "Generic MIPS64" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64 +config BR2_mips_64r2 + bool "Generic MIPS64R2" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R2 +config BR2_mips_64r3 + bool "Generic MIPS64R3" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R3 +config BR2_mips_64r5 + bool "Generic MIPS64R5" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R5 +config BR2_mips_64r6 + bool "Generic MIPS64R6" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 +config BR2_mips_i6400 + bool "I6400" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_octeon2 + bool "Octeon II" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R2 + help + Marvell (formerly Cavium Networks) Octeon II CN60XX + processors. +config BR2_mips_octeon3 + bool "Octeon III" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R3 + help + Marvell (formerly Cavium Networks) Octeon III CN7XXX + processors. +config BR2_mips_p6600 + bool "P6600" + depends on BR2_ARCH_IS_64 + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_MIPS_CPU_MIPS64R6 +endchoice + +choice + prompt "Target ABI" + default BR2_MIPS_NABI32 + depends on BR2_mips64 || BR2_mips64el + + help + Application Binary Interface to use + +config BR2_MIPS_NABI32 + bool "n32" + depends on BR2_ARCH_IS_64 + select BR2_KERNEL_64_USERLAND_32 +config BR2_MIPS_NABI64 + bool "n64" + depends on BR2_ARCH_IS_64 +endchoice + +config BR2_MIPS_SOFT_FLOAT + bool "Use soft-float" + default y + depends on !BR2_mips_octeon3 # hard-float only + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + +choice + prompt "FP mode" + default BR2_MIPS_FP32_MODE_XX + depends on !BR2_ARCH_IS_64 && !BR2_MIPS_SOFT_FLOAT + help + MIPS32 supports different FP modes (32,xx,64). Information + about FP modes can be found here: + https://sourceware.org/binutils/docs/as/MIPS-Options.html + https://dmz-portal.imgtec.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#5._Generating_modeless_code + +config BR2_MIPS_FP32_MODE_32 + bool "32" + depends on !BR2_MIPS_CPU_MIPS32R6 + +config BR2_MIPS_FP32_MODE_XX + bool "xx" + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +config BR2_MIPS_FP32_MODE_64 + bool "64" + depends on !BR2_MIPS_CPU_MIPS32 +endchoice + +config BR2_GCC_TARGET_FP32_MODE + default "32" if BR2_MIPS_FP32_MODE_32 + default "xx" if BR2_MIPS_FP32_MODE_XX + default "64" if BR2_MIPS_FP32_MODE_64 + +config BR2_MIPS_NAN_LEGACY + bool + +config BR2_MIPS_NAN_2008 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + +choice + prompt "Target NaN" + default BR2_MIPS_ENABLE_NAN_2008 + depends on BR2_mips_32r5 || BR2_mips_64r5 + help + MIPS supports two different NaN encodings, legacy and 2008. + Information about MIPS NaN encodings can be found here: + https://sourceware.org/binutils/docs/as/MIPS-NaN-Encodings.html + +config BR2_MIPS_ENABLE_NAN_LEGACY + bool "legacy" + select BR2_MIPS_NAN_LEGACY + +config BR2_MIPS_ENABLE_NAN_2008 + bool "2008" + depends on !BR2_MIPS_SOFT_FLOAT + select BR2_MIPS_NAN_2008 +endchoice + +config BR2_GCC_TARGET_NAN + default "legacy" if BR2_MIPS_NAN_LEGACY + default "2008" if BR2_MIPS_NAN_2008 + +config BR2_ARCH + default "mips" if BR2_mips + default "mipsel" if BR2_mipsel + default "mips64" if BR2_mips64 + default "mips64el" if BR2_mips64el + +config BR2_ENDIAN + default "LITTLE" if BR2_mipsel || BR2_mips64el + default "BIG" if BR2_mips || BR2_mips64 + +config BR2_GCC_TARGET_ARCH + default "mips32" if BR2_mips_32 + default "mips32r2" if BR2_mips_32r2 + default "mips32r3" if BR2_mips_32r3 + default "mips32r5" if BR2_mips_32r5 + default "mips32r6" if BR2_mips_32r6 + default "interaptiv" if BR2_mips_interaptiv + default "m5101" if BR2_mips_m5150 + default "m6201" if BR2_mips_m6250 + default "p5600" if BR2_mips_p5600 + default "mips32r2" if BR2_mips_xburst + default "mips64" if BR2_mips_64 + default "mips64r2" if BR2_mips_64r2 + default "mips64r3" if BR2_mips_64r3 + default "mips64r5" if BR2_mips_64r5 + default "mips64r6" if BR2_mips_64r6 + default "i6400" if BR2_mips_i6400 + default "octeon2" if BR2_mips_octeon2 + default "octeon3" if BR2_mips_octeon3 + default "p6600" if BR2_mips_p6600 + +config BR2_MIPS_OABI32 + bool + default y if BR2_mips || BR2_mipsel + +config BR2_GCC_TARGET_ABI + default "32" if BR2_MIPS_OABI32 + default "n32" if BR2_MIPS_NABI32 + default "64" if BR2_MIPS_NABI64 + +config BR2_READELF_ARCH_NAME + default "MIPS R3000" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.nds32 b/features/buildroot/arch/Config.in.nds32 new file mode 100644 index 00000000..322ff49f --- /dev/null +++ b/features/buildroot/arch/Config.in.nds32 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "nds32le" + +config BR2_GCC_TARGET_ARCH + default "v3" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "Andes Technology compact code size embedded RISC processor family" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.nios2 b/features/buildroot/arch/Config.in.nios2 new file mode 100644 index 00000000..aae435fa --- /dev/null +++ b/features/buildroot/arch/Config.in.nios2 @@ -0,0 +1,11 @@ +config BR2_ARCH + default "nios2" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "Altera Nios II" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.or1k b/features/buildroot/arch/Config.in.or1k new file mode 100644 index 00000000..abdf498f --- /dev/null +++ b/features/buildroot/arch/Config.in.or1k @@ -0,0 +1,11 @@ +config BR2_ARCH + default "or1k" + +config BR2_ENDIAN + default "BIG" + +config BR2_READELF_ARCH_NAME + default "OpenRISC 1000" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.powerpc b/features/buildroot/arch/Config.in.powerpc new file mode 100644 index 00000000..56c4b526 --- /dev/null +++ b/features/buildroot/arch/Config.in.powerpc @@ -0,0 +1,213 @@ +config BR2_POWERPC_CPU_HAS_ALTIVEC + bool + +config BR2_POWERPC_CPU_HAS_SPE + bool + +choice + prompt "Target Architecture Variant" + default BR2_generic_powerpc + help + Specific CPU variant to use +config BR2_generic_powerpc + bool "generic" +config BR2_powerpc_401 + bool "401" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_403 + bool "403" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_405 + bool "405" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_405fp + bool "405 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_440 + bool "440" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_440fp + bool "440 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_464 + bool "464" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_464fp + bool "464 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_476 + bool "476" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_476fp + bool "476 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_505 + bool "505" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_601 + bool "601" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_602 + bool "602" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_603 + bool "603" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_603e + bool "603e" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_604 + bool "604" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_604e + bool "604e" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_620 + bool "620" +config BR2_powerpc_630 + bool "630" +config BR2_powerpc_740 + bool "740" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_7400 + bool "7400" + depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_7450 + bool "7450" + depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_750 + bool "750" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_821 + bool "821" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_823 + bool "823" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_860 + bool "860" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_970 + bool "970" + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_8540 + bool "8540 / e500v1" + depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_8548 + bool "8548 / e500v2" + depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_e300c2 + bool "e300c2" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_e300c3 + bool "e300c3" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_e500mc + bool "e500mc" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_e5500 + bool "e5500" + depends on !BR2_powerpc64le +config BR2_powerpc_e6500 + bool "e6500" + depends on !BR2_powerpc64le + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power4 + bool "power4" +config BR2_powerpc_power5 + bool "power5" +config BR2_powerpc_power6 + bool "power6" + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power7 + bool "power7" + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power8 + bool "power8" + select BR2_POWERPC_CPU_HAS_ALTIVEC +endchoice + +choice + prompt "Target ABI" + default BR2_powerpc_SPE if BR2_POWERPC_CPU_HAS_SPE + default BR2_powerpc_CLASSIC + help + Application Binary Interface to use + +config BR2_powerpc_CLASSIC + bool "Classic" + depends on !BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_SPE + bool "SPE" + depends on BR2_POWERPC_CPU_HAS_SPE +endchoice + +config BR2_POWERPC_SOFT_FLOAT + bool "Use soft-float" + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + +config BR2_ARCH + default "powerpc" if BR2_powerpc + default "powerpc64" if BR2_powerpc64 + default "powerpc64le" if BR2_powerpc64le + +config BR2_ENDIAN + default "BIG" if BR2_powerpc || BR2_powerpc64 + default "LITTLE" if BR2_powerpc64le + +config BR2_GCC_TARGET_CPU + default "401" if BR2_powerpc_401 + default "403" if BR2_powerpc_403 + default "405" if BR2_powerpc_405 + default "405fp" if BR2_powerpc_405fp + default "440" if BR2_powerpc_440 + default "440fp" if BR2_powerpc_440fp + default "464" if BR2_powerpc_464 + default "464fp" if BR2_powerpc_464fp + default "476" if BR2_powerpc_476 + default "476fp" if BR2_powerpc_476fp + default "505" if BR2_powerpc_505 + default "601" if BR2_powerpc_601 + default "602" if BR2_powerpc_602 + default "603" if BR2_powerpc_603 + default "603e" if BR2_powerpc_603e + default "604" if BR2_powerpc_604 + default "604e" if BR2_powerpc_604e + default "620" if BR2_powerpc_620 + default "630" if BR2_powerpc_630 + default "740" if BR2_powerpc_740 + default "7400" if BR2_powerpc_7400 + default "7450" if BR2_powerpc_7450 + default "750" if BR2_powerpc_750 + default "821" if BR2_powerpc_821 + default "823" if BR2_powerpc_823 + default "860" if BR2_powerpc_860 + default "970" if BR2_powerpc_970 + default "8540" if BR2_powerpc_8540 + default "8548" if BR2_powerpc_8548 + default "e300c2" if BR2_powerpc_e300c2 + default "e300c3" if BR2_powerpc_e300c3 + default "e500mc" if BR2_powerpc_e500mc + default "e5500" if BR2_powerpc_e5500 + default "e6500" if BR2_powerpc_e6500 + default "power4" if BR2_powerpc_power4 + default "power5" if BR2_powerpc_power5 + default "power6" if BR2_powerpc_power6 + default "power7" if BR2_powerpc_power7 + default "power8" if BR2_powerpc_power8 + +config BR2_READELF_ARCH_NAME + default "PowerPC" if BR2_powerpc + default "PowerPC64" if BR2_powerpc64 || BR2_powerpc64le + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.riscv b/features/buildroot/arch/Config.in.riscv new file mode 100644 index 00000000..bdd26726 --- /dev/null +++ b/features/buildroot/arch/Config.in.riscv @@ -0,0 +1,130 @@ +# RISC-V CPU ISA extensions. + +config BR2_RISCV_ISA_RVI + bool + +config BR2_RISCV_ISA_RVM + bool + +config BR2_RISCV_ISA_RVA + bool + +config BR2_RISCV_ISA_RVF + bool + +config BR2_RISCV_ISA_RVD + bool + +config BR2_RISCV_ISA_RVC + bool + +choice + prompt "Target Architecture Variant" + default BR2_riscv_g + +config BR2_riscv_g + bool "General purpose (G)" + select BR2_RISCV_ISA_RVI + select BR2_RISCV_ISA_RVM + select BR2_RISCV_ISA_RVA + select BR2_RISCV_ISA_RVF + select BR2_RISCV_ISA_RVD + help + General purpose (G) is equivalent to IMAFD. + +config BR2_riscv_custom + bool "Custom architecture" + select BR2_RISCV_ISA_RVI + select BR2_RISCV_ISA_CUSTOM_RVA + +endchoice + +if BR2_riscv_custom + +comment "Instruction Set Extensions" + +config BR2_RISCV_ISA_CUSTOM_RVM + bool "Integer Multiplication and Division (M)" + select BR2_RISCV_ISA_RVM + +config BR2_RISCV_ISA_CUSTOM_RVA + bool "Atomic Instructions (A)" + select BR2_RISCV_ISA_RVA + +config BR2_RISCV_ISA_CUSTOM_RVF + bool "Single-precision Floating-point (F)" + select BR2_RISCV_ISA_RVF + +config BR2_RISCV_ISA_CUSTOM_RVD + bool "Double-precision Floating-point (D)" + depends on BR2_RISCV_ISA_RVF + select BR2_RISCV_ISA_RVD + +config BR2_RISCV_ISA_CUSTOM_RVC + bool "Compressed Instructions (C)" + select BR2_RISCV_ISA_RVC +endif + +choice + prompt "Target Architecture Size" + default BR2_RISCV_64 + +config BR2_RISCV_32 + bool "32-bit" + +config BR2_RISCV_64 + bool "64-bit" + select BR2_ARCH_IS_64 + +endchoice + +choice + prompt "Target ABI" + default BR2_RISCV_ABI_ILP32 if !BR2_ARCH_IS_64 + default BR2_RISCV_ABI_LP64 if BR2_ARCH_IS_64 + +config BR2_RISCV_ABI_ILP32 + bool "ilp32" + depends on !BR2_ARCH_IS_64 + +config BR2_RISCV_ABI_ILP32F + bool "ilp32f" + depends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF + +config BR2_RISCV_ABI_ILP32D + bool "ilp32d" + depends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD + +config BR2_RISCV_ABI_LP64 + bool "lp64" + depends on BR2_ARCH_IS_64 + +config BR2_RISCV_ABI_LP64F + bool "lp64f" + depends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF + +config BR2_RISCV_ABI_LP64D + bool "lp64d" + depends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD +endchoice + +config BR2_ARCH + default "riscv32" if !BR2_ARCH_IS_64 + default "riscv64" if BR2_ARCH_IS_64 + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_ABI + default "ilp32" if BR2_RISCV_ABI_ILP32 + default "ilp32f" if BR2_RISCV_ABI_ILP32F + default "ilp32d" if BR2_RISCV_ABI_ILP32D + default "lp64" if BR2_RISCV_ABI_LP64 + default "lp64f" if BR2_RISCV_ABI_LP64F + default "lp64d" if BR2_RISCV_ABI_LP64D + +config BR2_READELF_ARCH_NAME + default "RISC-V" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.sh b/features/buildroot/arch/Config.in.sh new file mode 100644 index 00000000..b5cce18e --- /dev/null +++ b/features/buildroot/arch/Config.in.sh @@ -0,0 +1,35 @@ +choice + prompt "Target Architecture Variant" + default BR2_sh4 + depends on BR2_sh + help + Specific CPU variant to use + +config BR2_sh2a + bool "sh2a (SH2A big endian)" +config BR2_sh4 + bool "sh4 (SH4 little endian)" +config BR2_sh4eb + bool "sh4eb (SH4 big endian)" +config BR2_sh4a + bool "sh4a (SH4A little endian)" +config BR2_sh4aeb + bool "sh4aeb (SH4A big endian)" +endchoice + +config BR2_ARCH + default "sh2a" if BR2_sh2a + default "sh4" if BR2_sh4 + default "sh4eb" if BR2_sh4eb + default "sh4a" if BR2_sh4a + default "sh4aeb" if BR2_sh4aeb + +config BR2_ENDIAN + default "LITTLE" if BR2_sh4 || BR2_sh4a + default "BIG" if BR2_sh2a || BR2_sh4eb || BR2_sh4aeb + +config BR2_READELF_ARCH_NAME + default "Renesas / SuperH SH" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.sparc b/features/buildroot/arch/Config.in.sparc new file mode 100644 index 00000000..4c4dc617 --- /dev/null +++ b/features/buildroot/arch/Config.in.sparc @@ -0,0 +1,37 @@ +choice + prompt "Target Architecture Variant" + default BR2_sparc_v8 if BR2_sparc + default BR2_sparc_v9 if BR2_sparc64 + depends on BR2_sparc || BR2_sparc64 + help + Specific CPU variant to use + +config BR2_sparc_v8 + bool "v8" + depends on BR2_sparc +config BR2_sparc_leon3 + bool "leon3" + depends on BR2_sparc +config BR2_sparc_v9 + bool "v9" + depends on BR2_sparc64 +endchoice + +config BR2_ARCH + default "sparc" if BR2_sparc + default "sparc64" if BR2_sparc64 + +config BR2_ENDIAN + default "BIG" + +config BR2_GCC_TARGET_CPU + default "leon3" if BR2_sparc_leon3 + default "v8" if BR2_sparc_v8 + default "ultrasparc" if BR2_sparc_v9 + +config BR2_READELF_ARCH_NAME + default "Sparc" if BR2_sparc + default "Sparc v9" if BR2_sparc64 + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.x86 b/features/buildroot/arch/Config.in.x86 new file mode 100644 index 00000000..eb655adb --- /dev/null +++ b/features/buildroot/arch/Config.in.x86 @@ -0,0 +1,306 @@ +# i386/x86_64 cpu features +config BR2_X86_CPU_HAS_MMX + bool +config BR2_X86_CPU_HAS_SSE + bool +config BR2_X86_CPU_HAS_SSE2 + bool +config BR2_X86_CPU_HAS_SSE3 + bool +config BR2_X86_CPU_HAS_SSSE3 + bool +config BR2_X86_CPU_HAS_SSE4 + bool +config BR2_X86_CPU_HAS_SSE42 + bool +config BR2_X86_CPU_HAS_AVX + bool +config BR2_X86_CPU_HAS_AVX2 + bool + +choice + prompt "Target Architecture Variant" + default BR2_x86_i586 if BR2_i386 + depends on BR2_i386 || BR2_x86_64 + help + Specific CPU variant to use + +config BR2_x86_i486 + bool "i486" + depends on !BR2_x86_64 +config BR2_x86_i586 + bool "i586" + depends on !BR2_x86_64 +config BR2_x86_x1000 + bool "x1000" + depends on !BR2_x86_64 + help + The Intel X1000 is a Pentium class microprocessor in the + Quark (sub-Atom) Product Line. The X1000 has a bug on the + lock prefix requiring that prefix must be stripped at build + time. + + See https://en.wikipedia.org/wiki/Intel_Quark + +config BR2_x86_i686 + bool "i686" + depends on !BR2_x86_64 +config BR2_x86_pentiumpro + bool "pentium pro" + depends on !BR2_x86_64 +config BR2_x86_pentium_mmx + bool "pentium MMX" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_pentium_m + bool "pentium mobile" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE +config BR2_x86_pentium2 + bool "pentium2" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_pentium3 + bool "pentium3" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE +config BR2_x86_pentium4 + bool "pentium4" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 +config BR2_x86_prescott + bool "prescott" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_nocona + bool "nocona" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_core2 + bool "core2" + 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_corei7 + bool "corei7" + 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_westmere + bool "westmere" + 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_corei7_avx + bool "corei7-avx" + 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 +config BR2_x86_core_avx2 + bool "core-avx2" + 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 +config BR2_x86_atom + bool "atom" + 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_silvermont + bool "silvermont" + 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_k6 + bool "k6" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_k6_2 + bool "k6-2" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_athlon + bool "athlon" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_athlon_4 + bool "athlon-4" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE +config BR2_x86_opteron + bool "opteron" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 +config BR2_x86_opteron_sse3 + bool "opteron w/ SSE3" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_barcelona + bool "barcelona" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_jaguar + bool "jaguar" + 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 + 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_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 + depends on !BR2_x86_64 +config BR2_x86_c3 + bool "Via/Cyrix C3 (Samuel/Ezra cores)" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_c32 + bool "Via C3-2 (Nehemiah cores)" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE +config BR2_x86_winchip_c6 + bool "IDT Winchip C6" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +config BR2_x86_winchip2 + bool "IDT Winchip 2" + depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX +endchoice + +config BR2_ARCH + default "i486" if BR2_x86_i486 + default "i586" if BR2_x86_i586 + default "i586" if BR2_x86_x1000 + default "i586" if BR2_x86_pentium_mmx + default "i586" if BR2_x86_geode + default "i586" if BR2_x86_c3 + default "i686" if BR2_x86_c32 + default "i586" if BR2_x86_winchip_c6 + default "i586" if BR2_x86_winchip2 + default "i686" if BR2_x86_i686 + default "i686" if BR2_x86_pentium2 + default "i686" if BR2_x86_pentium3 + default "i686" if BR2_x86_pentium4 + default "i686" if BR2_x86_pentium_m + default "i686" if BR2_x86_pentiumpro + default "i686" if BR2_x86_prescott + default "i686" if BR2_x86_nocona && BR2_i386 + default "i686" if BR2_x86_core2 && BR2_i386 + default "i686" if BR2_x86_corei7 && BR2_i386 + default "i686" if BR2_x86_westmere && BR2_i386 + default "i686" if BR2_x86_corei7_avx && BR2_i386 + default "i686" if BR2_x86_core_avx2 && BR2_i386 + default "i686" if BR2_x86_atom && BR2_i386 + default "i686" if BR2_x86_silvermont && BR2_i386 + default "i686" if BR2_x86_opteron && BR2_i386 + default "i686" if BR2_x86_opteron_sse3 && BR2_i386 + default "i686" if BR2_x86_barcelona && BR2_i386 + default "i686" if BR2_x86_jaguar && BR2_i386 + default "i686" if BR2_x86_steamroller && BR2_i386 + default "i686" if BR2_x86_k6 + default "i686" if BR2_x86_k6_2 + default "i686" if BR2_x86_athlon + default "i686" if BR2_x86_athlon_4 + default "x86_64" if BR2_x86_64 + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_ARCH + default "i486" if BR2_x86_i486 + default "i586" if BR2_x86_i586 + default "i586" if BR2_x86_x1000 + default "pentium-mmx" if BR2_x86_pentium_mmx + default "i686" if BR2_x86_i686 + default "pentiumpro" if BR2_x86_pentiumpro + default "pentium-m" if BR2_x86_pentium_m + default "pentium2" if BR2_x86_pentium2 + default "pentium3" if BR2_x86_pentium3 + default "pentium4" if BR2_x86_pentium4 + default "prescott" if BR2_x86_prescott + default "nocona" if BR2_x86_nocona + default "core2" if BR2_x86_core2 + default "corei7" if BR2_x86_corei7 + default "corei7-avx" if BR2_x86_corei7_avx + default "core-avx2" if BR2_x86_core_avx2 + default "atom" if BR2_x86_atom + default "westmere" if BR2_x86_westmere + default "silvermont" if BR2_x86_silvermont + default "k8" if BR2_x86_opteron + default "k8-sse3" if BR2_x86_opteron_sse3 + default "barcelona" if BR2_x86_barcelona + default "btver2" if BR2_x86_jaguar + default "bdver3" if BR2_x86_steamroller + default "k6" if BR2_x86_k6 + default "k6-2" if BR2_x86_k6_2 + default "athlon" if BR2_x86_athlon + default "athlon-4" if BR2_x86_athlon_4 + default "winchip-c6" if BR2_x86_winchip_c6 + default "winchip2" if BR2_x86_winchip2 + default "c3" if BR2_x86_c3 + default "c3-2" if BR2_x86_c32 + default "geode" if BR2_x86_geode + +config BR2_READELF_ARCH_NAME + default "Intel 80386" if BR2_i386 + default "Advanced Micro Devices X86-64" if BR2_x86_64 + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/Config.in.xtensa b/features/buildroot/arch/Config.in.xtensa new file mode 100644 index 00000000..a79d9069 --- /dev/null +++ b/features/buildroot/arch/Config.in.xtensa @@ -0,0 +1,55 @@ +choice + prompt "Target Architecture Variant" + default BR2_xtensa_fsf + depends on BR2_xtensa + +config BR2_XTENSA_CUSTOM + bool "Custom Xtensa processor configuration" + select BR2_ARCH_HAS_MMU_OPTIONAL + +config BR2_xtensa_fsf + bool "fsf - Default configuration" + select BR2_ARCH_HAS_MMU_MANDATORY + +endchoice + +config BR2_XTENSA_OVERLAY_FILE + string "Overlay file for custom configuration" + depends on BR2_XTENSA_CUSTOM + help + Enter the path to the overlay tarball for a custom processor + configuration. + + These overlay files are tar packages with updated + configuration files for various toolchain packages and Xtensa + processor configurations. They are provided by the processor + vendor or directly from Tensilica. + + The path can be either absolute, or relative to the top + directory of buildroot. + +choice + prompt "Target Architecture Endianness" + default BR2_XTENSA_LITTLE_ENDIAN + depends on BR2_XTENSA_CUSTOM + +config BR2_XTENSA_LITTLE_ENDIAN + bool "Little endian" + +config BR2_XTENSA_BIG_ENDIAN + bool "Big endian" + +endchoice + +config BR2_ENDIAN + default "LITTLE" if BR2_XTENSA_LITTLE_ENDIAN + default "BIG" if BR2_xtensa_fsf || BR2_XTENSA_BIG_ENDIAN + +config BR2_ARCH + default "xtensa" if BR2_xtensa + +config BR2_READELF_ARCH_NAME + default "Tensilica Xtensa Processor" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/features/buildroot/arch/arch.mk b/features/buildroot/arch/arch.mk new file mode 100644 index 00000000..289c5a11 --- /dev/null +++ b/features/buildroot/arch/arch.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# Architecture-specific definitions +# +################################################################################ + +# Allow GCC target configuration settings to be optionally +# overwritten by architecture specific makefiles. + +# Makefiles must use the GCC_TARGET_* variables below instead +# of the BR2_GCC_TARGET_* versions. +GCC_TARGET_ARCH := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) +GCC_TARGET_ABI := $(call qstrip,$(BR2_GCC_TARGET_ABI)) +GCC_TARGET_NAN := $(call qstrip,$(BR2_GCC_TARGET_NAN)) +GCC_TARGET_FP32_MODE := $(call qstrip,$(BR2_GCC_TARGET_FP32_MODE)) +GCC_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU)) +GCC_TARGET_FPU := $(call qstrip,$(BR2_GCC_TARGET_FPU)) +GCC_TARGET_FLOAT_ABI := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +GCC_TARGET_MODE := $(call qstrip,$(BR2_GCC_TARGET_MODE)) + +# Include any architecture specific makefiles. +-include $(sort $(wildcard arch/arch.mk.*)) diff --git a/features/buildroot/arch/arch.mk.arc b/features/buildroot/arch/arch.mk.arc new file mode 100644 index 00000000..5fcffb7f --- /dev/null +++ b/features/buildroot/arch/arch.mk.arc @@ -0,0 +1,4 @@ +# -matomic is always required when the ARC core has the atomic extensions +ifeq ($(BR2_arc)$(BR2_ARC_ATOMIC_EXT),yy) +ARCH_TOOLCHAIN_WRAPPER_OPTS = -matomic +endif diff --git a/features/buildroot/arch/arch.mk.csky b/features/buildroot/arch/arch.mk.csky new file mode 100644 index 00000000..fb59ae22 --- /dev/null +++ b/features/buildroot/arch/arch.mk.csky @@ -0,0 +1,26 @@ +# +# Configure the GCC_TARGET_ARCH variable and append the +# appropriate C-SKY ISA extensions. +# + +ifeq ($(BR2_csky),y) + +ifeq ($(BR2_ck610),y) +GCC_TARGET_CPU := ck610 +else ifeq ($(BR2_ck807),y) +GCC_TARGET_CPU := ck807 +else ifeq ($(BR2_ck810),y) +GCC_TARGET_CPU := ck810 +else ifeq ($(BR2_ck860),y) +GCC_TARGET_CPU := ck860 +endif + +ifeq ($(BR2_CSKY_FPU),y) +GCC_TARGET_CPU := $(GCC_TARGET_CPU)f +endif + +ifeq ($(BR2_CSKY_VDSP),y) +GCC_TARGET_CPU := $(GCC_TARGET_CPU)v +endif + +endif diff --git a/features/buildroot/arch/arch.mk.riscv b/features/buildroot/arch/arch.mk.riscv new file mode 100644 index 00000000..f3bf2b34 --- /dev/null +++ b/features/buildroot/arch/arch.mk.riscv @@ -0,0 +1,30 @@ +# +# Configure the GCC_TARGET_ARCH variable and append the +# appropriate RISC-V ISA extensions. +# + +ifeq ($(BR2_riscv),y) + +ifeq ($(BR2_RISCV_64),y) +GCC_TARGET_ARCH := rv64i +else +GCC_TARGET_ARCH := rv32i +endif + +ifeq ($(BR2_RISCV_ISA_RVM),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)m +endif +ifeq ($(BR2_RISCV_ISA_RVA),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)a +endif +ifeq ($(BR2_RISCV_ISA_RVF),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)f +endif +ifeq ($(BR2_RISCV_ISA_RVD),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)d +endif +ifeq ($(BR2_RISCV_ISA_RVC),y) +GCC_TARGET_ARCH := $(GCC_TARGET_ARCH)c +endif + +endif diff --git a/features/buildroot/arch/arch.mk.xtensa b/features/buildroot/arch/arch.mk.xtensa new file mode 100644 index 00000000..fd410f6b --- /dev/null +++ b/features/buildroot/arch/arch.mk.xtensa @@ -0,0 +1,36 @@ +################################################################################ +# This variable can be used by packages that need to extract the overlay. +# +# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not +# using any overlay +# +# Example: +# ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +# tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc +# endif +################################################################################ +BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE)) +ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),) +ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE) +ARCH_XTENSA_OVERLAY_FILE = $($(PKG)_DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE)) +# Do not check that file, we can't know its hash +BR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL)) +else +ARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE) +endif + +################################################################################ +# arch-xtensa-overlay-extract -- extract an extensa overlay +# +# argument 1 is the path in which to extract +# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux, +# u-boot +# +# Example: +# $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc) +################################################################################ +define arch-xtensa-overlay-extract + $(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \ + $(ARCH_XTENSA_OVERLAY_FILE) | \ + $(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2) +endef diff --git a/features/buildroot/board/aarch64-efi/genimage-efi.cfg b/features/buildroot/board/aarch64-efi/genimage-efi.cfg new file mode 100644 index 00000000..f93ab9d6 --- /dev/null +++ b/features/buildroot/board/aarch64-efi/genimage-efi.cfg @@ -0,0 +1,30 @@ +image efi-part.vfat { + vfat { + file startup.nsh { + image = "efi-part/startup.nsh" + } + file EFI { + image = "efi-part/EFI" + } + file Image { + image = "Image" + } + } + size = 32M +} + +image disk.img { + + hdimage { + } + + partition boot { + partition-type = 0xEF + image = "efi-part.vfat" + } + + partition root { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/aarch64-efi/grub.cfg b/features/buildroot/board/aarch64-efi/grub.cfg new file mode 100644 index 00000000..ab88da91 --- /dev/null +++ b/features/buildroot/board/aarch64-efi/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /Image root=/dev/vda2 rootwait console=ttyAMA0 +} diff --git a/features/buildroot/board/aarch64-efi/post-image.sh b/features/buildroot/board/aarch64-efi/post-image.sh new file mode 100755 index 00000000..f0214dc8 --- /dev/null +++ b/features/buildroot/board/aarch64-efi/post-image.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +cp -f ${BOARD_DIR}/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg diff --git a/features/buildroot/board/aarch64-efi/readme.txt b/features/buildroot/board/aarch64-efi/readme.txt new file mode 100644 index 00000000..65a6345b --- /dev/null +++ b/features/buildroot/board/aarch64-efi/readme.txt @@ -0,0 +1,34 @@ + +The aarch64_efi_defconfig allows to build a minimal Linux system that +can boot on all AArch64 servers providing an EFI firmware and ACPI. + +Building and booting +==================== + +$ make aarch64_efi_defconfig +$ make + +The file output/images/disk.img is a complete disk image that can be +booted, it includes the grub2 bootloader, Linux kernel and root +filesystem. + +Testing under Qemu +================== + +This image can also be tested using Qemu: + +qemu-system-aarch64 \ + -M virt \ + -cpu cortex-a57 \ + -m 512 \ + -nographic \ + -bios \ + -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \ + -device virtio-blk-device,drive=hd0 \ + -netdev user,id=eth0 \ + -device virtio-net-device,netdev=eth0 + +Note that needs to point to a valid aarch64 UEFI +firmware image for qemu. +It may be provided by your distribution as a edk2-aarch64 or AAVMF +package, in path such as /usr/share/edk2/aarch64/QEMU_EFI.fd . diff --git a/features/buildroot/board/acmesystems/aria-g25/genimage.cfg b/features/buildroot/board/acmesystems/aria-g25/genimage.cfg new file mode 100644 index 00000000..2e2eb129 --- /dev/null +++ b/features/buildroot/board/acmesystems/aria-g25/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the Acmesystems Aria G25 + +image boot.vfat { + vfat { + file zImage { + image = "zImage" + } + + file at91-ariag25.dtb { + image = "at91-ariag25.dtb" + } + + file boot.bin { + image = "at91sam9x5_aria-sdcardboot-linux-zimage-dt-3.8.6.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/acmesystems/aria-g25/post-image.sh b/features/buildroot/board/acmesystems/aria-g25/post-image.sh new file mode 100755 index 00000000..2846f56d --- /dev/null +++ b/features/buildroot/board/acmesystems/aria-g25/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/acmesystems/aria-g25/readme.txt b/features/buildroot/board/acmesystems/aria-g25/readme.txt new file mode 100644 index 00000000..cb9e9abf --- /dev/null +++ b/features/buildroot/board/acmesystems/aria-g25/readme.txt @@ -0,0 +1,44 @@ +Acme Systems Aria G25 + +Build instructions +================== + +To build an image for the Aria G25 choose the configuration +corresponding to the Aria variant. + +For 128MB RAM variant type: + +$ make acmesystems_aria_g25_128mb_defconfig + +else for 256MB RAM variant type: + +$ make acmesystems_aria_g25_256mb_defconfig + +To customize the configuration choosed type: + +$ make menuconfig + +When you are ready to start building Buildroot type: + +$ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Write the bootable SD card image "sdcard.img" onto an SD card with +"dd" command: + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Assuming your Aria G25 baseboard has a MicroSD socket, for example +with the Terra baseboard, insert the microSD card into the baseboard +slot and power it. + +To get the kernel log messages you can use a DPI cable +(http://www.acmesystems.it/DPI) + +You can find additional informations, tutorials and a very +comprehensive documentation on http://www.acmesystems.it/aria. diff --git a/features/buildroot/board/acmesystems/arietta-g25/genimage.cfg b/features/buildroot/board/acmesystems/arietta-g25/genimage.cfg new file mode 100644 index 00000000..420f1b6b --- /dev/null +++ b/features/buildroot/board/acmesystems/arietta-g25/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the Acmesystems Arietta G25 + +image boot.vfat { + vfat { + file zImage { + image = "zImage" + } + + file acme-arietta.dtb { + image = "at91-ariettag25.dtb" + } + + file boot.bin { + image = "at91sam9x5_arietta-sdcardboot-linux-zimage-dt-3.8.6.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/acmesystems/arietta-g25/post-image.sh b/features/buildroot/board/acmesystems/arietta-g25/post-image.sh new file mode 100755 index 00000000..2846f56d --- /dev/null +++ b/features/buildroot/board/acmesystems/arietta-g25/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/acmesystems/arietta-g25/readme.txt b/features/buildroot/board/acmesystems/arietta-g25/readme.txt new file mode 100644 index 00000000..f356b0a2 --- /dev/null +++ b/features/buildroot/board/acmesystems/arietta-g25/readme.txt @@ -0,0 +1,49 @@ +Acme Systems Arietta G25 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Arietta G25. With the current configuration +it will bring-up the board, and allow access through the serial console. + +You can find additional informations, tutorials and a very comprehensive +documentation on http://www.acmesystems.it/arietta. + +Build instructions +================== + +To build an image for the Arietta G25 choose the configuration +corresponding to the Arietta variant. + +For 128MB RAM variant type: + +$ make acmesystems_arietta_g25_128mb_defconfig + +else for 256MB RAM variant type: + +$ make acmesystems_arietta_g25_256mb_defconfig + +To customize the configuration chosen type: + +$ make menuconfig + +When you are ready to start building Buildroot type: + +$ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the microSD card into the Arietta slot and power it. + +The image just built is fairly basic and the only output +you will get is on serial console, please consider to use a DPI +cable (http://www.acmesystems.it/DPI) diff --git a/features/buildroot/board/altera/socrates_cyclone5/boot-env.txt b/features/buildroot/board/altera/socrates_cyclone5/boot-env.txt new file mode 100644 index 00000000..ed5b6138 --- /dev/null +++ b/features/buildroot/board/altera/socrates_cyclone5/boot-env.txt @@ -0,0 +1,8 @@ +linux_load_address=0x100000 +linux_dtb_load_address=0x100 +linux_dtb=socfpga_cyclone5_socrates.dtb +linux_load=mmc rescan; fatload mmc 0:1 ${linux_load_address} zImage; fatload mmc 0:1 ${linux_dtb_load_address} ${linux_dtb} +bootargs=console=ttyS0,115200 root=/dev/mmcblk0p3 ro rootwait +source_env=fatload mmc 0:1 0x2000000 boot.scr; source 0x2000000 +bootcmd=run linux_load; bootz ${linux_load_address} - ${linux_dtb_load_address} +bootdelay=1 diff --git a/features/buildroot/board/altera/socrates_cyclone5/genimage.cfg b/features/buildroot/board/altera/socrates_cyclone5/genimage.cfg new file mode 100644 index 00000000..63fef8ba --- /dev/null +++ b/features/buildroot/board/altera/socrates_cyclone5/genimage.cfg @@ -0,0 +1,58 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "socfpga_cyclone5_socrates.dtb" + } + } + size = 8M +} + +image uboot.img { + hdimage { + partition-table = "no" + } + + partition spl { + in-partition-table = "no" + image = "u-boot-spl.bin.crc" + offset = 0 + size = 64k + } + + partition uboot-full { + in-partition-table = "no" + image = "u-boot.img" + offset = 256k + } + + size = 1M +} + +image sdcard.img { + hdimage { + } + + partition uboot-env { + in-partition-table = "no" + image = "uboot-env.bin" + offset = 17408 # 512 * 34 -> just after gpt + } + + partition boot { + partition-type = 0xc + bootable = "true" + image = "boot.vfat" + } + + partition uboot { + partition-type = 0xa2 + image = "uboot.img" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 500M + } +} diff --git a/features/buildroot/board/altera/socrates_cyclone5/readme.txt b/features/buildroot/board/altera/socrates_cyclone5/readme.txt new file mode 100644 index 00000000..4e78feef --- /dev/null +++ b/features/buildroot/board/altera/socrates_cyclone5/readme.txt @@ -0,0 +1,52 @@ +EBV SoCrates Evaluation Board + +Intro +===== + +More information about this board can be found here: +https://rocketboards.org/foswiki/Documentation/EBVSoCratesEvaluationBoard + +Build +===== + +First, load socrates config for buildroot + + make socrates_cyclone5_defconfig + +Build everything + + make + +Following files will be generated in output/images + +. +├── boot.vfat +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── socfpga_cyclone5_socrates.dtb +├── u-boot-spl.bin +├── u-boot-spl.bin.crc +├── u-boot.bin +├── u-boot.img +├── uboot-env.bin +├── uboot.img +└── zImage + + +Creating bootable SD card +========================= + +Simply invoke + +dd if=output/images/sdcard.img of=/dev/sdX + +Where X is your SD card device (not partition) + +Booting +======= + +Pins 6:8 on P18 selector is used to determine boot device. To boot socrates from +sdcard set these pins to value 0x5 (101b). Remaining pins are used to determine +how to configure FPGA and are not associated with booting into Linux kernel. diff --git a/features/buildroot/board/amarula/a64-relic/extlinux.conf b/features/buildroot/board/amarula/a64-relic/extlinux.conf new file mode 100644 index 00000000..9f469846 --- /dev/null +++ b/features/buildroot/board/amarula/a64-relic/extlinux.conf @@ -0,0 +1,4 @@ +label linux-4.17.0-rc3 + kernel /Image + devicetree /sun50i-a64-amarula-relic.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk1p4 rootwait diff --git a/features/buildroot/board/amarula/a64-relic/genimage.cfg b/features/buildroot/board/amarula/a64-relic/genimage.cfg new file mode 100644 index 00000000..002b6bb4 --- /dev/null +++ b/features/buildroot/board/amarula/a64-relic/genimage.cfg @@ -0,0 +1,10 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-amarula-relic.dtb", + "extlinux" + } + } + size = 64M +} diff --git a/features/buildroot/board/amarula/a64-relic/post-build.sh b/features/buildroot/board/amarula/a64-relic/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/features/buildroot/board/amarula/a64-relic/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/features/buildroot/board/amarula/a64-relic/readme.txt b/features/buildroot/board/amarula/a64-relic/readme.txt new file mode 100644 index 00000000..77f79e30 --- /dev/null +++ b/features/buildroot/board/amarula/a64-relic/readme.txt @@ -0,0 +1,90 @@ +Amarula A64 Relic +================ + +Amarula A64-Relic is an Allwinner A64 based IoT device, which supports: +- Allwinner A64 Cortex-A53 +- Mali-400MP2 GPU +- AXP803 PMIC +- 1GB DDR3 RAM +- 8GB eMMC +- AP6330 Wifi/BLE +- MIPI-DSI +- CSI: OV5640 sensor +- USB OTG +- 12V DC power supply + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Amarual+A64-Relic + +Build +===== + + $ make amarula_a64_relic_defconfig + + $ make + +build files at output/images/: + - sunxi-spl.bin + - u-boot.itb + - Image + - sun50i-a64-amarula-relic.dtb + - boot.vfat + - rootfs.ext4 + +Write eMMC +========= + +The board comes with an operating system preloaded on the eMMC. +To replace it with the Buildroot-built system, take the following +steps + +1. Connect the board UART with host and open minicom(ttyUSBx/115200N8) + +2. Supply 12V DC for power-on the board. + +3. Interrupt U-Boot by pressing enter + +4. Create GPT partitions + => mmc dev 1 + => gpt write mmc 1 $partitions + +5. Connect the board USB-OTG with USB slot on the host. + +6. Initiate fastboot + => fastboot 0 + +7. Write images from host onto eMMC using fastboot + $ cd output/images + $ sudo fastboot -i 0x1f3a flash loader1 sunxi-spl.bin + $ sudo fastboot -i 0x1f3a flash loader2 u-boot.itb + $ sudo fastboot -i 0x1f3a flash esp boot.vfat + $ sudo fastboot -i 0x1f3a flash system rootfs.ext4 + +Update eMMC during Development +============================== + +During development, reflashing the entire filesystem image at every +change is time consuming. A useful alternative is to directly access +over USB the filesystem stored on the eMMC, using the USB Mass Storage +capability of U-Boot. To achieve this: + +1. Build U-Boot by enabling UMS + $ make uboot-menuconfig + (select CONFIG_CMD_USB_MASS_STORAGE=y) + +2. Follow all 6 steps from 'Write eMMC' and mount eMMC on host + => mmc dev 1 + => ums 0 mmc 1 + +WiFi +==== + + # wpa_passphrase ACCESSPOINTNAME >> /etc/wpa_supplicant.conf + (type password and enter) + # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B + # udhcpc -i wlan0 + # ping google.com + +-- +Jagan Teki +29-Jun-2018 diff --git a/features/buildroot/board/amarula/a64-relic/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt b/features/buildroot/board/amarula/a64-relic/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt new file mode 100644 index 00000000..d095f24c --- /dev/null +++ b/features/buildroot/board/amarula/a64-relic/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt @@ -0,0 +1,83 @@ +#AP6330_NVRAM_V1.0_20121130 +#Sample variables file for BCM94330 SD FC AGB board +manfid=0x2d0 +prodid=0x0547 +vendid=0x14e4 +devid=0x4360 +boardtype=0x05e1 +boardrev=0x1202 +boardflags=0x0080200 +nocrc=1 +xtalfreq=26000 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +ag0=254 +aa2g=1 +ccode=ALL +pa0itssit=0x20 +pa0b0=5587 +pa0b1=-633 +pa0b2=-158 +rssismf2g=0xa +rssismc2g=0x3 +rssisav2g=0x7 +#rssi params for 5GHz +rssismf5g=0x4 +rssismc5g=0x3 +rssisav5g=0x7 +#PA parameters for lower a-band +pa1lob0=4748 +pa1lob1=-566 +pa1lob2=-180 +#PA parameters for midband +pa1b0=4762 +pa1b1=-593 +pa1b2=-172 +#PA parameters for high band +#pa1hib0=4596 +pa1hib0=4666 +pa1hib1=-619 +pa1hib2=-163 +rxpo5g=0 +maxp2ga0=74 +maxp5ga0=66 +maxp5gla0=66 +maxp5gha0=66 +# 2.4G Tx Power offsets +cck2gpo=0x2222 +ofdm2gpo=0x44444444 +mcs2gpo0=0x6666 +mcs2gpo1=0x6666 +# 5G Tx Power offsets +ofdm5gpo=0x44444444 +ofdm5glpo=0x44444444 +ofdm5ghpo=0x44444444 +mcs5gpo0=0x6666 +mcs5gpo1=0x6666 +mcs5glpo0=0x6666 +mcs5glpo1=0x6666 +mcs5ghpo0=0x6666 +mcs5ghpo1=0x6666 +sromrev=3 +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b +cckPwrOffset=4 +swctrlmap_2g=0x44844484,0x42824282,0x40804484,0x18282,0x1ff +triso5g=0 +swctrlmap_5g=0x00100010,0x20202020,0x20202020,0x14202,0x0f0 +rfreg033=0x19 +rfreg033_cck=0x1f +dacrate2g=160 +dacrate5g=160 +txalpfbyp2g=1 +bphyscale=17 +cckPwrIdxCorr=-15 +pacalidx2g=50 +#pacalidx5g=20 +noise_cal_ref_2g=53 +noise_cal_po_2g=0 +noise_cal_ref_5g=52 +noise_cal_po_5g=5,0,0 +# 4330 OOB parameter: High level trigger +muxenab=0x10 + diff --git a/features/buildroot/board/amarula/vyasa/extlinux.conf b/features/buildroot/board/amarula/vyasa/extlinux.conf new file mode 100644 index 00000000..a8fcc35f --- /dev/null +++ b/features/buildroot/board/amarula/vyasa/extlinux.conf @@ -0,0 +1,4 @@ +label Vyasa linux-next + kernel /boot/uImage + devicetree /boot/rk3288-vyasa.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/features/buildroot/board/amarula/vyasa/genimage.cfg b/features/buildroot/board/amarula/vyasa/genimage.cfg new file mode 100644 index 00000000..e7076679 --- /dev/null +++ b/features/buildroot/board/amarula/vyasa/genimage.cfg @@ -0,0 +1,22 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-tpl-spl-dtb { + in-partition-table = "no" + image = "u-boot-tpl-spl-dtb.img" + offset = 32K + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 8M + size = 30M # falcon mode: args @ 16M args, uImage @ 17M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/amarula/vyasa/linux_gmac.fragment b/features/buildroot/board/amarula/vyasa/linux_gmac.fragment new file mode 100644 index 00000000..8ebf3835 --- /dev/null +++ b/features/buildroot/board/amarula/vyasa/linux_gmac.fragment @@ -0,0 +1,3 @@ +# Currently mainline kernel exhibits issues when running rockchip gmac +# on the board, so enable it as loadable module and insert it later +CONFIG_DWMAC_ROCKCHIP=m diff --git a/features/buildroot/board/amarula/vyasa/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch b/features/buildroot/board/amarula/vyasa/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch new file mode 100644 index 00000000..64a147c0 --- /dev/null +++ b/features/buildroot/board/amarula/vyasa/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch @@ -0,0 +1,35 @@ +From 8ee2b03039cccf64402a72dea2185d7fe1972729 Mon Sep 17 00:00:00 2001 +From: Shyam Saini +Date: Mon, 15 Apr 2019 16:16:16 +0530 +Subject: [PATCH] include: configs: Increase CONFIG_SYS_BOOTM_LEN to 16MB + +The default value of CONFIG_SYS_BOOTM_LEN is 0x800000 i.e, 8MB which +causes board reset because of larger uImage size. + +Error log snippet: + Booting using the fdt blob at 0x1f00000 + Loading Kernel Image ... Image too large: increase CONFIG_SYS_BOOTM_LEN +Must RESET board to recover +resetting ... + +Signed-off-by: Shyam Saini +--- + include/configs/rk3288_common.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h +index 72a54bc0ab..eab7cf4d86 100644 +--- a/include/configs/rk3288_common.h ++++ b/include/configs/rk3288_common.h +@@ -9,6 +9,8 @@ + #include + #include "rockchip-common.h" + ++#define CONFIG_SYS_BOOTM_LEN (16 << 20) /* 16MB */ ++ + #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY + #define CONFIG_SYS_MALLOC_LEN (32 << 20) + #define CONFIG_SYS_CBSIZE 1024 +-- +2.11.0 + diff --git a/features/buildroot/board/amarula/vyasa/post-build.sh b/features/buildroot/board/amarula/vyasa/post-build.sh new file mode 100755 index 00000000..ffbbcdeb --- /dev/null +++ b/features/buildroot/board/amarula/vyasa/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-tpl.bin $BINARIES_DIR/u-boot-tpl.img +cat $BINARIES_DIR/u-boot-tpl.img $BINARIES_DIR/u-boot-spl-dtb.bin > $BINARIES_DIR/u-boot-tpl-spl-dtb.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/features/buildroot/board/amarula/vyasa/readme.txt b/features/buildroot/board/amarula/vyasa/readme.txt new file mode 100644 index 00000000..b95889e8 --- /dev/null +++ b/features/buildroot/board/amarula/vyasa/readme.txt @@ -0,0 +1,31 @@ +Vyasa RK3288 +============ + +Vyasa is RK3288 based Single board computer with fully supported opensource software. + +https://openedev.amarulasolutions.com/display/ODWIKI/Vyasa+RK3288 + +How to build it +=============== + + $ make amarula_vyasa_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Vyasa RK3288 board, close J4 and boot it. diff --git a/features/buildroot/board/andes/ae3xx/ae3xx.fragment b/features/buildroot/board/andes/ae3xx/ae3xx.fragment new file mode 100644 index 00000000..3b13d107 --- /dev/null +++ b/features/buildroot/board/andes/ae3xx/ae3xx.fragment @@ -0,0 +1 @@ +CONFIG_NDS32_BUILTIN_DTB="ae3xx" diff --git a/features/buildroot/board/andes/patches/linux/0001-nds32-Fix-boot-messages-garbled.patch b/features/buildroot/board/andes/patches/linux/0001-nds32-Fix-boot-messages-garbled.patch new file mode 100644 index 00000000..adb60937 --- /dev/null +++ b/features/buildroot/board/andes/patches/linux/0001-nds32-Fix-boot-messages-garbled.patch @@ -0,0 +1,28 @@ +From 90d52d180dcc5d1300dc352ca709eb6453894143 Mon Sep 17 00:00:00 2001 +From: Nylon Chen +Date: Wed, 28 Nov 2018 16:26:46 +0800 +Subject: [PATCH] nds32: Fix boot messages garbled + +In order to display uart correctly we have to pass the correct setting of uart to kernel by bootarg. +This patch will provide such settings to set the correct uart baud rate. + +Signed-off-by: Nylon Chen +--- + arch/nds32/boot/dts/ae3xx.dts | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/nds32/boot/dts/ae3xx.dts b/arch/nds32/boot/dts/ae3xx.dts +index bb39749a6673..aefe2090926a 100644 +--- a/arch/nds32/boot/dts/ae3xx.dts ++++ b/arch/nds32/boot/dts/ae3xx.dts +@@ -6,6 +6,7 @@ + interrupt-parent = <&intc>; + + chosen { ++ bootargs = "memblock=debug earlycon console=ttyS0,38400n8 debug loglevel=7"; + stdout-path = &serial0; + }; + +-- +2.18.0 + diff --git a/features/buildroot/board/andes/readme.txt b/features/buildroot/board/andes/readme.txt new file mode 100644 index 00000000..0f95c655 --- /dev/null +++ b/features/buildroot/board/andes/readme.txt @@ -0,0 +1,49 @@ +Intro +===== + +Andestech(nds32) AE3XX Platform + +The AE3XX prototype demonstrates the AE3XX example platform on the FPGA. +It is composed of one Andestech(nds32) processor and AE3XX. + +How to build it +=============== + +Configure Buildroot +------------------- + +The andes_ae3xx_defconfig configuration is a sample configuration with +all that is required to bring the FPGA Development Board: + + $ make andes_ae3xx_defconfig + +Build everything +---------------- +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain this tree: + +output/images/ + +-- vmlinux + +-- rootfs.cpio + +-- rootfs.tar + +How to run it +============= + +Run +--- + + Setup the Console with the rate 38400/8-N-1. + + $ cd output/images + $ ../host/bin/nds32le-linux-gdb vmlinux + $ target remote [your host] + $ lo + $ c diff --git a/features/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh b/features/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh new file mode 100755 index 00000000..ccfacd38 --- /dev/null +++ b/features/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +MKIMAGE=${HOST_DIR}/usr/bin/mkimage +MKIMAGE_IN=${BINARIES_DIR}/br2-ucls1012a.its +MKIMAGE_OUT=${BINARIES_DIR}/part0-000000.itb +${MKIMAGE} -f ${MKIMAGE_IN} ${MKIMAGE_OUT} diff --git a/features/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt b/features/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt new file mode 100644 index 00000000..483d5e9a --- /dev/null +++ b/features/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt @@ -0,0 +1,74 @@ +Arcturus uCLS1012A SoM +====================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCLS101A SoM platform. + +Additional information about the uCLS1012A System on Module can be found at +https://www.arcturusnetworks.com/products/ucls1012a +and product support for registered users at +https://www.arcturusnetworks.com/support + +Building +-------- + +Return to the top directory and execute the following commands. + + make arcturus_ucls1012a_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- arc-ucls1012a.dtb + +-- Image + +-- part0-000000.itb + +-- rootfs.cpio + +-- rootfs.cpio.gz + +-- rootfs.tar + +-- u-boot.bin + +-- ucls1012a.its + +Flashing +-------- + +You'll need to program the image created by buildroot into the SPI NOR flash. + +1. Reboot your module and via the serial console press to enter the B$ +u-boot shell. + From the shell you will need to update four environment variables replacing the + IPv4 IP Address with ones that will work with your network and tftp server. + + B$ setenv ipaddr 192.168.1.81 + B$ setenv serverip 192.168.1.80 + B$ setenv gatewayip 192.168.1.1 + B$ setenv netmask 255.255.255.0 + B$ saveenv + +2. Enable tftp server to serve the /output/images/ folder. + +3. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ run program_uboot + +4. Program the ITB image (includes Kernel, DTB and Ramdisk) + + B$ tftp part0-000000.itb + B$ run iprogram + +5. Booting your new system + + Reboot your system by reset command + B$ reset + + or + + B$ run bootcmd + +Good Luck ! diff --git a/features/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload b/features/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 00000000..c87ffda1 --- /dev/null +++ b/features/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,14 @@ +#!/bin/sh +# +case "$1" in + start) + modprobe pfe + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/features/buildroot/board/arcturus/ppc-ucp1020/readme.txt b/features/buildroot/board/arcturus/ppc-ucp1020/readme.txt new file mode 100644 index 00000000..07986f50 --- /dev/null +++ b/features/buildroot/board/arcturus/ppc-ucp1020/readme.txt @@ -0,0 +1,74 @@ +Arcturus uCP1020 SoM +==================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCP1020 SoM platform. + +Additional information about this module can be found at + + +Building +-------- + + make arcturus_ucp1020_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- rootfs.jffs2 + +-- rootfs.tar + +-- u-boot.bin + +-- ucp1020.dtb + +-- uImage + +Flashing +-------- + +You'll need to program the files created by buildroot into the NOR flash. + +1. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ protect off 0xeff80000 +$filesize + B$ erase 0xeff80000 +$filesize + B$ cp.b $loadaddr 0xeff80000 $filesize + B$ protect on 0xeff80000 +$filesize + +2. Program the kernel + + B$ tftp uImage + B$ erase 0xec140000 +$filesize + B$ cp.b $loadaddr 0xec140000 $filesize + +3. Program the DTB + + B$ tftp ucp1020.dtb + B$ erase 0xec100000 +$filesize + B$ cp.b $loadaddr 0xec100000 $filesize + +4. Program the jffs2 root filesystem + + B$ tftp rootfs.jffs2 + B$ erase 0xec800000 0xee8fffff + B$ cp.b $loadaddr 0xec800000 $filesize + +5. Booting your new system + + B$ setenv norboot 'setenv bootargs root=/dev/mtdblock1 rootfstype=jffs2 console=$consoledev,$baudrate;bootm 0xec140000 - 0xec100000' + + If you want to set this boot option as default: + + B$ setenv bootcmd 'run norboot' + B$ saveenv + + ...or for a single boot: + + B$ run norboot + +Good Luck ! diff --git a/features/buildroot/board/arm/foundation-v8/readme.txt b/features/buildroot/board/arm/foundation-v8/readme.txt new file mode 100644 index 00000000..1dedf68c --- /dev/null +++ b/features/buildroot/board/arm/foundation-v8/readme.txt @@ -0,0 +1,19 @@ +This is the support for the ARM Foundation v8 machine emulated by the +ARM software simulator of the AArch64 architecture. + +First, one has to download the AArch64 software simulator from: + + https://silver.arm.com/download/download.tm?pv=2663527 + +Then, use the arm_foundationv8_defconfig configuration to build your +Buildroot system. + +Finally, boot your system with: + + ${LOCATION_OF_FOUNDATIONV8_SIMULATOR}/models/Linux64_GCC-4.7/Foundation_Platform \ + --image output/images/linux-system.axf \ + --block-device output/images/rootfs.ext2 \ + --network=nat + +You can get network access from within the simulated environment +by requesting an IP address using DHCP (run the command 'udhcpc'). diff --git a/features/buildroot/board/arm/juno/linux-juno-defconfig b/features/buildroot/board/arm/juno/linux-juno-defconfig new file mode 100644 index 00000000..64598d21 --- /dev/null +++ b/features/buildroot/board/arm/juno/linux-juno-defconfig @@ -0,0 +1,169 @@ +CONFIG_SMP=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_AUDIT=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_KALLSYMS_ALL=y +CONFIG_PROFILING=y +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_PCI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI=y +CONFIG_NR_CPUS=6 +CONFIG_PREEMPT=y +CONFIG_KSM=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_CMA=y +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_COMPAT=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_INTERACTIVE=y +CONFIG_ARM_BIG_LITTLE_CPUFREQ=y +CONFIG_ARM_DT_BL_CPUFREQ=y +CONFIG_ARM_SCPI_CPUFREQ=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_BPF_JIT=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_AHCI_XGENE=y +CONFIG_PATA_PLATFORM=y +CONFIG_PATA_OF_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_TUN=y +CONFIG_SKY2=y +CONFIG_SMC91X=y +CONFIG_SMSC911X=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_XILINX_PS_UART=y +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_SLAVE=y +CONFIG_SPI=y +CONFIG_SPI_PL022=y +CONFIG_PTP_1588_CLOCK=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_XGENE=y +CONFIG_POWER_RESET_XGENE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VEXPRESS=m +CONFIG_DRM=y +CONFIG_DRM_I2C_NXP_TDA998X=y +CONFIG_DRM_ARM=y +CONFIG_DRM_HDLCD=y +CONFIG_DRM_VIRTUAL_HDLCD=y +CONFIG_FB_ARMCLCD=y +CONFIG_LOGO=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_ISP1760=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_ULPI=y +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_EFI=y +CONFIG_RTC_DRV_PL030=y +CONFIG_RTC_DRV_PL031=y +CONFIG_DMADEVICES=y +CONFIG_PL330_DMA=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +CONFIG_PHY_XGENE=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=y +CONFIG_CUSE=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_HUGETLBFS=y +CONFIG_EFIVAR_FS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SECURITY=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_DESIGNWARE_I2S=y +CONFIG_CMA=y +CONFIG_CMA_SIZE_MBYTES=64 diff --git a/features/buildroot/board/arm/juno/readme.txt b/features/buildroot/board/arm/juno/readme.txt new file mode 100644 index 00000000..b292d963 --- /dev/null +++ b/features/buildroot/board/arm/juno/readme.txt @@ -0,0 +1,134 @@ +ARM Juno r1/r0 + +Intro +===== + +These instructions apply to all models of the ARM Juno: + - Juno r0 (does not support PCIe) + - Juno r1 (supports PCIe) + - Juno r2 (Big Cluster with A72) + +Buildroot will generate the kernel image, device tree blob, bootloader binaries +and a minimal root filesystem. + +How to build it +=============== + +Configure Buildroot +------------------- + +Configuring Buildroot is pretty simple, just execute: + + $ make arm_juno_defconfig + +Build the rootfs, kernel and DTB +-------------------------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- rootfs.tar + +-- juno.dtb (if Juno r0 is used) + +-- juno-r1.dtb (if Juno r1 is used) + +-- juno-r2.dtb (if Juno r2 is used) + +-- Image + +-- bl1.bin + +-- bl2.bin + +-- bl2u.bin + +-- bl31.bin + +-- fip.bin + +-- scp-fw.bin + +-- u-boot.bin + +Preparing your rootfs +====================== + +Format your pen drive as a ext3 filesystem by executing: + + $ mkfs.ext3 /dev/ + +Preparing your rootfs +====================== + +Format your pen drive as a ext3 filesystem by executing: + + $ mkfs.ext3 /dev/ + +Installing your rootfs +====================== + +After mounting the pen drive please execute the following: + + $ sudo tar -xvf output/images/rootfs.tar -C + +When completed make sure to unmount the device: + + $ umount + +Insert the pen drive in one of the ARM Juno' USB type A connectors. + +Configure *.dtb in the boot configuration for Juno r0 +===================================================== + +SITE1/HBI0262B/images.txt +..... +NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE +NOR3ADDRESS: 0x00C00000 ;Image Flash Address +NOR3FILE: \SOFTWARE\juno.dtb ;Image File Name +NOR3NAME: board.dtb ;Specify Image name to preserve file extension +NOR3LOAD: 00000000 ;Image Load Address +NOR3ENTRY: 00000000 ;Image Entry Point +...... + +Configure *.dtb in the boot configuration for Juno r1 +===================================================== + +SITE1/HBI0262C/images.txt +...... +NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE +NOR3ADDRESS: 0x00C00000 ;Image Flash Address +NOR3FILE: \SOFTWARE\juno-r1.dtb ;Image File Name +NOR3NAME: board.dtb ;Specify target filename to preserve file extension +NOR3LOAD: 00000000 ;Image Load Address +NOR3ENTRY: 00000000 ;Image Entry Point +...... + +Configure *.dtb in the boot configuration for Juno r2 +===================================================== + +SITE1/HBI0262D/images.txt +...... +NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE +NOR3ADDRESS: 0x02000000 ;Image Flash Address +NOR3FILE: \SOFTWARE\juno-r2.dtb ;Image File Name +NOR3NAME: board.dtb ;Specify target filename to preserve file extension +NOR3LOAD: 00000000 ;Image Load Address +NOR3ENTRY: 00000000 ;Image Entry Point +...... + +Installing kernel image and DTB +=============================== + +1. Connect to the ARM Juno UART0 and execute USB_ON in the terminal +2. Connect a USB cable between your PC and ARM Juno USB type B connector + A mass storage device should appear in your desktop. +3. Open the software/ folder +4. Copy the 'Image' file to software/ +5. Copy the 'juno-r1.dtb' (r1), 'juno.dtb' (r0) or juno-r2.dtb (r2) file to software/ +6. Copy the bootloader binaries (bl1.bin and fip.bin) to software/ +7. Press the red button in the front pannel of ARM Juno + +At this time, the board will erase the Flash entry for each new item and +replace it with the lastest ones. diff --git a/features/buildroot/board/armadeus/apf27/linux-4.12.config b/features/buildroot/board/armadeus/apf27/linux-4.12.config new file mode 100644 index 00000000..d0fb5d35 --- /dev/null +++ b/features/buildroot/board/armadeus/apf27/linux-4.12.config @@ -0,0 +1,216 @@ +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_ARCH_MXC=y +CONFIG_MACH_IMX27_DT=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_PM_DEBUG=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +CONFIG_CAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set +# CONFIG_MTD_CFI_I2 is not set +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CIRRUS is not set +# CONFIG_NET_VENDOR_FARADAY is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_SMSC_PHY=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RTL8187=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_IMX=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=m +CONFIG_GPIO_SYSFS=y +CONFIG_W1=y +CONFIG_W1_MASTER_MXC=y +CONFIG_W1_SLAVE_THERM=y +CONFIG_WATCHDOG=y +CONFIG_IMX2_WDT=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_PWC=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=m +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_FB=y +# CONFIG_FB_MX3 is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_IMX_SOC=m +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_ETH=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_HID=m +CONFIG_MMC=y +CONFIG_MMC_MXC=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1374=y +CONFIG_RTC_DRV_MXC=m +CONFIG_DMADEVICES=y +CONFIG_IMX_DMA=y +CONFIG_IMX_SDMA=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_MAX1027=y +CONFIG_MAX5821=y +CONFIG_PWM=y +CONFIG_PWM_IMX=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=m +CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_FTRACE is not set +CONFIG_DEBUG_LL=y +CONFIG_EARLY_PRINTK=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y diff --git a/features/buildroot/board/armadeus/apf51/linux-4.4.config b/features/buildroot/board/armadeus/apf51/linux-4.4.config new file mode 100644 index 00000000..6957b635 --- /dev/null +++ b/features/buildroot/board/armadeus/apf51/linux-4.4.config @@ -0,0 +1,278 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_MXC=y +CONFIG_MXC_IRQ_PRIOR=y +CONFIG_SOC_IMX51=y +CONFIG_ARM_THUMBEE=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_IMX=y +CONFIG_CPU_IDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +CONFIG_IPV6=y +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_BT=m +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_MAC80211_RC_PID=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER=m +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_MISC_DEVICES=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=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_MULTI_LUN=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_SMSC_PHY=y +CONFIG_NET_ETHERNET=y +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_RTL8187=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_RT2X00=m +CONFIG_RT73USB=m +CONFIG_ZD1211RW=m +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_IMX=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_WM831X=y +CONFIG_TOUCHSCREEN_MC13XXX=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WM831X_ON=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_WM831X=m +CONFIG_POWER_SUPPLY=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_HWMON=m +CONFIG_SENSORS_AS1531=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_WM831X=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y +CONFIG_WM831X_WATCHDOG=m +CONFIG_IMX2_WDT=y +CONFIG_MFD_MC13XXX_I2C=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_MC13892=m +CONFIG_IMX_IPUV3_CORE=y +CONFIG_DRM=y +CONFIG_MFD_IMX_IPU_V3=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_VIDEO_DEV=m +# CONFIG_RC_CORE is not set +# CONFIG_MEDIA_TUNER_SIMPLE is not set +# CONFIG_MEDIA_TUNER_TDA8290 is not set +# CONFIG_MEDIA_TUNER_TDA827X is not set +# CONFIG_MEDIA_TUNER_TDA18271 is not set +# CONFIG_MEDIA_TUNER_TDA9887 is not set +# CONFIG_MEDIA_TUNER_TEA5761 is not set +# CONFIG_MEDIA_TUNER_TEA5767 is not set +# CONFIG_MEDIA_TUNER_MT20XX is not set +# CONFIG_MEDIA_TUNER_MT2060 is not set +# CONFIG_MEDIA_TUNER_MT2266 is not set +# CONFIG_MEDIA_TUNER_MT2131 is not set +# CONFIG_MEDIA_TUNER_QT1010 is not set +# CONFIG_MEDIA_TUNER_XC2028 is not set +# CONFIG_MEDIA_TUNER_XC5000 is not set +# CONFIG_MEDIA_TUNER_MXL5005S is not set +# CONFIG_MEDIA_TUNER_MXL5007T is not set +# CONFIG_MEDIA_TUNER_MC44S803 is not set +# CONFIG_MEDIA_TUNER_MAX2165 is not set +# CONFIG_MEDIA_TUNER_TDA18218 is not set +CONFIG_VIDEO_VIVI=m +CONFIG_USB_VIDEO_CLASS=m +# CONFIG_RADIO_ADAPTERS is not set +CONFIG_FB=y +CONFIG_FB_MX5=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=m +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_IMX_SOC=m +CONFIG_SND_SOC_APF51_DEV_WM8960=m +CONFIG_USB=y +CONFIG_USB_DEBUG=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +CONFIG_USB_WDM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GPIO_VBUS=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_DEBUG_FS=y +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_HID=m +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SPI=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_MXC=y +CONFIG_RTC_DRV_WM831X=y +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_STAGING=y +CONFIG_DRM_IMX=y +CONFIG_DRM_IMX_FB_HELPER=y +CONFIG_DRM_IMX_PARALLEL_DISPLAY=y +CONFIG_DRM_IMX_TVE=y +CONFIG_DRM_IMX_IPUV3=y +CONFIG_IIO=m +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_DEBUG_FS=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/features/buildroot/board/armadeus/readme.txt b/features/buildroot/board/armadeus/readme.txt new file mode 100644 index 00000000..c03508c6 --- /dev/null +++ b/features/buildroot/board/armadeus/readme.txt @@ -0,0 +1,84 @@ +Introduction +============ + +Armadeus APFxx are Systems On Module (SOM) based on Freescale/NXP i.MX +processors associated with an FPGA (except on APF28). Non volatile +data are stored in on-module NOR or NAND Flash, depending on the +model. These SOM can be used on Armadeus development boards or with +custom docking boards. + +Supported platforms +=================== + +Buildroot currently supports the following Armadeus platforms with the +associated defconfigs: + + * APF27 SOM + devt board -> armadeus_apf27_defconfig + * APF51 SOM + devt board -> armadeus_apf51_defconfig + * APF28 SOM + devt board -> armadeus_apf28_defconfig + +Vanilla Linux versions are preferred to Freescale's one in these +configurations. + +How to build it +=============== + +Configure Buildroot +------------------- + +Let's say you own an APFxx SOM with it's corresponding development +board, all you have to do is: + + $ make armadeus_apfxx_defconfig + +where "apfxx" is the version of your SOM. + +Launch build +------------ + + $ make + +Result of the build +------------------- + +When the build is finished, you will end up with: + + output/images/ + +-- imx**-apfxxdev.dtb [1] + +-- rootfs.tar + +-- rootfs.ubi + +-- rootfs.ubifs + +-- uImage + +[1] Only if the kernel version used uses a Device Tree. + +Building U-Boot is currently not supported in these configurations. + +Installation +============ + +You will require a serial connection to the board and a TFTP server on +your Host PC. Assuming your server is configured for exporting +/tftpboot/ directory, you will have to copy the generated images to +it: + + $ cp output/images/uImage /tftpboot/apfxx-linux.bin + $ cp output/images/*.dtb /tftpboot/ + $ cp output/images/rootfs.ubi /tftpboot/apfxx-rootfs.ubi + +where "apfxx" is the version of your SOM, as used with _defconfigs. + +Then on your serial terminal, all you have to do is: + +* interrupt the boot process and access U-Boot console by pressing any + key when booting, +* configure board and server IP addresses with "ipaddr" and "serverip" + environment variables, +* if you want to update kernel: + BIOS > run update_kernel +* if you want to update device tree: + BIOS > run update_dtb +* if you want to update rootfs: + BIOS > run update_rootfs + +That's it ! diff --git a/features/buildroot/board/asus/tinker/extlinux.conf b/features/buildroot/board/asus/tinker/extlinux.conf new file mode 100644 index 00000000..136af0de --- /dev/null +++ b/features/buildroot/board/asus/tinker/extlinux.conf @@ -0,0 +1,4 @@ +label Tinker linux-next + kernel /boot/uImage + devicetree /boot/rk3288-tinker.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/features/buildroot/board/asus/tinker/genimage.cfg b/features/buildroot/board/asus/tinker/genimage.cfg new file mode 100644 index 00000000..a4b1e8d6 --- /dev/null +++ b/features/buildroot/board/asus/tinker/genimage.cfg @@ -0,0 +1,15 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-spl-dtb { + in-partition-table = "no" + image = "u-boot-spl-dtb.img" + offset = 32K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/asus/tinker/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch b/features/buildroot/board/asus/tinker/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch new file mode 100644 index 00000000..64a147c0 --- /dev/null +++ b/features/buildroot/board/asus/tinker/patches/uboot/0001-include-configs-Increase-CONFIG_SYS_BOOTM_LEN-to-16M.patch @@ -0,0 +1,35 @@ +From 8ee2b03039cccf64402a72dea2185d7fe1972729 Mon Sep 17 00:00:00 2001 +From: Shyam Saini +Date: Mon, 15 Apr 2019 16:16:16 +0530 +Subject: [PATCH] include: configs: Increase CONFIG_SYS_BOOTM_LEN to 16MB + +The default value of CONFIG_SYS_BOOTM_LEN is 0x800000 i.e, 8MB which +causes board reset because of larger uImage size. + +Error log snippet: + Booting using the fdt blob at 0x1f00000 + Loading Kernel Image ... Image too large: increase CONFIG_SYS_BOOTM_LEN +Must RESET board to recover +resetting ... + +Signed-off-by: Shyam Saini +--- + include/configs/rk3288_common.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h +index 72a54bc0ab..eab7cf4d86 100644 +--- a/include/configs/rk3288_common.h ++++ b/include/configs/rk3288_common.h +@@ -9,6 +9,8 @@ + #include + #include "rockchip-common.h" + ++#define CONFIG_SYS_BOOTM_LEN (16 << 20) /* 16MB */ ++ + #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY + #define CONFIG_SYS_MALLOC_LEN (32 << 20) + #define CONFIG_SYS_CBSIZE 1024 +-- +2.11.0 + diff --git a/features/buildroot/board/asus/tinker/post-build.sh b/features/buildroot/board/asus/tinker/post-build.sh new file mode 100755 index 00000000..8108ed83 --- /dev/null +++ b/features/buildroot/board/asus/tinker/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-spl-dtb.bin $BINARIES_DIR/u-boot-spl-dtb.img +cat $BINARIES_DIR/u-boot-dtb.bin >> $BINARIES_DIR/u-boot-spl-dtb.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/features/buildroot/board/asus/tinker/readme.txt b/features/buildroot/board/asus/tinker/readme.txt new file mode 100644 index 00000000..7372d295 --- /dev/null +++ b/features/buildroot/board/asus/tinker/readme.txt @@ -0,0 +1,37 @@ +Tinker RK3288 +============= + +Tinker Board is a Single Board Computer (SBC) in an ultra-small form +factor that offers class-leading performance while leveraging outstanding +mechanical compatibility. + +Tinker link: +https://www.asus.com/in/Single-Board-Computer/Tinker-Board/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Tinker+RK3288 + +How to build it +=============== + + $ make asus_tinker_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Tinker RK3288 board and boot it. diff --git a/features/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg b/features/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg new file mode 100644 index 00000000..7a552665 --- /dev/null +++ b/features/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg @@ -0,0 +1,39 @@ +# Image for SD card boot on Atmel at91sam9x5ek boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91sam9g15ek.dtb", + "at91sam9g25ek.dtb", + "at91sam9g35ek.dtb", + "at91sam9x25ek.dtb", + "at91sam9x35ek.dtb", + "boot.bin", + "u-boot.bin" + } + + file uboot.env { + image = "uboot-env.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt b/features/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt new file mode 100644 index 00000000..568e4bc9 --- /dev/null +++ b/features/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt @@ -0,0 +1,7 @@ +bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait video=Unknown-1:800x480-16 +bootcmd=fatload mmc 0:1 0x21000000 at91sam9g35ek.dtb; fatload mmc 0:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000 +bootdelay=1 +ethact=gmac0 +stderr=serial +stdin=serial +stdout=serial diff --git a/features/buildroot/board/atmel/flasher.sh b/features/buildroot/board/atmel/flasher.sh new file mode 100755 index 00000000..a7409ce8 --- /dev/null +++ b/features/buildroot/board/atmel/flasher.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env bash + +BUILDIR=$1 +TTY=$2 +BOARD=$3 + +family_at91sam9260ek="at91sam9260ek" +mach_at91sam9260ek="at91sam9260-ek" +dtb_at91sam9260ek="at91sam9260ek.dtb" + +family_at91sam9g45m10ek="at91sam9m10g45ek" +mach_at91sam9g45m10ek="at91sam9m10-g45-ek" +dtb_at91sam9g45m10ek="at91sam9m10g45ek.dtb" + +family_at91sam9rlek="at91sam9rlek" +mach_at91sam9rlek="at91sam9rl64-ek" +dtb_at91sam9rlek="at91sam9rlek.dtb" + +family_at91sam9g15ek="at91sam9x5ek" +mach_at91sam9g15ek="at91sam9g15-ek" +dtb_at91sam9g15ek="at91sam9g15ek.dtb" + +family_at91sam9g20ek="at91sam9g20ek" +mach_at91sam9g20ek="at91sam9g20-ek" +dtb_at91sam9g20ek="at91sam9g20ek.dtb" + +family_at91sam9g25ek="at91sam9x5ek" +mach_at91sam9g25ek="at91sam9g25-ek" +dtb_at91sam9g25ek="at91sam9g25ek.dtb" + +family_at91sam9g35ek="at91sam9x5ek" +mach_at91sam9g35ek="at91sam9g35-ek" +dtb_at91sam9g35ek="at91sam9g35ek.dtb" + +family_at91sam9x25ek="at91sam9x5ek" +mach_at91sam9x25ek="at91sam9x25-ek" +dtb_at91sam9x25ek="at91sam9x25ek.dtb" + +family_at91sam9x35ek="at91sam9x5ek" +mach_at91sam9x35ek="at91sam9x35-ek" +dtb_at91sam9x35ek="at91sam9x35ek.dtb" + +family_sama5d31ek="sama5d3xek" +mach_sama5d31ek="at91sama5d3x-ek" +dtb_sama5d31ek="sama5d31ek.dtb" + +family_sama5d31ek_revc="sama5d3xek" +mach_sama5d31ek_revc="at91sama5d3x-ek" +dtb_sama5d31ek_revc="sama5d31ek_revc.dtb" + +family_sama5d33ek="sama5d3xek" +mach_sama5d33ek="at91sama5d3x-ek" +dtb_sama5d33ek="sama5d33ek.dtb" + +family_sama5d33ek_revc="sama5d3xek" +mach_sama5d33ek_revc="at91sama5d3x-ek" +dtb_sama5d33ek_revc="sama5d33ek_revc.dtb" + +family_sama5d34ek="sama5d3xek" +mach_sama5d34ek="at91sama5d3x-ek" +dtb_sama5d34ek="sama5d34ek.dtb" + +family_sama5d34ek_revc="sama5d3xek" +mach_sama5d34ek_revc="at91sama5d3x-ek" +dtb_sama5d34ek_revc="sama5d34ek_revc.dtb" + +family_sama5d35ek="sama5d3xek" +mach_sama5d35ek="at91sama5d3x-ek" +dtb_sama5d35ek="sama5d35ek.dtb" + +family_sama5d35ek_revc="sama5d3xek" +mach_sama5d35ek_revc="at91sama5d3x-ek" +dtb_sama5d35ek_revc="sama5d35ek_revc.dtb" + +family_sama5d36ek="sama5d3xek" +mach_sama5d36ek="at91sama5d3x-ek" +dtb_sama5d36ek="sama5d36ek.dtb" + +family_sama5d36ek_revc="sama5d3xek" +mach_sama5d36ek_revc="at91sama5d3x-ek" +dtb_sama5d36ek_revc="sama5d36ek_revc.dtb" + +family_sama5d3_xplained="sama5d3_xplained" +mach_sama5d3_xplained="at91sama5d3x-xplained" +dtb_sama5d3_xplained="at91-sama5d3_xplained.dtb" + +family_sama5d4ek="sama5d4ek" +mach_sama5d4ek="at91sama5d4x-ek" +dtb_sama5d4ek="at91-sama5d4ek.dtb" + +family_sama5d4_xplained="sama5d4_xplained" +mach_sama5d4_xplained="at91sama5d4x-ek" +dtb_sama5d4_xplained="at91-sama5d4_xplained.dtb" + +usage() { + cat << EOF +Usage: + $0 + +Available boards: + at91sam9260ek + at91sam9g45m10ek + at91sam9rlek + at91sam9g15ek + at91sam9g20ek + at91sam9g25ek + at91sam9x25ek + at91sam9g35ek + at91sam9x35ek + sama5d31ek + sama5d33ek + sama5d34ek + sama5d35ek + sama5d36ek + sama5d31ek_revc (Until rev. C) + sama5d33ek_revc (Until rev. C) + sama5d34ek_revc (Until rev. C) + sama5d35ek_revc (Until rev. C) + sama5d36ek_revc (Until rev. C) + sama5d3_xplained + sama5d4ek + sama5d4_xplained + +Example: + $0 ./output /dev/ttyACM0 at91sam9g45m10ek +EOF +} + +F="family_$BOARD" +M="mach_$BOARD" +D="dtb_$BOARD" + +if [[ $# != 3 || -z ${!F} ]]; then + usage + exit 1 +fi + +video_mode="video=LVDS-1:800x480-16" +if [[ $BOARD == "*pda4" ]]; then + video_mode="video=LVDS-1:480x272-16" +fi + +echo "Executing: ${!F} O=$1/images $1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode" +export O=$1/images +$1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode diff --git a/features/buildroot/board/atmel/nandflash.tcl b/features/buildroot/board/atmel/nandflash.tcl new file mode 100644 index 00000000..3955b345 --- /dev/null +++ b/features/buildroot/board/atmel/nandflash.tcl @@ -0,0 +1,358 @@ +# ---------------------------------------------------------------------------- +# ATMEL Microcontroller +# ---------------------------------------------------------------------------- +# Copyright (c) 2015, Atmel Corporation +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the disclaimer below. +# +# Atmel's name may not be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE +# DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +################################################################################ +# Script data +################################################################################ +# DBGU address for rm9200, 9260/9g20, 9261/9g10, 9rl, 9x5 +set at91_base_dbgu0 0xfffff200 +# DBGU address for 9263, 9g45, sama5d3 +set at91_base_dbgu1 0xffffee00 +# DBGU address for sama5d4 +set at91_base_dbgu2 0xfc069000 + +set arch_exid_offset 0x44 + +# arch id +set arch_id_at91sam9g20 0x019905a0 +set arch_id_at91sam9g45 0x819b05a0 +set arch_id_at91sam9x5 0x819a05a0 +set arch_id_at91sam9n12 0x819a07a0 +set arch_id_sama5d3 0x8a5c07c0 + +## Find out at91sam9x5 variant to load the corresponding dtb file +array set at91sam9x5_variant { + 0x00000000 at91sam9g15 + 0x00000001 at91sam9g35 + 0x00000002 at91sam9x35 + 0x00000003 at91sam9g25 + 0x00000004 at91sam9x25 +} + +## Find out sama5d3 variant to load the corresponding dtb file +array set sama5d3_variant { + 0x00444300 sama5d31 + 0x00414300 sama5d33 + 0x00414301 sama5d34 + 0x00584300 sama5d35 + 0x00004301 sama5d36 +} + +## Find out sama5d4 variant +array set sama5d4_variant { + 0x00000001 sama5d41 + 0x00000002 sama5d42 + 0x00000003 sama5d43 + 0x00000004 sama5d44 +} + +################################################################################ +# proc uboot_env: Convert u-boot variables in a string ready to be flashed +# in the region reserved for environment variables +################################################################################ +proc set_uboot_env {nameOfLstOfVar} { + upvar $nameOfLstOfVar lstOfVar + + # sector size is the size defined in u-boot CFG_ENV_SIZE + set sectorSize [expr 0x20000 - 5] + + set strEnv [join $lstOfVar "\0"] + while {[string length $strEnv] < $sectorSize} { + append strEnv "\0" + } + # \0 between crc and strEnv is the flag value for redundant environment + set strCrc [binary format i [::vfs::crc $strEnv]] + return "$strCrc\0$strEnv" +} + +################################################################################ +proc find_variant_name {boardType} { + global at91_base_dbgu0 + global at91_base_dbgu1 + global at91_base_dbgu2 + global arch_exid_offset + global at91sam9x5_variant + global sama5d3_variant + global sama5d4_variant + set socName "none" + + switch $boardType { + at91sam9x5ek { + set exidAddr [expr {$at91_base_dbgu0 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get at91sam9x5_variant] { + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d3xek { + set exidAddr [expr {$at91_base_dbgu1 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d3_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d3_xplained { + set exidAddr [expr {$at91_base_dbgu1 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d3_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d4ek { + set exidAddr [expr {$at91_base_dbgu2 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d4_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d4_xplained { + set exidAddr [expr {$at91_base_dbgu2 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d4_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + } + + return "$socName" +} + +proc find_variant_ecc {boardType} { + set eccType "none" + + switch $boardType { + at91sam9x5ek { + set eccType 0xc0c00405 + } + at91sam9n12ek { + set eccType 0xc0c00405 + } + sama5d3xek { + set eccType 0xc0902405 + } + sama5d3_xplained { + set eccType 0xc0902405 + } + sama5d4ek { + set eccType 0xc1e04e07 + } + sama5d4_xplained { + set eccType 0xc1e04e07 + } + } + + puts "-I- === eccType is $eccType ===" + return $eccType +} + +proc get_kernel_load_addr {boardType} { + set kernel_load_addr 0x22000000 + + switch $boardType { + at91sam9m10g45ek { + set kernel_load_addr 0x72000000 + } + } + + return $kernel_load_addr +} + +proc get_dtb_load_addr {boardType} { + set dtb_load_addr 0x21000000 + + switch $boardType { + at91sam9m10g45ek { + set dtb_load_addr 0x71000000 + } + } + + return $dtb_load_addr +} + +################################################################################ +# Main script: Load the linux demo in NandFlash, +# Update the environment variables +################################################################################ + +################################################################################ + +# check for proper variable initialization +if {! [info exists boardFamily]} { + puts "-I- === Parsing script arguments ===" + if {! [info exists env(O)]} { + puts "-E- === Binaries path not defined ===" + exit + } + + set bootstrapFile "$env(O)/at91bootstrap.bin" + set ubootFile "$env(O)/u-boot.bin" + set kernelFile "$env(O)/zImage" + set rootfsFile "$env(O)/rootfs.ubi" + set build_uboot_env "yes" + + set i 1 + foreach arg $::argv { + puts "argument $i is $arg" + switch $i { + 4 { set boardFamily $arg } + 5 { set dtbFile "$env(O)/$arg" } + 6 { set videoMode $arg } + } + incr i + } +} + +puts "-I- === Board Family is $boardFamily ===" + +set pmeccConfig [find_variant_ecc $boardFamily] + +## Now check for the needed files +if {! [file exists $bootstrapFile]} { + puts "-E- === AT91Bootstrap file not found ===" + exit +} + +if {! [file exists $ubootFile]} { + puts "-E- === U-Boot file not found ===" + exit +} + +if {! [file exists $kernelFile]} { + puts "-E- === Linux kernel file not found ===" + exit +} + +if {! [file exists $dtbFile]} { + puts "-E- === Device Tree binary: $dtbFile file not found ===" + exit +} + +if {! [file exists $rootfsFile]} { + puts "-E- === Rootfs file not found ===" + exit +} + +## NandFlash Mapping +set bootStrapAddr 0x00000000 +set ubootAddr 0x00040000 +set ubootEnvAddr 0x000c0000 +set dtbAddr 0x00180000 +set kernelAddr 0x00200000 +set rootfsAddr 0x00800000 + +## u-boot variable +set kernelLoadAddr [get_kernel_load_addr $boardFamily] +set dtbLoadAddr [get_dtb_load_addr $boardFamily] + +## NandFlash Mapping +set kernelSize [format "0x%08X" [file size $kernelFile]] +set dtbSize [format "0x%08X" [file size $dtbFile]] +set bootCmd "bootcmd=nand read $dtbLoadAddr $dtbAddr $dtbSize; nand read $kernelLoadAddr $kernelAddr $kernelSize; bootz $kernelLoadAddr - $dtbLoadAddr" +set rootfsSize [format "0x%08X" [file size $rootfsFile]] + +lappend u_boot_variables \ + "bootdelay=1" \ + "baudrate=115200" \ + "stdin=serial" \ + "stdout=serial" \ + "stderr=serial" \ + "bootargs=console=ttyS0,115200 mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw $videoMode" \ + "$bootCmd" + +## Additional files to load +set ubootEnvFile "ubootEnvtFileNandFlash.bin" + + +## Start flashing procedure ################################################## +puts "-I- === Initialize the NAND access ===" +NANDFLASH::Init + +if {$pmeccConfig != "none"} { + puts "-I- === Enable PMECC OS Parameters ===" + NANDFLASH::NandHeaderValue HEADER $pmeccConfig +} + +puts "-I- === Erase all the NAND flash blocs and test the erasing ===" +NANDFLASH::EraseAllNandFlash + +puts "-I- === Load AT91Bootstrap in the first sector ===" +if {$pmeccConfig != "none"} { + NANDFLASH::SendBootFilePmeccCmd $bootstrapFile +} else { + NANDFLASH::sendBootFile $bootstrapFile +} + +puts "-I- === Load u-boot in the next sectors ===" +send_file {NandFlash} "$ubootFile" $ubootAddr 0 + +if {$build_uboot_env == "yes"} { + puts "-I- === Load the u-boot environment variables ===" + set fh [open "$ubootEnvFile" w] + fconfigure $fh -translation binary + puts -nonewline $fh [set_uboot_env u_boot_variables] + close $fh + send_file {NandFlash} "$ubootEnvFile" $ubootEnvAddr 0 +} + +puts "-I- === Load the Kernel image and device tree database ===" +send_file {NandFlash} "$dtbFile" $dtbAddr 0 +send_file {NandFlash} "$kernelFile" $kernelAddr 0 + +if {$pmeccConfig != "none"} { + puts "-I- === Enable trimffs ===" + NANDFLASH::NandSetTrimffs 1 +} + +puts "-I- === Load the linux file system ===" +send_file {NandFlash} "$rootfsFile" $rootfsAddr 0 + +puts "-I- === DONE. ===" diff --git a/features/buildroot/board/atmel/readme.txt b/features/buildroot/board/atmel/readme.txt new file mode 100644 index 00000000..4f90e4b4 --- /dev/null +++ b/features/buildroot/board/atmel/readme.txt @@ -0,0 +1,173 @@ +This document explains how to set up a basic Buildroot system on various +Atmel boards. Additional details can also be found on the Linux4SAM website: +http://www.at91.com/linux4sam/bin/view/Linux4SAM/ + +This guide covers the following configurations: + - at91sam9g45m10ek_defconfig + - at91sam9rlek_defconfig + - at91sam9x5ek_defconfig (at91sam9g15, at91sam9g25, at91sam9x25, + at91sam9g35 and at91sam9x35) + - atmel_sama5d3xek_defconfig (sama5d31, sama5d33, sama5d34, sama5d35, + sama5d36) + - atmel_sama5d3_xplained_defconfig + - atmel_sama5d3_xplained_dev_defconfig + - atmel_sama5d3_xplained_mmc_defconfig + - atmel_sama5d3_xplained_mmc_dev_defconfig + - atmel_sama5d4_xplained_defconfig + - atmel_sama5d4_xplained_dev_defconfig + - atmel_sama5d4_xplained_mmc_defconfig + - atmel_sama5d4_xplained_mmc_dev_defconfig + - atmel_sama5d2_xplained_mmc_defconfig + - atmel_sama5d2_xplained_mmc_dev_defconfig + +These configurations will use AT91Bootstrap, u-boot and a linux kernel from +the git trees maintained by Atmel. + +The configurations labeled as 'dev' provide a development rootfs with tools to +tests the features of the SoC: +- ALSA tools to test audio +- FFMPEG to record video from the ISI/ISC +- I2C, SPI, CAN, etc. tools +- modetest for LCD screens, HDMI +- Wilc1000 firmware for the Atmel Wireless sdio module +- SSH for convenience +- GDB/GDB server for debug + +Configuring and building Buildroot +================================== + +For most configurations listed above, the Buildroot configuration +assumes the system will be flashed on NAND. In this case, after +building Buildroot, follow the instructions in the "Flashing the NAND +using SAM-BA" section below. + +For the Xplained boards, an alternative Buildroot configuration is +provided to boot from an SD card. Those configurations are labeled as +'mmc'. In this case, after building Buildroot, follow the instructions +in the "Preparing the SD card" section. + +To configure and build Buildroot, run: + + make _defconfig + make + +Flashing the NAND using SAM-BA +============================== + +Flashing the board +------------------ + +Connect the board: + o at91sam9g45m10ek: DBGU: J10, USB sam-ba: J14 + o at91sam9rlek: DBGU: J19, USB sam-ba: J21 + o at91sam9x5ek: DBGU: J11, USB sam-ba: J20 + o sama5d3xek: DBGU: J14, USB sam-ba: J20 + o sama5d3 Xplained: DBGU: J23, USB sam-ba: J6 + o sama5d4ek: DBGU: J22 or J24, USB sam-ba: J1 + o sama5d4 Xplained: DBGU: J1, USB sam-ba: J11 + +Start the board in RomBOOT: + o at91sam9g45m10ek: + 1. open JP8, JP10 and JP12 + 2. start the board + 3. close JP8, JP10 and JP12 + + o at91sam9rlek: + 1. J11 on 1-2 (BMS=1), open J12 and J13 + 2. start the board + 3. close J12 and J13 + + o at91sam9x5ek: + 1. open JP9 and: + - Cogent: open *NCS jumper + - Embest: open SW1 + - Ronetix: open J1 and J2 + 2. start the board + 3. close JP9 and: + - Cogent: close *NCS jumper + - Embest: close SW1 (ON position) + - Ronetix: close J1 and J2 + + o sama5d3xek: + 1. start the board + 2. push BP4 and BP1 + 3. release BP1 + 4. release BP4 + + o sama5d3 Xplained: + 1. open JP5 (NANDCS) and JP6 (SPICS) + 2. start the board + 3. close JP5 ans JP6 + + o sama5d4ek: + 1. start the board + 2. push BP3 and BP4 + 3. release BP4 + 4. release BP3 + + o sama5d4 Xplained: + 1. close JP7 (BOOT_DIS) + 2. start the board + 3. open JP7 + +"RomBOOT" should appear on your console (this should be ttyUSBx or ttyACMx) + +Now locate the USB sam-ba interface it should be ttyACMx, usually ttyACM0 +dmesg on your machine should give: +usb 1-2.1.4: New USB device found, idVendor=03eb, idProduct=6124 +usb 1-2.1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 +cdc_acm 1-2.1.4:1.0: ttyACM0: USB ACM device + +Look for idVendor=03eb, idProduct=6124, this is the interface you want to use. + +You can then flash the board using the provided flasher.sh script in board/atmel: + +board/atmel/flasher.sh + +For example, for an out of tree build made in +/tmp/atmel_sama5d3_xplained/ for the sama5d3 Xplained, you would use: +board/atmel/flasher.sh /tmp/atmel_sama5d3_xplained/ /dev/ttyACM0 sama5d3_xplained + +Reboot, the system should boot up to the buildroot login invite. + +Preparing the SD card +===================== + +An image named sdcard.img is automatically generated. With this image, +you no longer have to care about the creation of the partition and +copying files to the SD card. + +You need at least a 1GB SD card. All the data on the SD card will be +lost. To copy the image on the SD card: + +/!\ Caution be sure to do it on the right mmcblk device /!\ + +dd if=output/images/sdcard.img of=/dev/mmcblk0 + +Insert your SD card in your Xplained board, and enjoy. The default +U-Boot environment will load properly the kernel and Device Tree blob +from the first partition of the SD card, so everything works +automatically. + +By default a 16MB FAT partition is created. It contains at91bootstrap, +u-boot, the kernel image and all dtb variants for your board. The dtb +used is the basic one: + +U-Boot> print +[...] +bootcmd=fatload mmc 1:1 0x21000000 at91-sama5d2_xplained.dtb; fatload mmc 1:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000 +[...] + +If you want to use a variant such as the _pda7 one, you will have to +update your u-boot environment: + +U-Boot> setenv bootcmd 'fatload mmc 1:1 0x21000000 at91-sama5d2_xplained_pda7.dtb; fatload mmc 1:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000' +U-Boot> save +Saving Environment to FAT... +writing uboot.env +done + +A 512MB ext4 partition is also created to store the rootfs generated. + +If you want to customize the size of the partitions and their content, +take a look at the the genimage.cfg file in the board directory. diff --git a/features/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg b/features/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg new file mode 100644 index 00000000..eaa3896f --- /dev/null +++ b/features/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg @@ -0,0 +1,31 @@ +# Image for SD card boot on Atmel SAMA5D2 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d27_som1_ek.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg b/features/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg new file mode 100644 index 00000000..d3b7af5b --- /dev/null +++ b/features/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg @@ -0,0 +1,34 @@ +# Image for SD card boot on Atmel SAMA5D2 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d2_xplained.dtb", + "at91-sama5d2_xplained_pda4.dtb", + "at91-sama5d2_xplained_pda7.dtb", + "at91-sama5d2_xplained_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg b/features/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg new file mode 100644 index 00000000..277ce5f9 --- /dev/null +++ b/features/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg @@ -0,0 +1,34 @@ +# Image for SD card boot on Atmel SAMA5D3 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d3_xplained.dtb", + "at91-sama5d3_xplained_pda4.dtb", + "at91-sama5d3_xplained_pda7.dtb", + "at91-sama5d3_xplained_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg b/features/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg new file mode 100644 index 00000000..70bb3e4f --- /dev/null +++ b/features/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg @@ -0,0 +1,35 @@ +# Image for SD card boot on Atmel SAMA5D4 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d4_xplained.dtb", + "at91-sama5d4_xplained_hdmi.dtb", + "at91-sama5d4_xplained_pda4.dtb", + "at91-sama5d4_xplained_pda7.dtb", + "at91-sama5d4_xplained_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts b/features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts new file mode 100644 index 00000000..8ffedd9f --- /dev/null +++ b/features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts @@ -0,0 +1,247 @@ +/* + * Device Tree Generator version: 1.3 + * + * (C) Copyright 2007-2008 Xilinx, Inc. + * (C) Copyright 2007-2009 Michal Simek + * + * Michal SIMEK + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * CAUTION: This file is automatically generated by libgen. + * Version: Xilinx EDK 13.2 EDK_O.61xd + * + * XPS project directory: device-tree_bsp_230-orig + */ + +/dts-v1/; +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "xlnx,microblaze"; + model = "testing"; + MCB3_LPDDR: memory@80000000 { + device_type = "memory"; + reg = < 0x80000000 0x4000000 >; + } ; + aliases { + ethernet0 = &Ethernet_MAC; + serial0 = &USB_Uart; + } ; + chosen { + bootargs = "console=ttyUL0"; + linux,stdout-path = "/axi@0/serial@40600000"; + } ; + cpus { + #address-cells = <1>; + #cpus = <0x1>; + #size-cells = <0>; + microblaze_0: cpu@0 { + clock-frequency = <66666667>; + compatible = "xlnx,microblaze-8.20.a"; + d-cache-baseaddr = <0x80000000>; + d-cache-highaddr = <0x83ffffff>; + d-cache-line-size = <0x10>; + d-cache-size = <0x2000>; + device_type = "cpu"; + i-cache-baseaddr = <0x80000000>; + i-cache-highaddr = <0x83ffffff>; + i-cache-line-size = <0x10>; + i-cache-size = <0x2000>; + model = "microblaze,8.20.a"; + reg = <0>; + timebase-frequency = <66666667>; + xlnx,addr-tag-bits = <0xd>; + xlnx,allow-dcache-wr = <0x1>; + xlnx,allow-icache-wr = <0x1>; + xlnx,area-optimized = <0x0>; + xlnx,avoid-primitives = <0x0>; + xlnx,branch-target-cache-size = <0x0>; + xlnx,cache-byte-size = <0x2000>; + xlnx,d-axi = <0x1>; + xlnx,d-lmb = <0x1>; + xlnx,d-plb = <0x0>; + xlnx,data-size = <0x20>; + xlnx,dcache-addr-tag = <0xd>; + xlnx,dcache-always-used = <0x1>; + xlnx,dcache-byte-size = <0x2000>; + xlnx,dcache-data-width = <0x0>; + xlnx,dcache-force-tag-lutram = <0x0>; + xlnx,dcache-interface = <0x0>; + xlnx,dcache-line-len = <0x4>; + xlnx,dcache-use-fsl = <0x0>; + xlnx,dcache-use-writeback = <0x0>; + xlnx,dcache-victims = <0x0>; + xlnx,debug-enabled = <0x1>; + xlnx,div-zero-exception = <0x0>; + xlnx,dynamic-bus-sizing = <0x1>; + xlnx,ecc-use-ce-exception = <0x0>; + xlnx,edge-is-positive = <0x1>; + xlnx,endianness = <0x1>; + xlnx,family = "spartan6"; + xlnx,fault-tolerant = <0x0>; + xlnx,fpu-exception = <0x0>; + xlnx,freq = <0x3f940ab>; + xlnx,fsl-data-size = <0x20>; + xlnx,fsl-exception = <0x0>; + xlnx,fsl-links = <0x0>; + xlnx,i-axi = <0x0>; + xlnx,i-lmb = <0x1>; + xlnx,i-plb = <0x0>; + xlnx,icache-always-used = <0x1>; + xlnx,icache-data-width = <0x0>; + xlnx,icache-force-tag-lutram = <0x0>; + xlnx,icache-interface = <0x0>; + xlnx,icache-line-len = <0x4>; + xlnx,icache-streams = <0x0>; + xlnx,icache-use-fsl = <0x0>; + xlnx,icache-victims = <0x0>; + xlnx,ill-opcode-exception = <0x0>; + xlnx,instance = "microblaze_0"; + xlnx,interconnect = <0x2>; + xlnx,interconnect-m-axi-dc-aw-register = <0x0>; + xlnx,interconnect-m-axi-dc-read-issuing = <0x2>; + xlnx,interconnect-m-axi-dc-w-register = <0x0>; + xlnx,interconnect-m-axi-dc-write-issuing = <0x20>; + xlnx,interconnect-m-axi-dp-read-issuing = <0x1>; + xlnx,interconnect-m-axi-dp-write-issuing = <0x1>; + xlnx,interconnect-m-axi-ic-read-issuing = <0x2>; + xlnx,interconnect-m-axi-ip-read-issuing = <0x1>; + xlnx,interrupt-is-edge = <0x0>; + xlnx,lockstep-slave = <0x0>; + xlnx,mmu-dtlb-size = <0x1>; + xlnx,mmu-itlb-size = <0x1>; + xlnx,mmu-privileged-instr = <0x0>; + xlnx,mmu-tlb-access = <0x3>; + xlnx,mmu-zones = <0x2>; + xlnx,number-of-pc-brk = <0x1>; + xlnx,number-of-rd-addr-brk = <0x0>; + xlnx,number-of-wr-addr-brk = <0x0>; + xlnx,opcode-0x0-illegal = <0x0>; + xlnx,optimization = <0x0>; + xlnx,pvr = <0x0>; + xlnx,pvr-user1 = <0x0>; + xlnx,pvr-user2 = <0x0>; + xlnx,reset-msr = <0x0>; + xlnx,sco = <0x0>; + xlnx,stream-interconnect = <0x0>; + xlnx,unaligned-exceptions = <0x0>; + xlnx,use-barrel = <0x1>; + xlnx,use-branch-target-cache = <0x0>; + xlnx,use-dcache = <0x1>; + xlnx,use-div = <0x0>; + xlnx,use-ext-brk = <0x1>; + xlnx,use-ext-nm-brk = <0x1>; + xlnx,use-extended-fsl-instr = <0x0>; + xlnx,use-fpu = <0x0>; + xlnx,use-hw-mul = <0x1>; + xlnx,use-icache = <0x1>; + xlnx,use-interrupt = <0x1>; + xlnx,use-mmu = <0x3>; + xlnx,use-msr-instr = <0x1>; + xlnx,use-pcmp-instr = <0x0>; + xlnx,use-stack-protection = <0x0>; + } ; + } ; + axi4lite_0: axi@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "xlnx,axi-interconnect-1.03.a", "simple-bus"; + ranges ; + Ethernet_MAC: ethernet@40e00000 { + compatible = "xlnx,axi-ethernetlite-1.00.a", "xlnx,xps-ethernetlite-1.00.a"; + device_type = "network"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 2 0 >; + local-mac-address = [ 00 0a 35 aa de 00 ]; +// phy-handle = <&phy0>; + reg = < 0x40e00000 0x10000 >; + xlnx,duplex = <0x1>; + xlnx,family = "spartan6"; + xlnx,include-global-buffers = <0x0>; + xlnx,include-internal-loopback = <0x0>; + xlnx,include-mdio = <0x1>; + xlnx,include-phy-constraints = <0x1>; + xlnx,interconnect-s-axi-read-acceptance = <0x1>; + xlnx,interconnect-s-axi-write-acceptance = <0x1>; + xlnx,rx-ping-pong = <0x0>; + xlnx,s-axi-aclk-period-ps = <0x3a98>; + xlnx,s-axi-id-width = <0x1>; + xlnx,s-axi-supports-narrow-burst = <0x0>; + xlnx,tx-ping-pong = <0x0>; +/* + mdio { + #address-cells = <1>; + #size-cells = <0>; + phy0: phy@7 { + compatible = "marvell,88e1111"; + device_type = "ethernet-phy"; + reg = <7>; + } ; + } ; +*/ + } ; + SPI_FLASH: spi@40a00000 { + compatible = "xlnx,axi-spi-1.01.a", "xlnx,xps-spi-2.00.a"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 1 2 >; + reg = < 0x40a00000 0x10000 >; + xlnx,family = "spartan6"; + xlnx,fifo-exist = <0x1>; + xlnx,num-ss-bits = <0x1>; + xlnx,num-transfer-bits = <0x8>; + xlnx,sck-ratio = <0x4>; + } ; + USB_Uart: serial@40600000 { + clock-frequency = <66666667>; + compatible = "xlnx,axi-uartlite-1.02.a", "xlnx,xps-uartlite-1.00.a"; + current-speed = <115200>; + device_type = "serial"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 3 0 >; + port-number = <0>; + reg = < 0x40600000 0x10000 >; + xlnx,baudrate = <0x1c200>; + xlnx,data-bits = <0x8>; + xlnx,family = "spartan6"; + xlnx,odd-parity = <0x1>; + xlnx,s-axi-aclk-freq-hz = <0x3f940ab>; + xlnx,use-parity = <0x0>; + } ; + microblaze_0_intc: interrupt-controller@41200000 { + #interrupt-cells = <0x2>; + compatible = "xlnx,axi-intc-1.01.a", "xlnx,xps-intc-1.00.a"; + interrupt-controller ; + reg = < 0x41200000 0x10000 >; + xlnx,kind-of-intr = <0xc>; + xlnx,num-intr-inputs = <0x4>; + } ; + system_timer: timer@41c00000 { + clock-frequency = <66666667>; + compatible = "xlnx,axi-timer-1.02.a", "xlnx,xps-timer-1.00.a"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 0 2 >; + reg = < 0x41c00000 0x10000 >; + xlnx,count-width = <0x20>; + xlnx,family = "spartan6"; + xlnx,gen0-assert = <0x1>; + xlnx,gen1-assert = <0x1>; + xlnx,one-timer-only = <0x0>; + xlnx,trig0-assert = <0x1>; + xlnx,trig1-assert = <0x1>; + } ; + } ; +} ; diff --git a/features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig b/features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig new file mode 100644 index 00000000..5d01ca00 --- /dev/null +++ b/features/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig @@ -0,0 +1,68 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="rootfs.cpio" +CONFIG_INITRAMFS_COMPRESSION_GZIP=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_EXPERT=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_EXTRA_PASS=y +# CONFIG_HOTPLUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_SHMEM is not set +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_OPT_LIB_ASM is not set +CONFIG_KERNEL_BASE_ADDR=0x80000000 +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan6" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +# CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR is not set +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_XILINX_MICROBLAZE0_HW_VER="8.20.a" +CONFIG_HZ_100=y +CONFIG_MMU=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_FORCE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_LRO is not set +# CONFIG_IPV6 is not set +CONFIG_PROC_DEVICETREE=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_NETDEVICES=y +CONFIG_NET_ETHERNET=y +CONFIG_XILINX_EMACLITE=y +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_EXT2_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_CIFS=y +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEBUG_SLAB=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_INFO=y +CONFIG_EARLY_PRINTK=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set diff --git a/features/buildroot/board/avnet/s6lx9_microboard/readme.txt b/features/buildroot/board/avnet/s6lx9_microboard/readme.txt new file mode 100644 index 00000000..3cb2ce98 --- /dev/null +++ b/features/buildroot/board/avnet/s6lx9_microboard/readme.txt @@ -0,0 +1,70 @@ +This is the buildroot board support for the Avnet Spartan6 LX9 MicroBoard. + +The Avnet S6LX9 Microboard is a small USB-Stick sized module containing +a Spartan6 FPGA capable of running the Microblaze softcore processor +together with RAM and FLASH memory. + +The board can be bought from Avnet (avnet.com) or from Trenz Electronic +(www.trenz-electronic.de) for a low price. + +To run the Linux built with buildroot you have to install the FPGA bitfile +and u-boot as described in the tutorial AvtS6LX9MicroBoard_SW302_PetaLinux +available on http://www.em.avnet.com/s6microboard + +On this site also is a forum containing information on how to build your own +Microblaze processor for the Microboard. + +The image file (default name is simpleImage.lx9_mmu.ub) has to be copied +to your tftp folder (often /tftpboot/) or can be programmed into the +board's SPI flash. + +Sample session: + +$ make s6lx9_microboard_defconfig +$ make +$ cp build/linux-/arch/microblaze/boot/simpleImage.lx9_mmu.ub /tftpboot/br12.2a.ub +$ minicom + + + Icache:ON + Dcache:ON + U-Boot Start:0x83f00000 +SF: Got idcode 20 ba 18 10 01 +*** Warning - bad CRC, using default environment + +Net: Xilinx_Emaclite +MAC: 00:0a:35:00:63:37 +U-BOOT for Avnet-LX9-Microboard-AXI-tiny-13.1 + +BOOTP broadcast 1 +DHCP client bound to address 192.168.11.122 +Hit any key to stop autoboot: 0 +U-Boot-PetaLinux> tftp br12.2a.ub +Using Xilinx_Emaclite device +TFTP from server 192.168.11.10; our IP address is 192.168.11.122 +Filename 'br12.2a.ub'. +Load address: 0x80002000 +Loading: ################################################################# + ################################################################# + ################################################################# + ################################################################# + ################################################################# + ############################## +done +Bytes transferred = 5207724 (4f76ac hex) +U-Boot-PetaLinux> bootm +## Booting kernel from Legacy Image at 80002000 ... + Image Name: Linux-3.1.0 + Image Type: MicroBlaze Linux Kernel Image (uncompressed) + Data Size: 5207660 Bytes = 5 MB + Load Address: 80000000 + Entry Point: 80000000 + Verifying Checksum ... OK + Loading Kernel Image ... OK +OK +## Transferring control to Linux (at address 80000000), 0x80000000 ramdisk 0x00000000, FDT 0x00000000... +Early console on uartlite at 0x40600000 +..... boot log skipped + +Welcome to Microblaze Buildroot +Microblaze login: diff --git a/features/buildroot/board/bananapi/bananapi-m1/boot.cmd b/features/buildroot/board/bananapi/bananapi-m1/boot.cmd new file mode 100644 index 00000000..0cf6f4d6 --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m1/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-bananapi.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/bananapi/bananapi-m1/genimage.cfg b/features/buildroot/board/bananapi/bananapi-m1/genimage.cfg new file mode 100644 index 00000000..e2e13116 --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m1/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-bananapi.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/bananapi/bananapi-m1/readme.txt b/features/buildroot/board/bananapi/bananapi-m1/readme.txt new file mode 100644 index 00000000..382ba63c --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m1/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M1. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Bananapi M1 link: +http://www.banana-pi.org/m1.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Bananapi+M1 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m1_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M1 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/bananapi/bananapi-m2-ultra/boot.cmd b/features/buildroot/board/bananapi/bananapi-m2-ultra/boot.cmd new file mode 100644 index 00000000..9c24eabf --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m2-ultra/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-r40-bananapi-m2-ultra.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/bananapi/bananapi-m2-ultra/genimage.cfg b/features/buildroot/board/bananapi/bananapi-m2-ultra/genimage.cfg new file mode 100644 index 00000000..675253af --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m2-ultra/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-r40-bananapi-m2-ultra.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/bananapi/bananapi-m2-ultra/readme.txt b/features/buildroot/board/bananapi/bananapi-m2-ultra/readme.txt new file mode 100644 index 00000000..c3de84f5 --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m2-ultra/readme.txt @@ -0,0 +1,35 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M2 ULtra. With the current +configuration it will bring-up the board, and allow access through the +serial console. + +Bananapi M2 Ultra link: +http://www.banana-pi.org/m2u.html + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m2_ultra_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M2 Ultra and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/bananapi/bananapi-m64/boot.cmd b/features/buildroot/board/bananapi/bananapi-m64/boot.cmd new file mode 100644 index 00000000..d35c9b0b --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-bananapi-m64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/bananapi/bananapi-m64/genimage.cfg b/features/buildroot/board/bananapi/bananapi-m64/genimage.cfg new file mode 100644 index 00000000..9730d8fa --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-bananapi-m64.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/bananapi/bananapi-m64/readme.txt b/features/buildroot/board/bananapi/bananapi-m64/readme.txt new file mode 100644 index 00000000..0dec3e52 --- /dev/null +++ b/features/buildroot/board/bananapi/bananapi-m64/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Bananapi M64 link: +http://www.banana-pi.org/m64.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Bananapi+M64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m64_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/beagleboardx15/genimage.cfg b/features/buildroot/board/beagleboardx15/genimage.cfg new file mode 100644 index 00000000..d27eff60 --- /dev/null +++ b/features/buildroot/board/beagleboardx15/genimage.cfg @@ -0,0 +1,26 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img" + } + } + size = 4M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/beagleboardx15/post-image.sh b/features/buildroot/board/beagleboardx15/post-image.sh new file mode 100755 index 00000000..f52682f5 --- /dev/null +++ b/features/buildroot/board/beagleboardx15/post-image.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/beagleboardx15/readme.txt b/features/buildroot/board/beagleboardx15/readme.txt new file mode 100644 index 00000000..5af2c914 --- /dev/null +++ b/features/buildroot/board/beagleboardx15/readme.txt @@ -0,0 +1,49 @@ +BeagleBoard X15 + +Intro +===== +This config currently supports the beagleboard x15, +and generates a barebone image. + +The image must be flashed to a SD card to be used. + +How to build it +=============== + + $ make beagleboardx15_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build a sdcard image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- am57xx-beagle-x15.dtb + +-- am57xx-beagle-x15-revb1.dtb + +-- boot.vfat + +-- MLO + +--rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + +-- u-boot.img + +-- u-boot-spl.bin + +-- zImage + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/beaglebone/genimage.cfg b/features/buildroot/board/beaglebone/genimage.cfg new file mode 100644 index 00000000..cfc1039e --- /dev/null +++ b/features/buildroot/board/beaglebone/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "uEnv.txt", + "am335x-evm.dtb", + "am335x-evmsk.dtb", + "am335x-bone.dtb", + "am335x-boneblack.dtb", + "am335x-bonegreen.dtb", + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/beaglebone/genimage_linux41.cfg b/features/buildroot/board/beaglebone/genimage_linux41.cfg new file mode 100644 index 00000000..ba60297d --- /dev/null +++ b/features/buildroot/board/beaglebone/genimage_linux41.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "uEnv.txt", + "am335x-evm.dtb", + "am335x-evmsk.dtb", + "am335x-bone.dtb", + "am335x-boneblack.dtb", + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/beaglebone/linux-4.1-sgx.fragment b/features/buildroot/board/beaglebone/linux-4.1-sgx.fragment new file mode 100644 index 00000000..c0d2e7b2 --- /dev/null +++ b/features/buildroot/board/beaglebone/linux-4.1-sgx.fragment @@ -0,0 +1,12 @@ +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_OMAP2_DSS_INIT=y +CONFIG_OMAP_DSS_BASE=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_DSS_DPI=y +CONFIG_DRM_OMAP=y +CONFIG_DRM_OMAP_NUM_CRTCS=2 +CONFIG_DRM_OMAP_WB_M2M=y +CONFIG_DRM_TILCDC=y +CONFIG_DRM_I2C_NXP_TDA998X=y +CONFIG_DRM=y diff --git a/features/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch b/features/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch new file mode 100644 index 00000000..8e36d9ab --- /dev/null +++ b/features/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch @@ -0,0 +1,16 @@ +This patch keeps the debugSS clock alive, it clocks the JTAG macro and enables +access to the SoC via JTAG after the kernel booted. + +Signed-off-by: Lothar Felten +--- +diff -Naur linux-orig/arch/arm/mach-omap2/omap_hwmod_33xx_data.c linux-52c4aa7cdb93d61f8008f380135beaf7b8fa6593/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +--- linux-orig/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 2015-10-02 17:30:56.000000000 +0200 ++++ linux-52c4aa7cdb93d61f8008f380135beaf7b8fa6593/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 2016-08-15 11:28:55.017617612 +0200 +@@ -208,6 +208,7 @@ + .name = "debugss", + .class = &am33xx_debugss_hwmod_class, + .clkdm_name = "l3_aon_clkdm", ++ .flags = (HWMOD_INIT_NO_IDLE|HWMOD_INIT_NO_RESET), /* keep debugSS clock alive for JTAG */ + .main_clk = "trace_clk_div_ck", + .prcm = { + .omap4 = { diff --git a/features/buildroot/board/beaglebone/post-image.sh b/features/buildroot/board/beaglebone/post-image.sh new file mode 100755 index 00000000..68fe0896 --- /dev/null +++ b/features/buildroot/board/beaglebone/post-image.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# post-image.sh for CircuitCo BeagleBone and TI am335x-evm +# 2014, Marcin Jabrzyk +# 2016, Lothar Felten + +BOARD_DIR="$(dirname $0)" + +# copy the uEnv.txt to the output/images directory +cp board/beaglebone/uEnv.txt $BINARIES_DIR/uEnv.txt + +# the 4.1 kernel does not provide a dtb for beaglebone green, so we +# use a different genimage config if am335x-bonegreen.dtb is not +# built: +if [ -e ${BINARIES_DIR}/am335x-bonegreen.dtb ] ; then + GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +else + GENIMAGE_CFG="${BOARD_DIR}/genimage_linux41.cfg" +fi + +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/beaglebone/readme.txt b/features/buildroot/board/beaglebone/readme.txt new file mode 100644 index 00000000..e6647dad --- /dev/null +++ b/features/buildroot/board/beaglebone/readme.txt @@ -0,0 +1,52 @@ +CircuitCo BeagleBone +Texas Instuments AM335x Evaluation Module (TMDXEVM3358) + +Description +=========== + +This configuration will build a complete image for the beaglebone and +the TI AM335x-EVM, the board type is identified by the on-board +EEPROM. The configuration is based on the +ti-processor-sdk-02.00.00.00. Device tree blobs for beaglebone +variants and the evm-sk are built too. + +For Qt5 support support use the beaglebone_qt5_defconfig. + +How to build it +=============== + +Select the default configuration for the target: +$ make beaglebone_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ ++-- am335x-boneblack.dtb ++-- am335x-bone.dtb ++-- am335x-evm.dtb ++-- am335x-evmsk.dtb ++-- boot.vfat ++-- MLO ++-- rootfs.ext2 ++-- rootfs.tar ++-- sdcard.img ++-- u-boot.img ++-- uEnv.txt ++-- zImage + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX + +Tested hardware +=============== +am335x-evm (rev. 1.1A) +beagleboneblack (rev. A5A) +beaglebone (rev. A6) + +2016, Lothar Felten diff --git a/features/buildroot/board/beaglebone/uEnv.txt b/features/buildroot/board/beaglebone/uEnv.txt new file mode 100644 index 00000000..a665f208 --- /dev/null +++ b/features/buildroot/board/beaglebone/uEnv.txt @@ -0,0 +1,8 @@ +bootpart=0:1 +devtype=mmc +bootdir= +bootfile=zImage +bootpartition=mmcblk0p2 +set_mmc1=if test $board_name = A33515BB; then setenv bootpartition mmcblk1p2; fi +set_bootargs=setenv bootargs console=ttyO0,115200n8 root=/dev/${bootpartition} rw rootfstype=ext4 rootwait +uenvcmd=run set_mmc1; run set_bootargs;run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr} diff --git a/features/buildroot/board/boundarydevices/common/boot.cmd b/features/buildroot/board/boundarydevices/common/boot.cmd new file mode 100644 index 00000000..760363da --- /dev/null +++ b/features/buildroot/board/boundarydevices/common/boot.cmd @@ -0,0 +1,151 @@ +setenv bootargs '' + +setenv initrd_high 0xffffffff +m4='' +kernelimage=zImage +bootcommand=bootz +a_base=0x10000000 +if itest.s x51 == "x${imx_cpu}" ; then + a_base=0x90000000 +elif itest.s x53 == "x${imx_cpu}"; then + a_base=0x70000000 +elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then + a_base=0x80000000 +elif itest.s x8MQ == "x${imx_cpu}"; then + a_base=0x40000000 + kernelimage=Image + bootcommand=booti +fi +if itest.s "x1" == "x${m4enabled}" ; then + run m4boot; + m4='-m4'; +fi + +setexpr a_script ${a_base} + 0x00800000 +setexpr a_zImage ${a_base} + 0x00800000 +setexpr a_fdt ${a_base} + 0x03000000 +setexpr a_ramdisk ${a_base} + 0x03800000 +setexpr a_initrd ${a_base} + 0x03a00000 +setexpr a_reset_cause_marker ${a_base} + 0x80 +setexpr a_reset_cause ${a_base} + 0x84 + +if itest.s "x" == "x${board}" ; then + echo "!!!! Error: Your u-boot is outdated. Please upgrade."; + exit; +fi + +if itest.s "x" == "x${fdt_file}" ; then + if itest.s x6SOLO == "x${imx_cpu}" ; then + fdt_file=imx6dl-${board}.dtb; + elif itest.s x6DL == "x${imx_cpu}" ; then + fdt_file=imx6dl-${board}.dtb; + elif itest.s x6QP == "x${imx_cpu}" ; then + fdt_file=imx6qp-${board}.dtb; + elif itest.s x6SX == "x${imx_cpu}" ; then + fdt_file=imx6sx-${board}${m4}.dtb; + elif itest.s x7D == "x${imx_cpu}" ; then + fdt_file=imx7d-${board}${m4}.dtb; + elif itest.s x8MQ == "x${imx_cpu}" ; then + fdt_file=imx8mq-${board}${m4}.dtb; + elif itest.s x51 == "x${imx_cpu}" ; then + fdt_file=imx51-${board}.dtb; + elif itest.s x53 == "x${imx_cpu}" ; then + fdt_file=imx53-${board}.dtb; + else + fdt_file=imx6q-${board}.dtb; + fi +fi + +if itest.s x${distro_bootpart} == x ; then + distro_bootpart=1 +fi + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_script} uEnv.txt ; then + env import -t ${a_script} ${filesize} +fi + +setenv bootargs ${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc cpu=${imx_cpu} board=${board} + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_fdt} ${prefix}${fdt_file} ; then + fdt addr ${a_fdt} + setenv fdt_high 0xffffffff +else + echo "!!!! Error loading ${prefix}${fdt_file}"; + exit; +fi + +fdt resize +if itest.s "x" != "x${cmd_custom}" ; then + run cmd_custom +fi +if itest.s "x" != "x${cmd_hdmi}" ; then + run cmd_hdmi + if itest.s x == x${allow_noncea} ; then + setenv bootargs ${bootargs} mxc_hdmi.only_cea=1; + echo "only CEA modes allowed on HDMI port"; + else + setenv bootargs ${bootargs} mxc_hdmi.only_cea=0; + echo "non-CEA modes allowed on HDMI, audio may be affected"; + fi +fi + +if itest.s "x" != "x${cmd_lcd}" ; then + run cmd_lcd +fi +if itest.s "x" != "x${cmd_lcd2}" ; then + run cmd_lcd2 +fi +if itest.s "x" != "x${cmd_lvds}" ; then + run cmd_lvds +fi +if itest.s "x" != "x${cmd_lvds2}" ; then + run cmd_lvds2 +fi +if itest.s "x" != "x${cmd_mipi}" ; then + run cmd_mipi +fi + +if test "sata" = "${devtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ; +elif test "usb" = "${devtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ; +else + setenv bootargs "${bootargs} root=/dev/mmcblk${devnum}p${distro_bootpart}" +fi + +if itest.s "x" != "x${disable_msi}" ; then + setenv bootargs ${bootargs} pci=nomsi +fi; + +if itest.s "x" != "x${disable_giga}" ; then + setenv bootargs ${bootargs} fec.disable_giga=1 +fi + +if itest.s "x" != "x${wlmac}" ; then + setenv bootargs ${bootargs} wlcore.mac=${wlmac} +fi + +if itest.s "x" != "x${gpumem}" ; then + setenv bootargs ${bootargs} galcore.contiguousSize=${gpumem} +fi + +if itest.s "x" != "x${cma}" ; then + setenv bootargs ${bootargs} cma=${cma} +fi + +if itest.s "x" != "x${loglevel}" ; then + setenv bootargs ${bootargs} loglevel=${loglevel} +fi + +if itest.s "x" != "x${show_fdt}" ; then + fdt print / +fi + +if itest.s "x" != "x${show_env}" ; then + printenv +fi + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_zImage} ${prefix}${kernelimage} ; then + ${bootcommand} ${a_zImage} - ${a_fdt} +fi +echo "Error loading kernel image" diff --git a/features/buildroot/board/boundarydevices/common/genimage.cfg b/features/buildroot/board/boundarydevices/common/genimage.cfg new file mode 100644 index 00000000..a383fb75 --- /dev/null +++ b/features/buildroot/board/boundarydevices/common/genimage.cfg @@ -0,0 +1,18 @@ +# Minimal SD card image for Boundary Devices platforms +# +# It does not need a boot section for a bootloader since it is booted +# from its NOR flash memory. +# +# To update the bootloader, execute the following from U-Boot prompt: +# => run upgradeu + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/boundarydevices/common/post-build.sh b/features/buildroot/board/boundarydevices/common/post-build.sh new file mode 100755 index 00000000..161ec064 --- /dev/null +++ b/features/buildroot/board/boundarydevices/common/post-build.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# post-build fixups +# for further details, see +# +# http://boundarydevices.com/u-boot-on-i-mx6/ +# + +BOARD_DIR="$(dirname $0)" +UBOOT_DEFCONFIG="$(grep BR2_TARGET_UBOOT_BOARD_DEFCONFIG ${BR2_CONFIG} | sed 's/.*\"\(.*\)\"/\1/')" + +if grep -Eq "^BR2_aarch64=y$" ${BR2_CONFIG}; then + MKIMAGE_ARCH=arm64 + UBOOT_BINARY=imx8-boot-sd.bin +else + MKIMAGE_ARCH=arm + UBOOT_BINARY=u-boot.imx +fi + +# bd u-boot looks for standard bootscript +$HOST_DIR/bin/mkimage -A $MKIMAGE_ARCH -O linux -T script -C none -a 0 -e 0 \ + -n "boot script" -d $BOARD_DIR/boot.cmd $TARGET_DIR/boot/boot.scr + +# u-boot / update script for bd upgradeu command +if [ -e $BINARIES_DIR/$UBOOT_BINARY ]; then + install -D -m 0644 $BINARIES_DIR/$UBOOT_BINARY \ + $TARGET_DIR/u-boot.$UBOOT_DEFCONFIG + $HOST_DIR/bin/mkimage -A $MKIMAGE_ARCH -O linux -T script -C none -a 0 -e 0 \ + -n "upgrade script" -d $BOARD_DIR/upgrade.cmd $TARGET_DIR/upgrade.scr +fi diff --git a/features/buildroot/board/boundarydevices/common/post-image.sh b/features/buildroot/board/boundarydevices/common/post-image.sh new file mode 100755 index 00000000..9cca1b17 --- /dev/null +++ b/features/buildroot/board/boundarydevices/common/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/boundarydevices/common/readme.txt b/features/buildroot/board/boundarydevices/common/readme.txt new file mode 100644 index 00000000..0625deef --- /dev/null +++ b/features/buildroot/board/boundarydevices/common/readme.txt @@ -0,0 +1,30 @@ +Buildroot for Boundary Devices platforms: + +https://boundarydevices.com/product-category/popular-sbc-and-som-modules/ + +Here is the list of targeted platforms per defconfig: + +- nitrogen6x_defconfig + - BD-SL-i.MX6 (SABRE-Lite) + - Nitrogen6X + - Nitrogen6_Lite + - Nitrogen6_MAX + - Nitrogen6_VM + - Nitrogen6_SOM + - Nitrogen6_SOMv2 + +- nitrogen6sx_defconfig + - Nitrogen6_SoloX + +- nitrogen7_defconfig + - Nitrogen7 + +To install, simply copy the image to a uSD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD partition. + +To upgrade u-boot, cancel autoboot and type: + +> run upgradeu diff --git a/features/buildroot/board/boundarydevices/common/upgrade.cmd b/features/buildroot/board/boundarydevices/common/upgrade.cmd new file mode 100644 index 00000000..24b705eb --- /dev/null +++ b/features/buildroot/board/boundarydevices/common/upgrade.cmd @@ -0,0 +1,211 @@ +if itest.s a$uboot_defconfig == a; then + echo "Please set uboot_defconfig to the appropriate value" + exit +fi + +offset=0x400 +erase_size=0xC0000 +qspi_offset=0x0 +a_base=0x12000000 +block_size=0x200 + +if itest.s x51 == "x${imx_cpu}"; then + a_base=0x92000000 +elif itest.s x53 == "x${imx_cpu}"; then + a_base=0x72000000 +elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then + a_base=0x82000000 +elif itest.s x8MQ == "x${imx_cpu}"; then + a_base=0x42000000 + offset=0x8400 +fi + +qspi_match=1 +setexpr a_qspi1 ${a_base} +setexpr a_qspi2 ${a_qspi1} + 0x400000 +setexpr a_uImage1 ${a_qspi1} + 0x400 +setexpr a_uImage2 ${a_qspi2} + 0x400 +setexpr a_script ${a_base} + +setenv stdout serial,vga + +if itest.s "x${sfname}" == "x" ; then +# U-Boot resides in (e)MMC +if itest.s "x${env_dev}" == "x" || itest.s "x${env_part}" == "x"; then + echo "Please set env_dev/part to the appropriate values" + exit +fi + +# Load bootloader binary for this board +if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then +else + echo "File u-boot.$uboot_defconfig not found on SD card" ; + exit +fi + +# Compute block count for filesize and offset +setexpr cntoffset ${offset} / ${block_size} +setexpr cntfile ${filesize} / ${block_size} +# Add 1 in case the $filesize is not a multiple of $block_size +setexpr cntfile ${cntfile} + 1 + +# Select media partition (if different from main partition) +mmc dev ${env_dev} ${env_part} + +# Read and compare current U-Boot +mmc read ${a_uImage2} ${cntoffset} ${cntfile} +if cmp.b ${a_uImage1} ${a_uImage2} ${filesize} ; then + echo "------- U-Boot versions match" ; + exit ; +fi + +echo "Need U-Boot upgrade" ; +echo "Program in 5 seconds" ; +for n in 5 4 3 2 1 ; do + echo $n ; + sleep 1 ; +done +mmc write ${a_uImage1} ${cntoffset} ${cntfile} + +# Make sure to boot from the proper partition +if itest ${env_part} != 0 ; then + mmc partconf ${env_dev} 1 ${env_part} 0 +fi + +# Switch back to main eMMC partition (to avoid confusion) +mmc dev ${env_dev} + +else +# U-Boot resides in NOR flash +if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then + echo "probed SPI ROM" ; +else + echo "Error initializing EEPROM" + exit +fi + +if itest.s "x${sfname}" == "xat45db041d" ; then + erase_size=0x7e000 +fi + +if itest.s x7D == "x${imx_cpu}"; then + echo "check qspi parameter block" ; + if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then + else + echo "parameter file qspi-${sfname}.${uboot_defconfig} not found on SD card" + exit + fi + if itest ${filesize} != 0x200 ; then + echo "------- qspi-${sfname}.${uboot_defconfig} 0x${filesize} != 0x200 bytes" ; + exit + fi + setexpr a_marker ${a_qspi1} + 0x1fc + if itest *${a_marker} != c0ffee01 ; then + echo "------- qspi-${sfname}.${uboot_defconfig} c0ffee01 marker missing" ; + exit + fi + if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then + else + echo "Error reading qspi parameter from EEPROM" + exit + fi + if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then + echo "------- qspi parameters match" + else + echo "------- qspi parameters mismatch" + qspi_match=0 + fi +fi + +echo "check U-Boot" ; + +if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then +else + echo "File u-boot.$uboot_defconfig not found on SD card" ; + exit +fi +echo "read $filesize bytes from SD card" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error reading boot loader from EEPROM" ; + exit +fi + +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then + echo "------- U-Boot versions match" ; + if itest.s "${qspi_match}" == "1" ; then + echo "------- upgrade not needed" ; + if itest.s "x" != "x${next}" ; then + if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then + source ${a_script} + else + echo "${next} not found on SD card" + fi + fi + exit + fi + erase_size=0x1000 + if itest.s xMX25L6405D == "x${sfname}"; then + erase_size=0x10000 + fi + setexpr filesize ${erase_size} - ${offset} +fi + +echo "Need U-Boot upgrade" ; +echo "Program in 5 seconds" ; +for n in 5 4 3 2 1 ; do + echo $n ; + sleep 1 ; +done +echo "erasing" ; +sf erase 0 ${erase_size} ; + +# two steps to prevent bricking +echo "programming" ; +setexpr a1 ${a_uImage1} + 0x400 +setexpr o1 ${offset} + 0x400 +setexpr s1 ${filesize} - 0x400 +sf write ${a1} ${o1} ${s1} ; +sf write ${a_uImage1} $offset 0x400 ; + +if itest.s x7D == "x${imx_cpu}"; then + sf write ${a_qspi1} ${qspi_offset} 0x200 +fi + +echo "verifying" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error re-reading EEPROM" ; + exit +fi +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then +else + echo "Read verification error" ; + exit +fi + +if itest.s x7D == "x${imx_cpu}"; then + if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then + else + echo "Error re-reading qspi" ; + exit + fi + if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then + else + echo "qspi parameter block verification error" ; + exit + fi +fi + +if itest.s "x" != "x${next}" ; then + if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then + source ${a_script} + else + echo "${next} not found on ${devtype} ${devnum}:${distro_bootpart}" + fi +fi +fi + +while echo "---- U-Boot upgraded. Please reset the board" ; do + sleep 120 +done diff --git a/features/buildroot/board/chromebook/snow/kernel.args b/features/buildroot/board/chromebook/snow/kernel.args new file mode 100644 index 00000000..1220bf84 --- /dev/null +++ b/features/buildroot/board/chromebook/snow/kernel.args @@ -0,0 +1 @@ +console=tty1 clk_ignore_unused root=/dev/mmcblk1p2 rootfstype=ext4 ro diff --git a/features/buildroot/board/chromebook/snow/kernel.its b/features/buildroot/board/chromebook/snow/kernel.its new file mode 100644 index 00000000..c8766ef9 --- /dev/null +++ b/features/buildroot/board/chromebook/snow/kernel.its @@ -0,0 +1,37 @@ +/dts-v1/; + +/ { + description = "Buildroot kernel for Chromebook Snow"; + images { + kernel@1 { + description = "kernel"; + data = /incbin/("zImage"); + type = "kernel_noload"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0>; + entry = <0>; + hash@1 { + algo = "sha1"; + }; + }; + fdt@1{ + description = "exynos5250-snow.dtb"; + data = /incbin/("exynos5250-snow.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + }; + configurations { + default = "conf@1"; + conf@1{ + kernel = "kernel@1"; + fdt = "fdt@1"; + }; + }; +}; diff --git a/features/buildroot/board/chromebook/snow/linux-4.15-dts-tpm.patch b/features/buildroot/board/chromebook/snow/linux-4.15-dts-tpm.patch new file mode 100644 index 00000000..c71ff1b5 --- /dev/null +++ b/features/buildroot/board/chromebook/snow/linux-4.15-dts-tpm.patch @@ -0,0 +1,27 @@ +Some versions of u-boot for this Chromebook check for tpm node +in the device tree and fail badly (reboot) if it is not found. + +While not exactly correct, it is much easier to patch the mainline +device tree to match u-boot expectations than to fix u-boot on +this device. + +See https://code.google.com/p/chromium/issues/detail?id=220169 +and https://lkml.org/lkml/2013/3/4/242 + +Signed-off-by: Alex Suykov + +--- a/arch/arm/boot/dts/exynos5250-snow-common.dtsi ++++ b/arch/arm/boot/dts/exynos5250-snow-common.dtsi +@@ -466,6 +466,11 @@ + status = "okay"; + samsung,i2c-sda-delay = <100>; + samsung,i2c-max-bus-freq = <66000>; ++ ++ tpm { ++ compatible = "infineon,slb9635tt"; ++ reg = <0x20>; ++ }; + }; + + &i2c_5 { + diff --git a/features/buildroot/board/chromebook/snow/linux-4.15.fragment b/features/buildroot/board/chromebook/snow/linux-4.15.fragment new file mode 100644 index 00000000..e2786dac --- /dev/null +++ b/features/buildroot/board/chromebook/snow/linux-4.15.fragment @@ -0,0 +1,2 @@ +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m diff --git a/features/buildroot/board/chromebook/snow/mksd.sh b/features/buildroot/board/chromebook/snow/mksd.sh new file mode 100755 index 00000000..cba1578e --- /dev/null +++ b/features/buildroot/board/chromebook/snow/mksd.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# This scripts makes a minimal bootable SD card image for the Chromebook. +# The resulting file is called bootsd.img. It should be written directly +# to the card: +# +# SD=/dev/mmcblk1 # check your device name! +# dd if=output/images/bootsd.img of=$SD +# +# The partitions are created just large enough to hold the kernel and +# the rootfs image. Most of the card will be empty, and the secondary +# GPT will not be in its proper location. + +# cgpt does not create protective MBR, and the kernel refuses to read +# GPT unless there's some kind of MBR in sector 0. So we need parted +# to write that single sector before doing anything with the GPT. +cgpt=$HOST_DIR/bin/cgpt +parted=$HOST_DIR/sbin/parted +kernel=$BINARIES_DIR/uImage.kpart +rootfs=$BINARIES_DIR/rootfs.ext2 + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $kernel || die "No kernel image found" +test -f $rootfs || die "No rootfs image found" +test -x $cgpt || die "cgpt not found (host-vboot-utils have not been built?)" + +# True file sizes in bytes +kernelsize=`stat -t $kernel | cut -d\ -f2` +rootfssize=`stat -t $rootfs | cut -d\ -f2` + +# The card is partitioned in sectors of 8KB. +# 4 sectors are reserved for MBR+GPT. Their actual size turns out +# to be 33 512-blocks which is just over 2 sectors, but we align +# it to a nice round number. +sec=8192 +kernelsec=$(((kernelsize+8191)>>13)) +rootfssec=$(((rootfssize+8191)>>13)) +headersec=4 + +# There is also a copy of MBR+GPT at the end of the image. +# It's going to be useless but both tools assume it's there. +imagesec=$((2*headersec+kernelsec+rootfssec)) +bootsd="$BINARIES_DIR/bootsd.img" +run dd bs=$sec count=$imagesec if=/dev/zero of=$bootsd + +# cgpt needs offsets and sizes in 512-blocks. +block=512 +kernelstart=$((headersec<<4)) +kernelblocks=$((kernelsec<<4)) +rootfsblocks=$((rootfssec<<4)) +rootfsstart=$((kernelstart+kernelblocks)) + +# This command initializes both GPT and MBR +run $parted -s $bootsd mklabel gpt + +# The kernel partition must be marked as bootable, that's why -S -T -P +run $cgpt add -i 1 -b $kernelstart -s $kernelblocks \ + -t kernel -l kernel \ + -S 1 -T 1 -P 10 $bootsd + +# It does not really matter where the rootfs partition is located as long +# as the kernel can find it. +# However, if anything is changed here, kernel.args must be updated as well. +run $cgpt add -i 2 -b $rootfsstart -s $rootfsblocks \ + -t data -l rootfs $bootsd + +run dd bs=$block if=$kernel of=$bootsd seek=$kernelstart +run dd bs=$block if=$rootfs of=$bootsd seek=$rootfsstart diff --git a/features/buildroot/board/chromebook/snow/readme.txt b/features/buildroot/board/chromebook/snow/readme.txt new file mode 100644 index 00000000..1afd9498 --- /dev/null +++ b/features/buildroot/board/chromebook/snow/readme.txt @@ -0,0 +1,137 @@ +Samsung XE303C12 aka Chromebook Snow +==================================== + +This file describes booting the Chromebook from an SD card containing +Buildroot kernel and rootfs, using the original bootloader. This is +the least invasive way to get Buildroot onto the devices and a good +starting point. + +The bootloader will only boot a kernel from a GPT partition marked +bootable with cgpt tool from vboot-utils package. +The kernel image must be signed using futility from the same package. +The signing part is done by sign.sh script in this directory. + +It does not really matter where rootfs is as long as the kernel is able +to find it, but this particular configuration assumes the kernel is on +partition 1 and rootfs is on partition 2 of the SD card. +Make sure to check kernel.args if you change this. + +Making the boot media +--------------------- +Start by configuring and building the images. + + make chromebook_snow_defconfig + make menuconfig # if necessary + make + +The important files are: + + uImage.kpart (kernel and device tree, signed) + rootfs.tar + bootsd.img (SD card image containing both kernel and rootfs) + +Write the image directly to some SD card. +WARNING: make sure there is nothing important on that card, +and double-check the device name! + + SD=/dev/mmcblk1 # may be /dev/sdX on some hosts + dd if=output/images/bootsd.img of=$SD + +Switching to developer mode and booting from SD +----------------------------------------------- +Power Chromebook down, then power it up while holding Esc+F3. +BEWARE: switching to developer mode deletes all user data. +Create backups if you need them. + +While in developer mode, Chromebook will boot into a white screen saying +"OS verification is off". + +Press Ctrl-D at this screen to boot Chromium OS from eMMC. +Press Ctrl-U at this screen to boot from SD (or USB) +Press Power to power it off. +Do NOT press Space unless you mean it. +This will switch it back to normal mode. + +The is no way to get rid of the white screen without re-flashing the bootloader. + +Troubleshooting +--------------- +Loud *BEEP* after pressing Ctrl-U means there's no valid partition to boot from. +Which in turn means either bad GPT or improperly signed kernel. + +Return to the OS verification screen without any sounds means the code managed +to reboot the board. May indicate properly signed but invalid image. + +Blank screen means the image is valid and properly signed but cannot boot +for some reason, like missing or incorrect DT. + +In case the board becomes unresponsive: + +* Press Esc+F3+Power. The board should reboot instantly. + Remove SD card to prevent it from attempting a system recovery. + +* Hold Power button for around 10s. The board should shut down into + its soft-off mode. Press Power button again or open the lid to turn in on. + +* If that does not work, disconnect the charger and push a hidden + button on the underside with a pin of some sort. The board should shut + down completely. Opening the lid and pressing Power button will not work. + To turn it back on, connect the charger. + +Partitioning SD card manually +----------------------------- +Check mksd.sh for partitioning commands. + +Use parted and cgpt on a real device, and calculate the partition +sizes properly. The kernel partition may be as small as 4MB, but +you will probably want the rootfs to occupy the whole remaining space. + +cgpt may be used to check current layout: + + output/host/bin/cgpt show $SD + +All sizes and all offsets are in 512-byte blocks. + +Writing kernel and rootfs to a partitioned SD card +-------------------------------------------------- +Write .kpart directly to the bootable partition: + + dd if=output/images/uImage.kpart of=${SD}1 + +Make a new filesystem on the rootfs partition, and unpack rootfs.tar there: + + mkfs.ext4 ${SD}2 + mount ${SD2} /mnt/ + tar -xvf output/images/rootfs.tar -C /mnt/ + umount /mnt/ + +This will require root permissions even if you can write to $SD. + +Kernel command line +------------------- +The command line is taken from board/chromebook/snow/kernel.args and stored +in the vboot header (which also holds the signature). + +The original bootloader prepends "cros_secure console= " to the supplied +command line. The only way to suppress this is to enable CMDLINE_FORCE +in the kernel config, disabling external command line completely. + +That's not necessary however. The mainline kernel ignores cros_secure, +and supplying console=tty1 in kernel.args undoes the effect of console= + +Booting with console= suppresses all kernel output. +As a side effect, it makes /dev/console unusable, which the init in use must +be able to handle. + +WiFi card +--------- +Run modprobe mwifiex_sdio to load the driver. +The name of the device should be mlan0. + +Further reading +--------------- +https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/samsung-arm-chromebook +http://linux-exynos.org/wiki/Samsung_Chromebook_XE303C12/Installing_Linux +http://archlinuxarm.org/platforms/armv7/samsung/samsung-chromebook +http://www.de7ec7ed.com/2013/05/application-processor-ap-uart-samsung.html +http://www.de7ec7ed.com/2013/05/embedded-controller-ec-uart-samsung.html diff --git a/features/buildroot/board/chromebook/snow/sign.sh b/features/buildroot/board/chromebook/snow/sign.sh new file mode 100755 index 00000000..e8f111ff --- /dev/null +++ b/features/buildroot/board/chromebook/snow/sign.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# This script creates u-boot FIT image containing the kernel and the DT, +# then signs it using futility from vboot-utils. +# The resulting file is called uImage.kpart. + +BOARD_DIR=$(dirname $0) +mkimage=$HOST_DIR/bin/mkimage +futility=$HOST_DIR/bin/futility +devkeys=$HOST_DIR/share/vboot/devkeys + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $BINARIES_DIR/zImage || \ + die "No kernel image found" +test -x $mkimage || \ + die "No mkimage found (host-uboot-tools has not been built?)" +test -x $futility || \ + die "No futility found (host-vboot-utils has not been built?)" + +# kernel.its references zImage and exynos5250-snow.dtb, and all three +# files must be in current directory for mkimage. +run cp $BOARD_DIR/kernel.its $BINARIES_DIR/kernel.its || exit 1 +echo "# entering $BINARIES_DIR for the next command" +(cd $BINARIES_DIR && run $mkimage -f kernel.its uImage.itb) || exit 1 + +# futility requires non-empty file to be supplied with --bootloader +# even if it does not make sense for the target platform. +echo > $BINARIES_DIR/dummy.txt + +run $futility vbutil_kernel \ + --keyblock $devkeys/kernel.keyblock \ + --signprivate $devkeys/kernel_data_key.vbprivk \ + --arch arm \ + --version 1 \ + --config $BOARD_DIR/kernel.args \ + --vmlinuz $BINARIES_DIR/uImage.itb \ + --bootloader $BINARIES_DIR/dummy.txt \ + --pack $BINARIES_DIR/uImage.kpart || exit 1 + +rm -f $BINARIES_DIR/kernel.its $BINARIES_DIR/dummy.txt diff --git a/features/buildroot/board/ci20/genimage.cfg b/features/buildroot/board/ci20/genimage.cfg new file mode 100644 index 00000000..fa3e7368 --- /dev/null +++ b/features/buildroot/board/ci20/genimage.cfg @@ -0,0 +1,29 @@ +image sdcard.img { + hdimage { + } + + partition uboot-spl { + in-partition-table = "no" + image = "u-boot-spl.bin" + offset = 512 + } + + partition uboot { + in-partition-table = "no" + image = "u-boot.img" + offset = 14k + } + + partition uboot-env { + in-partition-table = "no" + image = "uboot-env.bin" + offset = 526k + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 2M + size = 60M + } +} diff --git a/features/buildroot/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch b/features/buildroot/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch new file mode 100644 index 00000000..a6191804 --- /dev/null +++ b/features/buildroot/board/ci20/patches/uboot/0001-mips-Remove-default-endiannes.patch @@ -0,0 +1,66 @@ +From b3a1e97498e7987073775d49a703932c20f2df1d Mon Sep 17 00:00:00 2001 +From: Ezequiel Garcia +Date: Mon, 12 Nov 2018 14:04:46 -0300 +Subject: [PATCH] mips: Remove default endiannes + +Currently, trying to build ci20_mmc fails on little-endian +toolchains. The problem seems to be that some targets don't +have CONFIG_SYS_LITTLE_ENDIAN properly set, and therefore +the default -EB switch is selected. + +Let's get rid of the default switch entirely, and fix this problem. +While this may be a hack, it is a quick solution until +U-Boot gets CI20 proper support. + +make ARCH=mips CROSS_COMPILE=mips-linux-gnu- ci20_mmc +Configuring for ci20_mmc - Board: ci20, Options: SPL_MMC_SUPPORT,ENV_IS_IN_MMC +make +make[1]: Entering directory '/home/zeta/repos/u-boot-ci20' +Generating include/autoconf.mk +Generating include/autoconf.mk.dep +mips-linux-gnu-gcc: error: may not use both -EB and -EL +mips-linux-gnu-gcc: error: may not use both -EB and -EL +Generating include/spl-autoconf.mk +mips-linux-gnu-gcc: error: may not use both -EB and -EL +Generating include/tpl-autoconf.mk +mips-linux-gnu-gcc: error: may not use both -EB and -EL +mips-linux-gnu-gcc -DDO_DEPS_ONLY \ + -g -Os -ffunction-sections -fdata-sections -D__KERNEL__ -I/home/zeta/repos/u-boot-ci20/include -fno-builtin -ffreestanding -nostdinc -isystem /home/zeta/repos/buildroot/mips/output/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/include -pipe -DCONFIG_MIPS -D__MIPS__ -G 0 -EB -msoft-float -fpic -mabicalls -march=mips32 -mabi=32 -DCONFIG_32BIT -mno-branch-likely -Wall -Wstrict-prototypes \ + -o lib/asm-offsets.s lib/asm-offsets.c -c -S +if [ -f arch/mips/cpu/xburst/jz4780/asm-offsets.c ];then \ + mips-linux-gnu-gcc -DDO_DEPS_ONLY \ + -g -Os -ffunction-sections -fdata-sections -D__KERNEL__ -I/home/zeta/repos/u-boot-ci20/include -fno-builtin -ffreestanding -nostdinc -isystem /home/zeta/repos/buildroot/mips/output/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/include -pipe -DCONFIG_MIPS -D__MIPS__ -G 0 -EB -msoft-float -fpic -mabicalls -march=mips32 -mabi=32 -DCONFIG_32BIT -mno-branch-likely -Wall -Wstrict-prototypes \ + -o arch/mips/cpu/xburst/jz4780/asm-offsets.s arch/mips/cpu/xburst/jz4780/asm-offsets.c -c -S; \ +else \ + touch arch/mips/cpu/xburst/jz4780/asm-offsets.s; \ +fi +mips-linux-gnu-gcc: error: may not use both -EB and -EL +make[1]: *** [Makefile:747: lib/asm-offsets.s] Error 1 +make[1]: *** Waiting for unfinished jobs.... +make[1]: Leaving directory '/home/zeta/repos/u-boot-ci20' +make: *** [.boards.depend:463: ci20_mmc] Error 2 + +Signed-off-by: Ezequiel Garcia +--- +https://github.com/MIPS/CI20_u-boot/pull/19 + + arch/mips/config.mk | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/arch/mips/config.mk b/arch/mips/config.mk +index c89279025507..43560abbc0e1 100644 +--- a/arch/mips/config.mk ++++ b/arch/mips/config.mk +@@ -20,9 +20,6 @@ ifdef CONFIG_SYS_BIG_ENDIAN + ENDIANNESS := -EB + endif + +-# Default to EB if no endianess is configured +-ENDIANNESS ?= -EB +- + PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__ + + # +-- +2.19.1 + diff --git a/features/buildroot/board/ci20/readme.txt b/features/buildroot/board/ci20/readme.txt new file mode 100644 index 00000000..71d50706 --- /dev/null +++ b/features/buildroot/board/ci20/readme.txt @@ -0,0 +1,46 @@ +********************* +* MIPS Creator CI20 * +********************* + +Introduction +============ + +The 'ci20_defconfig' will create a root filesystem and a kernel image +under the 'output/images/' directory. This document will try to explain how +to use them in order to run Buildroot in the MIPS Creator CI20 board. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make ci20_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +How to write the SD card +======================== + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Make sure the SD card is not mounted then copy the bootable "sdcard.img" onto +it with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ci20, and power it up. Your new system +should come up now and start a console on the UART HEADER. + +see: https://elinux.org/CI20_Hardware#Dedicated_UART_header diff --git a/features/buildroot/board/ci20/uboot-env.txt b/features/buildroot/board/ci20/uboot-env.txt new file mode 100644 index 00000000..3093496c --- /dev/null +++ b/features/buildroot/board/ci20/uboot-env.txt @@ -0,0 +1,10 @@ +baudrate=115200 +board_mfr=NP +bootargs=console=ttyS4,115200 console=tty0 mem=256M@0x0 mem=768M@0x30000000 rootwait root=/dev/mmcblk0p1 devtmpfs.mount=1 ip=dhcp +bootcmd=run ethargs; ext4load mmc 0:1 0x88000000 /boot/uImage; bootm 0x88000000 +bootdelay=1 +ethargs=env set bootargs ${bootargs} +loads_echo=1 +stderr=eserial0,eserial4 +stdin=eserial0,eserial4 +stdout=eserial0,eserial4 diff --git a/features/buildroot/board/csky/gx6605s/gdbinit b/features/buildroot/board/csky/gx6605s/gdbinit new file mode 100644 index 00000000..d602aad4 --- /dev/null +++ b/features/buildroot/board/csky/gx6605s/gdbinit @@ -0,0 +1,25 @@ +tar jtag jtag://127.0.0.1:1025 +reset + +# setup CCR (Cache Config Reg) +# 0-1:MP,2:IE,3:DE,4:WB,5:RS,6:Z,7:BE +set $cr18 = 0x7d + +# vendor custom setup, double cache line & preload +set $cr30 = 0xc + +# pin mux for serial8250 +set *(unsigned int *) 0xa030a14c |= (1 << 22) | (1 << 23) + +# pass devicetree blob +# r2 is magic +# r3 is address +set $r2 = 0x20150401 +set $r3 = 0x92000000 +restore gx6605s.dtb binary 0x92000000 + +# flush cache +set $cr17 = 0x33 + +load + diff --git a/features/buildroot/board/csky/gx6605s/patches/linux/0001-csky-update-cmdline-for-serial-console-and-rootfs-on.patch b/features/buildroot/board/csky/gx6605s/patches/linux/0001-csky-update-cmdline-for-serial-console-and-rootfs-on.patch new file mode 100644 index 00000000..1da1a754 --- /dev/null +++ b/features/buildroot/board/csky/gx6605s/patches/linux/0001-csky-update-cmdline-for-serial-console-and-rootfs-on.patch @@ -0,0 +1,25 @@ +From 7e3f2c482bc16537a093e87a27f0d465804a88e4 Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Tue, 11 Dec 2018 23:04:46 +0100 +Subject: [PATCH] csky: update cmdline for serial console and rootfs on sda1 + +Signed-off-by: Julien Olivain +--- + arch/csky/boot/dts/gx6605s.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/csky/boot/dts/gx6605s.dts b/arch/csky/boot/dts/gx6605s.dts +index ce56106af967..f5d60b21e6f9 100644 +--- a/arch/csky/boot/dts/gx6605s.dts ++++ b/arch/csky/boot/dts/gx6605s.dts +@@ -155,6 +155,6 @@ + }; + + chosen { +- bootargs = "console=tty0 init=/sbin/init root=/dev/sda2 rw rootwait"; ++ bootargs = "console=ttyS0,115200 init=/sbin/init root=/dev/sda1 rw rootwait"; + }; + }; +-- +2.19.2 + diff --git a/features/buildroot/board/csky/readme.txt b/features/buildroot/board/csky/readme.txt new file mode 100644 index 00000000..dc82dcc1 --- /dev/null +++ b/features/buildroot/board/csky/readme.txt @@ -0,0 +1,88 @@ +C-SKY Development Kit + +Intro +===== + +C-SKY is a CPU Architecture from www.c-sky.com and has it own instruction set. +Just like arm and mips in linux/arch, it named as 'csky'. + +gx6605s develop board is made by Hangzhou Nationalchip and C-SKY. + +Hardware Spec: + * CPU: ck610 up to 594Mhz + * Integrate with 64MB ddr2 in SOC. + * Integrate with hardware Jtag. + * Integrate with usb-to-serial chip. + * USB ehci controller in SOC. + * Power Supply: DC 5V from two micro-usb. + +How to build it +=============== + +Configure Buildroot +------------------- + +The csky_gx6605s_defconfig configuration is a sample configuration with +all that is required to bring the gx6605s Development Board: + + $ make csky_gx6605s_defconfig + +Build everything +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- vmlinux + +-- rootfs.ext2 + +-- .dtb + +How to run it +============= + +Prepare Jtag-Server +------------------- + + Download the Jtag-Server here: + + https://github.com/c-sky/tools/raw/master/DebugServerConsole-linux-x86_64-V4.2.00-20161213.tar.gz + + Go to the unpacked directory: + + $./DebugServerConsole -ddc -rstwait 1000 -prereset -port 1025 + + Perhaps you need to use "sudo", which need libusb to detect c510:b210 + + $ sudo ./DebugServerConsole -ddc -rstwait 1000 -prereset -port 1025 + +Prepare USB drive +----------------- + + You sould determine which device associated to the usb drive + carefully. eg: + + $ cat /proc/partitions + 8 48 1971712 sdd + 8 49 976720 sdd1 + + $ sudo dd if=rootfs.ext2 of=/dev/sdd1 + $ sudo sync + +Run +--- + + Plug the usb drive on gx6605s dev board. + + Setup the Console with the rate 115200/8-N-1. + + $ cd output/images + $ ../host/bin/csky-linux-gdb -x ../../board/csky/gx6605s/gdbinit vmlinux + diff --git a/features/buildroot/board/cubietech/cubieboard2/boot.cmd b/features/buildroot/board/cubietech/cubieboard2/boot.cmd new file mode 100644 index 00000000..a9ae0e24 --- /dev/null +++ b/features/buildroot/board/cubietech/cubieboard2/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-cubieboard2.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/cubietech/cubieboard2/genimage.cfg b/features/buildroot/board/cubietech/cubieboard2/genimage.cfg new file mode 100644 index 00000000..b082ab0d --- /dev/null +++ b/features/buildroot/board/cubietech/cubieboard2/genimage.cfg @@ -0,0 +1,37 @@ +# Minimal SD card image for the Cubieboard2 +# Based in the Orange Pi genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-cubieboard2.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/cubietech/cubieboard2/post-image.sh b/features/buildroot/board/cubietech/cubieboard2/post-image.sh new file mode 100755 index 00000000..9cca1b17 --- /dev/null +++ b/features/buildroot/board/cubietech/cubieboard2/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/embest/riotboard/genimage.cfg b/features/buildroot/board/embest/riotboard/genimage.cfg new file mode 100644 index 00000000..1221c83b --- /dev/null +++ b/features/buildroot/board/embest/riotboard/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.imx" + offset = 1024 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + offset = 1M + size = 60M + } +} diff --git a/features/buildroot/board/embest/riotboard/readme.txt b/features/buildroot/board/embest/riotboard/readme.txt new file mode 100644 index 00000000..4ba836fa --- /dev/null +++ b/features/buildroot/board/embest/riotboard/readme.txt @@ -0,0 +1,38 @@ +Buildroot for Embest RIoTboard +============================== + +This is a small development board, based on Freescale IMX6 Solo SoC +(single core ARM Cortex-A9). + +More details about the board can be found at: + + http://www.embest-tech.com/riotboard + +1. Compiling buildroot +---------------------- + +$ make riotboard_defconfig +$ make + +2. Installing buildroot +----------------------- + +Prepare an SD-card and plug it into your card reader. Always double +check the block device before writing to it, as writing to the wrong +block device can cause irrecoverable data loss. Now you can write the +image to your SD-card: + +sudo dd if=output/images/sdcard.img of=/dev/ bs=1M + +3. Running buildroot +-------------------- + +Position the board so you can read the label "RIoTboard" on the right +side of SW1 DIP switches. Configure the SW1 swiches like this: + +1 0 1 0 0 1 0 1 +ON OFF ON OFF OFF ON OFF ON + +Now plug your prepared SD-card in slot J6. Connect a serial console +(115200, 8, N, 1) to header J18. Connect a 5V/1A power supply to the +board and enjoy. diff --git a/features/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf b/features/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..23e48a0d --- /dev/null +++ b/features/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,6 @@ +default buildroot + +label buildroot +kernel /boot/zImage +devicetree /boot/imx6dl-riotboard.dtb +append console=ttymxc1,115200 root=/dev/mmcblk1p1 rw diff --git a/features/buildroot/board/engicam/geam6ul/genimage.cfg b/features/buildroot/board/engicam/geam6ul/genimage.cfg new file mode 100644 index 00000000..fcca6e17 --- /dev/null +++ b/features/buildroot/board/engicam/geam6ul/genimage.cfg @@ -0,0 +1,38 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6ul-geam-kit.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/engicam/geam6ul/readme.txt b/features/buildroot/board/engicam/geam6ul/readme.txt new file mode 100644 index 00000000..ace993a6 --- /dev/null +++ b/features/buildroot/board/engicam/geam6ul/readme.txt @@ -0,0 +1,66 @@ +******************************************** +Buildroot for Engicam GEAM6UL SOM platforms: +******************************************** + +This file documents the Buildroot support for all Engicam GEAM6UL +SOM platform boards. + +GEAM6UL SOM Starter kits: +https://www.engicam.com/vis-prod/101115 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam GEAM6UL SOM: + +- for GEAM6UL SOM: + + make engicam_imx6ul_geam_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6ul-geam-kit.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/geam6ul/genimage.cfg + +Boot the GEAM6UL boards with SD boot: +==================================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/engicam/icorem6/genimage.cfg b/features/buildroot/board/engicam/icorem6/genimage.cfg new file mode 100644 index 00000000..835d9058 --- /dev/null +++ b/features/buildroot/board/engicam/icorem6/genimage.cfg @@ -0,0 +1,41 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6dl-icore.dtb", + "imx6q-icore.dtb", + "imx6q-icore-ofcap10.dtb", + "imx6q-icore-ofcap12.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/engicam/icorem6/linux_qt5.fragment b/features/buildroot/board/engicam/icorem6/linux_qt5.fragment new file mode 100644 index 00000000..5c0505e5 --- /dev/null +++ b/features/buildroot/board/engicam/icorem6/linux_qt5.fragment @@ -0,0 +1,4 @@ +# Currently kernel mainline exhibits issues when running cpufreq as ondemand +# governor on mx6. +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y diff --git a/features/buildroot/board/engicam/icorem6/readme.txt b/features/buildroot/board/engicam/icorem6/readme.txt new file mode 100644 index 00000000..bd78c5a5 --- /dev/null +++ b/features/buildroot/board/engicam/icorem6/readme.txt @@ -0,0 +1,93 @@ +********************************************* +Buildroot for Engicam i.CoreM6 SOM platforms: +********************************************* + +This file documents the Buildroot support for Engicam i.CoreM6 +platform boards. + +i.CoreM6 Quad/Dual/DualLite/Solo SOM Starter kits: +https://www.engicam.com/vis-prod/101120 +i.CoreM6 Quad/Dual/DualLite/Solo Open Frame 10.1 C.TOUCH kits: +https://www.engicam.com/vis-prod/101133 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam i.CoreM6: + + make engicam_imx6qdl_icore_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6q-icore.dtb (for i.CoreM6 Quad/Dual) + - imx6dl-icore.dtb (for i.CoreM6 DualLite/Solo) + - imx6q-icore-ofcap10.dtb (for i.CoreM6 Quad/Dual ofcap 10) + - imx6q-icore-ofcap12.dtb (for i.CoreM6 Quad/Dual ofcap 12) + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/icorem6/genimage.cfg + +Boot the i.CoreM6 boards with SD boot: +===================================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Testing graphics on i.CoreM6: +============================ + +Build with support for Etnaviv, Qt5 and demo applications: + + make engicam_imx6qdl_icore_qt5_defconfig + make + +Running kmscube +# kmscube -D /dev/dri/card1 + +Running glmark2-es2-drm +# glmark2-es2-drm + +Running Qt5 Cinematic Demo: +- for i.CoreM6 Starter Kit +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore.json +- for i.CoreM6 ofcap10 +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore-ofcap10.json +- for i.CoreM6 ofcap12 +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore-ofcap12.json + +# CinematicExperience-demo + +Enjoy! diff --git a/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json b/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json new file mode 100644 index 00000000..963c7c00 --- /dev/null +++ b/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS-1", + "mode": "1280x800" + } + ] +} diff --git a/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json b/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json new file mode 100644 index 00000000..36700aff --- /dev/null +++ b/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS-1", + "mode": "1280x480" + } + ] +} diff --git a/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json b/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json new file mode 100644 index 00000000..ac139a3e --- /dev/null +++ b/features/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS-1", + "mode": "800x480" + } + ] +} diff --git a/features/buildroot/board/engicam/icorem6_rqs/genimage.cfg b/features/buildroot/board/engicam/icorem6_rqs/genimage.cfg new file mode 100644 index 00000000..967d10b1 --- /dev/null +++ b/features/buildroot/board/engicam/icorem6_rqs/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6dl-icore-rqs.dtb", + "imx6q-icore-rqs.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/engicam/icorem6_rqs/readme.txt b/features/buildroot/board/engicam/icorem6_rqs/readme.txt new file mode 100644 index 00000000..a0bf6f50 --- /dev/null +++ b/features/buildroot/board/engicam/icorem6_rqs/readme.txt @@ -0,0 +1,69 @@ +************************************************* +Buildroot for Engicam i.CoreM6 RQS SOM platforms: +************************************************* + +This file documents the Buildroot support for Engicam i.CoreM6 RQS +SOM platform boards. + +i.CoreM6 Quad/Dual/DualLite/Solo RQS SOM Starter kits: +https://www.engicam.com/vis-prod/101124 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam i.CoreM6 RQS: + +- for i.CoreM6 RQS Quad/Dual/DualLite/Solo: + + make engicam_imx6qdl_icore_rqs_defconfig + +Build all components: + + make + +You will find the following files in output/images/: +- for i.CoreM6 Quad/Dual RQS: + - imx6q-icore-rqs.dtb +- for i.CoreM6 DualLite/Solo RQS: + - imx6dl-icore-rqs.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/icorem6_rqs/genimage.cfg + +Boot the i.CoreM6 RQS boards with SD boot: +========================================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J7 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM2 for sd boot. +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/engicam/isiot/genimage.cfg b/features/buildroot/board/engicam/isiot/genimage.cfg new file mode 100644 index 00000000..dc8c20db --- /dev/null +++ b/features/buildroot/board/engicam/isiot/genimage.cfg @@ -0,0 +1,38 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6ul-isiot-emmc.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/engicam/isiot/readme.txt b/features/buildroot/board/engicam/isiot/readme.txt new file mode 100644 index 00000000..5394007c --- /dev/null +++ b/features/buildroot/board/engicam/isiot/readme.txt @@ -0,0 +1,66 @@ +******************************************** +Buildroot for Engicam Is.IoT SOM platforms: +******************************************** + +This file documents the Buildroot support for all Engicam Is.IoT MX6UL +SOM platform boards. + +Is.IoT MX6UL SOM Starter kits: +https://www.engicam.com/vis-prod/101122 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam Is.IoT MX6UL SOM: + +- for Is.IoT MX6UL SOM: + + make engicam_imx6ul_isiot_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6ul-isiot-emmc.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/isiot/genimage.cfg + +Boot the Is.IoT MX6UL boards with SD boot: +========================================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/freescale/common/imx/genimage.cfg.template b/features/buildroot/board/freescale/common/imx/genimage.cfg.template new file mode 100644 index 00000000..2a7036a7 --- /dev/null +++ b/features/buildroot/board/freescale/common/imx/genimage.cfg.template @@ -0,0 +1,40 @@ +# Minimal SD card image for the Freescale boards Template +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 8 MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 1024 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 b/features/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 new file mode 100644 index 00000000..bd5f6cdc --- /dev/null +++ b/features/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 @@ -0,0 +1,40 @@ +# Minimal SD card image for the Freescale iMX8 boards +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 33 kB free space at the beginning, +# * U-Boot is integrated into imx8-boot-sd.bin and is dumped as is, +# * a FAT partition at offset 8MB is containing Image and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition imx-boot { + in-partition-table = "no" + image = "imx8-boot-sd.bin" + offset = %IMXOFFSET% + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl b/features/buildroot/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl new file mode 100644 index 00000000..c2903257 --- /dev/null +++ b/features/buildroot/board/freescale/common/imx/genimage.cfg.template_no_boot_part_spl @@ -0,0 +1,30 @@ +# Minimal SD card image for the Freescale boards Template for SPL Boot +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * SPL is at the offset expected by ROM, +# * U-Boot is at the offset expected by SPL, +# * The first partition is expected to be an ext2 and have a /boot directory. +# + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 69K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/freescale/common/imx/genimage.cfg.template_spl b/features/buildroot/board/freescale/common/imx/genimage.cfg.template_spl new file mode 100644 index 00000000..d2d81077 --- /dev/null +++ b/features/buildroot/board/freescale/common/imx/genimage.cfg.template_spl @@ -0,0 +1,46 @@ +# Minimal SD card image for the Freescale boards Template for SPL Boot +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 8MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot { + in-partition-table = "no" + image = "%UBOOTBIN%" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh b/features/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh new file mode 100755 index 00000000..df528b0d --- /dev/null +++ b/features/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +main () +{ + UBOOT_DTB=$2 + if [ ! -e "$UBOOT_DTB" ]; then + echo "ERROR: couldn't find dtb: $UBOOT_DTB" + exit 1 + fi + + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then + cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot.bin ATF_LOAD_ADDR=0x00910000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + ${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -fit -signed_hdmi ${BINARIES_DIR}/signed_hdmi_imx8m.bin -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then + cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot.bin ATF_LOAD_ADDR=0x00920000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its + ${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + else + ${HOST_DIR}/bin/mkimage_imx8 -commit > ${BINARIES_DIR}/mkimg.commit + cat ${BINARIES_DIR}/u-boot.bin ${BINARIES_DIR}/mkimg.commit > ${BINARIES_DIR}/u-boot-hash.bin + cp ${BINARIES_DIR}/bl31.bin ${BINARIES_DIR}/u-boot-atf.bin + dd if=${BINARIES_DIR}/u-boot-hash.bin of=${BINARIES_DIR}/u-boot-atf.bin bs=1K seek=128 + + ${HOST_DIR}/bin/mkimage_imx8 -soc QX -rev B0 -append ${BINARIES_DIR}/ahab-container.img -c -scfw ${BINARIES_DIR}/mx8qx-mek-scfw-tcm.bin -ap ${BINARIES_DIR}/u-boot-atf.bin a35 0x80000000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + fi + + exit $? +} + +main $@ diff --git a/features/buildroot/board/freescale/common/imx/post-image.sh b/features/buildroot/board/freescale/common/imx/post-image.sh new file mode 100755 index 00000000..19d8fffb --- /dev/null +++ b/features/buildroot/board/freescale/common/imx/post-image.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash + +# +# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME +# in ${BR_CONFIG}, then prints the corresponding list of file names for the +# genimage configuration file +# +dtb_list() +{ + local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([\/a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})" + + for dt in $DTB_LIST; do + echo -n "\"`basename $dt`.dtb\", " + done +} + +# +# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in +# ${BR_CONFIG}, then prints the corresponding file name for the genimage +# configuration file +# +linux_image() +{ + if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then + echo "\"uImage\"" + elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then + echo "\"Image\"" + else + echo "\"zImage\"" + fi +} + +genimage_type() +{ + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_LINUX_KERNEL_INSTALL_TARGET=y$" ${BR2_CONFIG}; then + if grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_no_boot_part_spl" + fi + elif grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_spl" + else + echo "genimage.cfg.template" + fi +} + +imx_offset() +{ + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then + echo "33K" + elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then + echo "33K" + else + echo "32K" + fi +} + +uboot_image() +{ + if grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y$" ${BR2_CONFIG}; then + echo "u-boot-dtb.imx" + elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMX=y$" ${BR2_CONFIG}; then + echo "u-boot.imx" + elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y$" ${BR2_CONFIG}; then + echo "u-boot-dtb.img" + elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMG=y$" ${BR2_CONFIG}; then + echo "u-boot.img" + fi +} + +main() +{ + local FILES="$(dtb_list) $(linux_image)" + local IMXOFFSET="$(imx_offset)" + local UBOOTBIN="$(uboot_image)" + local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)" + local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + + sed -e "s/%FILES%/${FILES}/" \ + -e "s/%IMXOFFSET%/${IMXOFFSET}/" \ + -e "s/%UBOOTBIN%/${UBOOTBIN}/" \ + board/freescale/common/imx/$(genimage_type) > ${GENIMAGE_CFG} + + rm -rf "${GENIMAGE_TMP}" + + genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + + rm -f ${GENIMAGE_CFG} + + exit $? +} + +main $@ diff --git a/features/buildroot/board/freescale/common/mxs/genimage.cfg.template b/features/buildroot/board/freescale/common/mxs/genimage.cfg.template new file mode 100644 index 00000000..e094fb7f --- /dev/null +++ b/features/buildroot/board/freescale/common/mxs/genimage.cfg.template @@ -0,0 +1,39 @@ +# Minimal SD card image for the Freescale MX23/MX28 Template +# +# We mimic the .sdcard Freescale's MX23/MX28 image format: +# * u-boot.sb is placed at offset 1M, +# * a FAT partition at offset 16 MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0x53 + image = "u-boot.sd" + offset = 1M + size = 16M + } + + partition kernel { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/freescale/common/mxs/post-image.sh b/features/buildroot/board/freescale/common/mxs/post-image.sh new file mode 100755 index 00000000..0bfb835c --- /dev/null +++ b/features/buildroot/board/freescale/common/mxs/post-image.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +# +# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME +# in ${BR_CONFIG}, then prints the corresponding list of file names for the +# genimage configuration file +# +dtb_list() +{ + local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})" + + for dt in $DTB_LIST; do + echo -n "\"$dt.dtb\", " + done +} + +# +# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in +# ${BR_CONFIG}, then prints the corresponding file name for the genimage +# configuration file +# +linux_image() +{ + if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then + echo "\"uImage\"" + else + echo "\"zImage\"" + fi +} + +main() +{ + local FILES="$(dtb_list) $(linux_image)" + local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)" + local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + + sed -e "s/%FILES%/${FILES}/" \ + board/freescale/common/mxs/genimage.cfg.template > ${GENIMAGE_CFG} + + rm -rf "${GENIMAGE_TMP}" + + genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + + rm -f ${GENIMAGE_CFG} + + exit $? +} + +main $@ diff --git a/features/buildroot/board/freescale/imx23evk/readme.txt b/features/buildroot/board/freescale/imx23evk/readme.txt new file mode 100644 index 00000000..6574577d --- /dev/null +++ b/features/buildroot/board/freescale/imx23evk/readme.txt @@ -0,0 +1,48 @@ +************************** +Freescale i.MX23 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX23 EVK board. + +Build +===== + +First, configure Buildroot for your i.MX23 EVK board: + + make imx23evk_defconfig + +Build all components: + + make + +You will find in output/images/ directory the following files: + - imx23-evk.dtb + - rootfs.tar + - u-boot.sd + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ + +Boot the i.MX23 EVK board +========================= + +- Put the Boot Mode Select jumper as 1 0 0 1 so that it can boot + from the SD card +- Insert the SD card in the SD Card slot of the board; +- Connect an RS232 UART cable to the Debug UART Port and connect using a + terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/freescale/imx25pdk/readme.txt b/features/buildroot/board/freescale/imx25pdk/readme.txt new file mode 100644 index 00000000..1aece6c9 --- /dev/null +++ b/features/buildroot/board/freescale/imx25pdk/readme.txt @@ -0,0 +1,54 @@ +************************** +Freescale i.MX25 PDK board +************************** + +This file documents the Buildroot support for the Freescale i.MX25 PDK board. + +Build +===== + +First, configure Buildroot for the i.MX25 PDK board: + + make mx25pdk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx25-pdk.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX25 PDK board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/freescale/imx28evk/readme.txt b/features/buildroot/board/freescale/imx28evk/readme.txt new file mode 100644 index 00000000..2920cb04 --- /dev/null +++ b/features/buildroot/board/freescale/imx28evk/readme.txt @@ -0,0 +1,57 @@ +************************** +Freescale i.MX28 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX28 EVK board. + +Read the i.MX28 Evaluation Kit Quick Start Guide [1] for an introduction to the +board. + +Build +===== + +First, configure Buildroot for your i.MX28 EVK board: + + make freescale_imx28evk_defconfig + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx28-evk.dtb + - rootfs.tar + - u-boot.sd + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command as root: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ + +Boot the i.MX28 EVK board +========================= + +To boot your newly created system (refer to the i.MX28 EVK Quick Start Guide +[1] for guidance): +- insert the SD card in the SD Card Socket 0 of the board; +- verify that your i.MX28 EVK board jumpers and switches are set as mentioned + in the i.MX28 EVK Quick Start Guide [1]; +- connect an RS232 UART cable to the Debug UART Port and connect using a + terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] http://cache.freescale.com/files/32bit/doc/user_guide/EVK_imx28_QuickStart.pdf diff --git a/features/buildroot/board/freescale/imx51evk/readme.txt b/features/buildroot/board/freescale/imx51evk/readme.txt new file mode 100644 index 00000000..d67a3fd7 --- /dev/null +++ b/features/buildroot/board/freescale/imx51evk/readme.txt @@ -0,0 +1,54 @@ +************************** +Freescale i.MX51 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX51 EVK board. + +Build +===== + +First, configure Buildroot for the i.MX51 EVK board: + + make mx51evk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx51-babbage.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX51 EVK board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment b/features/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment new file mode 100644 index 00000000..d4f26b16 --- /dev/null +++ b/features/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment @@ -0,0 +1,5 @@ +# Currently mx6sabresd exhibits touchscreen issues when running cpufreq as +# ondemand governor with a mainline kernel. +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_VIDEO_CODA=m diff --git a/features/buildroot/board/freescale/imx6-sabresd/readme.txt b/features/buildroot/board/freescale/imx6-sabresd/readme.txt new file mode 100644 index 00000000..f09ff5ca --- /dev/null +++ b/features/buildroot/board/freescale/imx6-sabresd/readme.txt @@ -0,0 +1,110 @@ +******************************* +Freescale i.MX6 Sabre SD boards +******************************* + +This file documents the Buildroot support for the Freescale i.MX6 Sabre SD +boards based on i.MX6Q, i.MX6DL and iMX6QP. + +Thanks to the SPL support in U-Boot it is possible to run a single +sdcard.img in all i.MX6 Sabre SD board variants. + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the i.MX6 Sabre SD board: + + make imx6-sabresd_defconfig + +Build all components: + + make + +You will find the following files in output/images/ : + - imx6q-sabresd.dtb + - imx6dl-sabresd.dtb + - imx6qp-sabresd.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6 Sabre SD board +============================= + +To boot your newly created system: +- insert the SD card in the SD3 slot of the board (close to the HDMI connector); +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Testing graphics on the i.MX6 Sabre SD board +============================================ + +The imx6-sabresd_qt5_defconfig allows to quickly test the graphics +capabilities of i.MX6 using the opensource Etnaviv graphics stack +and kernel mainline. + +In order to build it: + +make imx6-sabresd_qt5_defconfig +make + +Then flash the SD card as explained above. + +Running kmscube application: + +# kmscube + +Running Qt5 Cinematic Demo: + +# export QT_QPA_EGLFS_KMS_CONFIG=/root/sabresd.json +# /usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience + +Running gl2mark benchmark: + +# glmark2-es2-drm + +Testing video playback on the i.MX6 Sabre SD board +================================================== + +As the mx6sabresd has two display outputs (LVDS and HDMI), it is necessary to +know what is the connector that corresponds to the HDMI output. + +This information can be found by running: + +# modetest + +And search for the HDMI connector number. In our case it shows up as 37. + +In the mx6sabresd prompt run the following Gstreamer pipeline: + +# gst-launch-1.0 filesrc location=/root/trailer_1080p_h264_mp3.avi ! avidemux ! \ +h264parse ! v4l2video1dec capture-io-mode=dmabuf ! kmssink connector-id=37 \ +name=imx-drm sync=0 + +(The video used on this example was retrieved from: +http://linode.boundarydevices.com/videos/trailer_1080p_h264_mp3.avi) + +Enjoy! diff --git a/features/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json b/features/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json new file mode 100644 index 00000000..d5d063af --- /dev/null +++ b/features/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json @@ -0,0 +1,15 @@ +{ + "device": "/dev/dri/card0", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "HDMI-1", + "mode": "off" + }, + { + "name": "LVDS-1", + "mode": "1024x768" + } + ] +} diff --git a/features/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imx-Create-distinct-pre-processed-mkimage-config-fil.patch b/features/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imx-Create-distinct-pre-processed-mkimage-config-fil.patch new file mode 100644 index 00000000..b8989cb9 --- /dev/null +++ b/features/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imx-Create-distinct-pre-processed-mkimage-config-fil.patch @@ -0,0 +1,89 @@ +From 27a2cd6a1980adf3002412678c8fdec6528dc47d Mon Sep 17 00:00:00 2001 +From: Trent Piepho +Date: Fri, 6 Apr 2018 17:11:27 -0700 +Subject: [PATCH] imx: Create distinct pre-processed mkimage config files + +Each imx image is created by a separate sub-make and during this process +the mkimage config file is run though cpp. + +The cpp output is to the same file no matter what imx image is being +created. + +This means if two imx images are generated in parallel they will attempt +to independently produce the same pre-processed mkimage config file at +the same time. + +Avoid the problem by making the pre-processed config file name unique +based on the imx image it will be used in. This way each image will +create a unique config file and they won't clobber each other when run +in parallel. + +This should fixed the build bug referenced in b5b0e4e3 ("imximage: +Remove failure when no IVT offset is found"). + +Cc: Breno Lima +Cc: Thomas Petazzoni +Cc: Fabio Estevam +Signed-off-by: Trent Piepho +Tested-by: Fabio Estevam +[fabio: Adapted to imx_v2017.03_4.9.11_1.0.0_ga] +Signed-off-by: Fabio Estevam +--- + arch/arm/imx-common/Makefile | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/arch/arm/imx-common/Makefile b/arch/arm/imx-common/Makefile +index d862258..f1bae8d 100644 +--- a/arch/arm/imx-common/Makefile ++++ b/arch/arm/imx-common/Makefile +@@ -69,9 +69,11 @@ endif + quiet_cmd_cpp_cfg = CFGS $@ + cmd_cpp_cfg = $(CPP) $(cpp_flags) -x c -o $@ $< + +-IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp ++# mkimage source config file ++IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%) + +-$(IMX_CONFIG): %.cfgtmp: % FORCE ++# How to create a cpp processed config file, they all use the same source ++%.cfgout: $(IMX_CONFIG) FORCE + $(Q)mkdir -p $(dir $@) + $(call if_changed_dep,cpp_cfg) + +@@ -79,7 +81,7 @@ MKIMAGEFLAGS_u-boot.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imxim + -e $(CONFIG_SYS_TEXT_BASE) + u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log + +-u-boot.imx: u-boot.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE ++u-boot.imx: u-boot.bin u-boot.cfgout $(PLUGIN).bin FORCE + $(call if_changed,mkimage) + + ifeq ($(CONFIG_OF_SEPARATE),y) +@@ -87,16 +89,15 @@ MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T i + -e $(CONFIG_SYS_TEXT_BASE) + u-boot-dtb.imx: MKIMAGEOUTPUT = u-boot-dtb.imx.log + +-u-boot-dtb.imx: u-boot-dtb.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE ++u-boot-dtb.imx: u-boot-dtb.bin u-boot-dtb.cfgout $(PLUGIN).bin FORCE + $(call if_changed,mkimage) + endif + + MKIMAGEFLAGS_SPL = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \ + -e $(CONFIG_SPL_TEXT_BASE) +- + SPL: MKIMAGEOUTPUT = SPL.log + +-SPL: spl/u-boot-spl.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE ++SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout $(PLUGIN).bin FORCE + $(call if_changed,mkimage) + + MKIMAGEFLAGS_u-boot.uim = -A arm -O U-Boot -a $(CONFIG_SYS_TEXT_BASE) \ +@@ -124,4 +125,4 @@ cmd_u-boot-nand-spl_imx = (printf '\000\000\000\000\106\103\102\040\001' && \ + spl/u-boot-nand-spl.imx: SPL FORCE + $(call if_changed,u-boot-nand-spl_imx) + +-targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx) ++targets += $(addprefix ../../../,SPL spl/u-boot-spl.cfgout u-boot-dtb.cfgout u-boot.cfgout u-boot.uim spl/u-boot-nand-spl.imx) +-- +2.7.4 + diff --git a/features/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch b/features/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch new file mode 100644 index 00000000..d57875f8 --- /dev/null +++ b/features/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch @@ -0,0 +1,36 @@ +From 90ecc0ad14337898b75843efc6530fc4a34f7808 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 12 Aug 2014 10:17:31 +0200 +Subject: [PATCH] mx6qsabre_common: boot Linux to /init in mfgtools mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Buildroot supplies a nice /init wrapper script to use when booting from a +ramdisk. + +This patch tells u-boot to tell the kernel to boot into /init (instead of +/linuxrc) on i.MX6, when booting in mfgtools mode. This way we can boot a +buildroot system entirely through USB. + +Signed-off-by: Vincent Stehlé +--- + include/configs/mx6sabre_common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/configs/mx6sabre_common.h b/include/configs/mx6sabre_common.h +index 93d4c4b..d2e7efd 100644 +--- a/include/configs/mx6sabre_common.h ++++ b/include/configs/mx6sabre_common.h +@@ -52,7 +52,7 @@ + + #define CONFIG_MFG_ENV_SETTINGS \ + "mfgtool_args=setenv bootargs console=" CONSOLE_DEV ",115200 " \ +- "rdinit=/linuxrc " \ ++ "rdinit=/init " \ + "g_mass_storage.stall=0 g_mass_storage.removable=1 " \ + "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\ + "g_mass_storage.iSerialNumber=\"\" "\ +-- +2.1.4 + diff --git a/features/buildroot/board/freescale/imx6sabre/readme.txt b/features/buildroot/board/freescale/imx6sabre/readme.txt new file mode 100644 index 00000000..4b8db523 --- /dev/null +++ b/features/buildroot/board/freescale/imx6sabre/readme.txt @@ -0,0 +1,171 @@ +******************************************************** +Freescale i.MX6 Q, DL and SoloX SABRE development boards +******************************************************** + +This file documents the Buildroot support for the Freescale SABRE Board +for Smart Devices Based on the i.MX 6 and i.MX 6SoloX Series (SABRESD), +as well as the Freescale SABRE Board for Automotive Infotainment. + +Read the i.MX 6 SABRESD Quick Start Guide for an introduction to the +board: +http://cache.freescale.com/files/32bit/doc/quick_start_guide/SABRESDB_IMX6_QSG.pdf + +Read the i.MX 6 SoloX SABRESD Quick Start Guide for an introduction to +the board: +http://cache.freescale.com/files/32bit/doc/user_guide/IMX6SOLOXQSG.pdf + +Read the SABRE for Automotive Infotainment Quick Start Guide for an +introduction to the board: +http://cache.freescale.com/files/32bit/doc/user_guide/IMX6SABREINFOQSG.pdf + +Building with NXP kernel and NXP U-Boot +======================================= + +First, configure Buildroot for your SABRE board. +For i.MX6Q SABRE SD board: + + make freescale_imx6qsabresd_defconfig + +For i.MX6DL SABRE SD board: + + make freescale_imx6dlsabresd_defconfig + +For i.MX6 SoloX SABRE SD board: + + make freescale_imx6sxsabresd_defconfig + +For i.MX6Q SABRE Auto board: + + make freescale_imx6qsabreauto_defconfig + +For i.MX6DL SABRE Auto board: + + make freescale_imx6dlsabreauto_defconfig + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx6dl-sabresd.dtb or imx6q-sabresd.dtb or imx6sx-sdb.dtb or + imx6q-sabreauto.dtb or imx6dl-sabreauto.dtb + - rootfs.ext2 + - rootfs.tar + - u-boot.imx + - uImage, or zImage for i.MX6 SoloX + +Building with mainline kernel and mainline U-Boot +================================================= + +Mainline U-Boot uses SPL and can support the three +variants of mx6sabreauto boards: mx6q, mx6dl and mx6qp. + +First, configure Buildroot for your mx6sabreauto board + + make imx6-sabreauto_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx6dl-sabresd.dtb, imx6q-sabresd.dtb, imx6q-sabresd.dtb + - rootfs.ext2 + - SPL and u-boot.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! The script will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the SABRE board +==================== + +i.MX6 SABRE SD +-------------- + +To boot your newly created system on an i.MX6 SABRE SD Board (refer to +the i.MX6 SABRE SD Quick Start Guide for guidance): +- insert the SD card in the SD3 slot of the board; +- locate the BOOT dip switches (SW6), set dips 2 and 7 to ON, all others to OFF; +- connect a Micro USB cable to Debug Port and connect using a terminal emulator + at 115200 bps, 8n1; +- power on the board. + +i.MX6 SoloX SABRE SD +-------------------- + +To boot your newly created system on an i.MX6 SoloX SABRE SD Board +(refer to the i.MX6 SoloX SABRE SD Quick Start Guide for guidance): +- insert the SD card in the J4-SD4 socket at the bottom of the board; +- Set the SW10, SW11 and SW12 DIP switches at the top of the board in + their default position, to boot from SD card. Reference configuration: + + SW10 + 1 2 3 4 5 6 7 8 + off off off off off off off off + + SW11 + 1 2 3 4 5 6 7 8 + off off ON ON ON off off off + + SW12 + 1 2 3 4 5 6 7 8 + off ON off off off off off off + +- connect a Micro USB cable to the J16 Debug Port at the bottom of the + board. This is a dual UART debug port; connect to the first tty using + a terminal emulator at 115200 bps, 8n1; +- power on the board with the SW1-PWR switch at the top of the board. + +SABRE Auto +---------- + +To boot your newly created system on a SABRE Auto Board (refer to the SABRE for +Automotive Infotainment Quick Start Guide for guidance): +- insert the SD card in the CPU card SD card socket J14; +- Set the S1, S2 and S3 DIP switches and J3 jumper to boot from SD on CPU card. + Reference configuration: + + S1 + 1 2 3 4 5 6 7 8 9 10 + off ON off off ON off off off off off + + S2 + 1 2 3 4 + off off ON off + + S3 + 1 2 3 4 + off off ON ON + + J3: 1-2 + +- connect an RS-232 UART cable to CPU card debug port J18 UART DB9 and + connect using a terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== + +https://community.freescale.com/docs/DOC-95015 +https://community.freescale.com/docs/DOC-95017 +https://community.freescale.com/docs/DOC-99218 diff --git a/features/buildroot/board/freescale/imx6slevk/readme.txt b/features/buildroot/board/freescale/imx6slevk/readme.txt new file mode 100644 index 00000000..424380e3 --- /dev/null +++ b/features/buildroot/board/freescale/imx6slevk/readme.txt @@ -0,0 +1,14 @@ +NXP i.MX6SL EVK board +--------------------- + +To build a minimal support for this board: + +$ make imx6slevk_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/; sync + +Then insert the SD card into the SD2 slot and boot the board. diff --git a/features/buildroot/board/freescale/imx6sxsdb/readme.txt b/features/buildroot/board/freescale/imx6sxsdb/readme.txt new file mode 100644 index 00000000..2779075f --- /dev/null +++ b/features/buildroot/board/freescale/imx6sxsdb/readme.txt @@ -0,0 +1,14 @@ +NXP i.MX6SX SDB board +--------------------- + +To build a minimal support for this board: + +$ make imx6sx-sdb_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/; sync + +Then insert the SD card into the SD4 boot slot and boot the board. diff --git a/features/buildroot/board/freescale/imx6ulevk/readme.txt b/features/buildroot/board/freescale/imx6ulevk/readme.txt new file mode 100644 index 00000000..90355f35 --- /dev/null +++ b/features/buildroot/board/freescale/imx6ulevk/readme.txt @@ -0,0 +1,74 @@ +*************************** +Freescale i.MX6UL EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX6UL EVK board. + +Please read the i.MX6UL Evaluation Kit Quick Start Guide [1] for an +introduction to the board. + +Build +===== + +First, configure Buildroot for your i.MX6UL EVK board: + +In order to to do so there are two supported options: + + make freescale_imx6ulevk_defconfig + +if you plan to use NXP provided U-Boot and kernel. + +or + + make imx6ulevk_defconfig + +if you plan to use mainline U-Boot and mainline kernel. + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx6ul-14x14-evk.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable microSD card +============================== + +To determine the device associated to the microSD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6UL EVK board +========================= + +To boot your newly created system (refer to the i.MX6UL EVK Quick Start Guide +[1] for guidance): +- insert the microSD card in the microSD slot of the board; +- verify that your i.MX6UL EVK board jumpers and switches are set as mentioned + in the i.MX6UL EVK Quick Start Guide [1]; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] http://cache.freescale.com/files/32bit/doc/quick_start_guide/IMX6ULTRALITEQSG.pdf diff --git a/features/buildroot/board/freescale/imx7dsdb/patches/uboot/0001-imx-Create-distinct-pre-processed-mkimage-config-fil.patch b/features/buildroot/board/freescale/imx7dsdb/patches/uboot/0001-imx-Create-distinct-pre-processed-mkimage-config-fil.patch new file mode 100644 index 00000000..b8989cb9 --- /dev/null +++ b/features/buildroot/board/freescale/imx7dsdb/patches/uboot/0001-imx-Create-distinct-pre-processed-mkimage-config-fil.patch @@ -0,0 +1,89 @@ +From 27a2cd6a1980adf3002412678c8fdec6528dc47d Mon Sep 17 00:00:00 2001 +From: Trent Piepho +Date: Fri, 6 Apr 2018 17:11:27 -0700 +Subject: [PATCH] imx: Create distinct pre-processed mkimage config files + +Each imx image is created by a separate sub-make and during this process +the mkimage config file is run though cpp. + +The cpp output is to the same file no matter what imx image is being +created. + +This means if two imx images are generated in parallel they will attempt +to independently produce the same pre-processed mkimage config file at +the same time. + +Avoid the problem by making the pre-processed config file name unique +based on the imx image it will be used in. This way each image will +create a unique config file and they won't clobber each other when run +in parallel. + +This should fixed the build bug referenced in b5b0e4e3 ("imximage: +Remove failure when no IVT offset is found"). + +Cc: Breno Lima +Cc: Thomas Petazzoni +Cc: Fabio Estevam +Signed-off-by: Trent Piepho +Tested-by: Fabio Estevam +[fabio: Adapted to imx_v2017.03_4.9.11_1.0.0_ga] +Signed-off-by: Fabio Estevam +--- + arch/arm/imx-common/Makefile | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/arch/arm/imx-common/Makefile b/arch/arm/imx-common/Makefile +index d862258..f1bae8d 100644 +--- a/arch/arm/imx-common/Makefile ++++ b/arch/arm/imx-common/Makefile +@@ -69,9 +69,11 @@ endif + quiet_cmd_cpp_cfg = CFGS $@ + cmd_cpp_cfg = $(CPP) $(cpp_flags) -x c -o $@ $< + +-IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp ++# mkimage source config file ++IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%) + +-$(IMX_CONFIG): %.cfgtmp: % FORCE ++# How to create a cpp processed config file, they all use the same source ++%.cfgout: $(IMX_CONFIG) FORCE + $(Q)mkdir -p $(dir $@) + $(call if_changed_dep,cpp_cfg) + +@@ -79,7 +81,7 @@ MKIMAGEFLAGS_u-boot.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imxim + -e $(CONFIG_SYS_TEXT_BASE) + u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log + +-u-boot.imx: u-boot.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE ++u-boot.imx: u-boot.bin u-boot.cfgout $(PLUGIN).bin FORCE + $(call if_changed,mkimage) + + ifeq ($(CONFIG_OF_SEPARATE),y) +@@ -87,16 +89,15 @@ MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T i + -e $(CONFIG_SYS_TEXT_BASE) + u-boot-dtb.imx: MKIMAGEOUTPUT = u-boot-dtb.imx.log + +-u-boot-dtb.imx: u-boot-dtb.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE ++u-boot-dtb.imx: u-boot-dtb.bin u-boot-dtb.cfgout $(PLUGIN).bin FORCE + $(call if_changed,mkimage) + endif + + MKIMAGEFLAGS_SPL = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \ + -e $(CONFIG_SPL_TEXT_BASE) +- + SPL: MKIMAGEOUTPUT = SPL.log + +-SPL: spl/u-boot-spl.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE ++SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout $(PLUGIN).bin FORCE + $(call if_changed,mkimage) + + MKIMAGEFLAGS_u-boot.uim = -A arm -O U-Boot -a $(CONFIG_SYS_TEXT_BASE) \ +@@ -124,4 +125,4 @@ cmd_u-boot-nand-spl_imx = (printf '\000\000\000\000\106\103\102\040\001' && \ + spl/u-boot-nand-spl.imx: SPL FORCE + $(call if_changed,u-boot-nand-spl_imx) + +-targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx) ++targets += $(addprefix ../../../,SPL spl/u-boot-spl.cfgout u-boot-dtb.cfgout u-boot.cfgout u-boot.uim spl/u-boot-nand-spl.imx) +-- +2.7.4 + diff --git a/features/buildroot/board/freescale/imx7dsdb/readme.txt b/features/buildroot/board/freescale/imx7dsdb/readme.txt new file mode 100644 index 00000000..c6030f69 --- /dev/null +++ b/features/buildroot/board/freescale/imx7dsdb/readme.txt @@ -0,0 +1,54 @@ +*************************** +Freescale i.MX7D SDB board +*************************** + +This file documents the Buildroot support for the Freescale i.MX7D SDB board. + +Build +===== + +First, configure Buildroot for your i.MX7D SDB board: + + make freescale_imx7dsabresd_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7d-sdb.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX7D SDB board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/freescale/imx8mmevk/readme.txt b/features/buildroot/board/freescale/imx8mmevk/readme.txt new file mode 100644 index 00000000..7b69405d --- /dev/null +++ b/features/buildroot/board/freescale/imx8mmevk/readme.txt @@ -0,0 +1,71 @@ +*************************** +Freescale i.MX8MM EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX8MM +EVK board. + +Build +===== + +First, configure Buildroot for the i.MX8MM EVK board: + + make freescale_imx8mmevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - fsl-imx8mm-evk.dtb + - Image + - imx8-boot-sd.bin + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.bin + - u-boot.imx + - u-boot-nodtb.bin + - u-boot-spl-ddr.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8MM EVK board +========================== + +To boot your newly created system (refer to the i.MX8MMini EVK Quick Start Guide +[1] for guidance): +- insert the SD card in the SD slot of the board; +- Configure the switches as follows: +SW1101: 0110110010 [D1-D10] +SW1102: 0001101000 [D1-D10] +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] https://www.nxp.com/document/guide/Get-Started-with-the-i.MX-8M-Mini-EVK:GS-iMX-8M-Mini-EVK diff --git a/features/buildroot/board/freescale/imx8mqevk/readme.txt b/features/buildroot/board/freescale/imx8mqevk/readme.txt new file mode 100644 index 00000000..e60eba4c --- /dev/null +++ b/features/buildroot/board/freescale/imx8mqevk/readme.txt @@ -0,0 +1,80 @@ +*************************** +Freescale i.MX8MQ EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX8MQ +EVK board. + +Build +===== + +First, configure Buildroot for the i.MX8MQ EVK board: + + make freescale_imx8mqevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - fsl-imx8mq-evk.dtb + - Image + - imx8-boot-sd.bin + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - signed_hdmi_imx8m.bin + - u-boot.bin + - u-boot.imx + - u-boot-nodtb.bin + - u-boot-spl-ddr.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8MQ EVK board +========================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the switches as follows: +SW801: ON ON OFF OFF +SW802: ON OFF +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enable HDMI output +================== + +To enable HDMI output at boot you must provide the video kernel boot +argument. To set the video boot argument from U-Boot run after +stopping in U-Boot prompt: + +setenv mmcargs 'setenv bootargs console=${console} root=${mmcroot} video=HDMI-A-1:1920x1080-32@60' +saveenv +reset + +Change screen resolution to suit your connected display. + +Enjoy! diff --git a/features/buildroot/board/freescale/imx8qxpmek/readme.txt b/features/buildroot/board/freescale/imx8qxpmek/readme.txt new file mode 100644 index 00000000..45f7915f --- /dev/null +++ b/features/buildroot/board/freescale/imx8qxpmek/readme.txt @@ -0,0 +1,67 @@ +*************************** +Freescale i.MX8QXP MEK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX8QXP +MEK board. + +Build +===== + +First, configure Buildroot for the i.MX8QXP MEK board: + + make freescale_imx8qxpmek_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - ahab-container.img + - bl31.bin + - boot.vfat + - fsl-imx8qxp-mek.dtb + - Image + - imx8-boot-sd.bin + - mkimg.commit + - mx8qx-mek-scfw-tcm.bin + - mx8qx-val-scfw-tcm.bin + - rootfs.ext2 + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-atf.bin + - u-boot.bin + - u-boot-hash.bin + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template_imx8. + +Boot the i.MX8QXP MEK board +========================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- Configure the boot switch as follows: +SW2: ON ON OFF OFF +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/features/buildroot/board/freescale/p1025twr/readme.txt b/features/buildroot/board/freescale/p1025twr/readme.txt new file mode 100644 index 00000000..9179aeac --- /dev/null +++ b/features/buildroot/board/freescale/p1025twr/readme.txt @@ -0,0 +1,25 @@ +The bootloader is no longer buildable in the latest Freescale/NXP tree or +upstream. As such, retrieve the "Image: SDK V1.2 e500v2 Binary ISO" from +NXP downloads and follow the release notes for reflashing. + +For programming the kernel and rootfs created by buildroot into the flash. +The fast way is to tftp transfer the files via one of the network interfaces. +Make sure your devkit has ipaddr and serverip defined to reach your tftp +server. + +(Assuming the default u-boot env from NXP) +1. Program the DTB to NOR flash + + => setenv dtbfile p1025twr.dtb + => run dtbflash + +2. Program the kernel and rootfs to NOR flash (reusing orignal rootfs + NOR location, as the kernel location is to small) + + => tftpboot $loadaddr uImage; protect off 0xeeb80000 +$filesize; erase 0xeeb80000 +$filesize; cp.b $loadaddr 0xeeb80000 $filesize; protect on 0xeeb80000 +$filesize; cmp.b $loadaddr 0xefa80000 $filesize + +3. Booting your new system + + => bootm 0xeeb80000 - 0xefe80000 + + You can login with user "root". diff --git a/features/buildroot/board/freescale/t1040_t2080/readme.txt b/features/buildroot/board/freescale/t1040_t2080/readme.txt new file mode 100644 index 00000000..65695295 --- /dev/null +++ b/features/buildroot/board/freescale/t1040_t2080/readme.txt @@ -0,0 +1,51 @@ +For the bootloader, NXP has stablized at SDK2.0 (final release). It is +suggested to download the prebuilt from NXP downloads and follow the +release notes for reflashing. + +To program the kernel and rootfs created by buildroot into the flash. The +fast way is to tftp transfer the files via one of the network interfaces. +Make sure your devkit has ipaddr, netmask, and serverip defined to reach your +tftp server. Verify bootargs are reasonable (console=ttyS0,115200). + +------------------------------------------------------------------------------ + +Devkit: T1040RDB + +(Assuming the default u-boot env from NXP) +1. Program the DTB to NOR flash + + => tftpboot $loadaddr t1040d4rdb.dtb; protect off 0xe8800000 +$filesize; erase 0xe8800000 +$filesize; cp.b $loadaddr 0xe8800000 $filesize; protect on 0xe8800000 +$filesize; cmp.b $loadaddr 0xe8800000 $filesize + +2. Program the kernel and rootfs to NOR flash + + => tftpboot $loadaddr uImage; protect off 0xe8020000 +$filesize; erase 0xe8020000 +$filesize; cp.b $loadaddr 0xe8020000 $filesize; protect on 0xe8020000 +$filesize; cmp.b $loadaddr 0xe8020000 $filesize + => tftpboot $loadaddr rootfs.cpio.uboot; protect off 0xe9300000 +$filesize; erase 0xe9300000 +$filesize; cp.b $loadaddr 0xe9300000 $filesize; protect on 0xe9300000 +$filesize; cmp.b $loadaddr 0xe9300000 $filesize + +3. Booting your new system + + => boot + + You can login with user "root". +------------------------------------------------------------------------------ + +Devkit: T2080 QDS or RDB + +(Assuming the default u-boot env from NXP) +1. Netboot the kernel/rootfs/dtb + + => tftp 0x1000000 uImage && tftp 0x2000000 rootfs.cpio.uboot + + RDB => tftp 0x3000000 t2080rdb.dtb + or + QDS => tftp 0x3000000 t2080qds.dtb + +2. Booting your new system + + => bootm 0x1000000 0x2000000 0x3000000 + + You can login with user "root". + +3. If flashing is desired, a similar approach to the T1040 can be followed + with updated addresses for the flash layout. Example is in the NXP default + env. +------------------------------------------------------------------------------ diff --git a/features/buildroot/board/freescale/warpboard/README b/features/buildroot/board/freescale/warpboard/README new file mode 100644 index 00000000..67d4e044 --- /dev/null +++ b/features/buildroot/board/freescale/warpboard/README @@ -0,0 +1,77 @@ +Build +===== + +First, configure Buildroot for your WarpBoard. + make warpboard_defconfig + +Build all components: + make + +You will find in ./output/images/ the following files: + - imx6sl-warp.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Update uboot +============ + +- Put warpboard in USB download mode by closing the j2 jumper on the + daugther board + +- Load u-boot.imx in the WarpBoard by using the imx-usb-loader host utility: + + $ ./output/host/bin/imx_usb -c output/host/etc/imx-loader.d/ output/images/u-boot.imx + +- U-Boot will appear in minicom + +- Reset the U-Boot environment to its default: + => env default -f -a + => saveenv + +- Run the DFU command in U-Boot: + => dfu 0 mmc 0 + +- Transfer U-Boot into flash by running this command in host side: + + $ sudo ./output/host/bin/dfu-util -D output/images/u-boot.imx -a boot + +- remove power and put the WarpBoard back into normal boot mode by + opening the j2 jumper. + +Update linux & rootfs +===================== + +Run the 'ums' command from the U-Boot prompt to mount the eMMC as USB mass +storage: + +=> ums 0 mmc 0 + +And then flash the sdcard.img into the eMMC: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use it with care! *** + +Using bluetooth +================ + +Enable the bluez_utils or bluez5_utils package, and then run: + +$ hciattach /dev/ttymxc4 any +$ hciconfig hci0 up + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/features/buildroot/board/freescale/warpboard/linux.fragment b/features/buildroot/board/freescale/warpboard/linux.fragment new file mode 100644 index 00000000..892d0cb7 --- /dev/null +++ b/features/buildroot/board/freescale/warpboard/linux.fragment @@ -0,0 +1 @@ +CONFIG_CFG80211_WEXT=y diff --git a/features/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt b/features/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt new file mode 100644 index 00000000..9546246b --- /dev/null +++ b/features/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt @@ -0,0 +1,40 @@ +# bcm94330wlsdgb.txt +manfid=0x2d0 +prodid=0x0552 +vendid=0x14e4 +devid=0x4360 +boardtype=0x0552 +boardrev=0x11 +# this design has 2.4GHz SP3T switch +boardflags=0x00080200 +nocrc=1 +xtalfreq=37400 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +ag0=255 +aa2g=1 +ccode=CN +pa0b0=0x14d0 +pa0b1=0xfd98 +pa0b2=0xff78 +rssismf2g=0xa +rssismc2g=0x3 +rssisav2g=0x7 +maxp2ga0=0x50 +sromrev=3 +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b +cckPwrOffset=5 +ofdm2gpo=0x66666666 +mcs2gpo0=0x6666 +mcs2gpo1=0x6666 +swctrlmap_2g=0x04040404,0x02020202,0x02020404,0x10202,0x1ff +swctrlmap_5g=0x00100010,0x00280020,0x00200010,0x14202,0x2f8 +rfreg033=0x19 +rfreg033_cck=0x1f +dacrate2g=160 +txalpfbyp2g=1 +bphyscale=17 +cckPwrIdxCorr=-15 +pacalidx2g=45 +txgaintbl=1 diff --git a/features/buildroot/board/friendlyarm/nanopi-a64/boot.cmd b/features/buildroot/board/friendlyarm/nanopi-a64/boot.cmd new file mode 100644 index 00000000..446bd856 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-a64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-nanopi-a64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg b/features/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg new file mode 100644 index 00000000..66b6c5f4 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-nanopi-a64.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/friendlyarm/nanopi-a64/readme.txt b/features/buildroot/board/friendlyarm/nanopi-a64/readme.txt new file mode 100644 index 00000000..88c4e661 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-a64/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Nanopi A64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Nanopi A64 link: +http://nanopi.io/nanopi-a64.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/FriendlyARM+Nanopi+A64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make friendlyarm_nanopi_a64_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Nanopi A64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd b/features/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd new file mode 100644 index 00000000..35a1d65d --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-nanopi-m1-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg b/features/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg new file mode 100644 index 00000000..fdb3b906 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the NanoPi M1 Plus +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-m1-plus.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt b/features/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt new file mode 100644 index 00000000..3e16c8af --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt @@ -0,0 +1,29 @@ +NanoPi M1 Plus + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the NanoPi M1 Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make nanopi_m1_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/friendlyarm/nanopi-m1/boot.cmd b/features/buildroot/board/friendlyarm/nanopi-m1/boot.cmd new file mode 100644 index 00000000..b4d612ed --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-m1/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-nanopi-m1.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg b/features/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg new file mode 100644 index 00000000..23c9c7dc --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the NanoPi M1 +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-m1.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/friendlyarm/nanopi-m1/readme.txt b/features/buildroot/board/friendlyarm/nanopi-m1/readme.txt new file mode 100644 index 00000000..8b10e4b7 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-m1/readme.txt @@ -0,0 +1,29 @@ +NanoPi M1 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the NanoPi M1. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make nanopi_m1_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/friendlyarm/nanopi-neo/boot.cmd b/features/buildroot/board/friendlyarm/nanopi-neo/boot.cmd new file mode 100644 index 00000000..78740578 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-nanopi-neo.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg b/features/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg new file mode 100644 index 00000000..ad43d310 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-neo.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 32M + } +} diff --git a/features/buildroot/board/friendlyarm/nanopi-neo/post-build.sh b/features/buildroot/board/friendlyarm/nanopi-neo/post-build.sh new file mode 100755 index 00000000..9759efb5 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# post-build.sh for Nanopi NEO, based on the Orange Pi PC +# 2013, Carlo Caione +# 2016, "Yann E. MORIN" + +BOARD_DIR="$( dirname "${0}" )" +MKIMAGE="${HOST_DIR}/bin/mkimage" +BOOT_CMD="${BOARD_DIR}/boot.cmd" +BOOT_CMD_H="${BINARIES_DIR}/boot.scr" + +# U-Boot script +"${MKIMAGE}" -C none -A arm -T script -d "${BOOT_CMD}" "${BOOT_CMD_H}" diff --git a/features/buildroot/board/friendlyarm/nanopi-neo/post-image.sh b/features/buildroot/board/friendlyarm/nanopi-neo/post-image.sh new file mode 100755 index 00000000..740386ef --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo/post-image.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# post-image.sh for Nanopi NEO, based on the Orange Pi PC + +BOARD_DIR="$( dirname "${0}" )" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/friendlyarm/nanopi-neo/readme.txt b/features/buildroot/board/friendlyarm/nanopi-neo/readme.txt new file mode 100644 index 00000000..539df541 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo/readme.txt @@ -0,0 +1,42 @@ +Intro +===== + +The instructions herein are valid for the FriendlyARM NanoPi NEO, +both the 256MiB and 512MiB versions. They should also work for the +NanoPi NEO Air, but this is untested so far. + +The FriendlyARM Nanopi NEO is a 4x4cm² board with an Allwiner H3 SoC: + - quad-core Cortex-A7 @1.2GHz + - 256 or 512MiB of DDR + - uSDCard as only storage option + - 3x USB 2.0 host (one socket, two on expansion pin-holes) + - 1x USB 2.0 OTG (also used as power source) + - 10/100 ethernet MAC + - GPIOs, SPI, I2c... + +Support for the Nanopi NEO in U-Boot and Linux is very recent, so only +core, basic features are available. + +Unfortunately, support for the ethernet MAC and the USB OTG are not +yet upstream, but are being actively worked on. + + +How to build +============ + + $ make nanopi_neo_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +You will then obtain an image ready to be written to your micro SDcard: + + $ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +Notes: + - replace 'sdX' with the actual device with your micro SDcard, + - you may need to be root to do that (use 'sudo'). + +Insert the micro SDcard in your NanoPi NEO and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd b/features/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd new file mode 100644 index 00000000..9a39f4af --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-nanopi-neo2.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg b/features/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg new file mode 100644 index 00000000..ebe123b7 --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-nanopi-neo2.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/friendlyarm/nanopi-neo2/readme.txt b/features/buildroot/board/friendlyarm/nanopi-neo2/readme.txt new file mode 100644 index 00000000..0f445e2b --- /dev/null +++ b/features/buildroot/board/friendlyarm/nanopi-neo2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Nanopi NEO2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Nanopi NEO2 link: +http://nanopi.io/nanopi-neo2.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/FriendlyARM+NanoPi+NEO2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make friendlyarm_nanopi_neo2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Nanopi NEO2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/grinn/chiliboard/genimage.cfg b/features/buildroot/board/grinn/chiliboard/genimage.cfg new file mode 100644 index 00000000..ffe027e7 --- /dev/null +++ b/features/buildroot/board/grinn/chiliboard/genimage.cfg @@ -0,0 +1,31 @@ +# Minimal microSD card image for Grinn's chiliBoard +# + +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "am335x-chiliboard.dtb", + "zImage" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/grinn/chiliboard/post-image.sh b/features/buildroot/board/grinn/chiliboard/post-image.sh new file mode 100755 index 00000000..1a076eec --- /dev/null +++ b/features/buildroot/board/grinn/chiliboard/post-image.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/grinn/chiliboard/readme.txt b/features/buildroot/board/grinn/chiliboard/readme.txt new file mode 100644 index 00000000..676aa704 --- /dev/null +++ b/features/buildroot/board/grinn/chiliboard/readme.txt @@ -0,0 +1,46 @@ +********** +chiliBoard +********** + +Build +===== + +First, configure Buildroot for your chiliBoard: + + make grinn_chiliboard_defconfig + +Build image: + + make + +After building you should get a tree like this: + + output/images/ + ├── am335x-chiliboard.dtb + ├── boot.vfat + ├── MLO + ├── rootfs.ext2 + ├── rootfs.ext4 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.img + └── zImage + +Create a bootable microSD card +============================== + +Buildroot prepares a bootable microSD card image "sdcard.img" in output/images/ +directory, To flash SD card just run the following command: + + sudo dd if=output/images/sdcard.img of=/dev/ bs=1M + +where can be sdX or mmcblkX + +*** WARNING! This will destroy all contents of device you specify! *** + +Boot chiliBoard +=============== + +- insert the microSD card in the microSD slot of the board; +- plug micro USB cable to provide power and console interface +- use terminal emulator with 115200 bps, 8n1 diff --git a/features/buildroot/board/grinn/liteboard/genimage.cfg b/features/buildroot/board/grinn/liteboard/genimage.cfg new file mode 100644 index 00000000..cbce2db5 --- /dev/null +++ b/features/buildroot/board/grinn/liteboard/genimage.cfg @@ -0,0 +1,48 @@ +# Minimal microSD card image for Grinn's liteBoard +# +# We mimic the .sdcard Freescale's image format for i.MX6UL: +# * the microSD card must have 1 kB free space at the beginning, +# * SPL is dumped as is, +# * U-Boot is dumped at 69K offset, as configured in SPL +# * a FAT partition at offset 8 MB is containing zImage and dtbs, +# * a single root filesystem partition is required (Ext4 in this case). +# + +image boot.vfat { + vfat { + files = { + "imx6ul-liteboard.dtb", + "zImage" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/grinn/liteboard/post-image.sh b/features/buildroot/board/grinn/liteboard/post-image.sh new file mode 100755 index 00000000..1a076eec --- /dev/null +++ b/features/buildroot/board/grinn/liteboard/post-image.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/grinn/liteboard/readme.txt b/features/buildroot/board/grinn/liteboard/readme.txt new file mode 100644 index 00000000..fe1386a0 --- /dev/null +++ b/features/buildroot/board/grinn/liteboard/readme.txt @@ -0,0 +1,45 @@ +********* +liteBoard +********* + +Build +===== + +First, configure Buildroot for your liteBoard: + + make grinn_liteboard_defconfig + +Build image: + + make + +After building you should get a tree like this: + + output/images/ + ├── boot.vfat + ├── imx6ul-liteboard.dtb + ├── rootfs.ext2 + ├── rootfs.ext4 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.imx + └── zImage + +Create a bootable microSD card +============================== + +Buildroot prepares a bootable microSD card image "sdcard.img" in output/images/ +directory, To flash SD card just run the following command: + + sudo dd if=output/images/sdcard.img of=/dev/ bs=1M + +where can be sdX or mmcblkX + +*** WARNING! This will destroy all contents of device you specify! *** + +Boot liteBoard +============== + +- insert the microSD card in the microSD slot of the board; +- plug micro USB cable to provide power and console interface +- use terminal emulator with 115200 bps, 8n1 diff --git a/features/buildroot/board/hardkernel/odroidc2/boot.ini b/features/buildroot/board/hardkernel/odroidc2/boot.ini new file mode 100644 index 00000000..2fdffa30 --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidc2/boot.ini @@ -0,0 +1,176 @@ +ODROIDC2-UBOOT-CONFIG + +######################################################################## +# Changes made to this are overwritten every time there's a new upgrade +# To make your changes permanent change it on +# boot.ini.default +# After changing it on boot.ini.default run the bootini command to +# rewrite this file with your personal permanent settings. +# Documentation: http://odroid.com/dokuwiki/doku.php?id=en:c2_persistent_bootini +######################################################################## + +# Possible screen resolutions +# Uncomment only a single Line! The line with setenv written. +# At least one mode must be selected. + +# Custom modeline! +# To use custom modeline you need to disable all the below resolutions +# and setup your own! +# For more information check our wiki: +# http://odroid.com/dokuwiki/doku.php?id=en:c2_hdmi_autosetting +# Example below: +# setenv m "custombuilt" +# setenv modeline "1920,1200,154000,74040,60,1920,1968,2000,2080,1200,1202,1208,1235,1,0,1" + +# 480 Lines (720x480) +# setenv m "480i60hz" # Interlaced 60Hz +# setenv m "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz +# setenv m "480p60hz" # 480 Progressive 60Hz +# setenv m "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz + +# 576 Lines (720x576) +# setenv m "576i50hz" # Interlaced 50Hz +# setenv m "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz +# setenv m "576p50hz" # Progressive 50Hz +# setenv m "576p_rpt" # Progressive for Rear Projection Televisions 50Hz + +# 720 Lines (1280x720) +# setenv m "720p50hz" # 50Hz +# setenv m "720p60hz" # 60Hz + +# 1080 Lines (1920x1080) +# setenv m "1080i60hz" # Interlaced 60Hz +setenv m "1080p60hz" # Progressive 60Hz +# setenv m "1080i50hz" # Interlaced 50Hz +# setenv m "1080p50hz" # Progressive 50Hz +# setenv m "1080p24hz" # Progressive 24Hz + +# 4K (3840x2160) +# setenv m "2160p30hz" # Progressive 30Hz +# setenv m "2160p25hz" # Progressive 25Hz +# setenv m "2160p24hz" # Progressive 24Hz +# setenv m "smpte24hz" # Progressive 24Hz SMPTE +# setenv m "2160p50hz" # Progressive 50Hz +# setenv m "2160p60hz" # Progressive 60Hz +# setenv m "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv m "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) + +### VESA modes ### +# setenv m "640x480p60hz" +# setenv m "800x480p60hz" +# setenv m "480x800p60hz" +# setenv m "800x600p60hz" +# setenv m "1024x600p60hz" +# setenv m "1024x768p60hz" +# setenv m "1280x800p60hz" +# setenv m "1280x1024p60hz" +# setenv m "1360x768p60hz" +# setenv m "1440x900p60hz" +# setenv m "1600x900p60hz" +# setenv m "1680x1050p60hz" +# setenv m "1600x1200p60hz" +# setenv m "1920x1200p60hz" +# setenv m "2560x1080p60hz" +# setenv m "2560x1440p60hz" +# setenv m "2560x1600p60hz" +# setenv m "3440x1440p60hz" + +# HDMI BPP Mode +setenv m_bpp "32" +# setenv m_bpp "24" +# setenv m_bpp "16" + +# HDMI DVI/VGA modes +# By default its set to HDMI, if needed change below. +# Uncomment only a single Line. +# setenv vout "dvi" +# setenv vout "vga" + +# HDMI HotPlug Detection control +# Allows you to force HDMI thinking that the cable is connected. +# true = HDMI will believe that cable is always connected +# false = will let board/monitor negotiate the connection status +setenv hpd "true" +# setenv hpd "false" + +# Monitor output +# Controls if HDMI PHY should output anything to the monitor +setenv monitor_onoff "false" # true or false + +# Server Mode (aka. No Graphics) +# Setting nographics to 1 will disable all video subsystem +# This mode is ideal of server type usage. (Saves ~300Mb of RAM) +setenv nographics "0" + +# Meson Timer +# 1 - Meson Timer +# 0 - Arch Timer +# Using meson_timer improves the video playback however it breaks KVM (virtualization). +# Using arch timer allows KVM/Virtualization to work however you'll experience poor video +setenv mesontimer "1" + +# UHS (Ultra High Speed) MicroSD mode enable/disable +setenv disableuhs "false" + +# MicroSD Card Detection enable/disable +# Force the MMC controlled to believe that a card is connected. +setenv mmc_removable "true" + +# USB Multi WebCam tweak +# Only enable this if you use it. +setenv usbmulticam "false" + +# Default Console Device Setting +setenv condev "console=ttyS0,115200n8 console=tty0" # on both + +# CPU Frequency / Cores control +########################################### +### WARNING!!! WARNING!!! WARNING!!! +# Before changing anything here please read the wiki entry: +# http://odroid.com/dokuwiki/doku.php?id=en:c2_set_cpu_freq +# +# MAX CPU's +# setenv maxcpus "1" +# setenv maxcpus "2" +# setenv maxcpus "3" +setenv maxcpus "4" + +# MAX Frequency +# setenv max_freq "2016" # 2.016GHz +# setenv max_freq "1944" # 1.944GHz +# setenv max_freq "1944" # 1.944GHz +# setenv max_freq "1920" # 1.920GHz +# setenv max_freq "1896" # 1.896GHz +# setenv max_freq "1752" # 1.752GHz +# setenv max_freq "1680" # 1.680GHz +# setenv max_freq "1656" # 1.656GHz +setenv max_freq "1536" # 1.536GHz + + + +########################################### + +# Boot Arguments +if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi + +setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${cmode} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff} disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulticam}" + +# Booting + +setenv loadaddr "0x11000000" +setenv dtb_loadaddr "0x1000000" +setenv initrd_loadaddr "0x13000000" + +fatload mmc 0:1 ${loadaddr} Image +fatload mmc 0:1 ${dtb_loadaddr} meson64_odroidc2.dtb +fdt addr ${dtb_loadaddr} + +if test "${mesontimer}" = "0"; then fdt rm /meson_timer; fdt rm /cpus/cpu@0/timer; fdt rm /cpus/cpu@1/timer; fdt rm /cpus/cpu@2/timer; fdt rm /cpus/cpu@3/timer; fi +if test "${mesontimer}" = "1"; then fdt rm /timer; fi + +if test "${nographics}" = "1"; then fdt rm /reserved-memory; fdt rm /aocec; fi +if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm /picdec; fdt rm /ppmgr; fi +if test "${nographics}" = "1"; then fdt rm /meson-vout; fdt rm /mesonstream; fdt rm /meson-fb; fi +if test "${nographics}" = "1"; then fdt rm /deinterlace; fdt rm /codec_mm; fi + +booti ${loadaddr} - ${dtb_loadaddr} diff --git a/features/buildroot/board/hardkernel/odroidc2/genimage.cfg b/features/buildroot/board/hardkernel/odroidc2/genimage.cfg new file mode 100644 index 00000000..15f97d44 --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidc2/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "boot.ini", + "Image", + "meson64_odroidc2.dtb" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition vfat { + partition-type = 0xC + image = "boot.vfat" + offset = 1048576 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/hardkernel/odroidc2/post-image.sh b/features/buildroot/board/hardkernel/odroidc2/post-image.sh new file mode 100755 index 00000000..aaf12c1e --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidc2/post-image.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/ + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +dd if=${BINARIES_DIR}/u-boot.bin of=${BINARIES_DIR}/sdcard.img bs=1 count=442 conv=sync,notrunc +dd if=${BINARIES_DIR}/u-boot.bin of=${BINARIES_DIR}/sdcard.img bs=512 skip=1 seek=1 conv=fsync,notrunc diff --git a/features/buildroot/board/hardkernel/odroidc2/readme.txt b/features/buildroot/board/hardkernel/odroidc2/readme.txt new file mode 100644 index 00000000..b44aa67f --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidc2/readme.txt @@ -0,0 +1,53 @@ +ODROID-C2 + +Intro +===== +To be able to use ODROID-C2 board with the images generated by +Buildroot, you have to prepare the SDCard or eMMC. + +How to build it +=============== + + $ make odroidc2_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- Image + +-- boot.ini [1] + +-- boot.vfat + +-- meson64_odroidc2.dtb + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + `-- u-boot.bin + +[1] This is the ODROID-C2 configuration file used in u-boot. + +How to write the SD card or eMMC +================================ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card or eMMC with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ODROID-C2, and power it up. Your new system +should come up now. diff --git a/features/buildroot/board/hardkernel/odroidxu4/boot.ini b/features/buildroot/board/hardkernel/odroidxu4/boot.ini new file mode 100644 index 00000000..87ac7ac1 --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidxu4/boot.ini @@ -0,0 +1,38 @@ +ODROIDXU-UBOOT-CONFIG + +# U-Boot Parameters +setenv initrd_high "0xffffffff" +setenv fdt_high "0xffffffff" + +setenv macaddr "00:1e:06:61:7a:39" +setenv bootrootfs "console=tty1 root=/dev/mmcblk1p2 rootwait rw fsck.repair=yes net.ifnames=0" +setenv bootcmd "load mmc 0:1 0x40008000 zImage; load mmc 0:1 0x44000000 exynos5422-odroidxu4.dtb; bootz 0x40008000 - 0x44000000" +setenv vout "hdmi" +setenv governor "performance" +setenv HPD "true" + +# TMDS data amplitude control. +setenv hdmi_tx_amp_lvl "31" + +# TMDS data amplitude fine control for each channel. +setenv hdmi_tx_lvl_ch0 "3" +setenv hdmi_tx_lvl_ch1 "3" +setenv hdmi_tx_lvl_ch2 "3" + +# TMDS data pre-emphasis level control. +setenv hdmi_tx_emp_lvl "6" + +# TMDS clock amplitude control. +setenv hdmi_clk_amp_lvl "31" + +# TMDS data source termination resistor control. +setenv hdmi_tx_res "0" + +setenv hdmi_phy_control "hdmi_tx_amp_lvl=${hdmi_tx_amp_lvl} hdmi_tx_lvl_ch0=${hdmi_tx_lvl_ch0} hdmi_tx_lvl_ch1=${hdmi_tx_lvl_ch1} hdmi_tx_lvl_ch2=${hdmi_tx_lvl_ch2} hdmi_tx_emp_lvl=${hdmi_tx_emp_lvl} hdmi_clk_amp_lvl=${hdmi_clk_amp_lvl} hdmi_tx_res=${hdmi_tx_res} HPD=${HPD} vout=${vout}" + +# final boot args +setenv bootargs "${bootrootfs} ${videoconfig} smsc95xx.macaddr=${macaddr} governor=${governor} ${hdmi_phy_control}" + +# Boot the board +boot + diff --git a/features/buildroot/board/hardkernel/odroidxu4/genimage.cfg b/features/buildroot/board/hardkernel/odroidxu4/genimage.cfg new file mode 100644 index 00000000..e6b85cf2 --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidxu4/genimage.cfg @@ -0,0 +1,54 @@ +image boot.vfat { + vfat { + files = { + "boot.ini", + "zImage", + "exynos5422-odroidxu4.dtb" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition bl1 { + in-partition-table = "no" + image = "bl1.bin.hardkernel" + offset = 512 + size = 15360 + } + + partition bl2 { + in-partition-table = "no" + image = "bl2.bin.hardkernel.720k_uboot" + offset = 15872 + size = 16384 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-dtb.bin" + offset = 32256 + size = 720k + } + + partition tzsw { + in-partition-table = "no" + image = "tzsw.bin.hardkernel" + offset = 769536 + size = 256k + } + + partition vfat { + partition-type = 0xC + image = "boot.vfat" + offset = 2097152 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/hardkernel/odroidxu4/post-image.sh b/features/buildroot/board/hardkernel/odroidxu4/post-image.sh new file mode 100755 index 00000000..025906cd --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidxu4/post-image.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/ + +# The bl1.bin.hardkernel file provided by the uboot hardkernel repository is overwritten +# by the bl2.bin.hardkernel in the sd_fusing.sh script because it is too big. +# In order to implement this in genimage, we need to truncate the bl1.bin file +# so that it does not exceed the available place. +# An issue has been filled about this: https://github.com/hardkernel/u-boot/issues/45 +truncate -s 15360 ${BINARIES_DIR}/bl1.bin.hardkernel + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + diff --git a/features/buildroot/board/hardkernel/odroidxu4/readme.txt b/features/buildroot/board/hardkernel/odroidxu4/readme.txt new file mode 100644 index 00000000..e3cba8b0 --- /dev/null +++ b/features/buildroot/board/hardkernel/odroidxu4/readme.txt @@ -0,0 +1,37 @@ +Odroid XU-4 board with Samsung Exynos 5422 SoC + +How to build it +=============== + + $ make odroidxu4_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +Result of the build +------------------- + +After building, you should obtain all output files in output/images/ + + +How to write the SD card or eMMC +================================ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card or eMMC with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ODROID-XU4, and power it up. Your new system +should come up now. + diff --git a/features/buildroot/board/intel/galileo/genimage.cfg b/features/buildroot/board/intel/galileo/genimage.cfg new file mode 100644 index 00000000..31add21e --- /dev/null +++ b/features/buildroot/board/intel/galileo/genimage.cfg @@ -0,0 +1,31 @@ +# Create an image of the efi partition +image efi-part.vfat { + vfat { + file startup.nsh { + image = "efi-part/startup.nsh" + } + file EFI { + image = "efi-part/EFI" + } + } + size=512K +} + +# Create the sdcard image, pulling in +# * the image created by buildroot +# * the efi-partition created above +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + image = "efi-part.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 512M + } +} diff --git a/features/buildroot/board/intel/galileo/grub.cfg b/features/buildroot/board/intel/galileo/grub.cfg new file mode 100644 index 00000000..dde2f762 --- /dev/null +++ b/features/buildroot/board/intel/galileo/grub.cfg @@ -0,0 +1,11 @@ +set default="0" +set timeout="0" + +menuentry "Buildroot" { + # Grub2 supports ext4, load the kernel from the Linux rootfs partition + # Set root tells grub to search the 2nd partition for the bzImage + set root=(hd0,msdos2) + + # Set Linux to boot from the 2nd partition, SD/MMC support is baked into the kernel + linux /boot/bzImage root=/dev/mmcblk0p2 rootwait console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x9000b000,115200n8 reboot=efi,warm apic=debug rw +} diff --git a/features/buildroot/board/intel/galileo/linux-3.14.config b/features/buildroot/board/intel/galileo/linux-3.14.config new file mode 100644 index 00000000..e7aa9cf2 --- /dev/null +++ b/features/buildroot/board/intel/galileo/linux-3.14.config @@ -0,0 +1,308 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_KERNEL_LZMA=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_SCHED=y +CONFIG_NAMESPACES=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_PCSPKR_PLATFORM is not set +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_LBDAF=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_ZONE_DMA is not set +CONFIG_X86_INTEL_QUARK=y +CONFIG_M586TSC=y +CONFIG_X86_GENERIC=y +CONFIG_HPET_TIMER=y +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_X86_UP_IOAPIC=y +# CONFIG_X86_MCE_AMD is not set +# CONFIG_X86_16BIT is not set +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_MICROCODE=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +CONFIG_HIGHMEM64G=y +# CONFIG_COMPACTION is not set +# CONFIG_MTRR is not set +# CONFIG_ARCH_RANDOM is not set +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_CAPSULE=m +CONFIG_HZ_100=y +CONFIG_KEXEC=y +CONFIG_PHYSICAL_START=0x400000 +CONFIG_PHYSICAL_ALIGN=0x1000000 +# CONFIG_COMPAT_VDSO is not set +CONFIG_PM_RUNTIME=y +CONFIG_PM_DEBUG=y +CONFIG_PM_TRACE_RTC=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_EC_DEBUGFS=y +# CONFIG_ACPI_BATTERY is not set +# CONFIG_ACPI_FAN is not set +CONFIG_ACPI_DEBUG=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_PCI_DEBUG=y +CONFIG_PCI_IOAPIC=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_SYN_COOKIES=y +# CONFIG_IPV6_SIT is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_CAN=m +# CONFIG_CAN_GW is not set +CONFIG_CAN_J1939=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_SLCAN=m +# CONFIG_CAN_DEV is not set +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_LEDS=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_DEBUG_DEVRES=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=m +# CONFIG_PNP_DEBUG_MESSAGES is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=2 +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=81920 +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_93CX6=m +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_NETDEVICES=y +CONFIG_TUN=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_I825XX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PLATFORM is not set +CONFIG_STMMAC_PCI=m +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_PHYLIB=y +CONFIG_PPP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_ASYNC=m +# CONFIG_RTL_CARDS is not set +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_LEGACY_PTY_COUNT=32 +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_PNP is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_SPI=m +# CONFIG_HW_RANDOM is not set +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +CONFIG_I2C=y +CONFIG_SPI_DEBUG=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_PXA2XX=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_GPIO_SCH=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCF857X=y +CONFIG_HWMON=m +CONFIG_SENSORS_LM75=m +# CONFIG_X86_PKG_TEMP_THERMAL is not set +CONFIG_MFD_INTEL_QUARK_HSUART_DMA=y +CONFIG_CY8C9540A=m +CONFIG_MFD_PCA9685=m +CONFIG_INTEL_QRK_GIP=m +CONFIG_INTEL_QRK_GIP_TEST=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +# CONFIG_USB_GSPCA is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +# CONFIG_VGA_ARB is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_USB_AUDIO=m +CONFIG_USB=m +# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_ACM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_GADGET=m +CONFIG_USB_EG20T=m +CONFIG_USB_ZERO=m +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=y +CONFIG_USB_G_ACM_MS=m +CONFIG_MMC=y +CONFIG_MMC_UNSAFE_RESUME=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_RTC_CLASS=y +# CONFIG_RTC_SYSTOHC is not set +CONFIG_DMADEVICES=y +CONFIG_DW_DMAC=y +CONFIG_UIO=y +CONFIG_STAGING=y +CONFIG_INTEL_QRK_THERMAL=y +CONFIG_INTEL_QRK_AUDIO_CTRL=m +CONFIG_INTEL_QRK_J1708=m +CONFIG_INTEL_QRK_ESRAM=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_LIS331DLH_INTEL_QRK=y +CONFIG_IIO_ST_ACCEL_3AXIS=y +CONFIG_AD7298=m +CONFIG_ADC1x8S102=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_PWM=y +CONFIG_DMI_SYSFS=y +CONFIG_EFI_VARS=m +# CONFIG_EFI_RUNTIME_MAP is not set +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=y +CONFIG_PROC_KCORE=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_HEADERS_CHECK=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_TIMER_STATS=y +CONFIG_LATENCYTOP=y +# CONFIG_FTRACE is not set +CONFIG_X86_PTDUMP=y +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_DOUBLEFAULT is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KEYS=y +CONFIG_KEYS_DEBUG_PROC_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_CRC_T10DIF=y diff --git a/features/buildroot/board/intel/galileo/post-build.sh b/features/buildroot/board/intel/galileo/post-build.sh new file mode 100755 index 00000000..2b34cb43 --- /dev/null +++ b/features/buildroot/board/intel/galileo/post-build.sh @@ -0,0 +1,2 @@ +#!/bin/sh -e +cp board/intel/galileo/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg diff --git a/features/buildroot/board/intel/galileo/post-image.sh b/features/buildroot/board/intel/galileo/post-image.sh new file mode 100755 index 00000000..f9aef0b1 --- /dev/null +++ b/features/buildroot/board/intel/galileo/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +GENIMAGE_CFG="board/intel/galileo/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/intel/galileo/readme.txt b/features/buildroot/board/intel/galileo/readme.txt new file mode 100644 index 00000000..7a3abd4f --- /dev/null +++ b/features/buildroot/board/intel/galileo/readme.txt @@ -0,0 +1,52 @@ + +Intel Galileo Gen 1/2 + +Intro +============ + +These instructions apply to both the Intel Galileo Gen 1/2 development boards +based on the Intel Quark X1000. + +How to build +============ + +Apply the defconfig for the Intel Galileo Gen 1/2 + + $ make galileo_defconfig + +Add any additional packages required and build. + + $ make + +The build process will create a SD card image and place it in output/images. + + $ ls -lh output/images/sdcard.img + -rw-r--r--. 1 foo foo 11M Nov 17 16:19 output/images/sdcard.img + +Write the image to an mSD card, insert into the Galileo and power on. + + $ dd if=output/images/sdcard.img of=/dev/mmcblk0; sync + +Accessing the console +===================== + +During power-on the console will become available on the Galileo's ttyS1. This +may be accessed as follows. + + * Galileo Gen 1 + + http://clayskits.com/products/galileo-gen-1-serial-cable + + A USB to RS-232 to 3.5mm Jack cable is required. Connect to the 3.5mm + Jack next to the Ethernet Header. + + * Galileo Gen 2 + + http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm + + A FTDI TTL-232R-3V3 cable may be used to connect to the FTDI header + next to the Ethernet connector on the Galileo Gen 2. + +The console should now be visible at 115200 baud. + + $ picocom -b 115200 /dev/ttyUSB0 diff --git a/features/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload b/features/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 00000000..359d607c --- /dev/null +++ b/features/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,33 @@ +#!/bin/sh +# + +load_drivers() +{ + while IFS= read -r line; do + modprobe $line + done < "/etc/modules-load.galileo/$1.conf" +} + +do_board() +{ + board=$(cat /sys/devices/virtual/dmi/id/board_name) + case "$board" in + *"GalileoGen2" ) + load_drivers "galileo_gen2" ;; + *"Galileo" ) + load_drivers "galileo" ;; + esac +} + +case "$1" in + start) + do_board + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf b/features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf new file mode 100644 index 00000000..b6582619 --- /dev/null +++ b/features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf @@ -0,0 +1,3 @@ +intel_qrk_gip +cy8c9540a +ad7298 diff --git a/features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf b/features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf new file mode 100644 index 00000000..4f80a330 --- /dev/null +++ b/features/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf @@ -0,0 +1,4 @@ +intel_qrk_gip +gpio-pca953x +pca9685 +adc1x8s102 diff --git a/features/buildroot/board/lego/ev3/busybox.fragment b/features/buildroot/board/lego/ev3/busybox.fragment new file mode 100644 index 00000000..901274d3 --- /dev/null +++ b/features/buildroot/board/lego/ev3/busybox.fragment @@ -0,0 +1,3 @@ +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=440 +CONFIG_FEATURE_BEEP_LENGTH_MS=250 diff --git a/features/buildroot/board/lego/ev3/genimage.cfg b/features/buildroot/board/lego/ev3/genimage.cfg new file mode 100644 index 00000000..14880e8f --- /dev/null +++ b/features/buildroot/board/lego/ev3/genimage.cfg @@ -0,0 +1,65 @@ +# LEGO MINDSTORMS EV3 can boot from a 16MB flash or from a microSD card. +# The U-Boot bootloader from the flash is always used, even when booting +# from a microSD card. + +# The Flash image + +flash nor-16M-256 { + pebsize = 4096 + numpebs = 4096 + minimum-io-unit-size = 256 +} + +image flash.bin { + flash { + } + flashtype = "nor-16M-256" + partition uboot { + image = "u-boot.bin" + size = 256K + } + partition dtb { + image = "da850-lego-ev3.dtb" + size = 64K + offset = 0x40000 + } + partition uimage { + image = "uImage" + size = 4M + offset = 0x50000 + } + partition rootfs { + image = "rootfs.squashfs" + size = 10M + offset = 0x450000 + } +} + +# The SD card image + +image boot.vfat { + vfat { + file uImage { + image = "uImage" + } + file da850-lego-ev3.dtb { + image = "da850-lego-ev3.dtb" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 4M + } + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/features/buildroot/board/lego/ev3/linux.fragment b/features/buildroot/board/lego/ev3/linux.fragment new file mode 100644 index 00000000..79efd27d --- /dev/null +++ b/features/buildroot/board/lego/ev3/linux.fragment @@ -0,0 +1,68 @@ +CONFIG_ARM_APPENDED_DTB=n +CONFIG_ARCH_DAVINCI_DM644x=n +CONFIG_ARCH_DAVINCI_DM355=n +CONFIG_ARCH_DAVINCI_DM646x=n +CONFIG_ARCH_DAVINCI_DA830=n +CONFIG_ARCH_DAVINCI_DM365=n +CONFIG_MACH_SFFSDR=n +CONFIG_MACH_NEUROS_OSD2=n +CONFIG_MACH_DM355_LEOPARD=n +CONFIG_MACH_MITYOMAPL138=n +CONFIG_MACH_OMAPL138_HAWKBOARD=n +CONFIG_MACH_DAVINCI_DA850_EVM=n +CONFIG_ATA=n +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=32768 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_PWM_BEEPER=y +CONFIG_SPI_DAVINCI=y +CONFIG_PINCTRL_DA850_PUPD=y +CONFIG_V4L_PLATFORM_DRIVERS=n +CONFIG_SOUND=n +CONFIG_SND=n +CONFIG_SND_SOC=n +CONFIG_SND_EDMA_SOC=n +CONFIG_SND_DAVINCI_SOC_MCASP=n +CONFIG_SND_SOC_TLV320AIC3X=n +CONFIG_SND_SIMPLE_CARD=n +CONFIG_DAVINCI_WATCHDOG=y +CONFIG_USB=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_DAVINCI=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_GADGET=y +CONFIG_USB_MUSB_DA8XX=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GADGET=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_DRV_OMAP=y +CONFIG_IIO=y +CONFIG_TI_ADS7950=y +CONFIG_PWM_TIECAP=y +CONFIG_PWM_TIEHRPWM=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_DRM=y +CONFIG_DRM_TILCDC=n +CONFIG_DRM_DUMB_VGA_DAC=n +CONFIG_DRM_TINYDRM=y +CONFIG_TINYDRM_ST7586=y +CONFIG_FB_DA8XX=n +CONFIG_COMMON_CLK_PWM=y +CONFIG_BT=y +CONFIG_BT_HS=n +CONFIG_BT_LE=n +CONFIG_RFKILL=y diff --git a/features/buildroot/board/lego/ev3/post-image.sh b/features/buildroot/board/lego/ev3/post-image.sh new file mode 100755 index 00000000..81626dc3 --- /dev/null +++ b/features/buildroot/board/lego/ev3/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/lego/ev3/readme.txt b/features/buildroot/board/lego/ev3/readme.txt new file mode 100644 index 00000000..648bca1e --- /dev/null +++ b/features/buildroot/board/lego/ev3/readme.txt @@ -0,0 +1,99 @@ +Lego Mindstorms EV3 + +Intro +===== + +This is the buildroot basic board support for the Lego Mindstorms EV3 +programmable brick. + +The Lego Mindstorms EV3 brick comprises a Texas Instruments AM1808 SoC, with +an ARM 926EJ-S main processor running at 300 MHz. +See: +- https://en.wikipedia.org/wiki/Lego_Mindstorms_EV3 +- http://www.lego.com/en-us/mindstorms/products/ev3/31313-mindstorms-ev3/ +- http://www.ti.com/product/am1808 + +How it works +============ + +Boot process : +-------------- + +The EV3 boots from an EEPROM. This loads whatever is on the built-in 16MB flash +(usually U-Boot) and runs it. The U-Boot from the official LEGO firmware and +mainline U-Boot will attempt to boot a Linux kernel from the external µSD card. +It will try to load a uImage (and optional boot.scr) from the first µSD card +partition, which must be formatted with a FAT filesystem. If no µSD is found or +it does not contain a uImage file, then the EV3 will boot the uImage from the +built-in 16MB flash. + +How to build it +=============== + +Configure Buildroot +------------------- + +The lego_ev3_defconfig configuration provides basic support to boot on the Lego +Mindstorms EV3 programmable brick: + + $ make lego_ev3_defconfig + +Build everything +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + ├── boot.vfat + ├── flash.bin + ├── rootfs.ext2 + ├── rootfs.ext3 -> rootfs.ext2 + ├── rootfs.squashfs + ├── sdcard.img + ├── u-boot.bin + ├── uImage -> uImage.da850-lego-ev3 + └── uImage.da850-lego-ev3 + +Installation +============ + +You can use either flash.bin or the sdcard.img. To load flash.bin, use the +official Lego Mindstorms EV3 programming software firmware update tool to load +the image. To use sdcard.img, use a disk writing tool such as Etcher or dd to +write the image to the µSD card. + +NOTE: The sdcard.img created by lego_ev3_defconfig won't boot if the official +LEGO firmware is installed on the EV3 (it has an old version of U-Boot that +doesn't know about device tree). You must either set the kernel configuration +option to append the device tree to the kernel or you can create a boot.scr +that chainloads a newer U-Boot or you can install a newer U-Boot in the flash +memory (just flashing u-boot.bin is enough). + +Finish +====== + +To have a serial console, you will need a proper USB to Lego serial port +adapter plugged into the EV3 sensors port 1. +See: +- http://botbench.com/blog/2013/08/15/ev3-creating-console-cable/ +- http://botbench.com/blog/2013/08/05/mindsensors-ev3-usb-console-adapter/ + +The serial port config to use is 115200/8-N-1. + +Bluetooth +========= + +To enable Bluetooth: + + # modprobe hci_uart + # /usr/libexec/bluetooth/bluetoothd & + # bluetoothctl + [bluetooth]# power on diff --git a/features/buildroot/board/lemaker/bananapro/boot.cmd b/features/buildroot/board/lemaker/bananapro/boot.cmd new file mode 100644 index 00000000..439f5b12 --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-bananapro.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/lemaker/bananapro/genimage.cfg b/features/buildroot/board/lemaker/bananapro/genimage.cfg new file mode 100644 index 00000000..190a4b1f --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/genimage.cfg @@ -0,0 +1,37 @@ +# Minimal SD card image for the Banana Pro +# Based in the Orange Pi genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-bananapro.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/lemaker/bananapro/linux-wifi.fragment b/features/buildroot/board/lemaker/bananapro/linux-wifi.fragment new file mode 100644 index 00000000..f4ede39f --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/linux-wifi.fragment @@ -0,0 +1,24 @@ +# Networking support +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_RFKILL=y + +# Network device support +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMFMAC=m +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set diff --git a/features/buildroot/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch b/features/buildroot/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch new file mode 100644 index 00000000..c8e8c037 --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/patches/linux/0001-arch-arm-boot-dts-sun7i-a20-bananapro.dts-disable-00.patch @@ -0,0 +1,44 @@ +From 896e82ab14e7e4e361ffa7c81def787907c1bf4c Mon Sep 17 00:00:00 2001 +From: Bartosz Bilas +Date: Sun, 19 May 2019 21:04:35 +0200 +Subject: [PATCH] arch/arm/boot/dts/sun7i-a20-bananapro.dts: disable 00B + IRQ for brcm wifi module + + BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438 + +Signed-off-by: Hans de Goede +Signed-off-by: Bartosz Bilas +--- + arch/arm/boot/dts/sun7i-a20-bananapro.dts | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/sun7i-a20-bananapro.dts b/arch/arm/boot/dts/sun7i-a20-bananapro.dts +index 0176e9de0..93b3340f5 100644 +--- a/arch/arm/boot/dts/sun7i-a20-bananapro.dts ++++ b/arch/arm/boot/dts/sun7i-a20-bananapro.dts +@@ -160,9 +160,19 @@ + brcmf: wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; +- interrupt-parent = <&pio>; +- interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; +- interrupt-names = "host-wake"; ++ /* ++ * OOB interrupt support is broken ATM, often the first irq ++ * does not get seen resulting in the drv probe failing with: ++ * ++ * brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout ++ * brcmfmac: brcmf_bus_started: failed: -110 ++ * brcmfmac: brcmf_attach: dongle is not responding: err=-110 ++ * brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed ++ * ++ * interrupt-parent = <&pio>; ++ * interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; ++ * interrupt-names = "host-wake"; ++ */ + }; + }; + +-- +2.21.0 + diff --git a/features/buildroot/board/lemaker/bananapro/post-build.sh b/features/buildroot/board/lemaker/bananapro/post-build.sh new file mode 100755 index 00000000..a335310d --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Remove all but the brcmfmac43362 firmware files +find $TARGET_DIR/lib/firmware/brcm -type f -not -name "brcmfmac43362*" -delete + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage +BOOT_CMD=$BOARD_DIR/boot.cmd +BOOT_CMD_H=$BINARIES_DIR/boot.scr + +# U-Boot script +$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H diff --git a/features/buildroot/board/lemaker/bananapro/post-image.sh b/features/buildroot/board/lemaker/bananapro/post-image.sh new file mode 100755 index 00000000..9cca1b17 --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/lemaker/bananapro/readme.txt b/features/buildroot/board/lemaker/bananapro/readme.txt new file mode 100644 index 00000000..27b922e2 --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/readme.txt @@ -0,0 +1,62 @@ +Banana Pro + +Intro +===== + +This default configuration will allow you to start experimenting with the +Buildroot environment for the Banana Pro. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make bananapro_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ dd if=output/images/sdcard.img of=/dev/sdX + +Notes: + - replace 'sdX' with the actual device with your micro SD card + - you may need to be root to do that (use 'sudo') + +Insert the micro SD card in your Banana Pro and power it up. The console +is on the debug TTL UART, 115200 8N1. + +Ethernet +========== + + # udhcpc -i eth0 + +Wifi +========== + + # wpa_passphrase YOUR_SSID >> /etc/wpa_supplicant.conf + (enter the wifi password and press enter) + # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B + # udhcpc -i wlan0 + +Note: + - replace 'YOUR_SSID' with the actual SSID from your access point + +Audio +========== + +Connect a headphone to the 3.5mm jack (TRRS). Note, that the Banana Pro +has an on-board microphone, too. + + # amixer cset name='Power Amplifier DAC Playback Switch' on + # amixer cset name='Power Amplifier Mute Switch' on + # amixer cset name='Power Amplifier Volume' 42 diff --git a/features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt b/features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt new file mode 120000 index 00000000..93947975 --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt @@ -0,0 +1 @@ +brcmfmac43362-sdio.txt \ No newline at end of file diff --git a/features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt b/features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt new file mode 100644 index 00000000..14a554fd --- /dev/null +++ b/features/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt @@ -0,0 +1,56 @@ +#AP6210_NVRAM_V1.2_03192013 +manfid=0x2d0 +prodid=0x492 +vendid=0x14e4 +devid=0x4343 +boardtype=0x0598 + +# Board Revision is P307, same nvram file can be used for P304, P305, P306 and P307 as the tssi pa params used are same +#Please force the automatic RX PER data to the respective board directory if not using P307 board, for e.g. for P305 boards force the data into the following directory /projects/BCM43362/a1_labdata/boardtests/results/sdg_rev0305 +boardrev=0x1307 +boardnum=777 +xtalfreq=26000 +boardflags=0x80201 +boardflags2=0x80 +sromrev=3 +wl0id=0x431b +macaddr=00:90:4c:07:71:12 +aa2g=1 +ag0=2 +maxp2ga0=74 +cck2gpo=0x2222 +ofdm2gpo=0x44444444 +mcs2gpo0=0x6666 +mcs2gpo1=0x6666 +pa0maxpwr=56 + +#P207 PA params +#pa0b0=5447 +#pa0b1=-658 +#pa0b2=-175 + +#Same PA params for P304,P305, P306, P307 + +pa0b0=5447 +pa0b1=-607 +pa0b2=-160 +pa0itssit=62 +pa1itssit=62 + + +cckPwrOffset=5 +ccode=0 +rssismf2g=0xa +rssismc2g=0x3 +rssisav2g=0x7 +triso2g=0 +noise_cal_enable_2g=0 +noise_cal_po_2g=0 +swctrlmap_2g=0x04040404,0x02020202,0x02020202,0x010101,0x1ff +temp_add=29767 +temp_mult=425 + +btc_flags=0x6 +btc_params0=5000 +btc_params1=1000 +btc_params6=63 diff --git a/features/buildroot/board/licheepi/boot.cmd b/features/buildroot/board/licheepi/boot.cmd new file mode 100644 index 00000000..383b3473 --- /dev/null +++ b/features/buildroot/board/licheepi/boot.cmd @@ -0,0 +1,4 @@ +setenv bootargs console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw +load mmc 0:1 0x41000000 zImage +load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb +bootz 0x41000000 - 0x41800000 diff --git a/features/buildroot/board/licheepi/genimage.cfg b/features/buildroot/board/licheepi/genimage.cfg new file mode 100644 index 00000000..0d8540f2 --- /dev/null +++ b/features/buildroot/board/licheepi/genimage.cfg @@ -0,0 +1,35 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-v3s-licheepi-zero-dock.dtb", + "sun8i-v3s-licheepi-zero.dtb", + "boot.scr" + } + } + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 516096 # 512KB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 0 + } +} diff --git a/features/buildroot/board/licheepi/readme.txt b/features/buildroot/board/licheepi/readme.txt new file mode 100644 index 00000000..6b8bf94b --- /dev/null +++ b/features/buildroot/board/licheepi/readme.txt @@ -0,0 +1,62 @@ +Intro +===== + +This directory contains a buildroot configuration for building a +LicheePi Zero. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make licheepi_zero_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot +will download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- boot.scr + +-- boot.vfat + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- rootfs.tar + +-- sdcard.img + +-- sun8i-v3s-licheepi-zero-dock.dtb + +-- sun8i-v3s-licheepi-zero.dtb + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + +How to write the SD card +======================== + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Alternatively, you can use the Etcher graphical tool to burn the image +to the SD card safely and on any platform: + +https://etcher.io/ + +Once the SD card is burned, insert it into your LicheePi Zero board, +and power it up. Your new system should come up now and start a +console on the UART0 serial port. diff --git a/features/buildroot/board/linksprite/pcduino/boot.cmd b/features/buildroot/board/linksprite/pcduino/boot.cmd new file mode 100644 index 00000000..0db83635 --- /dev/null +++ b/features/buildroot/board/linksprite/pcduino/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 console=tty1 earlyprintk root=/dev/mmcblk0p2 rootwait panic=10 ${extra} + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun4i-a10-pcduino.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/linksprite/pcduino/genimage.cfg b/features/buildroot/board/linksprite/pcduino/genimage.cfg new file mode 100644 index 00000000..9cbc383d --- /dev/null +++ b/features/buildroot/board/linksprite/pcduino/genimage.cfg @@ -0,0 +1,42 @@ +# +# Minimal SD card image for the pcDuino +# + +image boot.vfat { + vfat { + files = { + "zImage", + "sun4i-a10-pcduino.dtb", + "boot.scr" + } + } + size = 16M +} + +# +# Note: u-boot environment is stored between u-boot and boot partitions +# + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/linksprite/pcduino/linux-extras.config b/features/buildroot/board/linksprite/pcduino/linux-extras.config new file mode 100644 index 00000000..670f83fa --- /dev/null +++ b/features/buildroot/board/linksprite/pcduino/linux-extras.config @@ -0,0 +1,16 @@ +# spidev +CONFIG_SPI_SPIDEV=y + +# wireless core +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m + +# wireless drivers +CONFIG_WLAN=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m diff --git a/features/buildroot/board/linksprite/pcduino/post-build.sh b/features/buildroot/board/linksprite/pcduino/post-build.sh new file mode 100755 index 00000000..e1e18776 --- /dev/null +++ b/features/buildroot/board/linksprite/pcduino/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# post-build.sh for pcDuino taken from OrangePi post-build.sh +# 2013, Carlo Caione + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage +BOOT_CMD=$BOARD_DIR/boot.cmd +BOOT_CMD_H=$BINARIES_DIR/boot.scr + +# U-Boot script +$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H diff --git a/features/buildroot/board/linksprite/pcduino/post-image.sh b/features/buildroot/board/linksprite/pcduino/post-image.sh new file mode 100755 index 00000000..c82b189f --- /dev/null +++ b/features/buildroot/board/linksprite/pcduino/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/linksprite/pcduino/readme.txt b/features/buildroot/board/linksprite/pcduino/readme.txt new file mode 100644 index 00000000..08f380fb --- /dev/null +++ b/features/buildroot/board/linksprite/pcduino/readme.txt @@ -0,0 +1,42 @@ +pcDuino v1 boards (http://www.linksprite.com/linksprite-pcduino) + +Intro +===== + +This default configuration will allow you to start experimenting +with the buildroot environment for the LinkSprite pcDuino v1 board +including its flavors pcDuino-Lite and pcDuino-Lite-WiFi. With the +current configuration it will bring-up the board and allow access +through the serial console as well as ethernet and wireless +network interfaces. + +How to build it +=============== + +Configure Buildroot: + + $ make linksprite_pcduino_defconfig + +Modify configuration if needed, e.g. add more packages to target: + + $ make menuconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image +called "sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +How to boot new image +===================== + +Insert SD card and reset the board. By default pcDuino board +boots from SD card. diff --git a/features/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession b/features/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession new file mode 100755 index 00000000..d8862f17 --- /dev/null +++ b/features/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession @@ -0,0 +1,7 @@ +# Start a terminal on the top left corner +xterm -geom 80x30+0+0 & + +# OpenGL demo +glmark2 & + +exec /usr/bin/openbox-session diff --git a/features/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf b/features/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf new file mode 100644 index 00000000..b75b2383 --- /dev/null +++ b/features/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf @@ -0,0 +1,4 @@ +# Customize ALSA: +# the HDMI PCM is at card=0, device=3 (i.e. hw:0,3) +defaults.pcm.card 0 +defaults.pcm.device 3 diff --git a/features/buildroot/board/minnowboard/genimage.cfg b/features/buildroot/board/minnowboard/genimage.cfg new file mode 100644 index 00000000..6cf78743 --- /dev/null +++ b/features/buildroot/board/minnowboard/genimage.cfg @@ -0,0 +1,34 @@ +# Create an image of the efi partition +image efi-part.vfat { + vfat { + file startup.nsh { + image = "efi-part/startup.nsh" + } + file EFI { + image = "efi-part/EFI" + } + file bzImage { + image = "bzImage" + } + } + size=10M +} + +# Create the sdcard image, pulling in +# * the image created by buildroot +# * the efi-partition created above +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xEF + image = "efi-part.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/minnowboard/grub.cfg b/features/buildroot/board/minnowboard/grub.cfg new file mode 100644 index 00000000..3d6feb70 --- /dev/null +++ b/features/buildroot/board/minnowboard/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /bzImage root=/dev/mmcblk2p2 rootwait console=tty0 console=ttyS0,115200 +} diff --git a/features/buildroot/board/minnowboard/linux.config b/features/buildroot/board/minnowboard/linux.config new file mode 100644 index 00000000..27077dbc --- /dev/null +++ b/features/buildroot/board/minnowboard/linux.config @@ -0,0 +1,60 @@ +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_MATOM=y +CONFIG_EFI=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_INTEL_IDLE=y +CONFIG_IA32_EMULATION=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_R8169=y +CONFIG_IGB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y +CONFIG_I2C_I801=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_PCI=y +CONFIG_SPI=y +CONFIG_SPI_DESIGNWARE=y +CONFIG_SPI_PXA2XX=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_AGP=y +CONFIG_DRM=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_I915=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_DRIVERS is not set +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_CODEC_HDMI=y +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_MMC_SDHCI_ACPI=y +CONFIG_PWM=y +CONFIG_EXT4_FS=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/features/buildroot/board/minnowboard/post-build.sh b/features/buildroot/board/minnowboard/post-build.sh new file mode 100755 index 00000000..24b8c053 --- /dev/null +++ b/features/buildroot/board/minnowboard/post-build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cp -v board/minnowboard/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg + +# Add a console on tty1 +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 +fi diff --git a/features/buildroot/board/minnowboard/post-image.sh b/features/buildroot/board/minnowboard/post-image.sh new file mode 100755 index 00000000..428baa5e --- /dev/null +++ b/features/buildroot/board/minnowboard/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +GENIMAGE_CFG="board/minnowboard/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/minnowboard/readme.txt b/features/buildroot/board/minnowboard/readme.txt new file mode 100644 index 00000000..fdbb81e3 --- /dev/null +++ b/features/buildroot/board/minnowboard/readme.txt @@ -0,0 +1,28 @@ +How to get started with the MinnowBoard MAX +=========================================== + +1. Build + + Apply the defconfig: + + $ make minnowboard_max_defconfig + + Add any additional packages required and build: + + $ make + +2. Write the SD card + + The build process will create a SD card image in output/images. + Write the image to an mSD card, insert into the MinnowBoard MAX + and power the board on. + + $ dd if=output/images/sdcard.img of=/dev/mmcblk0; sync + + The system starts two consoles: one on the serial port + and one on HDMI. + +3. Enjoy + +Additional information about this board can be found at +http://www.minnowboard.org/. diff --git a/features/buildroot/board/nexbox/a95x/boot.txt b/features/buildroot/board/nexbox/a95x/boot.txt new file mode 100644 index 00000000..f388ba81 --- /dev/null +++ b/features/buildroot/board/nexbox/a95x/boot.txt @@ -0,0 +1,11 @@ +setenv bootargs console=ttyAML0,115200 earlyprintk root=/dev/mmcblk1p2 rootwait + +fatload mmc 0:1 0x01080000 uImage + +if itest.s "${aml_dt}" == "gxl_p212_2g"; then + fatload mmc 0:1 $dtb_mem_addr meson-gxl-s905x-nexbox-a95x.dtb +else + fatload mmc 0:1 $dtb_mem_addr meson-gxbb-nexbox-a95x.dtb +fi + +bootm 0x1080000 - $dtb_mem_addr diff --git a/features/buildroot/board/nexbox/a95x/genimage.cfg b/features/buildroot/board/nexbox/a95x/genimage.cfg new file mode 100644 index 00000000..74e2d3a6 --- /dev/null +++ b/features/buildroot/board/nexbox/a95x/genimage.cfg @@ -0,0 +1,28 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "meson-gxbb-nexbox-a95x.dtb", + "meson-gxl-s905x-nexbox-a95x.dtb", + "boot.scr" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/nexbox/a95x/post-build.sh b/features/buildroot/board/nexbox/a95x/post-build.sh new file mode 100755 index 00000000..f8706f2d --- /dev/null +++ b/features/buildroot/board/nexbox/a95x/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage + +$MKIMAGE -C none -A arm64 -T script -d $BOARD_DIR/boot.txt $BINARIES_DIR/boot.scr + +# vendor u-boot uses uImage +if [ -e $BINARIES_DIR/Image ]; then + $MKIMAGE -A arm64 -O linux -T kernel -C none -a 0x1080000 -e 0x1080000 \ + -n linux -d $BINARIES_DIR/Image $BINARIES_DIR/uImage +fi diff --git a/features/buildroot/board/nexbox/a95x/post-image.sh b/features/buildroot/board/nexbox/a95x/post-image.sh new file mode 100755 index 00000000..359b4c9e --- /dev/null +++ b/features/buildroot/board/nexbox/a95x/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/nexbox/a95x/readme.txt b/features/buildroot/board/nexbox/a95x/readme.txt new file mode 100644 index 00000000..e08b4e4e --- /dev/null +++ b/features/buildroot/board/nexbox/a95x/readme.txt @@ -0,0 +1,48 @@ +Nexbox A95X + +Intro +===== + +Nexbox A95X is a low cost Android STB based around an Amlogic s905(x) SoC +(quad A53), 8/16GB eMMC and 1/2GB RAM. To use this defconfig, wires to the +internal UART solder pads must be added. See the linux-meson page for +details: + +http://linux-meson.com/doku.php?id=nexbox_a95x_s905 + +Both the s905 (gxbb) and s905x (gxl) variant is supported. + +This default configuration will allow you to start experimenting with the +buildroot environment for the A95X. With the current configuration it will +bring-up the board from microSD, and allow access through the serial +console. + +How to build it +=============== + +Configure Buildroot: + + $ make nexbox_a95x_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto a microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +How to boot +=========== + +Insert microSD card and connect serial cable. Power board and stop +U-Boot by pressing any key. Boot the system by typing: + +fatload mmc 0:1 0x1070000 boot.scr +autoscr 0x1070000 diff --git a/features/buildroot/board/olimex/a10_olinuxino/boot.cmd b/features/buildroot/board/olimex/a10_olinuxino/boot.cmd new file mode 120000 index 00000000..612c7455 --- /dev/null +++ b/features/buildroot/board/olimex/a10_olinuxino/boot.cmd @@ -0,0 +1 @@ +../a20_olinuxino/boot.cmd \ No newline at end of file diff --git a/features/buildroot/board/olimex/a10_olinuxino/genimage.cfg b/features/buildroot/board/olimex/a10_olinuxino/genimage.cfg new file mode 120000 index 00000000..c21932fe --- /dev/null +++ b/features/buildroot/board/olimex/a10_olinuxino/genimage.cfg @@ -0,0 +1 @@ +../a20_olinuxino/genimage.cfg \ No newline at end of file diff --git a/features/buildroot/board/olimex/a10_olinuxino/post-build.sh b/features/buildroot/board/olimex/a10_olinuxino/post-build.sh new file mode 120000 index 00000000..b3468960 --- /dev/null +++ b/features/buildroot/board/olimex/a10_olinuxino/post-build.sh @@ -0,0 +1 @@ +../a20_olinuxino/post-build.sh \ No newline at end of file diff --git a/features/buildroot/board/olimex/a10_olinuxino/readme.txt b/features/buildroot/board/olimex/a10_olinuxino/readme.txt new file mode 100644 index 00000000..ba4bf691 --- /dev/null +++ b/features/buildroot/board/olimex/a10_olinuxino/readme.txt @@ -0,0 +1,57 @@ +A10-OLinuXino-LIME + +Intro +===== + +These are open hardware boards, all based on the Allwinner A10 SoC. + +for more details about the boards see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/A10/A10-OLinuXino-LIME/ + +The following defconfigs are available: + - olimex_a10_olinuxino_lime_defconfig + for the A10-OLinuXino-LIME board using mainline kernel + +(see http://linux-sunxi.org/Linux_Kernel for more details) + +How to build it +=============== + +Configure Buildroot: + + $ make _defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- boot.scr + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- sun4i-a10-olinuxino-lime.dtb (lime, mainline) + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the A10-OLinuXino board, and power it up. + diff --git a/features/buildroot/board/olimex/a13_olinuxino/boot.cmd b/features/buildroot/board/olimex/a13_olinuxino/boot.cmd new file mode 100644 index 00000000..4dd1c7b7 --- /dev/null +++ b/features/buildroot/board/olimex/a13_olinuxino/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun5i-a13-olinuxino.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/olimex/a13_olinuxino/genimage.cfg b/features/buildroot/board/olimex/a13_olinuxino/genimage.cfg new file mode 100644 index 00000000..6f6b0b0b --- /dev/null +++ b/features/buildroot/board/olimex/a13_olinuxino/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun5i-a13-olinuxino.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/olimex/a13_olinuxino/post-build.sh b/features/buildroot/board/olimex/a13_olinuxino/post-build.sh new file mode 100755 index 00000000..aa2a76bd --- /dev/null +++ b/features/buildroot/board/olimex/a13_olinuxino/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage + +$MKIMAGE -A arm -O linux -T script -C none \ + -d board/olimex/a13_olinuxino/boot.cmd \ + ${BINARIES_DIR}/boot.scr diff --git a/features/buildroot/board/olimex/a13_olinuxino/readme.txt b/features/buildroot/board/olimex/a13_olinuxino/readme.txt new file mode 100644 index 00000000..b64e339f --- /dev/null +++ b/features/buildroot/board/olimex/a13_olinuxino/readme.txt @@ -0,0 +1,43 @@ +A13-OLinuXino + +Intro +===== + +This default configuration will allow you to start experimenting with +the buildroot environment for the A13-OLinuXino. With the current +configuration it will bring-up the board, and allow access through the +serial console. + +For more details about the A13-OLinuXino: + +https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/open-source-hardware + +How to build it +=============== + +Configure Buildroot: + + $ make olimex_a13_olinuxino_defconfig + +Compile everything and build the rootfs image: + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a micro SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Notes: + - replace 'sdX' with the actual device with your micro SDcard, + - you may need to be root to do that (use 'sudo'). + +Eject the SD card, insert it in the A13-OLinuXino board, and power it +up. diff --git a/features/buildroot/board/olimex/a20_olinuxino/boot.cmd b/features/buildroot/board/olimex/a20_olinuxino/boot.cmd new file mode 100644 index 00000000..44d9239a --- /dev/null +++ b/features/buildroot/board/olimex/a20_olinuxino/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10 ${extra} +ext4load mmc 0 0x49000000 /boot/${fdtfile} +ext4load mmc 0 0x46000000 /boot/zImage +env set fdt_high ffffffff +bootz 0x46000000 - 0x49000000 diff --git a/features/buildroot/board/olimex/a20_olinuxino/genimage.cfg b/features/buildroot/board/olimex/a20_olinuxino/genimage.cfg new file mode 100644 index 00000000..fc2f7f8d --- /dev/null +++ b/features/buildroot/board/olimex/a20_olinuxino/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/olimex/a20_olinuxino/post-build.sh b/features/buildroot/board/olimex/a20_olinuxino/post-build.sh new file mode 100755 index 00000000..d3f612f8 --- /dev/null +++ b/features/buildroot/board/olimex/a20_olinuxino/post-build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/features/buildroot/board/olimex/a20_olinuxino/readme.txt b/features/buildroot/board/olimex/a20_olinuxino/readme.txt new file mode 100644 index 00000000..504483b5 --- /dev/null +++ b/features/buildroot/board/olimex/a20_olinuxino/readme.txt @@ -0,0 +1,69 @@ +A20-OLinuXino-LIME and A20-OLinuXino-MICRO + +Intro +===== + +These are open hardware boards, all based on the Allwinner A20 SoC. + +for more details about the boards see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-MICRO/ + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/ + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME2/ + +The following defconfigs are available: + - olimex_a20_olinuxino_micro_defconfig + for the A20-OLinuXino-MICRO board using mainline kernel + - olimex_a20_olinuxino_lime_defconfig + for the A20-OLinuXino-LIME board using mainline kernel + - olimex_a20_olinuxino_lime2_defconfig + for the A20-OLinuXino-LIME2 board using mainline kernel + +The Mainline Kernel is already a much better choice for a headless server. +And also the mainline kernel works fine even for a basic Linux desktop +system running on top of a simple framebuffer, which may be good enough for +the users who do not need fancy 3D graphics or video playback acceleration. + +(see http://linux-sunxi.org/Linux_Kernel for more details) + +How to build it +=============== + +Configure Buildroot: + + $ make _defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- sun7i-a20-olinuxino-lime.dtb (lime, mainline) + +-- sun7i-a20-olinuxino-lime2.dtb (lime2, mainline) + +-- sun7i-a20-olinuxino-micro.dtb (micro, mainline) + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the A20-OLinuXino board, and power it up. + diff --git a/features/buildroot/board/olimex/a64-olinuxino/boot.cmd b/features/buildroot/board/olimex/a64-olinuxino/boot.cmd new file mode 100644 index 00000000..28ed6d9d --- /dev/null +++ b/features/buildroot/board/olimex/a64-olinuxino/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-olinuxino.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/olimex/a64-olinuxino/genimage.cfg b/features/buildroot/board/olimex/a64-olinuxino/genimage.cfg new file mode 100644 index 00000000..328b68be --- /dev/null +++ b/features/buildroot/board/olimex/a64-olinuxino/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-olinuxino.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/olimex/a64-olinuxino/readme.txt b/features/buildroot/board/olimex/a64-olinuxino/readme.txt new file mode 100644 index 00000000..342bdc77 --- /dev/null +++ b/features/buildroot/board/olimex/a64-olinuxino/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the A64-OLinuXino. With the current configuration +it will bring-up the board, and allow access through the serial console. + +A64-OLinuXino link: +https://www.olimex.com/Products/OLinuXino/A64/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Olimex+A64-Olinuxino + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make olimex_a64_olinuxino_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your A64-OLinuXino and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment b/features/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment new file mode 100644 index 00000000..b70dea2c --- /dev/null +++ b/features/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment @@ -0,0 +1,18 @@ +# Network testing +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +# MII PHY device drivers +CONFIG_WLAN=y +CONFIG_RTL8187=m +CONFIG_ATH9K_HTC=m +CONFIG_RT2X00=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m diff --git a/features/buildroot/board/olimex/imx233_olinuxino/readme.txt b/features/buildroot/board/olimex/imx233_olinuxino/readme.txt new file mode 100644 index 00000000..1e676c45 --- /dev/null +++ b/features/buildroot/board/olimex/imx233_olinuxino/readme.txt @@ -0,0 +1,29 @@ +This configuration is intended as a base image. +It includes kernel and firmware support for the common USB WiFi hardware. +Packages for WiFi support are up to the user, you'll probably want +one or more of: hostapd, iw, wireless_tools and/or wpa_supplicant. + +It also pulls up the console on the serial port, not on TV output. + +=== Output files after building ============================================== + +output/images ++-- boot.vfat (VFAT kernel partition image generated by genimage) ++-- imx23-olinuxino.dtb (device tree blob) ++-- rootfs.ext2 (Root file system) ++-- sdcard.img (Complete SD card image generated by genimage) ++-- u-boot.sd (U-Boot image) ++-- uImage (Kernel binary) + +=== Use of generated SD card image =========================================== + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command as root: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ diff --git a/features/buildroot/board/openblocks/a6/readme.txt b/features/buildroot/board/openblocks/a6/readme.txt new file mode 100644 index 00000000..10a78bb7 --- /dev/null +++ b/features/buildroot/board/openblocks/a6/readme.txt @@ -0,0 +1,78 @@ +Openblocks A6 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Openblocks A6. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make openblocks_a6_defconfig + +Compile everything: + + $ make + +Updating board over TFTP +======================== + +Copy the content of output/images to the root of your TFTP server. + +Connect serial and ethernet, power up board and stop it in U-Boot: + +DRAM (DDR2) CAS Latency = 5 tRP = 5 tRAS = 14 tRCD=5 +DRAM CS[0] base 0x00000000 size 512MB +DRAM Total size 512MB 16bit width +Addresses 8M - 0M are saved for the U-Boot usage. +Mem malloc Initialization (8M - 7M): Done +NAND:64 MB +POST: mac verify Eth0 PASSED + +CPU : Marvell Feroceon (Rev 1) + +Streaming disabled +Write allocate disabled + + +USB 0: host mode +Net: egiga0 +Hit any key to stop autoboot: 0 +openblocks>> + + +Load kernel from tftp: + +setenv serverip +setenv bootfile uImage.kirkwood-openblocks_a6 +bootp && tftp + + +Write it to nand: + +nand erase 0x590000 0x1c5c000 +nand write.e $loadaddr 0x590000 0x1c5c000 + + +Load rootfs from tftp: + +setenv serverip +setenv bootfile rootfs.jffs2 +bootp && tftp + + +Write it to nand: + +nand erase 0x2214000 0x1dc4000 +nand write.jffs2 $loadaddr 0x2214000 0x1dc4000 + + +Configure kernel to use rootfs: + +setenv root /dev/mtdblock5 rootfstype=jffs2 +saveenv +boot diff --git a/features/buildroot/board/orangepi/orangepi-lite/boot.cmd b/features/buildroot/board/orangepi/orangepi-lite/boot.cmd new file mode 100644 index 00000000..5c29dabf --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-lite.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-lite/genimage.cfg b/features/buildroot/board/orangepi/orangepi-lite/genimage.cfg new file mode 100644 index 00000000..cd81f986 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi Lite +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-lite.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/orangepi/orangepi-lite/linux-extras.config b/features/buildroot/board/orangepi/orangepi-lite/linux-extras.config new file mode 100644 index 00000000..6bb71690 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite/linux-extras.config @@ -0,0 +1,15 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y + +# hdmi +CONFIG_DRM_SUN8I_DW_HDMI=y +CONFIG_SUN8I_DE2_CCU=y + +# analog audio +CONFIG_SND_SUN8I_CODEC_ANALOG=y diff --git a/features/buildroot/board/orangepi/orangepi-lite/readme.txt b/features/buildroot/board/orangepi/orangepi-lite/readme.txt new file mode 100644 index 00000000..5f402bf2 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite/readme.txt @@ -0,0 +1,29 @@ +OrangePi Lite + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Lite. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_lite_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/orangepi/orangepi-lite2/extlinux.conf b/features/buildroot/board/orangepi/orangepi-lite2/extlinux.conf new file mode 100644 index 00000000..1966186a --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite2/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /Image + devicetree /sun50i-h6-orangepi-lite2.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait diff --git a/features/buildroot/board/orangepi/orangepi-lite2/genimage.cfg b/features/buildroot/board/orangepi/orangepi-lite2/genimage.cfg new file mode 100644 index 00000000..97251b48 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite2/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h6-orangepi-lite2.dtb", + "extlinux" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-lite2/post-build.sh b/features/buildroot/board/orangepi/orangepi-lite2/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite2/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/features/buildroot/board/orangepi/orangepi-lite2/readme.txt b/features/buildroot/board/orangepi/orangepi-lite2/readme.txt new file mode 100644 index 00000000..bed561b5 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite2/readme.txt @@ -0,0 +1,44 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +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/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Lite2 + +How to build +============ + + $ make orangepi_lite2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Lite2 and power it up. The console +is on the serial line, 115200 8N1. + +WiFi +==== + + # wpa_passphrase ACCESSPOINTNAME >> /etc/wpa_supplicant.conf + (type password and enter) + # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B + # udhcpc -i wlan0 + # ping google.com diff --git a/features/buildroot/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt b/features/buildroot/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt new file mode 100755 index 00000000..c1cc4c3c --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-lite2/rootfs_overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt @@ -0,0 +1,82 @@ +#AP6255_NVRAM_V1.0_29052015 + +NVRAMRev=$Rev: 498373 $ +sromrev=11 +vendid=0x14e4 +devid=0x43ab +manfid=0x2d0 +prodid=0x06e4 +macaddr=00:90:4c:c5:12:38 +nocrc=1 +boardtype=0x6e4 +boardrev=0x1304 +xtalfreq=37400 +#boardflags: 5GHz eTR switch by default +#2.4GHz eTR switch by default +#bit1 for btcoex +boardflags=0x00080201 +boardflags2=0x40000000 +boardflags3=0x48200100 +rxgains2gelnagaina0=0 +rxgains2gtrisoa0=0 +rxgains2gtrelnabypa0=0 +rxgains5gelnagaina0=0 +rxgains5gtrisoa0=0 +rxgains5gtrelnabypa0=0 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=1 +tssipos2g=1 +femctrl=0 +AvVmid_c0=0,157,1,126,1,126,1,126,1,126 +pa2ga0=-112,6296,-662 +pa2ga1=-165,3699,-515 +pa5ga0=-143,6016,-683,-141,6013,-678,-137,5988,-670,-136,5982,-670 +pa5ga1=-161,3544,-499,-166,3543,-497,-169,3569,-497,-171,3598,-498 +itrsw=1 +pdoffset2g40ma0=10 +pdoffset40ma0=0xaaaa +pdoffset80ma0=0xaaaa +extpagain5g=2 +extpagain2g=2 +tworangetssi2g=1 +tworangetssi5g=1 +# LTECX flags +# WCI2 +ltecxmux=0 +ltecxpadnum=0x0504 +ltecxfnsel=0x22 +ltecxgcigpio=0x32 + +maxp2ga0=64 +ofdmlrbw202gpo=0x0033 +dot11agofdmhrbw202gpo=0x1553 +mcsbw202gpo=0x99355533 + +maxp5ga0=80,82,76,77 + +mcsbw205glpo=0x99755000 +mcsbw205gmpo=0x9df55000 +mcsbw205ghpo=0x99855000 + +mcsbw405glpo=0xb8555000 +mcsbw405gmpo=0xed955000 +mcsbw405ghpo=0xd9755000 + +mcsbw805glpo=0xc8555000 +mcsbw805gmpo=0xe9555000 +mcsbw805ghpo=0xd9555000 + +swctrlmap_2g=0x00040004,0x00020002,0x00040004,0x010a02,0x1ff +swctrlmap_5g=0x00100010,0x00200020,0x00100010,0x010a02,0x2f4 +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 + +vcodivmode=1 +deadman_to=481500000 +ed_thresh2g=-54 +ed_thresh5g=-54 + +muxenab=0x10 diff --git a/features/buildroot/board/orangepi/orangepi-one-plus/extlinux.conf b/features/buildroot/board/orangepi/orangepi-one-plus/extlinux.conf new file mode 100644 index 00000000..f573aa17 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one-plus/extlinux.conf @@ -0,0 +1,4 @@ +label linux + kernel /Image + devicetree /sun50i-h6-orangepi-one-plus.dtb + append console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait diff --git a/features/buildroot/board/orangepi/orangepi-one-plus/genimage.cfg b/features/buildroot/board/orangepi/orangepi-one-plus/genimage.cfg new file mode 100644 index 00000000..ebb07e8b --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one-plus/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h6-orangepi-one-plus.dtb", + "extlinux" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-one-plus/post-build.sh b/features/buildroot/board/orangepi/orangepi-one-plus/post-build.sh new file mode 100755 index 00000000..ec20fca7 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one-plus/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf diff --git a/features/buildroot/board/orangepi/orangepi-one-plus/readme.txt b/features/buildroot/board/orangepi/orangepi-one-plus/readme.txt new file mode 100644 index 00000000..87f6de85 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one-plus/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +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/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+One+Plus + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_one_plus_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi One Plus and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/orangepi/orangepi-one/boot.cmd b/features/buildroot/board/orangepi/orangepi-one/boot.cmd new file mode 100644 index 00000000..ab616e6a --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-one.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-one/genimage.cfg b/features/buildroot/board/orangepi/orangepi-one/genimage.cfg new file mode 100644 index 00000000..4640ff2b --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi PC +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-one.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/orangepi/orangepi-one/readme.txt b/features/buildroot/board/orangepi/orangepi-one/readme.txt new file mode 100644 index 00000000..e650f82d --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-one/readme.txt @@ -0,0 +1,29 @@ +OrangePi One + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi One. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_one_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd b/features/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd new file mode 100644 index 00000000..0c75c862 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg b/features/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg new file mode 100644 index 00000000..9ffa1a21 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi PC Plus +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-pc-plus.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config b/features/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config new file mode 100644 index 00000000..5e3af2b8 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config @@ -0,0 +1,8 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y diff --git a/features/buildroot/board/orangepi/orangepi-pc-plus/readme.txt b/features/buildroot/board/orangepi/orangepi-pc-plus/readme.txt new file mode 100644 index 00000000..49206949 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc-plus/readme.txt @@ -0,0 +1,29 @@ +OrangePi PC Plus + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi PC Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_pc_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/orangepi/orangepi-pc/boot.cmd b/features/buildroot/board/orangepi/orangepi-pc/boot.cmd new file mode 100644 index 00000000..9da625c8 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-pc/genimage.cfg b/features/buildroot/board/orangepi/orangepi-pc/genimage.cfg new file mode 100644 index 00000000..932d81cf --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi PC +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-pc.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/orangepi/orangepi-pc/linux.fragment b/features/buildroot/board/orangepi/orangepi-pc/linux.fragment new file mode 100644 index 00000000..581b715b --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc/linux.fragment @@ -0,0 +1,5 @@ +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_REGULATOR_SY8106A=y +CONFIG_DRM_SUN8I_DW_HDMI=y +CONFIG_SUN8I_DE2_CCU=y +CONFIG_SND_SUN8I_CODEC_ANALOG=y diff --git a/features/buildroot/board/orangepi/orangepi-pc/readme.txt b/features/buildroot/board/orangepi/orangepi-pc/readme.txt new file mode 100644 index 00000000..d316b6fc --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc/readme.txt @@ -0,0 +1,29 @@ +OrangePi PC + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi PC. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_pc_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/orangepi/orangepi-pc2/boot.cmd b/features/buildroot/board/orangepi/orangepi-pc2/boot.cmd new file mode 100644 index 00000000..4d4fc7bf --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc2/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-pc2.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-pc2/genimage.cfg b/features/buildroot/board/orangepi/orangepi-pc2/genimage.cfg new file mode 100644 index 00000000..e10c67ff --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc2/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-orangepi-pc2.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-pc2/readme.txt b/features/buildroot/board/orangepi/orangepi-pc2/readme.txt new file mode 100644 index 00000000..12004819 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-pc2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi PC2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi PC2 link: +http://www.orangepi.org/orangepipc2/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+PC2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_pc2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi PC2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/orangepi/orangepi-plus/boot.cmd b/features/buildroot/board/orangepi/orangepi-plus/boot.cmd new file mode 100644 index 00000000..1a378cb9 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-plus/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-plus/genimage.cfg b/features/buildroot/board/orangepi/orangepi-plus/genimage.cfg new file mode 100644 index 00000000..391678b7 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-plus/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the OrangePi Plus\Plus2 +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-plus.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-plus/readme.txt b/features/buildroot/board/orangepi/orangepi-plus/readme.txt new file mode 100644 index 00000000..7f871bcf --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-plus/readme.txt @@ -0,0 +1,29 @@ +OrangePi Plus/Plus2 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Plus/Plus2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/orangepi/orangepi-prime/boot.cmd b/features/buildroot/board/orangepi/orangepi-prime/boot.cmd new file mode 100644 index 00000000..34887880 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-prime/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-prime.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-prime/genimage.cfg b/features/buildroot/board/orangepi/orangepi-prime/genimage.cfg new file mode 100644 index 00000000..bb01ed9f --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-prime/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-orangepi-prime.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-prime/readme.txt b/features/buildroot/board/orangepi/orangepi-prime/readme.txt new file mode 100644 index 00000000..5811884d --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-prime/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Prime. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Prime link: +http://www.orangepi.org/OrangePiPrime/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Prime + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_prime_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Prime and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/orangepi/orangepi-r1/boot.cmd b/features/buildroot/board/orangepi/orangepi-r1/boot.cmd new file mode 100644 index 00000000..e927b01e --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-r1/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-r1.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-r1/genimage.cfg b/features/buildroot/board/orangepi/orangepi-r1/genimage.cfg new file mode 100644 index 00000000..01e2c0ad --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-r1/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi R1 +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h2-plus-orangepi-r1.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/orangepi/orangepi-r1/linux-extras.config b/features/buildroot/board/orangepi/orangepi-r1/linux-extras.config new file mode 100644 index 00000000..47ba88f6 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-r1/linux-extras.config @@ -0,0 +1,11 @@ +# spi nor +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_M25P80=y + +# ondemand cpufreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y + +# USB ethernet +CONFIG_USB_RTL8152=y diff --git a/features/buildroot/board/orangepi/orangepi-r1/readme.txt b/features/buildroot/board/orangepi/orangepi-r1/readme.txt new file mode 100644 index 00000000..82664993 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-r1/readme.txt @@ -0,0 +1,29 @@ +OrangePi R1 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi R1. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_r1_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/orangepi/orangepi-win/boot.cmd b/features/buildroot/board/orangepi/orangepi-win/boot.cmd new file mode 100644 index 00000000..2ddb769d --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-win/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-orangepi-win.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-win/genimage.cfg b/features/buildroot/board/orangepi/orangepi-win/genimage.cfg new file mode 100644 index 00000000..db025d55 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-win/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-orangepi-win.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-win/readme.txt b/features/buildroot/board/orangepi/orangepi-win/readme.txt new file mode 100644 index 00000000..93adddd8 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-win/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Win/Win Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Win/Win Plus link: +http://www.orangepi.org/OrangePiWin_WinPlus/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Win + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_win_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Win/Win Plus and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd b/features/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd new file mode 100644 index 00000000..4772a9be --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-zero-plus2.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg b/features/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg new file mode 100644 index 00000000..8091edad --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-orangepi-zero-plus2.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config b/features/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config new file mode 100644 index 00000000..52b4b4b2 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config @@ -0,0 +1,10 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMFMAC=m diff --git a/features/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt b/features/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt new file mode 100644 index 00000000..322ba0e1 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Zero Plus2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Zero Plus2 link: +http://www.orangepi.org/OrangePiZeroPlus2/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Zero+Plus2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_zero_plus2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero Plus2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/features/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 00000000..8f0bf690 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt @@ -0,0 +1,54 @@ +#AP6212_NVRAM_V1.0_20140603 +# 2.4 GHz, 20 MHz BW mode + +# The following parameter values are just placeholders, need to be updated. +manfid=0x2d0 +prodid=0x0726 +vendid=0x14e4 +devid=0x43e2 +boardtype=0x0726 +boardrev=0x1101 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +sromrev=11 +boardflags=0x00404201 +xtalfreq=26000 +nocrc=1 +ag0=255 +aa2g=1 +ccode=ALL + +pa0itssit=0x20 +extpagain2g=0 + +#PA parameters for 2.4GHz, measured at CHIP OUTPUT +pa2ga0=-168,7161,-820 +AvVmid_c0=0x0,0xc8 +cckpwroffset0=5 + +# PPR params +maxp2ga0=90 +txpwrbckof=6 +cckbw202gpo=0x5555 +legofdmbw202gpo=0x77777777 +mcsbw202gpo=0xaaaaaaaa + +# OFDM IIR : +ofdmdigfilttype=7 +# PAPD mode: +papdmode=2 + +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b + +#OOB parameters +hostwake=0x40 +hostrdy=0x41 +usbrdy=0x03 +usbrdydelay=100 +deadman_to=0xffffffff +# muxenab: 0x1 for UART enable, 0x10 for Host awake +muxenab=0x10 +# CLDO PWM voltage settings - 0x4 - 1.1 volt +#cldo_pwm=0x4 + diff --git a/features/buildroot/board/orangepi/orangepi-zero/boot.cmd b/features/buildroot/board/orangepi/orangepi-zero/boot.cmd new file mode 100644 index 00000000..44f0885f --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-zero.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/orangepi/orangepi-zero/genimage.cfg b/features/buildroot/board/orangepi/orangepi-zero/genimage.cfg new file mode 100644 index 00000000..017435f2 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi Zero +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h2-plus-orangepi-zero.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/orangepi/orangepi-zero/linux-extras.config b/features/buildroot/board/orangepi/orangepi-zero/linux-extras.config new file mode 100644 index 00000000..2db241de --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/linux-extras.config @@ -0,0 +1,20 @@ +# spidev +CONFIG_SPI_SPIDEV=y + +# spi nor +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_M25P80=y + +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y + +# ondemand cpufreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y diff --git a/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch b/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch new file mode 100644 index 00000000..146d23d1 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch @@ -0,0 +1,35 @@ +From 321faaf4b78d46a0c77782c1798856746f0619e9 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Fri, 19 May 2017 23:39:48 +0300 +Subject: [PATCH 1/3] ARM: dts: orange-pi-zero: specify XR819 WiFi chip + interrupts + +The orange-pi-zero board has Allwinner XR819 SDIO wifi chip. The board +dts file provides a node enabling mmc1 controller. Together with an +out-of-tree driver https://github.com/fifteenhex/xradio this node +enables using the wifi chip. + +This commit specifies XR819 interrupt configuration for the driver. + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index b7ca916d871d..4e1a9050c6b4 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -125,6 +125,9 @@ + */ + xr819: sdio_wifi@1 { + reg = <1>; ++ compatible = "xradio,xr819"; ++ interrupt-parent = <&pio>; ++ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>; + }; + }; + +-- +2.11.0 + diff --git a/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch b/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch new file mode 100644 index 00000000..fc24e7b8 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch @@ -0,0 +1,42 @@ +From 068c3baff3048a3db4ef2518ff917ce749cd8169 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Sat, 20 May 2017 11:24:26 +0300 +Subject: [PATCH 2/3] ARM: dts: orange-pi-zero: enable SPI NOR + +Enable SPI NOR on orange-pi-zero board. + +For more information see: +- http://linux-sunxi.org/Orange_Pi_Zero#SPI_NOR_flash + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index 4e1a9050c6b4..cdf19821b1f3 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -161,3 +161,19 @@ + /* USB VBUS is always on */ + status = "okay"; + }; ++ ++&spi0 { ++ status = "okay"; ++ ++ flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "mxicy,mx25l1606e", "winbond,w25q128"; ++ reg = <0>; ++ spi-max-frequency = <40000000>; ++ ++ partition@00000000 { ++ reg = <0x00000000 0x200000>; /* 2Mb */ ++ }; ++ }; ++}; +-- +2.11.0 + diff --git a/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch b/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch new file mode 100644 index 00000000..553155ce --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch @@ -0,0 +1,42 @@ +From 8dd1b2a696bb7e9914abd11cc6f5c0f54c33d626 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Sat, 20 May 2017 15:36:51 +0300 +Subject: [PATCH 3/3] ARM: dts: orange-pi-zero: enable spidev + +On orange-pi-zero board SPI1 pins are accessible via GPIO expansion port. +This patch enables spidev driver for SPI1. + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index cdf19821b1f3..7242aaecb14f 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -59,6 +59,7 @@ + serial0 = &uart0; + /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ + ethernet1 = &xr819; ++ spi1 = &spi1; + }; + + chosen { +@@ -177,3 +178,13 @@ + }; + }; + }; ++ ++&spi1 { ++ status = "okay"; ++ ++ spidev@0 { ++ compatible = "rohm,dh2228fv"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++}; +-- +2.11.0 + diff --git a/features/buildroot/board/orangepi/orangepi-zero/readme.txt b/features/buildroot/board/orangepi/orangepi-zero/readme.txt new file mode 100644 index 00000000..1afdbb78 --- /dev/null +++ b/features/buildroot/board/orangepi/orangepi-zero/readme.txt @@ -0,0 +1,29 @@ +OrangePi Zero + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Zero. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_zero_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/features/buildroot/board/pandaboard/genimage.cfg b/features/buildroot/board/pandaboard/genimage.cfg new file mode 100644 index 00000000..f30033f0 --- /dev/null +++ b/features/buildroot/board/pandaboard/genimage.cfg @@ -0,0 +1,26 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img" + } + } + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/pandaboard/post-image.sh b/features/buildroot/board/pandaboard/post-image.sh new file mode 100755 index 00000000..9cca1b17 --- /dev/null +++ b/features/buildroot/board/pandaboard/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/pandaboard/readme.txt b/features/buildroot/board/pandaboard/readme.txt new file mode 100644 index 00000000..80a20c27 --- /dev/null +++ b/features/buildroot/board/pandaboard/readme.txt @@ -0,0 +1,46 @@ +Pandaboard +========== + +This file documents the Buildroot support for the Pandaboard, a +low-power, low-cost single-board computer development platform based +on the Texas Instruments OMAP4 system on a chip (SoC). + +Configuring and building Buildroot +---------------------------------- + +Start from the defconfig: + + $ make pandaboard_defconfig + +You can edit build options the usual way: + + $ make menuconfig + +When you are happy with the setup, run: + + $ make + +The result of the build with the default settings should be these files: + + output/images + +-- MLO + +-- omap4-panda-a4.dtb + +-- omap4-panda.dtb + +-- omap4-panda-es.dtb + +-- rootfs.ext4 + +-- sdcard.img + +-- u-boot.img + +-- zImage + +How to write the SD card +------------------------ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Where /dev/sdX is the device node of your SD card (may be /dev/mmcblkX +instead depending on setup). diff --git a/features/buildroot/board/pc/genimage-bios.cfg b/features/buildroot/board/pc/genimage-bios.cfg new file mode 100644 index 00000000..c6694999 --- /dev/null +++ b/features/buildroot/board/pc/genimage-bios.cfg @@ -0,0 +1,24 @@ +image disk.img { + + hdimage { + } + + partition boot { + in-partition-table = "no" + image = "boot.img" + offset = 0 + size = 512 + } + + partition grub { + in-partition-table = "no" + image = "grub.img" + offset = 512 + } + + partition root { + partition-type = 0x83 + image = "rootfs.ext2" + } + +} diff --git a/features/buildroot/board/pc/grub-bios.cfg b/features/buildroot/board/pc/grub-bios.cfg new file mode 100644 index 00000000..bd3e3f00 --- /dev/null +++ b/features/buildroot/board/pc/grub-bios.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} diff --git a/features/buildroot/board/pc/linux.config b/features/buildroot/board/pc/linux.config new file mode 100644 index 00000000..f86352e1 --- /dev/null +++ b/features/buildroot/board/pc/linux.config @@ -0,0 +1,85 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_EFI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETFILTER=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +CONFIG_R8169=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH10K=m +CONFIG_ATH10K_PCI=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m +CONFIG_IWLWIFI=m +CONFIG_RT2X00=m +CONFIG_RT2800PCI=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RTL_CARDS is not set +CONFIG_RTL8XXXU=m +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_I915=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_FB_VESA=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_SQUASHFS=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/features/buildroot/board/pc/post-build.sh b/features/buildroot/board/pc/post-build.sh new file mode 100755 index 00000000..b245cc00 --- /dev/null +++ b/features/buildroot/board/pc/post-build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +BOARD_DIR=$(dirname "$0") + +cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg" + +# Copy grub 1st stage to binaries, required for genimage +cp -f "$HOST_DIR/lib/grub/i386-pc/boot.img" "$BINARIES_DIR" diff --git a/features/buildroot/board/pc/post-image-efi-gpt.sh b/features/buildroot/board/pc/post-image-efi-gpt.sh new file mode 100755 index 00000000..d2acd8f8 --- /dev/null +++ b/features/buildroot/board/pc/post-image-efi-gpt.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +cd ${BINARIES_DIR} + +# GPT partition type UUIDs +esp_type=c12a7328-f81f-11d2-ba4b-00a0c93ec93b +linux_type=44479540-f297-41b2-9af7-d131d5f0458a + +# Partition UUIDs +efi_part_uuid=$(uuidgen) +root_part_uuid=$(uuidgen) + +# Boot partition offset and size, in 512-byte sectors +efi_part_start=64 +efi_part_size=32768 + +# Rootfs partition offset and size, in 512-byte sectors +root_part_start=$(( efi_part_start + efi_part_size )) +root_part_size=$(( $(stat -c %s rootfs.ext2) / 512 )) + +first_lba=34 +last_lba=$(( root_part_start + root_part_size )) + +# Disk image size in 512-byte sectors +image_size=$(( last_lba + first_lba )) + +cat > efi-part/EFI/BOOT/grub.cfg < \ + -drive file=output/images/disk.img,if=virtio,format=raw \ + -net nic,model=virtio \ + -net user + +Note that needs to point to a valid x86_64 UEFI +firmware image for qemu. It may be provided by your distribution as a +edk2 or OVMF package, in path such as +/usr/share/edk2/ovmf/OVMF_CODE.fd . diff --git a/features/buildroot/board/pine64/pine64/boot.cmd b/features/buildroot/board/pine64/pine64/boot.cmd new file mode 100644 index 00000000..14f56104 --- /dev/null +++ b/features/buildroot/board/pine64/pine64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-pine64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/pine64/pine64/genimage.cfg b/features/buildroot/board/pine64/pine64/genimage.cfg new file mode 100644 index 00000000..2ff38d54 --- /dev/null +++ b/features/buildroot/board/pine64/pine64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-pine64.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/pine64/pine64/readme.txt b/features/buildroot/board/pine64/pine64/readme.txt new file mode 100644 index 00000000..85226fdd --- /dev/null +++ b/features/buildroot/board/pine64/pine64/readme.txt @@ -0,0 +1,38 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Pine64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Pine64 link: +https://www.pine64.org/?page_id=1194 + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Pine64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make pine64_defconfig + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Pine64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/pine64/rock64/extlinux.conf b/features/buildroot/board/pine64/rock64/extlinux.conf new file mode 100644 index 00000000..bf71982a --- /dev/null +++ b/features/buildroot/board/pine64/rock64/extlinux.conf @@ -0,0 +1,4 @@ +label rock64-buildroot + kernel /boot/Image + devicetree /boot/rk3328-rock64.dtb + append console=ttyS2,1500000n8 root=/dev/mmcblk0p1 ro rootwait diff --git a/features/buildroot/board/pine64/rock64/genimage.cfg b/features/buildroot/board/pine64/rock64/genimage.cfg new file mode 100644 index 00000000..0b5a0d88 --- /dev/null +++ b/features/buildroot/board/pine64/rock64/genimage.cfg @@ -0,0 +1,23 @@ +image sdcard.img { + hdimage { + } + + partition uboot-spl { + in-partition-table = "no" + image = "u-boot-tpl-spl.img" + offset = 32768 # 512 * 0x40 from start of sd card + } + + partition uboot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 262144 # 512 * 0x200 from start of sd card + } + + partition rootfs { + partition-type = 0x83 + bootable = "yes" + image = "rootfs.ext2" + size = 500M + } +} diff --git a/features/buildroot/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch b/features/buildroot/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch new file mode 100644 index 00000000..2d35b78d --- /dev/null +++ b/features/buildroot/board/pine64/rock64/patches/uboot/0001-Makefile-rk3328-needs-itb-image-to-boot-properly.patch @@ -0,0 +1,32 @@ +From 211bf049084e6e374dac253138fa813682910146 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= +Date: Tue, 5 Feb 2019 22:08:54 +0100 +Subject: [PATCH] Makefile: rk3328 needs itb image to boot properly +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: MichaÅ‚ Åyszczek +--- + Makefile | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Makefile b/Makefile +index 8086f3c93e..a6425b5b03 100644 +--- a/Makefile ++++ b/Makefile +@@ -799,6 +799,11 @@ ifneq ($(BUILD_ROM),) + ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom + endif + ++# rk3328 needs itb image to boot properly ++ifeq ($(CONFIG_ROCKCHIP_RK3328),y) ++ALL-y += u-boot.itb ++endif ++ + # enable combined SPL/u-boot/dtb rules for tegra + ifeq ($(CONFIG_TEGRA)$(CONFIG_SPL),yy) + ALL-y += u-boot-tegra.bin u-boot-nodtb-tegra.bin +-- +2.18.1 + diff --git a/features/buildroot/board/pine64/rock64/post-build.sh b/features/buildroot/board/pine64/rock64/post-build.sh new file mode 100755 index 00000000..26b53cba --- /dev/null +++ b/features/buildroot/board/pine64/rock64/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3328 -T rksd -d $BINARIES_DIR/u-boot-tpl.bin $BINARIES_DIR/u-boot-tpl.img +cat $BINARIES_DIR/u-boot-tpl.img $BINARIES_DIR/u-boot-spl.bin > $BINARIES_DIR/u-boot-tpl-spl.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/features/buildroot/board/pine64/rock64/readme.txt b/features/buildroot/board/pine64/rock64/readme.txt new file mode 100644 index 00000000..029c6764 --- /dev/null +++ b/features/buildroot/board/pine64/rock64/readme.txt @@ -0,0 +1,95 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Rock64. With this default configuration you +can log in into board via uart and look around. + +Board homepage: https://www.pine64.org/?page_id=7147 + +Build +===== + +First, load rock64 config for buildroot + + $ make rock64_defconfig + +Optionally make changes to buildroot config (to install more programs) + + $ make menuconfig + +And then build everything + + $ make + +When completed, following files will be generated in output/images directory: + + . + ├── Image + ├── bl31.bin + ├── bl31.elf + ├── rk3328-rock64.dtb + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot-spl.bin + ├── u-boot-tpl-spl.img + ├── u-boot-tpl.bin + ├── u-boot-tpl.img + ├── u-boot.bin + └── u-boot.itb + +Creating bootable SD card +========================= + +!!! THIS COMMAND MAY WIPE YOUR DISK! +!!! MAKE SURE YOU PASSED CORRECT DEVICE! +!!! OR IT THIS WILL WIPE YOUR DISK! + +Simply invoke (as root) + + # dd if=output/images/sdcard.img of=/dev/sdX && sync + +Where X is your SD card device (not partition), of= argument may also be +/dev/mmcblk0 if you are using built-in sd card reader. + +Runtime +======= + +Login +----- + +By default, buildroot has no password, just type 'root' as login user, and +you will be logged in. + +Serial console +-------------- + +Serial console needs to be connected to pins (into 40pin rpi compatible part) + +pin 6: gnd +pin 8: tx +pin 10: rx + +Pin numbers are printed on board. + +Uart configuration is not standard. Rock64 uses 1500000 (1,5M) baudrate +with standard 8n1. + +Ethernet +-------- + +To enable ethernet you need to load modules for it: + +# modprobe stmmac +# modprobe dwmac-rk + +and since by default there is no dhcp installed, you need to configure ip +address, remember to change address to fit your network. + +# ifconfig eth0 up +# ip addr add 10.1.1.180/24 dev eth0 +# ping 10.1.1.1 +PING 10.1.1.1 (10.1.1.1): 56 data bytes +64 bytes from 10.1.1.1: seq=0 ttl=64 time=0.695 ms diff --git a/features/buildroot/board/pine64/sopine/boot.cmd b/features/buildroot/board/pine64/sopine/boot.cmd new file mode 100644 index 00000000..2eab6423 --- /dev/null +++ b/features/buildroot/board/pine64/sopine/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-sopine-baseboard.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/pine64/sopine/genimage.cfg b/features/buildroot/board/pine64/sopine/genimage.cfg new file mode 100644 index 00000000..02ebe7ab --- /dev/null +++ b/features/buildroot/board/pine64/sopine/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-sopine-baseboard.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/pine64/sopine/readme.txt b/features/buildroot/board/pine64/sopine/readme.txt new file mode 100644 index 00000000..08cb380b --- /dev/null +++ b/features/buildroot/board/pine64/sopine/readme.txt @@ -0,0 +1,38 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the SoPine. With the current configuration +it will bring-up the board, and allow access through the serial console. + +SoPINE link: +https://www.pine64.org/?page_id=1491 + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/SoPine + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make pine64_sopine_defconfig + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your SoPine and power it up. The console +is on the serial line, 115200 8N1. diff --git a/features/buildroot/board/qemu/aarch64-virt/linux.config b/features/buildroot/board/qemu/aarch64-virt/linux.config new file mode 100644 index 00000000..c9f2708a --- /dev/null +++ b/features/buildroot/board/qemu/aarch64-virt/linux.config @@ -0,0 +1,54 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_TASKSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_PROFILING=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_BINFMT_MISC=y +CONFIG_COMPAT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_BRIDGE=m +CONFIG_NET_SCHED=y +CONFIG_VSOCKETS=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +CONFIG_MACVLAN=y +CONFIG_VIRTIO_NET=y +CONFIG_NLMON=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_RTC_CLASS=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_MAILBOX=y +CONFIG_PL320_MBOX=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/aarch64-virt/readme.txt b/features/buildroot/board/qemu/aarch64-virt/readme.txt new file mode 100644 index 00000000..f868905d --- /dev/null +++ b/features/buildroot/board/qemu/aarch64-virt/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel output/images/Image -append "rootwait root=/dev/vda console=ttyAMA0" -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -drive file=output/images/rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/arm-versatile/linux-nommu.config b/features/buildroot/board/qemu/arm-versatile/linux-nommu.config new file mode 100644 index 00000000..1d91d51a --- /dev/null +++ b/features/buildroot/board/qemu/arm-versatile/linux-nommu.config @@ -0,0 +1,47 @@ +# CONFIG_MMU is not set +CONFIG_ARCH_VERSATILE=y +CONFIG_ARM_SINGLE_ARCH_VERSATILE=y +CONFIG_SET_MEM_PARAM=y +CONFIG_DRAM_BASE=0x00000000 +CONFIG_DRAM_SIZE=0x08000000 +CONFIG_ARCH_VERSATILE_PB=y +CONFIG_MACH_VERSATILE_AB=y +CONFIG_MACH_VERSATILE_DT=y +CONFIG_BINFMT_FLAT=y +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_AEABI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_SMC91X=y +CONFIG_PHYLIB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_ARMAACI=m +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_MAGIC_SYSRQ=y diff --git a/features/buildroot/board/qemu/arm-versatile/linux.config b/features/buildroot/board/qemu/arm-versatile/linux.config new file mode 100644 index 00000000..b1001d84 --- /dev/null +++ b/features/buildroot/board/qemu/arm-versatile/linux.config @@ -0,0 +1,43 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_ARCH_VERSATILE=y +CONFIG_PCI=y +CONFIG_PCI_VERSATILE=y +CONFIG_AEABI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_PHYLIB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_ARMAACI=m +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_MAGIC_SYSRQ=y diff --git a/features/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch b/features/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch new file mode 100644 index 00000000..a2c0962f --- /dev/null +++ b/features/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch @@ -0,0 +1,113 @@ +From 4ac4324dcdaf237aa34545b3795acb2e5c42d10e Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Fri, 1 Feb 2019 11:36:20 +0100 +Subject: [PATCH] arm-versatile-nommu: Linux patch + +Originally made by Waldemar Brodkorb from LKML. + +Signed-Off-by: Waldemar Brodkorb +[Gerome: reformated as a Git patch] +Signed-off-by: Gerome Burlats +[Romain: fix Waldemar's authorship in Git patch] +Signed-off-by: Romain Naour +--- + arch/arm/Kconfig | 11 +++++++++++ + arch/arm/Kconfig.debug | 3 ++- + arch/arm/include/asm/mach/map.h | 1 + + arch/arm/mach-versatile/Kconfig | 5 +++-- + arch/arm/mach-versatile/Makefile.boot | 3 +++ + arch/arm/mach-versatile/versatile_dt.c | 4 ++++ + 6 files changed, 24 insertions(+), 3 deletions(-) + create mode 100644 arch/arm/mach-versatile/Makefile.boot + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index e8cd55a5b04c..fc2dbff70394 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -353,6 +353,17 @@ config ARM_SINGLE_ARMV7M + select SPARSE_IRQ + select USE_OF + ++config ARM_SINGLE_ARCH_VERSATILE ++ bool "ARM Ltd. Versatile family" ++ depends on !MMU ++ select AUTO_ZRELADDR ++ select CLKSRC_OF ++ select COMMON_CLK ++ select GENERIC_CLOCKEVENTS ++ select GPIOLIB ++ select SPARSE_IRQ ++ select USE_OF ++ + config ARCH_EBSA110 + bool "EBSA-110" + select ARCH_USES_GETTIMEOFFSET +diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug +index f6fcb8a79889..92fc637d3db8 100644 +--- a/arch/arm/Kconfig.debug ++++ b/arch/arm/Kconfig.debug +@@ -1843,7 +1843,8 @@ config DEBUG_UNCOMPRESS + config UNCOMPRESS_INCLUDE + string + default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \ +- PLAT_SAMSUNG || ARM_SINGLE_ARMV7M ++ PLAT_SAMSUNG || ARM_SINGLE_ARMV7M || \ ++ ARM_SINGLE_ARCH_VERSATILE + default "mach/uncompress.h" + + config EARLY_PRINTK +diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h +index 9b7c328fb207..b1fe9c8b5c3e 100644 +--- a/arch/arm/include/asm/mach/map.h ++++ b/arch/arm/include/asm/mach/map.h +@@ -62,6 +62,7 @@ extern int ioremap_page(unsigned long virt, unsigned long phys, + #else + #define iotable_init(map,num) do { } while (0) + #define vm_reserve_area_early(a,s,c) do { } while (0) ++#define debug_ll_io_init() do { } while (0) + #endif + + #endif +diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig +index f5c275434d6c..06ad999d5978 100644 +--- a/arch/arm/mach-versatile/Kconfig ++++ b/arch/arm/mach-versatile/Kconfig +@@ -1,7 +1,8 @@ + # SPDX-License-Identifier: GPL-2.0 + config ARCH_VERSATILE +- bool "ARM Ltd. Versatile family" +- depends on ARCH_MULTI_V5 ++ bool "ARM Ltd. Versatile family" if ARCH_MULTI_V5 ++ depends on ARCH_MULTI_V5 || ARM_SINGLE_ARCH_VERSATILE ++ default y if ARM_SINGLE_ARCH_VERSATILE + select ARM_AMBA + select ARM_TIMER_SP804 + select ARM_VIC +diff --git a/arch/arm/mach-versatile/Makefile.boot b/arch/arm/mach-versatile/Makefile.boot +new file mode 100644 +index 000000000000..eacfc3f5c33e +--- /dev/null ++++ b/arch/arm/mach-versatile/Makefile.boot +@@ -0,0 +1,3 @@ ++# Empty file waiting for deletion once Makefile.boot isn't needed any more. ++# Patch waits for application at ++# http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7889/1 . +diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c +index 3c8d39c12909..8cfa05a37295 100644 +--- a/arch/arm/mach-versatile/versatile_dt.c ++++ b/arch/arm/mach-versatile/versatile_dt.c +@@ -37,7 +37,11 @@ + #include + + /* macro to get at MMIO space when running virtually */ ++#ifdef CONFIG_MMU + #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) ++#else ++#define IO_ADDRESS(x) (x) ++#endif + #define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n)) + + /* +-- +2.14.5 + diff --git a/features/buildroot/board/qemu/arm-versatile/readme.txt b/features/buildroot/board/qemu/arm-versatile/readme.txt new file mode 100644 index 00000000..f3a9e1ab --- /dev/null +++ b/features/buildroot/board/qemu/arm-versatile/readme.txt @@ -0,0 +1,12 @@ +Run the emulation with: + + qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "rootwait root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user + +Or for the noMMU emulation: + + qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -append "console=ttyAMA0,115200" -serial stdio -net user -net nic,model=smc91c111 + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/arm-vexpress/readme.txt b/features/buildroot/board/qemu/arm-vexpress/readme.txt new file mode 100644 index 00000000..7f7b43a3 --- /dev/null +++ b/features/buildroot/board/qemu/arm-vexpress/readme.txt @@ -0,0 +1,11 @@ +Run the emulation with: + + qemu-system-arm -M vexpress-a9 -smp 1 -m 256 -kernel output/images/zImage -dtb output/images/vexpress-v2p-ca9.dtb -drive file=output/images/rootfs.ext2,if=sd,format=raw -append "console=ttyAMA0,115200 rootwait root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +If you want to emulate more cores change "-smp 1" to "-smp 2" for +dual-core or even "smp -4" for a quad-core configuration. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/m68k-mcf5208/linux.config b/features/buildroot/board/qemu/m68k-mcf5208/linux.config new file mode 100644 index 00000000..09a89d72 --- /dev/null +++ b/features/buildroot/board/qemu/m68k-mcf5208/linux.config @@ -0,0 +1,28 @@ +CONFIG_M68K=y +CONFIG_COLDFIRE=y +# CONFIG_MMU is not set +CONFIG_M520x=y +CONFIG_CLOCK_SET=y +CONFIG_CLOCK_FREQ=66666666 +CONFIG_CLOCK_DIV=1 +CONFIG_M5208EVB=y +CONFIG_FREESCALE=y +CONFIG_RAMBASE=0x40000000 +CONFIG_RAMSIZE=0x0 +CONFIG_VECTORBASE=0x40000000 +CONFIG_KERNELBASE=0x40020000 +CONFIG_4KSTACKS=y +CONFIG_RAMKERNEL=y +CONFIG_BINFMT_FLAT=y +CONFIG_SERIAL_MCF=y +CONFIG_SERIAL_MCF_BAUDRATE=115200 +CONFIG_SERIAL_MCF_CONSOLE=y +CONFIG_BOOTPARAM=y +CONFIG_BOOTPARAM_STRING="console=ttyS0,115200" +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_FEC=y diff --git a/features/buildroot/board/qemu/m68k-mcf5208/readme.txt b/features/buildroot/board/qemu/m68k-mcf5208/readme.txt new file mode 100644 index 00000000..d1c90868 --- /dev/null +++ b/features/buildroot/board/qemu/m68k-mcf5208/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-m68k -M mcf5208evb -cpu m5208 -kernel output/images/vmlinux -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/m68k-q800/linux.config b/features/buildroot/board/qemu/m68k-q800/linux.config new file mode 100644 index 00000000..44eb70e2 --- /dev/null +++ b/features/buildroot/board/qemu/m68k-q800/linux.config @@ -0,0 +1,26 @@ +CONFIG_M68K=y +CONFIG_M68040=y +CONFIG_M68KFPU_EMU=y +CONFIG_MAC=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_ADB=y +CONFIG_ADB_MACII=y +CONFIG_TTY=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_MACSONIC=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_MAC_ESP=y +CONFIG_BLK_DEV_SD=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y diff --git a/features/buildroot/board/qemu/m68k-q800/readme.txt b/features/buildroot/board/qemu/m68k-q800/readme.txt new file mode 100644 index 00000000..b516bacd --- /dev/null +++ b/features/buildroot/board/qemu/m68k-q800/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-m68k -M q800 -kernel output/images/vmlinux -nographic -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0" + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.11.0 from https://github.com/vivier/qemu-m68k +You need following branch: q800-v2.11.0 diff --git a/features/buildroot/board/qemu/microblazebe-mmu/linux.config b/features/buildroot/board/qemu/microblazebe-mmu/linux.config new file mode 100644 index 00000000..7bcd3820 --- /dev/null +++ b/features/buildroot/board/qemu/microblazebe-mmu/linux.config @@ -0,0 +1,20 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_OPT_LIB_ASM=y +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan3adsp" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_MMU=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_XILINX_EMACLITE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y diff --git a/features/buildroot/board/qemu/microblazebe-mmu/readme.txt b/features/buildroot/board/qemu/microblazebe-mmu/readme.txt new file mode 100644 index 00000000..4f52baff --- /dev/null +++ b/features/buildroot/board/qemu/microblazebe-mmu/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-microblaze -M petalogix-s3adsp1800 -kernel output/images/linux.bin -serial stdio + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch b/features/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch new file mode 100644 index 00000000..756bfaea --- /dev/null +++ b/features/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch @@ -0,0 +1,11 @@ +diff -Nur linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c +--- linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-03-31 05:40:15.000000000 +0200 ++++ linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-04-11 22:53:42.000000000 +0200 +@@ -1249,6 +1249,7 @@ + { .compatible = "xlnx,opb-ethernetlite-1.01.b", }, + { .compatible = "xlnx,xps-ethernetlite-1.00.a", }, + { .compatible = "xlnx,xps-ethernetlite-2.00.a", }, ++ { .compatible = "xlnx,xps-ethernetlite-2.00.b", }, + { .compatible = "xlnx,xps-ethernetlite-2.01.a", }, + { .compatible = "xlnx,xps-ethernetlite-3.00.a", }, + { /* end of list */ }, diff --git a/features/buildroot/board/qemu/microblazeel-mmu/linux.config b/features/buildroot/board/qemu/microblazeel-mmu/linux.config new file mode 100644 index 00000000..a6228280 --- /dev/null +++ b/features/buildroot/board/qemu/microblazeel-mmu/linux.config @@ -0,0 +1,19 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan3adsp" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_MMU=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_XILINX_EMACLITE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y diff --git a/features/buildroot/board/qemu/microblazeel-mmu/readme.txt b/features/buildroot/board/qemu/microblazeel-mmu/readme.txt new file mode 100644 index 00000000..0b0f330a --- /dev/null +++ b/features/buildroot/board/qemu/microblazeel-mmu/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-microblazeel -M petalogix-s3adsp1800 -kernel output/images/linux.bin -serial stdio + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch b/features/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch new file mode 100644 index 00000000..756bfaea --- /dev/null +++ b/features/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch @@ -0,0 +1,11 @@ +diff -Nur linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c +--- linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-03-31 05:40:15.000000000 +0200 ++++ linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-04-11 22:53:42.000000000 +0200 +@@ -1249,6 +1249,7 @@ + { .compatible = "xlnx,opb-ethernetlite-1.01.b", }, + { .compatible = "xlnx,xps-ethernetlite-1.00.a", }, + { .compatible = "xlnx,xps-ethernetlite-2.00.a", }, ++ { .compatible = "xlnx,xps-ethernetlite-2.00.b", }, + { .compatible = "xlnx,xps-ethernetlite-2.01.a", }, + { .compatible = "xlnx,xps-ethernetlite-3.00.a", }, + { /* end of list */ }, diff --git a/features/buildroot/board/qemu/mips32r2-malta/linux.config b/features/buildroot/board/qemu/mips32r2-malta/linux.config new file mode 100644 index 00000000..3a26ac83 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r2-malta/linux.config @@ -0,0 +1,30 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips32r2-malta/readme.txt b/features/buildroot/board/qemu/mips32r2-malta/readme.txt new file mode 100644 index 00000000..9ff3c4b8 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r2-malta/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-mips -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -net nic,model=pcnet -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. No keyboard support has been +enabled. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips32r2el-malta/linux.config b/features/buildroot/board/qemu/mips32r2el-malta/linux.config new file mode 100644 index 00000000..79d73524 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r2el-malta/linux.config @@ -0,0 +1,31 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips32r2el-malta/readme.txt b/features/buildroot/board/qemu/mips32r2el-malta/readme.txt new file mode 100644 index 00000000..745bfea6 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r2el-malta/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-mipsel -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -net nic,model=pcnet -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. No keyboard support has been +enabled. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips32r6-malta/linux.config b/features/buildroot/board/qemu/mips32r6-malta/linux.config new file mode 100644 index 00000000..d5596766 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r6-malta/linux.config @@ -0,0 +1,30 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R6=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips32r6-malta/readme.txt b/features/buildroot/board/qemu/mips32r6-malta/readme.txt new file mode 100644 index 00000000..6a026b21 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r6-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + +qemu-system-mips -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips32r6el-malta/linux.config b/features/buildroot/board/qemu/mips32r6el-malta/linux.config new file mode 100644 index 00000000..d5596766 --- /dev/null +++ b/features/buildroot/board/qemu/mips32r6el-malta/linux.config @@ -0,0 +1,30 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R6=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips32r6el-malta/readme.txt b/features/buildroot/board/qemu/mips32r6el-malta/readme.txt new file mode 100644 index 00000000..f69fd21a --- /dev/null +++ b/features/buildroot/board/qemu/mips32r6el-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + +qemu-system-mipsel -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -net nic,model=pcnet -net user -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips64-malta/linux.config b/features/buildroot/board/qemu/mips64-malta/linux.config new file mode 100644 index 00000000..cd0b5606 --- /dev/null +++ b/features/buildroot/board/qemu/mips64-malta/linux.config @@ -0,0 +1,34 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R1=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips64-malta/readme.txt b/features/buildroot/board/qemu/mips64-malta/readme.txt new file mode 100644 index 00000000..ea3a9254 --- /dev/null +++ b/features/buildroot/board/qemu/mips64-malta/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-mips64 -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips64el-malta/linux.config b/features/buildroot/board/qemu/mips64el-malta/linux.config new file mode 100644 index 00000000..c6b46d4d --- /dev/null +++ b/features/buildroot/board/qemu/mips64el-malta/linux.config @@ -0,0 +1,35 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS64_R1=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips64el-malta/readme.txt b/features/buildroot/board/qemu/mips64el-malta/readme.txt new file mode 100644 index 00000000..144da938 --- /dev/null +++ b/features/buildroot/board/qemu/mips64el-malta/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-mips64el -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips64r6-malta/linux.config b/features/buildroot/board/qemu/mips64r6-malta/linux.config new file mode 100644 index 00000000..0ebfdbdb --- /dev/null +++ b/features/buildroot/board/qemu/mips64r6-malta/linux.config @@ -0,0 +1,34 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R6=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips64r6-malta/readme.txt b/features/buildroot/board/qemu/mips64r6-malta/readme.txt new file mode 100644 index 00000000..cfa16fd8 --- /dev/null +++ b/features/buildroot/board/qemu/mips64r6-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-mips64 -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/mips64r6el-malta/linux.config b/features/buildroot/board/qemu/mips64r6el-malta/linux.config new file mode 100644 index 00000000..0ebfdbdb --- /dev/null +++ b/features/buildroot/board/qemu/mips64r6el-malta/linux.config @@ -0,0 +1,34 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R6=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/mips64r6el-malta/readme.txt b/features/buildroot/board/qemu/mips64r6el-malta/readme.txt new file mode 100644 index 00000000..61a6ceb5 --- /dev/null +++ b/features/buildroot/board/qemu/mips64r6el-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-mips64el -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/nios2-10m50/linux.fragment b/features/buildroot/board/qemu/nios2-10m50/linux.fragment new file mode 100644 index 00000000..76c864f5 --- /dev/null +++ b/features/buildroot/board/qemu/nios2-10m50/linux.fragment @@ -0,0 +1,3 @@ +# Embed the DTB in the kernel image +CONFIG_NIOS2_DTB_SOURCE_BOOL=y +CONFIG_NIOS2_DTB_SOURCE="arch/nios2/boot/dts/10m50_devboard.dts" diff --git a/features/buildroot/board/qemu/nios2-10m50/readme.txt b/features/buildroot/board/qemu/nios2-10m50/readme.txt new file mode 100644 index 00000000..44cbcb08 --- /dev/null +++ b/features/buildroot/board/qemu/nios2-10m50/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-nios2 -kernel output/images/vmlinux -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0. diff --git a/features/buildroot/board/qemu/or1k/linux.config b/features/buildroot/board/qemu/or1k/linux.config new file mode 100644 index 00000000..0a817b1e --- /dev/null +++ b/features/buildroot/board/qemu/or1k/linux.config @@ -0,0 +1,30 @@ +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_OPENRISC_BUILTIN_DTB="or1ksim" +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_TMPFS=y +CONFIG_NETDEVICES=y +CONFIG_ETHOC=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +# CONFIG_USB_SUPPORT is not set diff --git a/features/buildroot/board/qemu/or1k/readme.txt b/features/buildroot/board/qemu/or1k/readme.txt new file mode 100644 index 00000000..df6b467e --- /dev/null +++ b/features/buildroot/board/qemu/or1k/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-or1k -kernel output/images/vmlinux -nographic + +The login prompt will appear in the terminal that started Qemu. + +Ethernet support is not working, yet. + +Tested with QEMU 2.12.0. diff --git a/features/buildroot/board/qemu/ppc-g3beige/linux.config b/features/buildroot/board/qemu/ppc-g3beige/linux.config new file mode 100644 index 00000000..79945535 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-g3beige/linux.config @@ -0,0 +1,25 @@ +CONFIG_ALTIVEC=y +CONFIG_SYSVIPC=y +CONFIG_HIGHMEM=y +CONFIG_YENTA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_IDE_PMAC=y +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_PMU=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_8139CP=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_BOOTX_TEXT=y diff --git a/features/buildroot/board/qemu/ppc-g3beige/readme.txt b/features/buildroot/board/qemu/ppc-g3beige/readme.txt new file mode 100644 index 00000000..608814ee --- /dev/null +++ b/features/buildroot/board/qemu/ppc-g3beige/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-ppc -M g3beige -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 rootwait root=/dev/hda" -serial stdio -net nic,model=rtl8139 -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/ppc-mac99/linux.fragment b/features/buildroot/board/qemu/ppc-mac99/linux.fragment new file mode 100644 index 00000000..b1975f82 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-mac99/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y diff --git a/features/buildroot/board/qemu/ppc-mac99/readme.txt b/features/buildroot/board/qemu/ppc-mac99/readme.txt new file mode 100644 index 00000000..a8a18db5 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-mac99/readme.txt @@ -0,0 +1,5 @@ +Run the emulation with: + + qemu-system-ppc -nographic -vga none -M mac99 -cpu g4 -m 1G -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -net nic,model=sungem -net user -append "root=/dev/sda" + +Tested with QEMU 3.1.0 diff --git a/features/buildroot/board/qemu/ppc-mpc8544ds/linux.config b/features/buildroot/board/qemu/ppc-mpc8544ds/linux.config new file mode 100644 index 00000000..b36847c9 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-mpc8544ds/linux.config @@ -0,0 +1,38 @@ +CONFIG_PPC_85xx=y +CONFIG_PHYS_64BIT=y +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MPC8540_ADS=y +CONFIG_MPC85xx_DS=y +CONFIG_HIGHMEM=y +CONFIG_MATH_EMULATION=y +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=6 +CONFIG_SERIAL_8250_RUNTIME_UARTS=6 +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_OHCI_HCD=y +CONFIG_TMPFS=y diff --git a/features/buildroot/board/qemu/ppc-mpc8544ds/readme.txt b/features/buildroot/board/qemu/ppc-mpc8544ds/readme.txt new file mode 100644 index 00000000..172aad56 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-mpc8544ds/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc -M mpc8544ds -kernel output/images/vmlinux -serial stdio -net nic,model=e1000 -net user + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/ppc-virtex-ml507/linux.config b/features/buildroot/board/qemu/ppc-virtex-ml507/linux.config new file mode 100644 index 00000000..ed4eb792 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-virtex-ml507/linux.config @@ -0,0 +1,36 @@ +CONFIG_44x=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_EBONY is not set +CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y +CONFIG_MATH_EMULATION=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_XILINX_SYSACE=y +CONFIG_NETDEVICES=y +CONFIG_SERIO_XILINX_XPS_PS2=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_XILINX_HWICAP=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_XILINX=y +CONFIG_FB=y +CONFIG_FB_XILINX=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y diff --git a/features/buildroot/board/qemu/ppc-virtex-ml507/readme.txt b/features/buildroot/board/qemu/ppc-virtex-ml507/readme.txt new file mode 100644 index 00000000..6178ace8 --- /dev/null +++ b/features/buildroot/board/qemu/ppc-virtex-ml507/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc -M virtex-ml507 -kernel output/images/vmlinux -m 256 -nographic -append "console=ttyS0" -dtb output/images/virtex440-ml507.dtb + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/ppc64-e5500/linux.fragment b/features/buildroot/board/qemu/ppc64-e5500/linux.fragment new file mode 100644 index 00000000..071a55cc --- /dev/null +++ b/features/buildroot/board/qemu/ppc64-e5500/linux.fragment @@ -0,0 +1,10 @@ +# Enables generic PPC e500 base arch support for QEMU. +# The e5500 is a variant of the e500 arch. +CONFIG_PPC_QEMU_E500=y + +# Enable virtio (blk, rng and net devices) +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_NET=y diff --git a/features/buildroot/board/qemu/ppc64-e5500/readme.txt b/features/buildroot/board/qemu/ppc64-e5500/readme.txt new file mode 100644 index 00000000..80807669 --- /dev/null +++ b/features/buildroot/board/qemu/ppc64-e5500/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc64 -M ppce500 -cpu e5500 -m 256 -kernel output/images/uImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "console=ttyS0 rootwait root=/dev/vda" -serial mon:stdio -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/ppc64-pseries/readme.txt b/features/buildroot/board/qemu/ppc64-pseries/readme.txt new file mode 100644 index 00000000..6a3e96a2 --- /dev/null +++ b/features/buildroot/board/qemu/ppc64-pseries/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc64 -M pseries -cpu POWER7 -m 256 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/ppc64le-pseries/readme.txt b/features/buildroot/board/qemu/ppc64le-pseries/readme.txt new file mode 100644 index 00000000..2728675d --- /dev/null +++ b/features/buildroot/board/qemu/ppc64le-pseries/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + +qemu-system-ppc64 -M pseries -cpu POWER8 -m 256 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses + +The login prompt will appear in the terminal window. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/riscv32-virt/patches/linux/0001-Revert-riscv-Use-latest-system-call-ABI.patch b/features/buildroot/board/qemu/riscv32-virt/patches/linux/0001-Revert-riscv-Use-latest-system-call-ABI.patch new file mode 100644 index 00000000..e0dfaa15 --- /dev/null +++ b/features/buildroot/board/qemu/riscv32-virt/patches/linux/0001-Revert-riscv-Use-latest-system-call-ABI.patch @@ -0,0 +1,66 @@ +From 15f62343916fcb3cae82e618da28eaa82bc8c007 Mon Sep 17 00:00:00 2001 +From: Alistair Francis +Date: Tue, 16 Apr 2019 09:03:41 -0700 +Subject: [PATCH] Revert "riscv: Use latest system call ABI" + +This reverts commit d4c08b9776b392e20efc6198ebe1bc8ec1911d9b. + +The latest RISC-V 32bit glibc submission doesn't work with this patch, +so let's revert it. This revert can be reverted when the glibc +submission is updated to work on the 5.1 kernel. + +Signed-off-by: Alistair Francis +--- + arch/riscv/Kconfig | 1 + + arch/riscv/include/uapi/asm/unistd.h | 5 ++++- + arch/riscv/kernel/vdso/Makefile | 2 -- + 3 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig +index eb56c82d8aa1..43dd2680c696 100644 +--- a/arch/riscv/Kconfig ++++ b/arch/riscv/Kconfig +@@ -11,6 +11,7 @@ config 32BIT + + config RISCV + def_bool y ++ select ARCH_32BIT_OFF_T if !64BIT + # even on 32-bit, physical (and DMA) addresses are > 32-bits + select PHYS_ADDR_T_64BIT + select OF +diff --git a/arch/riscv/include/uapi/asm/unistd.h b/arch/riscv/include/uapi/asm/unistd.h +index 0e2eeeb1fd27..486a288b454c 100644 +--- a/arch/riscv/include/uapi/asm/unistd.h ++++ b/arch/riscv/include/uapi/asm/unistd.h +@@ -17,8 +17,11 @@ + + #ifdef __LP64__ + #define __ARCH_WANT_NEW_STAT +-#define __ARCH_WANT_SET_GET_RLIMIT + #endif /* __LP64__ */ ++#define __ARCH_WANT_SET_GET_RLIMIT ++#ifndef __LP64__ ++#define __ARCH_WANT_TIME32_SYSCALLS ++#endif + + #include + +diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile +index fec62b24df89..eed1c137f618 100644 +--- a/arch/riscv/kernel/vdso/Makefile ++++ b/arch/riscv/kernel/vdso/Makefile +@@ -2,11 +2,9 @@ + + # Symbols present in the vdso + vdso-syms = rt_sigreturn +-ifdef CONFIG_64BIT + vdso-syms += gettimeofday + vdso-syms += clock_gettime + vdso-syms += clock_getres +-endif + vdso-syms += getcpu + vdso-syms += flush_icache + +-- +2.21.0 + diff --git a/features/buildroot/board/qemu/riscv32-virt/readme.txt b/features/buildroot/board/qemu/riscv32-virt/readme.txt new file mode 100644 index 00000000..5d7c1988 --- /dev/null +++ b/features/buildroot/board/qemu/riscv32-virt/readme.txt @@ -0,0 +1,7 @@ +Run Linux in emulation with: + + qemu-system-riscv32 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80400000 -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 3.1 diff --git a/features/buildroot/board/qemu/riscv64-virt/readme.txt b/features/buildroot/board/qemu/riscv64-virt/readme.txt new file mode 100644 index 00000000..c075cc46 --- /dev/null +++ b/features/buildroot/board/qemu/riscv64-virt/readme.txt @@ -0,0 +1,7 @@ +Run Linux in emulation with: + + qemu-system-riscv64 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80200000 -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 3.1 diff --git a/features/buildroot/board/qemu/sh4-r2d/linux.config b/features/buildroot/board/qemu/sh4-r2d/linux.config new file mode 100644 index 00000000..a3d65445 --- /dev/null +++ b/features/buildroot/board/qemu/sh4-r2d/linux.config @@ -0,0 +1,38 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_FLATMEM_MANUAL=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_HEARTBEAT=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FB_SH_MOBILE_HDMI=y +CONFIG_FB_SM501=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SOUND=y +CONFIG_SND_YMFPCI=y +CONFIG_SOUND_PRIME=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_R9701=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/sh4-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch b/features/buildroot/board/qemu/sh4-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch new file mode 100644 index 00000000..36c82d84 --- /dev/null +++ b/features/buildroot/board/qemu/sh4-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch @@ -0,0 +1,61 @@ +From aaaced6d2d6f796ed77e4725ed7ccbedb189c180 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 15 Jun 2018 17:43:38 +0200 +Subject: [PATCH] Revert: serial: sh-sci: increase RX FIFO trigger defaults for + (H)SCIF +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit 18e8cf159177100e69d528293f8cf6875c0b1bca (kernel) + +The last Qemu kernel update [1] introduced a regresion in sh4 SCIF +serial device. Some keyboard presses are very slow to be taken into +account, perhaps not even taken into account at all. This would +explain why our test infrastructure doesn’t manage to login as root +[2][3][4]. + +git bisect reported a kernel patch from 4.11, increasing RX FIFO +trigger defaults value for sh-sci (H)SCIF. The kernel patch itself +looks good but the Qemu emulation is not ready to handle this new +setting. + +From Qemu (2.12.0): target/sh4/README.sh4 +"Configuration of the second serial port (SCIF) is supported. FIFO +handling infrastructure has been started but is not completed yet." + +In order to be able to test sh4 architecture with newer kernel, +revert to the old behaviour. + +[1] https://git.buildroot.net/buildroot/commit/?id=03fb00f2175cdb4565e26fcb9b3da1c1059de1bd +[2] https://gitlab.com/free-electrons/toolchains-builder/-/jobs/72006425 +[3] https://gitlab.com/free-electrons/toolchains-builder/-/jobs/72006427 +[4] https://gitlab.com/free-electrons/toolchains-builder/-/jobs/72006426 + +Signed-off-by: Romain Naour +Cc: Thomas Petazzoni +--- + drivers/tty/serial/sh-sci.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c +index ab757546c6db..138e4dec44fb 100644 +--- a/drivers/tty/serial/sh-sci.c ++++ b/drivers/tty/serial/sh-sci.c +@@ -2793,11 +2793,8 @@ static int sci_init_single(struct platform_device *dev, + sci_port->rx_trigger = 32; + break; + case PORT_SCIF: +- if (p->regtype == SCIx_SH7705_SCIF_REGTYPE) +- /* RX triggering not implemented for this IP */ +- sci_port->rx_trigger = 1; +- else +- sci_port->rx_trigger = 8; ++ /* RX triggering not implemented in Qemu emulation */ ++ sci_port->rx_trigger = 1; + break; + default: + sci_port->rx_trigger = 1; +-- +2.14.4 + diff --git a/features/buildroot/board/qemu/sh4-r2d/readme.txt b/features/buildroot/board/qemu/sh4-r2d/readme.txt new file mode 100644 index 00000000..dd80953b --- /dev/null +++ b/features/buildroot/board/qemu/sh4-r2d/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-sh4 -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "rootwait root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user + +The login prompt will appear in the terminal that started Qemu. +The graphical window is the framebuffer. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/sh4eb-r2d/linux.config b/features/buildroot/board/qemu/sh4eb-r2d/linux.config new file mode 100644 index 00000000..6ead626c --- /dev/null +++ b/features/buildroot/board/qemu/sh4eb-r2d/linux.config @@ -0,0 +1,38 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_FLATMEM_MANUAL=y +CONFIG_CPU_BIG_ENDIAN=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_HEARTBEAT=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FB_SH_MOBILE_HDMI=y +CONFIG_FB_SM501=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SND_YMFPCI=y +CONFIG_SOUND_PRIME=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_R9701=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/sh4eb-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch b/features/buildroot/board/qemu/sh4eb-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch new file mode 100644 index 00000000..36c82d84 --- /dev/null +++ b/features/buildroot/board/qemu/sh4eb-r2d/patches/linux/0001-Revert-serial-sh-sci-increase-RX-FIFO-trigger-defaul.patch @@ -0,0 +1,61 @@ +From aaaced6d2d6f796ed77e4725ed7ccbedb189c180 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 15 Jun 2018 17:43:38 +0200 +Subject: [PATCH] Revert: serial: sh-sci: increase RX FIFO trigger defaults for + (H)SCIF +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit 18e8cf159177100e69d528293f8cf6875c0b1bca (kernel) + +The last Qemu kernel update [1] introduced a regresion in sh4 SCIF +serial device. Some keyboard presses are very slow to be taken into +account, perhaps not even taken into account at all. This would +explain why our test infrastructure doesn’t manage to login as root +[2][3][4]. + +git bisect reported a kernel patch from 4.11, increasing RX FIFO +trigger defaults value for sh-sci (H)SCIF. The kernel patch itself +looks good but the Qemu emulation is not ready to handle this new +setting. + +From Qemu (2.12.0): target/sh4/README.sh4 +"Configuration of the second serial port (SCIF) is supported. FIFO +handling infrastructure has been started but is not completed yet." + +In order to be able to test sh4 architecture with newer kernel, +revert to the old behaviour. + +[1] https://git.buildroot.net/buildroot/commit/?id=03fb00f2175cdb4565e26fcb9b3da1c1059de1bd +[2] https://gitlab.com/free-electrons/toolchains-builder/-/jobs/72006425 +[3] https://gitlab.com/free-electrons/toolchains-builder/-/jobs/72006427 +[4] https://gitlab.com/free-electrons/toolchains-builder/-/jobs/72006426 + +Signed-off-by: Romain Naour +Cc: Thomas Petazzoni +--- + drivers/tty/serial/sh-sci.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c +index ab757546c6db..138e4dec44fb 100644 +--- a/drivers/tty/serial/sh-sci.c ++++ b/drivers/tty/serial/sh-sci.c +@@ -2793,11 +2793,8 @@ static int sci_init_single(struct platform_device *dev, + sci_port->rx_trigger = 32; + break; + case PORT_SCIF: +- if (p->regtype == SCIx_SH7705_SCIF_REGTYPE) +- /* RX triggering not implemented for this IP */ +- sci_port->rx_trigger = 1; +- else +- sci_port->rx_trigger = 8; ++ /* RX triggering not implemented in Qemu emulation */ ++ sci_port->rx_trigger = 1; + break; + default: + sci_port->rx_trigger = 1; +-- +2.14.4 + diff --git a/features/buildroot/board/qemu/sh4eb-r2d/readme.txt b/features/buildroot/board/qemu/sh4eb-r2d/readme.txt new file mode 100644 index 00000000..e71a9bce --- /dev/null +++ b/features/buildroot/board/qemu/sh4eb-r2d/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-sh4eb -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "rootwait root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user + +The login prompt will appear in the terminal that started Qemu. +The graphical window is the framebuffer. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/sparc-ss10/linux.config b/features/buildroot/board/qemu/sparc-ss10/linux.config new file mode 100644 index 00000000..cb8d01dc --- /dev/null +++ b/features/buildroot/board/qemu/sparc-ss10/linux.config @@ -0,0 +1,31 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=m +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_SUNESP=y +CONFIG_NETDEVICES=y +CONFIG_SUNLANCE=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_SUNKBD=y +CONFIG_MOUSE_SERIAL=y +CONFIG_SERIAL_SUNZILOG=y +CONFIG_SERIAL_SUNZILOG_CONSOLE=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_SUN_OPENPROMIO=m +CONFIG_EXT4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/sparc-ss10/readme.txt b/features/buildroot/board/qemu/sparc-ss10/readme.txt new file mode 100644 index 00000000..33833c2d --- /dev/null +++ b/features/buildroot/board/qemu/sparc-ss10/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-sparc -M SS-10 -kernel output/images/zImage -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0,115200" -serial stdio -net nic,model=lance -net user + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/sparc64-sun4u/linux.config b/features/buildroot/board/qemu/sparc64-sun4u/linux.config new file mode 100644 index 00000000..0e1e1687 --- /dev/null +++ b/features/buildroot/board/qemu/sparc64-sun4u/linux.config @@ -0,0 +1,25 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_EMBEDDED=y +CONFIG_MODULES=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_CMD64X=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf-8" +CONFIG_MAGIC_SYSRQ=y diff --git a/features/buildroot/board/qemu/sparc64-sun4u/readme.txt b/features/buildroot/board/qemu/sparc64-sun4u/readme.txt new file mode 100644 index 00000000..f2e6e81a --- /dev/null +++ b/features/buildroot/board/qemu/sparc64-sun4u/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-sparc64 -M sun4u -kernel output/images/vmlinux -append "rootwait root=/dev/sda console=ttyS0,115200" -serial stdio -drive file=output/images/rootfs.ext2,format=raw -net nic,model=e1000 -net user + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/x86/linux.config b/features/buildroot/board/qemu/x86/linux.config new file mode 100644 index 00000000..79f7537d --- /dev/null +++ b/features/buildroot/board/qemu/x86/linux.config @@ -0,0 +1,51 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/features/buildroot/board/qemu/x86/readme.txt b/features/buildroot/board/qemu/x86/readme.txt new file mode 100644 index 00000000..42fc2439 --- /dev/null +++ b/features/buildroot/board/qemu/x86/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda" -net nic,model=virtio -net user + +Optionally add -smp N to emulate a SMP system with N CPUs. + +The login prompt will appear in the graphical window. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/x86_64/linux.config b/features/buildroot/board/qemu/x86_64/linux.config new file mode 100644 index 00000000..5fa33d44 --- /dev/null +++ b/features/buildroot/board/qemu/x86_64/linux.config @@ -0,0 +1,52 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/features/buildroot/board/qemu/x86_64/readme.txt b/features/buildroot/board/qemu/x86_64/readme.txt new file mode 100644 index 00000000..4a1c0c0f --- /dev/null +++ b/features/buildroot/board/qemu/x86_64/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda" -net nic,model=virtio -net user + +Optionally add -smp N to emulate a SMP system with N CPUs. + +The login prompt will appear in the graphical window. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/qemu/xtensa-lx60/linux-nommu.config b/features/buildroot/board/qemu/xtensa-lx60/linux-nommu.config new file mode 100644 index 00000000..8077645e --- /dev/null +++ b/features/buildroot/board/qemu/xtensa-lx60/linux-nommu.config @@ -0,0 +1,39 @@ +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_XTENSA_VARIANT_CUSTOM=y +CONFIG_XTENSA_VARIANT_CUSTOM_NAME="dc233c" +# CONFIG_XTENSA_VARIANT_MMU is not set +CONFIG_XTENSA_UNALIGNED_USER=y +CONFIG_PREEMPT=y +CONFIG_MEMMAP_CACHEATTR=0x2cccccc7 +CONFIG_KERNEL_LOAD_ADDRESS=0x00003000 +# CONFIG_PCI is not set +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 memmap=0x04000000@0" +CONFIG_DEFAULT_MEM_START=0x00000000 +CONFIG_BINFMT_FLAT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_DNS_RESOLVER=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_NETDEVICES=y +CONFIG_MARVELL_PHY=y +# CONFIG_WLAN is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y +CONFIG_FANOTIFY=y +CONFIG_PRINTK_TIME=y +# CONFIG_S32C1I_SELFTEST is not set diff --git a/features/buildroot/board/qemu/xtensa-lx60/linux.config b/features/buildroot/board/qemu/xtensa-lx60/linux.config new file mode 100644 index 00000000..625b8604 --- /dev/null +++ b/features/buildroot/board/qemu/xtensa-lx60/linux.config @@ -0,0 +1,36 @@ +# CONFIG_SWAP is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_XTENSA_VARIANT_DC233C=y +CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX=y +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,38400 memmap=0x04000000@0" +# CONFIG_COMPACTION is not set +# CONFIG_BOUNCE is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_NETDEVICES=y +# CONFIG_WLAN is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_LD_NO_RELAX=y +# CONFIG_S32C1I_SELFTEST is not set diff --git a/features/buildroot/board/qemu/xtensa-lx60/readme.txt b/features/buildroot/board/qemu/xtensa-lx60/readme.txt new file mode 100644 index 00000000..4287e1f0 --- /dev/null +++ b/features/buildroot/board/qemu/xtensa-lx60/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-xtensa -M lx60 -cpu dc233c -monitor null -nographic -kernel output/images/Image.elf + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.12.0 diff --git a/features/buildroot/board/raspberrypi/genimage-raspberrypi.cfg b/features/buildroot/board/raspberrypi/genimage-raspberrypi.cfg new file mode 100644 index 00000000..bd5166a0 --- /dev/null +++ b/features/buildroot/board/raspberrypi/genimage-raspberrypi.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "bcm2708-rpi-b.dtb", + "bcm2708-rpi-b-plus.dtb", + "bcm2708-rpi-cm.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg b/features/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg new file mode 100644 index 00000000..a9d4c450 --- /dev/null +++ b/features/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + files = { + "bcm2708-rpi-b-plus.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg b/features/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg new file mode 100644 index 00000000..3aafd9b6 --- /dev/null +++ b/features/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg @@ -0,0 +1,31 @@ +image boot.vfat { + vfat { + files = { + "bcm2708-rpi-0-w.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "rpi-firmware/overlays", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg b/features/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg new file mode 100644 index 00000000..a3be2a34 --- /dev/null +++ b/features/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + files = { + "bcm2709-rpi-2-b.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg b/features/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg new file mode 100644 index 00000000..af1d17cd --- /dev/null +++ b/features/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "bcm2710-rpi-3-b.dtb", + "bcm2710-rpi-3-b-plus.dtb", + "bcm2837-rpi-3-b.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "rpi-firmware/overlays", + "Image" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg b/features/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg new file mode 100644 index 00000000..0a547241 --- /dev/null +++ b/features/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "bcm2710-rpi-3-b.dtb", + "bcm2710-rpi-3-b-plus.dtb", + "bcm2710-rpi-cm3.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "rpi-firmware/overlays", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/raspberrypi/post-build.sh b/features/buildroot/board/raspberrypi/post-build.sh new file mode 100755 index 00000000..5e5eb711 --- /dev/null +++ b/features/buildroot/board/raspberrypi/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty1 +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 +fi diff --git a/features/buildroot/board/raspberrypi/post-image.sh b/features/buildroot/board/raspberrypi/post-image.sh new file mode 100755 index 00000000..70447cd4 --- /dev/null +++ b/features/buildroot/board/raspberrypi/post-image.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -e + +BOARD_DIR="$(dirname $0)" +BOARD_NAME="$(basename ${BOARD_DIR})" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +for arg in "$@" +do + case "${arg}" in + --add-pi3-miniuart-bt-overlay) + if ! grep -qE '^dtoverlay=' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + echo "Adding 'dtoverlay=pi3-miniuart-bt' to config.txt (fixes ttyAMA0 serial console)." + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# fixes rpi3 ttyAMA0 serial console +dtoverlay=pi3-miniuart-bt +__EOF__ + fi + ;; + --aarch64) + # Run a 64bits kernel (armv8) + sed -e '/^kernel=/s,=.*,=Image,' -i "${BINARIES_DIR}/rpi-firmware/config.txt" + if ! grep -qE '^arm_64bit=1' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# enable 64bits support +arm_64bit=1 +__EOF__ + fi + + # Enable uart console + if ! grep -qE '^enable_uart=1' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# enable rpi3 ttyS0 serial console +enable_uart=1 +__EOF__ + fi + ;; + --gpu_mem_256=*|--gpu_mem_512=*|--gpu_mem_1024=*) + # Set GPU memory + gpu_mem="${arg:2}" + sed -e "/^${gpu_mem%=*}=/s,=.*,=${gpu_mem##*=}," -i "${BINARIES_DIR}/rpi-firmware/config.txt" + ;; + esac + +done + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/raspberrypi/readme.txt b/features/buildroot/board/raspberrypi/readme.txt new file mode 100644 index 00000000..9f915810 --- /dev/null +++ b/features/buildroot/board/raspberrypi/readme.txt @@ -0,0 +1,93 @@ +Raspberry Pi + +Intro +===== + +These instructions apply to all models of the Raspberry Pi: + - the original models A and B, + - the "enhanced" models A+ and B+, + - the model B2 (aka Raspberry Pi 2) + - the model B3 (aka Raspberry Pi 3). + +How to build it +=============== + +Configure Buildroot +------------------- + +There are two RaspberryPi defconfig files in Buildroot, one for each +major variant, which you should base your work on: + +For models A, B, A+ or B+: + + $ make raspberrypi_defconfig + +For model Zero (model A+ in smaller form factor): + + $ make raspberrypi0_defconfig + +For model 2 B: + + $ make raspberrypi2_defconfig + +For model 3 B and B+: + + $ make raspberrypi3_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- bcm2708-rpi-b.dtb [1] + +-- bcm2708-rpi-b-plus.dtb [1] + +-- bcm2709-rpi-2-b.dtb [1] + +-- bcm2710-rpi-3-b.dtb [1] + +-- bcm2710-rpi-3-b-plus.dtb [1] + +-- boot.vfat + +-- rootfs.ext4 + +-- rpi-firmware/ + | +-- bootcode.bin + | +-- cmdline.txt + | +-- config.txt + | +-- fixup.dat + | +-- start.elf + | `-- overlays/ [2] + +-- sdcard.img + `-- zImage + +[1] Not all of them will be present, depending on the RaspberryPi + model you are using. + +[2] Only for the Raspberry Pi 3 Model (overlay pi3-miniuart-bt is needed + to enable the RPi3 serial console otherwise occupied by the bluetooth + chip). Alternative would be to disable the serial console in cmdline.txt + and /etc/inittab. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your Raspberry Pi, and power it up. Your new system +should come up now and start two consoles: one on the serial port on +the P1 header, one on the HDMI output where you can login using a USB +keyboard. diff --git a/features/buildroot/board/raspberrypi0 b/features/buildroot/board/raspberrypi0 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/features/buildroot/board/raspberrypi0 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/features/buildroot/board/raspberrypi0w b/features/buildroot/board/raspberrypi0w new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/features/buildroot/board/raspberrypi0w @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/features/buildroot/board/raspberrypi2 b/features/buildroot/board/raspberrypi2 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/features/buildroot/board/raspberrypi2 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/features/buildroot/board/raspberrypi3 b/features/buildroot/board/raspberrypi3 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/features/buildroot/board/raspberrypi3 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/features/buildroot/board/raspberrypi3-64 b/features/buildroot/board/raspberrypi3-64 new file mode 120000 index 00000000..fcdafc81 --- /dev/null +++ b/features/buildroot/board/raspberrypi3-64 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/features/buildroot/board/roseapplepi/genimage.cfg b/features/buildroot/board/roseapplepi/genimage.cfg new file mode 100644 index 00000000..4d40e65b --- /dev/null +++ b/features/buildroot/board/roseapplepi/genimage.cfg @@ -0,0 +1,43 @@ +# Minimal SD card image for the Roseapple Pi +# +image boot.vfat { + vfat { + files = { + "uEnv.txt", + "uImage" + } + file kernel.dtb { + image = "actduino_bubble_gum_sdboot_linux.dtb" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition s500-bootloader { + in-partition-table = "no" + image = "s500-bootloader.bin" + offset = 0x200200 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 0x300000 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/features/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch b/features/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch new file mode 100644 index 00000000..79e8c800 --- /dev/null +++ b/features/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch @@ -0,0 +1,31 @@ +[PATCH] unbreak xhci-trace compilation + +When commit 84a99f6fc5d4 (xhci: add traces for debug messages in +xhci_address_device) was backported to the owl tree as part of commit +5b2ea66f15396 (usb: add owl usb driver), the specific CFLAGS needed for +xhci-trace.c were missed, causing build breakage: + + CC drivers/usb/host/xhci-trace.o +In file included from drivers/usb/host/xhci-trace.h:151:0, + from drivers/usb/host/xhci-trace.c:15: +include/trace/define_trace.h:79:43: fatal error: ./xhci-trace.h: No such file or directory + +Signed-off-by: Peter Korsgaard +--- + drivers/usb/host/Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +Index: linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b/drivers/usb/host/Makefile +=================================================================== +--- linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b.orig/drivers/usb/host/Makefile ++++ linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b/drivers/usb/host/Makefile +@@ -4,6 +4,9 @@ + + ccflags-$(CONFIG_USB_DEBUG) := -DDEBUG + ++# tell define_trace.h where to find the xhci trace header ++CFLAGS_xhci-trace.o := -I$(src) ++ + isp1760-y := isp1760-hcd.o isp1760-if.o + + fhci-y := fhci-hcd.o fhci-hub.o fhci-q.o diff --git a/features/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch b/features/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch new file mode 100644 index 00000000..8d3c703e --- /dev/null +++ b/features/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch @@ -0,0 +1,99 @@ +From 96b4fb75d15be65edc5494579e4a944534042f99 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 13 Oct 2014 15:51:05 -0700 +Subject: [PATCH] kernel: add support for gcc 5 + +We're missing include/linux/compiler-gcc5.h which is required now +because gcc branched off to v5 in trunk. + +Just copy the relevant bits out of include/linux/compiler-gcc4.h, +no new code is added as of now. + +This fixes a build error when using gcc 5. + +Signed-off-by: Sasha Levin +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +(cherry picked from commit 71458cfc782eafe4b27656e078d379a34e472adf) +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc5.h | 66 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 66 insertions(+) + create mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +new file mode 100644 +index 0000000..cdd1cc2 +--- /dev/null ++++ b/include/linux/compiler-gcc5.h +@@ -0,0 +1,66 @@ ++#ifndef __LINUX_COMPILER_H ++#error "Please don't include directly, include instead." ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __must_check __attribute__((warn_unused_result)) ++#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ++ ++/* Mark functions as cold. gcc will assume any path leading to a call ++ to them will be unlikely. This means a lot of manual unlikely()s ++ are unnecessary now for any paths leading to the usual suspects ++ like BUG(), printk(), panic() etc. [but let's keep them for now for ++ older compilers] ++ ++ Early snapshots of gcc 4.3 don't support this and we can't detect this ++ in the preprocessor, but we can live with this because they're unreleased. ++ Maketime probing would be overkill here. ++ ++ gcc also has a __attribute__((__hot__)) to move hot functions into ++ a special section, but I don't see any sense in this right now in ++ the kernel context */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++ ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++/* ++ * Tell the optimizer that something else uses this function or variable. ++ */ ++#define __visible __attribute__((externally_visible)) ++ ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * Fixed in GCC 4.8.2 and later versions. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +-- +2.10.2 + diff --git a/features/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch b/features/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch new file mode 100644 index 00000000..da38f266 --- /dev/null +++ b/features/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch @@ -0,0 +1,54 @@ +From 8ac9a3f6dbf00d861134bea3f2c930defed6311a Mon Sep 17 00:00:00 2001 +From: Behan Webster +Date: Wed, 24 Sep 2014 01:06:46 +0100 +Subject: [PATCH] ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h + +With compilers which follow the C99 standard (like modern versions of gcc and +clang), "extern inline" does the wrong thing (emits code for an externally +linkable version of the inline function). In this case using static inline +and removing the NULL version of return_address in return_address.c does +the right thing. + +Signed-off-by: Behan Webster +Reviewed-by: Mark Charlebois +Acked-by: Steven Rostedt +Signed-off-by: Russell King +(cherry picked from commit aeea3592a13bf12861943e44fc48f1f270941f8d) +Signed-off-by: Peter Korsgaard +--- + arch/arm/include/asm/ftrace.h | 2 +- + arch/arm/kernel/return_address.c | 5 ----- + 2 files changed, 1 insertion(+), 6 deletions(-) + +diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h +index f89515a..2bb8cac 100644 +--- a/arch/arm/include/asm/ftrace.h ++++ b/arch/arm/include/asm/ftrace.h +@@ -45,7 +45,7 @@ void *return_address(unsigned int); + + #else + +-extern inline void *return_address(unsigned int level) ++static inline void *return_address(unsigned int level) + { + return NULL; + } +diff --git a/arch/arm/kernel/return_address.c b/arch/arm/kernel/return_address.c +index 2f8f523..a3b587f 100755 +--- a/arch/arm/kernel/return_address.c ++++ b/arch/arm/kernel/return_address.c +@@ -63,11 +63,6 @@ void *return_address(unsigned int level) + //#warning "TODO: return_address should use unwind tables" + //#endif + +-void *return_address(unsigned int level) +-{ +- return NULL; +-} +- + #endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) / else */ + + EXPORT_SYMBOL_GPL(return_address); +-- +2.10.2 + diff --git a/features/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch b/features/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch new file mode 100644 index 00000000..d76e2851 --- /dev/null +++ b/features/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch @@ -0,0 +1,121 @@ +From ef34609395c72a1e777ef9c3fb6ce60aa92976bb Mon Sep 17 00:00:00 2001 +From: Marco Franceschetti +Date: Sun, 13 Mar 2016 09:44:54 +0100 +Subject: [PATCH] Fix compile errors with gcc5 + +(cherry picked from commit e824d45043efd49607f66c89c921b07c1523bf9e) +Signed-off-by: Peter Korsgaard +--- + drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h | 6 +++--- + drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h | 6 +++--- + drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h | 6 +++--- + drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h | 6 +++--- + 4 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h b/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h +index fc293c4..0898cd4 100755 +--- a/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h +@@ -1314,18 +1314,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +diff --git a/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h b/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h +index 09475ef..56e0f5a 100755 +--- a/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h +@@ -1318,18 +1318,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +diff --git a/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h b/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h +index 5dfc421..95144b6 100755 +--- a/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h +@@ -1314,18 +1314,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +diff --git a/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h b/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h +index 09475ef..56e0f5a 100755 +--- a/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h +@@ -1318,18 +1318,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +-- +2.10.2 + diff --git a/features/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch b/features/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch new file mode 100644 index 00000000..791dd930 --- /dev/null +++ b/features/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch @@ -0,0 +1,363 @@ +From 21be6b635320321216dde9201fa57a3aed60ee12 Mon Sep 17 00:00:00 2001 +From: Joe Perches +Date: Thu, 25 Jun 2015 15:01:02 -0700 +Subject: [PATCH] compiler-gcc: integrate the various compiler-gcc[345].h files + +As gcc major version numbers are going to advance rather rapidly in the +future, there's no real value in separate files for each compiler +version. + +Deduplicate some of the macros #defined in each file too. + +Neaten comments using normal kernel commenting style. + +Signed-off-by: Joe Perches +Cc: Andi Kleen +Cc: Michal Marek +Cc: Segher Boessenkool +Cc: Sasha Levin +Cc: Anton Blanchard +Cc: Alan Modra +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +(cherry picked from commit cb984d101b30eb7478d32df56a0023e4603cba7f) +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc.h | 120 ++++++++++++++++++++++++++++++++++++++++-- + include/linux/compiler-gcc3.h | 23 -------- + include/linux/compiler-gcc4.h | 88 ------------------------------- + include/linux/compiler-gcc5.h | 66 ----------------------- + 4 files changed, 116 insertions(+), 181 deletions(-) + delete mode 100644 include/linux/compiler-gcc3.h + delete mode 100644 include/linux/compiler-gcc4.h + delete mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h +index 24545cd90a25..0c5d746850c2 100644 +--- a/include/linux/compiler-gcc.h ++++ b/include/linux/compiler-gcc.h +@@ -97,10 +97,122 @@ + #define __maybe_unused __attribute__((unused)) + #define __always_unused __attribute__((unused)) + +-#define __gcc_header(x) #x +-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h) +-#define gcc_header(x) _gcc_header(x) +-#include gcc_header(__GNUC__) ++/* gcc version specific checks */ ++ ++#if GCC_VERSION < 30200 ++# error Sorry, your compiler is too old - please upgrade it. ++#endif ++ ++#if GCC_VERSION < 30300 ++# define __used __attribute__((__unused__)) ++#else ++# define __used __attribute__((__used__)) ++#endif ++ ++#ifdef CONFIG_GCOV_KERNEL ++# if GCC_VERSION < 30400 ++# error "GCOV profiling support for gcc versions below 3.4 not included" ++# endif /* __GNUC_MINOR__ */ ++#endif /* CONFIG_GCOV_KERNEL */ ++ ++#if GCC_VERSION >= 30400 ++#define __must_check __attribute__((warn_unused_result)) ++#endif ++ ++#if GCC_VERSION >= 40000 ++ ++/* GCC 4.1.[01] miscompiles __weak */ ++#ifdef __KERNEL__ ++# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 ++# error Your version of gcc miscompiles the __weak directive ++# endif ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __compiler_offsetof(a, b) \ ++ __builtin_offsetof(a, b) ++ ++#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 ++# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) ++#endif ++ ++#if GCC_VERSION >= 40300 ++/* Mark functions as cold. gcc will assume any path leading to a call ++ * to them will be unlikely. This means a lot of manual unlikely()s ++ * are unnecessary now for any paths leading to the usual suspects ++ * like BUG(), printk(), panic() etc. [but let's keep them for now for ++ * older compilers] ++ * ++ * Early snapshots of gcc 4.3 don't support this and we can't detect this ++ * in the preprocessor, but we can live with this because they're unreleased. ++ * Maketime probing would be overkill here. ++ * ++ * gcc also has a __attribute__((__hot__)) to move hot functions into ++ * a special section, but I don't see any sense in this right now in ++ * the kernel context ++ */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++#endif /* GCC_VERSION >= 40300 */ ++ ++#if GCC_VERSION >= 40500 ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++#endif /* GCC_VERSION >= 40500 */ ++ ++#if GCC_VERSION >= 40600 ++/* ++ * Tell the optimizer that something else uses this function or variable. ++ */ ++#define __visible __attribute__((externally_visible)) ++#endif ++ ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#if GCC_VERSION >= 40400 ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#endif ++#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ ++ ++#if GCC_VERSION >= 50000 ++#define KASAN_ABI_VERSION 4 ++#elif GCC_VERSION >= 40902 ++#define KASAN_ABI_VERSION 3 ++#endif ++ ++#endif /* gcc version >= 40000 specific checks */ + + #if !defined(__noclone) + #define __noclone /* not needed */ +diff --git a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h +deleted file mode 100644 +index 7d89febe4d79..000000000000 +--- a/include/linux/compiler-gcc3.h ++++ /dev/null +@@ -1,23 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#if GCC_VERSION < 30200 +-# error Sorry, your compiler is too old - please upgrade it. +-#endif +- +-#if GCC_VERSION >= 30300 +-# define __used __attribute__((__used__)) +-#else +-# define __used __attribute__((__unused__)) +-#endif +- +-#if GCC_VERSION >= 30400 +-#define __must_check __attribute__((warn_unused_result)) +-#endif +- +-#ifdef CONFIG_GCOV_KERNEL +-# if GCC_VERSION < 30400 +-# error "GCOV profiling support for gcc versions below 3.4 not included" +-# endif /* __GNUC_MINOR__ */ +-#endif /* CONFIG_GCOV_KERNEL */ +diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h +deleted file mode 100644 +index 2507fd2a1eb4..000000000000 +--- a/include/linux/compiler-gcc4.h ++++ /dev/null +@@ -1,88 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-/* GCC 4.1.[01] miscompiles __weak */ +-#ifdef __KERNEL__ +-# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 +-# error Your version of gcc miscompiles the __weak directive +-# endif +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a,b) __builtin_offsetof(a,b) +- +-#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 +-# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) +-#endif +- +-#if GCC_VERSION >= 40300 +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +-#endif /* GCC_VERSION >= 40300 */ +- +-#if GCC_VERSION >= 40500 +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-#endif /* GCC_VERSION >= 40500 */ +- +-#if GCC_VERSION >= 40600 +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +-#endif +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#if GCC_VERSION >= 40400 +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#endif +-#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +deleted file mode 100644 +index cdd1cc202d51..000000000000 +--- a/include/linux/compiler-gcc5.h ++++ /dev/null +@@ -1,66 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) +- +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +- +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +-- +2.11.0 + diff --git a/features/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch b/features/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch new file mode 100644 index 00000000..ae19a490 --- /dev/null +++ b/features/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch @@ -0,0 +1,809 @@ +From 9b2c282b348dfe966bbba967dc7a45ce817cce50 Mon Sep 17 00:00:00 2001 +From: Tom Rini +Date: Mon, 29 Feb 2016 11:34:15 -0500 +Subject: [PATCH] compiler*.h: sync include/linux/compiler*.h with Linux + 4.5-rc6 + +Copy these from Linux v4.5-rc6 tag. + +This is needed so that we can keep up with newer gcc versions. Note +that we don't have the uapi/ hierarchy from the kernel so continue to +use + +Signed-off-by: Tom Rini +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc.h | 259 ++++++++++++++++++++++++++++++++--------- + include/linux/compiler-gcc3.h | 23 ---- + include/linux/compiler-gcc4.h | 88 -------------- + include/linux/compiler-gcc5.h | 65 ----------- + include/linux/compiler-intel.h | 5 + + include/linux/compiler.h | 178 ++++++++++++++++++++++++++-- + 6 files changed, 383 insertions(+), 235 deletions(-) + delete mode 100644 include/linux/compiler-gcc3.h + delete mode 100644 include/linux/compiler-gcc4.h + delete mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h +index e057bd2a84..22ab246fee 100644 +--- a/include/linux/compiler-gcc.h ++++ b/include/linux/compiler-gcc.h +@@ -5,14 +5,28 @@ + /* + * Common definitions for all gcc versions go here. + */ +-#define GCC_VERSION (__GNUC__ * 10000 \ +- + __GNUC_MINOR__ * 100 \ +- + __GNUC_PATCHLEVEL__) +- ++#define GCC_VERSION (__GNUC__ * 10000 \ ++ + __GNUC_MINOR__ * 100 \ ++ + __GNUC_PATCHLEVEL__) + + /* Optimization barrier */ ++ + /* The "volatile" is due to gcc bugs */ + #define barrier() __asm__ __volatile__("": : :"memory") ++/* ++ * This version is i.e. to prevent dead stores elimination on @ptr ++ * where gcc and llvm may behave differently when otherwise using ++ * normal barrier(): while gcc behavior gets along with a normal ++ * barrier(), llvm needs an explicit input variable to be assumed ++ * clobbered. The issue is as follows: while the inline asm might ++ * access any memory it wants, the compiler could have fit all of ++ * @ptr into memory registers instead, and since @ptr never escaped ++ * from that, it proofed that the inline asm wasn't touching any of ++ * it. This version works well with both compilers, i.e. we're telling ++ * the compiler that the inline asm absolutely may see the contents ++ * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 ++ */ ++#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") + + /* + * This macro obfuscates arithmetic on a variable address so that gcc +@@ -32,58 +46,63 @@ + * the inline assembly constraint from =g to =r, in this particular + * case either is valid. + */ +-#define RELOC_HIDE(ptr, off) \ +- ({ unsigned long __ptr; \ +- __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ +- (typeof(ptr)) (__ptr + (off)); }) ++#define RELOC_HIDE(ptr, off) \ ++({ \ ++ unsigned long __ptr; \ ++ __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ ++ (typeof(ptr)) (__ptr + (off)); \ ++}) + + /* Make the optimizer believe the variable can be manipulated arbitrarily. */ +-#define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var)) ++#define OPTIMIZER_HIDE_VAR(var) \ ++ __asm__ ("" : "=r" (var) : "0" (var)) + + #ifdef __CHECKER__ +-#define __must_be_array(arr) 0 ++#define __must_be_array(a) 0 + #else + /* &a[0] degrades to a pointer: a different type from an array */ +-#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) ++#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) + #endif + + /* + * Force always-inline if the user requests it so via the .config, + * or if gcc is too old: + */ +-#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ ++#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ + !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) +-# define inline inline __attribute__((always_inline)) notrace +-# define __inline__ __inline__ __attribute__((always_inline)) notrace +-# define __inline __inline __attribute__((always_inline)) notrace ++#define inline inline __attribute__((always_inline)) notrace ++#define __inline__ __inline__ __attribute__((always_inline)) notrace ++#define __inline __inline __attribute__((always_inline)) notrace + #else + /* A lot of inline functions can cause havoc with function tracing */ +-# define inline inline notrace +-# define __inline__ __inline__ notrace +-# define __inline __inline notrace ++#define inline inline notrace ++#define __inline__ __inline__ notrace ++#define __inline __inline notrace + #endif + +-#define __deprecated __attribute__((deprecated)) +-#ifndef __packed +-#define __packed __attribute__((packed)) +-#endif +-#ifndef __weak +-#define __weak __attribute__((weak)) +-#endif ++#define __always_inline inline __attribute__((always_inline)) ++#define noinline __attribute__((noinline)) ++ ++#define __deprecated __attribute__((deprecated)) ++#define __packed __attribute__((packed)) ++#define __weak __attribute__((weak)) ++#define __alias(symbol) __attribute__((alias(#symbol))) + + /* +- * it doesn't make sense on ARM (currently the only user of __naked) to trace +- * naked functions because then mcount is called without stack and frame pointer +- * being set up and there is no chance to restore the lr register to the value +- * before mcount was called. ++ * it doesn't make sense on ARM (currently the only user of __naked) ++ * to trace naked functions because then mcount is called without ++ * stack and frame pointer being set up and there is no chance to ++ * restore the lr register to the value before mcount was called. ++ * ++ * The asm() bodies of naked functions often depend on standard calling ++ * conventions, therefore they must be noinline and noclone. + * +- * The asm() bodies of naked functions often depend on standard calling conventions, +- * therefore they must be noinline and noclone. GCC 4.[56] currently fail to enforce +- * this, so we must do so ourselves. See GCC PR44290. ++ * GCC 4.[56] currently fail to enforce this, so we must do so ourselves. ++ * See GCC PR44290. + */ +-#define __naked __attribute__((naked)) noinline __noclone notrace ++#define __naked __attribute__((naked)) noinline __noclone notrace + +-#define __noreturn __attribute__((noreturn)) ++#define __noreturn __attribute__((noreturn)) + + /* + * From the GCC manual: +@@ -95,34 +114,170 @@ + * would be. + * [...] + */ +-#ifndef __pure +-#define __pure __attribute__((pure)) ++#define __pure __attribute__((pure)) ++#define __aligned(x) __attribute__((aligned(x))) ++#define __printf(a, b) __attribute__((format(printf, a, b))) ++#define __scanf(a, b) __attribute__((format(scanf, a, b))) ++#define __attribute_const__ __attribute__((__const__)) ++#define __maybe_unused __attribute__((unused)) ++#define __always_unused __attribute__((unused)) ++ ++/* gcc version specific checks */ ++ ++#if GCC_VERSION < 30200 ++# error Sorry, your compiler is too old - please upgrade it. ++#endif ++ ++#if GCC_VERSION < 30300 ++# define __used __attribute__((__unused__)) ++#else ++# define __used __attribute__((__used__)) ++#endif ++ ++#ifdef CONFIG_GCOV_KERNEL ++# if GCC_VERSION < 30400 ++# error "GCOV profiling support for gcc versions below 3.4 not included" ++# endif /* __GNUC_MINOR__ */ ++#endif /* CONFIG_GCOV_KERNEL */ ++ ++#if GCC_VERSION >= 30400 ++#define __must_check __attribute__((warn_unused_result)) ++#endif ++ ++#if GCC_VERSION >= 40000 ++ ++/* GCC 4.1.[01] miscompiles __weak */ ++#ifdef __KERNEL__ ++# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 ++# error Your version of gcc miscompiles the __weak directive ++# endif ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __compiler_offsetof(a, b) \ ++ __builtin_offsetof(a, b) ++ ++#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 ++# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) ++#endif ++ ++#if GCC_VERSION >= 40300 ++/* Mark functions as cold. gcc will assume any path leading to a call ++ * to them will be unlikely. This means a lot of manual unlikely()s ++ * are unnecessary now for any paths leading to the usual suspects ++ * like BUG(), printk(), panic() etc. [but let's keep them for now for ++ * older compilers] ++ * ++ * Early snapshots of gcc 4.3 don't support this and we can't detect this ++ * in the preprocessor, but we can live with this because they're unreleased. ++ * Maketime probing would be overkill here. ++ * ++ * gcc also has a __attribute__((__hot__)) to move hot functions into ++ * a special section, but I don't see any sense in this right now in ++ * the kernel context ++ */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++#endif /* GCC_VERSION >= 40300 */ ++ ++#if GCC_VERSION >= 40500 ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++#endif /* GCC_VERSION >= 40500 */ ++ ++#if GCC_VERSION >= 40600 ++/* ++ * When used with Link Time Optimization, gcc can optimize away C functions or ++ * variables which are referenced only from assembly code. __visible tells the ++ * optimizer that something else uses this function or variable, thus preventing ++ * this. ++ */ ++#define __visible __attribute__((externally_visible)) + #endif +-#ifndef __aligned +-#define __aligned(x) __attribute__((aligned(x))) ++ ++ ++#if GCC_VERSION >= 40900 && !defined(__CHECKER__) ++/* ++ * __assume_aligned(n, k): Tell the optimizer that the returned ++ * pointer can be assumed to be k modulo n. The second argument is ++ * optional (default 0), so we use a variadic macro to make the ++ * shorthand. ++ * ++ * Beware: Do not apply this to functions which may return ++ * ERR_PTRs. Also, it is probably unwise to apply it to functions ++ * returning extra information in the low bits (but in that case the ++ * compiler should see some alignment anyway, when the return value is ++ * massaged by 'flags = ptr & 3; ptr &= ~3;'). ++ */ ++#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__))) + #endif +-#define __printf(a, b) __attribute__((format(printf, a, b))) +-#define __scanf(a, b) __attribute__((format(scanf, a, b))) +-#define noinline __attribute__((noinline)) +-#define __attribute_const__ __attribute__((__const__)) +-#define __maybe_unused __attribute__((unused)) +-#define __always_unused __attribute__((unused)) + +-#define __gcc_header(x) #x +-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h) +-#define gcc_header(x) _gcc_header(x) +-#include gcc_header(__GNUC__) ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#if GCC_VERSION >= 40400 ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#endif ++#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ ++ ++#if GCC_VERSION >= 50000 ++#define KASAN_ABI_VERSION 4 ++#elif GCC_VERSION >= 40902 ++#define KASAN_ABI_VERSION 3 ++#endif ++ ++#if GCC_VERSION >= 40902 ++/* ++ * Tell the compiler that address safety instrumentation (KASAN) ++ * should not be applied to that function. ++ * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 ++ */ ++#define __no_sanitize_address __attribute__((no_sanitize_address)) ++#endif ++ ++#endif /* gcc version >= 40000 specific checks */ + + #if !defined(__noclone) + #define __noclone /* not needed */ + #endif + ++#if !defined(__no_sanitize_address) ++#define __no_sanitize_address ++#endif ++ + /* + * A trick to suppress uninitialized variable warning without generating any + * code + */ + #define uninitialized_var(x) x = x +- +-#ifndef __always_inline +-#define __always_inline inline __attribute__((always_inline)) +-#endif +diff --git a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h +deleted file mode 100644 +index 7d89febe4d..0000000000 +--- a/include/linux/compiler-gcc3.h ++++ /dev/null +@@ -1,23 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#if GCC_VERSION < 30200 +-# error Sorry, your compiler is too old - please upgrade it. +-#endif +- +-#if GCC_VERSION >= 30300 +-# define __used __attribute__((__used__)) +-#else +-# define __used __attribute__((__unused__)) +-#endif +- +-#if GCC_VERSION >= 30400 +-#define __must_check __attribute__((warn_unused_result)) +-#endif +- +-#ifdef CONFIG_GCOV_KERNEL +-# if GCC_VERSION < 30400 +-# error "GCOV profiling support for gcc versions below 3.4 not included" +-# endif /* __GNUC_MINOR__ */ +-#endif /* CONFIG_GCOV_KERNEL */ +diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h +deleted file mode 100644 +index 2507fd2a1e..0000000000 +--- a/include/linux/compiler-gcc4.h ++++ /dev/null +@@ -1,88 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-/* GCC 4.1.[01] miscompiles __weak */ +-#ifdef __KERNEL__ +-# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 +-# error Your version of gcc miscompiles the __weak directive +-# endif +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a,b) __builtin_offsetof(a,b) +- +-#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 +-# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) +-#endif +- +-#if GCC_VERSION >= 40300 +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +-#endif /* GCC_VERSION >= 40300 */ +- +-#if GCC_VERSION >= 40500 +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-#endif /* GCC_VERSION >= 40500 */ +- +-#if GCC_VERSION >= 40600 +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +-#endif +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#if GCC_VERSION >= 40400 +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#endif +-#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +deleted file mode 100644 +index c8c5659525..0000000000 +--- a/include/linux/compiler-gcc5.h ++++ /dev/null +@@ -1,65 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) +- +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +- +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h +index ba147a1727..d4c71132d0 100644 +--- a/include/linux/compiler-intel.h ++++ b/include/linux/compiler-intel.h +@@ -13,9 +13,14 @@ + /* Intel ECC compiler doesn't support gcc specific asm stmts. + * It uses intrinsics to do the equivalent things. + */ ++#undef barrier ++#undef barrier_data + #undef RELOC_HIDE + #undef OPTIMIZER_HIDE_VAR + ++#define barrier() __memory_barrier() ++#define barrier_data(ptr) barrier() ++ + #define RELOC_HIDE(ptr, off) \ + ({ unsigned long __ptr; \ + __ptr = (unsigned long) (ptr); \ +diff --git a/include/linux/compiler.h b/include/linux/compiler.h +index d5ad7b1118..020ad16a04 100644 +--- a/include/linux/compiler.h ++++ b/include/linux/compiler.h +@@ -17,6 +17,7 @@ + # define __release(x) __context__(x,-1) + # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) + # define __percpu __attribute__((noderef, address_space(3))) ++# define __pmem __attribute__((noderef, address_space(5))) + #ifdef CONFIG_SPARSE_RCU_POINTER + # define __rcu __attribute__((noderef, address_space(4))) + #else +@@ -42,6 +43,7 @@ extern void __chk_io_ptr(const volatile void __iomem *); + # define __cond_lock(x,c) (c) + # define __percpu + # define __rcu ++# define __pmem + #endif + + /* Indirect macros required for expanded argument pasting, eg. __LINE__. */ +@@ -54,7 +56,11 @@ extern void __chk_io_ptr(const volatile void __iomem *); + #include + #endif + ++#if defined(CC_USING_HOTPATCH) && !defined(__CHECKER__) ++#define notrace __attribute__((hotpatch(0,0))) ++#else + #define notrace __attribute__((no_instrument_function)) ++#endif + + /* Intel compiler defines __GNUC__. So we will overwrite implementations + * coming from above header files here +@@ -138,7 +144,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + */ + #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) + #define __trace_if(cond) \ +- if (__builtin_constant_p((cond)) ? !!(cond) : \ ++ if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ + ({ \ + int ______r; \ + static struct ftrace_branch_data \ +@@ -165,6 +171,10 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + # define barrier() __memory_barrier() + #endif + ++#ifndef barrier_data ++# define barrier_data(ptr) barrier() ++#endif ++ + /* Unreachable code */ + #ifndef unreachable + # define unreachable() do { } while (1) +@@ -186,6 +196,126 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + # define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__) + #endif + ++#include ++ ++#define __READ_ONCE_SIZE \ ++({ \ ++ switch (size) { \ ++ case 1: *(__u8 *)res = *(volatile __u8 *)p; break; \ ++ case 2: *(__u16 *)res = *(volatile __u16 *)p; break; \ ++ case 4: *(__u32 *)res = *(volatile __u32 *)p; break; \ ++ case 8: *(__u64 *)res = *(volatile __u64 *)p; break; \ ++ default: \ ++ barrier(); \ ++ __builtin_memcpy((void *)res, (const void *)p, size); \ ++ barrier(); \ ++ } \ ++}) ++ ++static __always_inline ++void __read_once_size(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++ ++#ifdef CONFIG_KASAN ++/* ++ * This function is not 'inline' because __no_sanitize_address confilcts ++ * with inlining. Attempt to inline it may cause a build failure. ++ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 ++ * '__maybe_unused' allows us to avoid defined-but-not-used warnings. ++ */ ++static __no_sanitize_address __maybe_unused ++void __read_once_size_nocheck(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++#else ++static __always_inline ++void __read_once_size_nocheck(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++#endif ++ ++static __always_inline void __write_once_size(volatile void *p, void *res, int size) ++{ ++ switch (size) { ++ case 1: *(volatile __u8 *)p = *(__u8 *)res; break; ++ case 2: *(volatile __u16 *)p = *(__u16 *)res; break; ++ case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ++ case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ++ default: ++ barrier(); ++ __builtin_memcpy((void *)p, (const void *)res, size); ++ barrier(); ++ } ++} ++ ++/* ++ * Prevent the compiler from merging or refetching reads or writes. The ++ * compiler is also forbidden from reordering successive instances of ++ * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the ++ * compiler is aware of some particular ordering. One way to make the ++ * compiler aware of ordering is to put the two invocations of READ_ONCE, ++ * WRITE_ONCE or ACCESS_ONCE() in different C statements. ++ * ++ * In contrast to ACCESS_ONCE these two macros will also work on aggregate ++ * data types like structs or unions. If the size of the accessed data ++ * type exceeds the word size of the machine (e.g., 32 bits or 64 bits) ++ * READ_ONCE() and WRITE_ONCE() will fall back to memcpy and print a ++ * compile-time warning. ++ * ++ * Their two major use cases are: (1) Mediating communication between ++ * process-level code and irq/NMI handlers, all running on the same CPU, ++ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise ++ * mutilate accesses that either do not require ordering or that interact ++ * with an explicit memory barrier or atomic instruction that provides the ++ * required ordering. ++ */ ++ ++#define __READ_ONCE(x, check) \ ++({ \ ++ union { typeof(x) __val; char __c[1]; } __u; \ ++ if (check) \ ++ __read_once_size(&(x), __u.__c, sizeof(x)); \ ++ else \ ++ __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \ ++ __u.__val; \ ++}) ++#define READ_ONCE(x) __READ_ONCE(x, 1) ++ ++/* ++ * Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need ++ * to hide memory access from KASAN. ++ */ ++#define READ_ONCE_NOCHECK(x) __READ_ONCE(x, 0) ++ ++#define WRITE_ONCE(x, val) \ ++({ \ ++ union { typeof(x) __val; char __c[1]; } __u = \ ++ { .__val = (__force typeof(x)) (val) }; \ ++ __write_once_size(&(x), __u.__c, sizeof(x)); \ ++ __u.__val; \ ++}) ++ ++/** ++ * smp_cond_acquire() - Spin wait for cond with ACQUIRE ordering ++ * @cond: boolean expression to wait for ++ * ++ * Equivalent to using smp_load_acquire() on the condition variable but employs ++ * the control dependency of the wait to reduce the barrier on many platforms. ++ * ++ * The control dependency provides a LOAD->STORE order, the additional RMB ++ * provides LOAD->LOAD order, together they provide LOAD->{LOAD,STORE} order, ++ * aka. ACQUIRE. ++ */ ++#define smp_cond_acquire(cond) do { \ ++ while (!(cond)) \ ++ cpu_relax(); \ ++ smp_rmb(); /* ctrl + rmb := acquire */ \ ++} while (0) ++ + #endif /* __KERNEL__ */ + + #endif /* __ASSEMBLY__ */ +@@ -304,6 +434,14 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + #define __visible + #endif + ++/* ++ * Assume alignment of return value. ++ */ ++#ifndef __assume_aligned ++#define __assume_aligned(a, ...) ++#endif ++ ++ + /* Are two types/vars the same type (ignoring qualifiers)? */ + #ifndef __same_type + # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) +@@ -311,7 +449,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + + /* Is this type a native word size -- useful for atomic operations */ + #ifndef __native_word +-# define __native_word(t) (sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) ++# define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) + #endif + + /* Compile time object size, -1 for unknown */ +@@ -373,12 +511,38 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + * to make the compiler aware of ordering is to put the two invocations of + * ACCESS_ONCE() in different C statements. + * +- * This macro does absolutely -nothing- to prevent the CPU from reordering, +- * merging, or refetching absolutely anything at any time. Its main intended +- * use is to mediate communication between process-level code and irq/NMI +- * handlers, all running on the same CPU. ++ * ACCESS_ONCE will only work on scalar types. For union types, ACCESS_ONCE ++ * on a union member will work as long as the size of the member matches the ++ * size of the union and the size is smaller than word size. ++ * ++ * The major use cases of ACCESS_ONCE used to be (1) Mediating communication ++ * between process-level code and irq/NMI handlers, all running on the same CPU, ++ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise ++ * mutilate accesses that either do not require ordering or that interact ++ * with an explicit memory barrier or atomic instruction that provides the ++ * required ordering. ++ * ++ * If possible use READ_ONCE()/WRITE_ONCE() instead. ++ */ ++#define __ACCESS_ONCE(x) ({ \ ++ __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \ ++ (volatile typeof(x) *)&(x); }) ++#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x)) ++ ++/** ++ * lockless_dereference() - safely load a pointer for later dereference ++ * @p: The pointer to load ++ * ++ * Similar to rcu_dereference(), but for situations where the pointed-to ++ * object's lifetime is managed by something other than RCU. That ++ * "something other" might be reference counting or simple immortality. + */ +-#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) ++#define lockless_dereference(p) \ ++({ \ ++ typeof(p) _________p1 = READ_ONCE(p); \ ++ smp_read_barrier_depends(); /* Dependency order vs. p above. */ \ ++ (_________p1); \ ++}) + + /* Ignore/forbid kprobes attach on very low level functions marked by this attribute: */ + #ifdef CONFIG_KPROBES +-- +2.11.0 + diff --git a/features/buildroot/board/roseapplepi/post-image.sh b/features/buildroot/board/roseapplepi/post-image.sh new file mode 100755 index 00000000..e8f2df23 --- /dev/null +++ b/features/buildroot/board/roseapplepi/post-image.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +cp "${BOARD_DIR}/uEnv.txt" "${BINARIES_DIR}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/features/buildroot/board/roseapplepi/uEnv.txt b/features/buildroot/board/roseapplepi/uEnv.txt new file mode 100755 index 00000000..f9646e49 --- /dev/null +++ b/features/buildroot/board/roseapplepi/uEnv.txt @@ -0,0 +1,3 @@ +# no ramdisk +ramdisk_addr_r=- +bootargs=clk_ignore_unused root=/dev/mmcblk0p2 diff --git a/features/buildroot/board/sheevaplug/readme.txt b/features/buildroot/board/sheevaplug/readme.txt new file mode 100644 index 00000000..e0ed2684 --- /dev/null +++ b/features/buildroot/board/sheevaplug/readme.txt @@ -0,0 +1,36 @@ +Sheevaplug +========== + +Once the build process is finished you will have the following files +in the output/images/ directory: + +- u-boot.kwb +- uImage.kirkwood-sheevaplug +- rootfs.jffs2 + +Copy these to a TFTP server, connect ethernet and mini-USB cable and +power up the board. Stop the board in U-Boot and update U-Boot by +executing: + +setenv serverip +setenv bootfile +bootp +nand erase 0x0 0x80000 +nand write $fileaddr 0x0 0x80000 +reset + +Once the new U-Boot boots up, stop it again and update Linux kernel +and rootfs by: + +setenv serverip +setenv bootfile +bootp +nand erase.part kernel +nand write $fileaddr kernel 0x400000 + +setenv bootfile +bootp +nand erase.part rootfs +nand write $fileaddr rootfs $filesize + +reset diff --git a/features/buildroot/board/sinovoip/m2-plus/boot.cmd b/features/buildroot/board/sinovoip/m2-plus/boot.cmd new file mode 100644 index 00000000..d22464a1 --- /dev/null +++ b/features/buildroot/board/sinovoip/m2-plus/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-bananapi-m2-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/features/buildroot/board/sinovoip/m2-plus/genimage.cfg b/features/buildroot/board/sinovoip/m2-plus/genimage.cfg new file mode 100644 index 00000000..cde0669e --- /dev/null +++ b/features/buildroot/board/sinovoip/m2-plus/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-bananapi-m2-plus.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/solidrun/clearfog/extlinux.conf b/features/buildroot/board/solidrun/clearfog/extlinux.conf new file mode 100644 index 00000000..f35974e3 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog/extlinux.conf @@ -0,0 +1,4 @@ +label Clearfog Linux + kernel /boot/zImage + devicetree /boot/armada-388-clearfog-base.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/features/buildroot/board/solidrun/clearfog/genimage.cfg b/features/buildroot/board/solidrun/clearfog/genimage.cfg new file mode 100644 index 00000000..8963619c --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-spl.kwb" + offset = 512 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + } +} diff --git a/features/buildroot/board/solidrun/clearfog/linux.fragment b/features/buildroot/board/solidrun/clearfog/linux.fragment new file mode 100644 index 00000000..b7ed5b00 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog/linux.fragment @@ -0,0 +1 @@ +CONFIG_SENSORS_MCP3021=y diff --git a/features/buildroot/board/solidrun/clearfog/post-build.sh b/features/buildroot/board/solidrun/clearfog/post-build.sh new file mode 100755 index 00000000..1f5ff6a6 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/features/buildroot/board/solidrun/clearfog/readme.txt b/features/buildroot/board/solidrun/clearfog/readme.txt new file mode 100644 index 00000000..60bf9532 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog/readme.txt @@ -0,0 +1,61 @@ +********************** +SolidRun Clearfog Base +********************** + +This file documents Buildroot's support for the Clearfog Base by Solid Run. + +Vendor's documentation: +https://wiki.solid-run.com/doku.php?id=products:a38x:documents + +Warning for eMMC variant of the MicroSoM +======================================== + +If you bought a MicroSoM version that includes an on-board eMMC flash, the +built-in microSD card slot *WILL NOT WORK*. The Internet says that you have to +upload the first bootloader via UART. This manual does not cover these steps; +only MicroSoMs without the eMMC are supported. + +Build +===== + +Start with the default Buildroot's configuration for Clearfog: + + make solidrun_clearfog_defconfig + +Build all components: + + make + +The results of the build are available in ./output/images. + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ conv=fdatasync + +*** WARNING! The dd command will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/solidrun/clearfog/genimage.cfg. + +Boot the Clearfog board +======================= + +Here's how to boot the board: + +- Set up the DIP switches for microSD boot. The correct values are: + 1: off, 2: off, 3: ON, 4: ON, 5: ON. In this scheme, switch #1" is closer to + the ethernet ports and #5 is closer to the microSD card, "ON" means towards + the SOM, and "off" means towards the SFP cage. +- Connect to the board's console over the microUSB port. +- Insert the SD card into the slot on the board (pins up). +- Power up the board. diff --git a/features/buildroot/board/solidrun/clearfog_gt_8k/extlinux.conf b/features/buildroot/board/solidrun/clearfog_gt_8k/extlinux.conf new file mode 100644 index 00000000..aae0c0d5 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog_gt_8k/extlinux.conf @@ -0,0 +1,4 @@ +label Clearfog GT-8K Linux + kernel /boot/Image + devicetree /boot/armada-8040-clearfog-gt-8k.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk1p1 rootwait diff --git a/features/buildroot/board/solidrun/clearfog_gt_8k/genimage.cfg b/features/buildroot/board/solidrun/clearfog_gt_8k/genimage.cfg new file mode 120000 index 00000000..0cc2754f --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog_gt_8k/genimage.cfg @@ -0,0 +1 @@ +../macchiatobin/genimage.cfg \ No newline at end of file diff --git a/features/buildroot/board/solidrun/clearfog_gt_8k/linux-extras.config b/features/buildroot/board/solidrun/clearfog_gt_8k/linux-extras.config new file mode 100644 index 00000000..bce2a2e9 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog_gt_8k/linux-extras.config @@ -0,0 +1,4 @@ +CONFIG_MARVELL_PHY=y +CONFIG_SFP=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_MV88E6XXX=y diff --git a/features/buildroot/board/solidrun/clearfog_gt_8k/post-build-mainline.sh b/features/buildroot/board/solidrun/clearfog_gt_8k/post-build-mainline.sh new file mode 120000 index 00000000..a8c9a524 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog_gt_8k/post-build-mainline.sh @@ -0,0 +1 @@ +../macchiatobin/post-build-mainline.sh \ No newline at end of file diff --git a/features/buildroot/board/solidrun/clearfog_gt_8k/readme.txt b/features/buildroot/board/solidrun/clearfog_gt_8k/readme.txt new file mode 100644 index 00000000..1648ffa3 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog_gt_8k/readme.txt @@ -0,0 +1,61 @@ +Intro +===== + +The default configuration described below will allow you to start +experimenting with the buildroot environment for the SolidRun Clearfog GT-8K +based on the Marvell Armada 8040 SoC. + +This default configuration will bring up the board and allow shell command +line access through the serial console. + +How to build +============ + + $ make solidrun_clearfog_gt_8k_defconfig + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image file named +"sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + +How to boot the board +===================== + +The Clearfog GT-8K can be setup to load the bootloader from different sources +including eMMC, SPI flash, and SD-card. + +To select boot from SD-card the DIP switches in SW6 (at the bottom of the +board) should be configured as follows: + + SW6: 11010 + +Insert the micro SDcard in the Cleargfog GT-8K and power it up. + +Serial console +============== + +The serial console is accessible at the J27 pins header (TTL UART) with the +following pinout (pin #1 is marked with triangle on the PCB): + + pin #1: Ground + pin #2: Armada 8040 Rx + pin #3: Armada 8040 Tx + +Enable the switch (yellow) Ethernet ports +========================================= + +To enable the Clearfog GT-8K internal switch port make sure to load the +'mv88e6xxx' kernel module, and up the switch up-link port (eth2 by default): + + modprobe mv88e6xxx + ifconfig eth2 up + +Then you can configure each switch port separately. These port are named +'lan1' to 'lan4' by default. 'lan1' is closest to the USB port, while 'lan4' +is closest to the blue Ethernet port. diff --git a/features/buildroot/board/solidrun/clearfog_gt_8k/uboot-fragment.config b/features/buildroot/board/solidrun/clearfog_gt_8k/uboot-fragment.config new file mode 120000 index 00000000..996c4aa6 --- /dev/null +++ b/features/buildroot/board/solidrun/clearfog_gt_8k/uboot-fragment.config @@ -0,0 +1 @@ +../macchiatobin/uboot-fragment.config \ No newline at end of file diff --git a/features/buildroot/board/solidrun/macchiatobin/extlinux.conf b/features/buildroot/board/solidrun/macchiatobin/extlinux.conf new file mode 100644 index 00000000..1008af1a --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/extlinux.conf @@ -0,0 +1,4 @@ +label Macchiatobin Linux + kernel /boot/Image + devicetree /boot/armada-8040-mcbin.dtb + append console=ttyS0,115200n8 root=/dev/mmcblk1p1 rootwait diff --git a/features/buildroot/board/solidrun/macchiatobin/genimage.cfg b/features/buildroot/board/solidrun/macchiatobin/genimage.cfg new file mode 100644 index 00000000..fdcda368 --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition uboot { + in-partition-table = "no" + image = "flash-image.bin" + offset = 0x200000 + } + + partition rootfs { + partition-type = 0x83 + offset = 0x2200000 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/solidrun/macchiatobin/linux-extras.config b/features/buildroot/board/solidrun/macchiatobin/linux-extras.config new file mode 100644 index 00000000..29fd6306 --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/linux-extras.config @@ -0,0 +1,3 @@ +CONFIG_MARVELL_PHY=y +CONFIG_MARVELL_10G_PHY=y +CONFIG_SFP=y diff --git a/features/buildroot/board/solidrun/macchiatobin/post-build-mainline.sh b/features/buildroot/board/solidrun/macchiatobin/post-build-mainline.sh new file mode 100755 index 00000000..1f5ff6a6 --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/post-build-mainline.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/features/buildroot/board/solidrun/macchiatobin/post-build.sh b/features/buildroot/board/solidrun/macchiatobin/post-build.sh new file mode 100755 index 00000000..9c1b5b88 --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D ${BOARD_DIR}/uEnv-example.txt ${TARGET_DIR}/boot/uEnv-example.txt diff --git a/features/buildroot/board/solidrun/macchiatobin/readme.txt b/features/buildroot/board/solidrun/macchiatobin/readme.txt new file mode 100644 index 00000000..dc5d6c79 --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/readme.txt @@ -0,0 +1,95 @@ +Intro +===== + +This default configuration will allow you to start experimenting with +the buildroot environment for the MacchiatoBin board based on the +Marvell Armada 8040 SoC. Documentation for the board hardware and +software is available on the wiki at: http://wiki.macchiatobin.net + +This default configuration will bring up the board and allow access +through the serial console. + +How to build +============ + +There are two build options: mainline support and vendor support. + +For the mainline BSP, we use: + - Linux v4.19.2 + - U-Boot v2018.11 + +For the vendor BSP, we use the sources available from Marvell Github +page at https://github.com/MarvellEmbeddedProcessors, which uses: + - Linux v4.4.120 + - U-Boot v2018.03 + +At the moment mainline support for the board is a work in +progress. Mainline kernel 4.19 enables eth2 in 1Gb (RJ45 connector J5), +copper 10Gb interfaces, and automatic configuration of select SFP +modules on the SFP cages. The vendor BSP enables more hardware features +out of the box, but lacks support for SFP detection and automatic +configuration. + +To use the mainline BSP run the following commands: + + $ make solidrun_macchiatobin_mainline_defconfig + $ make + +To use the vendor BSP run the following commands: + + $ make solidrun_macchiatobin_marvell_defconfig + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image +called "sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + $ sudo sync + +How to boot the board +===================== + +The MacchiatoBin board can be setup to load the bootloader from +different sources including eMMC, SPI flash, and SD-card. + +On Rev 1.2 board to select boot from SD-card the DIP switches +SW1 and SW2 should be configured as follows: + +SW2: 01110 +SW1: 1xxxx + +The upcoming Rev 1.3 board will have a single pins header J1 instead +of the SW1/2 DIP switches. To boot from SD-card the setting of J1 +jumpers should match the DIP switches of Rev v1.2 board +from left to right: + +J1: 011101xxxx + +Insert the micro SDcard in the MacchiatoBin board and power it up. +The serial console is accessible at the micro-USB Type-B connector +marked CON9. The serial line settings are 115200 8N1. + +Note: the following text only applies to the vendor BSP from +solidrun_macchiatobin_marvell_defconfig. + +By default Marvell provided U-Boot will load its environment from the +SPI flash. On the first boot SPI flash may be empty or it may contain a +legacy environment that prevents proper boot. Then the following +commands can be used to boot the board: + +=> ext4load mmc 1:1 0x01700000 /boot/uEnv-example.txt +=> env import -t 0x01700000 $filesize +=> boot + +The example environment from uEnv-example.txt can be written to +SPI flash using the following commands: + +=> env default -f -a +=> ext4load mmc 1:1 0x01700000 /boot/uEnv-example.txt +=> env import -t 0x01700000 $filesize +=> saveenv diff --git a/features/buildroot/board/solidrun/macchiatobin/uEnv-example.txt b/features/buildroot/board/solidrun/macchiatobin/uEnv-example.txt new file mode 100644 index 00000000..1967e2ba --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/uEnv-example.txt @@ -0,0 +1,7 @@ +bootargs=console=ttyS0,115200 root=/dev/mmcblk1p1 rw rootwait +fdt_addr=0x1000000 +fdt_high=0xffffffffffffffff +fdt_name=boot/armada-8040-mcbin.dtb +kernel_addr=0x2000000 +image_name=boot/Image +bootcmd=mmc dev 1; ext4load mmc 1:1 $kernel_addr $image_name; ext4load mmc 1:1 $fdt_addr $fdt_name; booti $kernel_addr - $fdt_addr diff --git a/features/buildroot/board/solidrun/macchiatobin/uboot-fragment.config b/features/buildroot/board/solidrun/macchiatobin/uboot-fragment.config new file mode 100644 index 00000000..717a0942 --- /dev/null +++ b/features/buildroot/board/solidrun/macchiatobin/uboot-fragment.config @@ -0,0 +1,2 @@ +CONFIG_ENV_IS_IN_MMC=y +# CONFIG_ENV_IS_IN_SPI_FLASH is not set diff --git a/features/buildroot/board/solidrun/mx6cubox/boot.scr.txt b/features/buildroot/board/solidrun/mx6cubox/boot.scr.txt new file mode 100644 index 00000000..7a8aa4bd --- /dev/null +++ b/features/buildroot/board/solidrun/mx6cubox/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 0:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=ttymxc0,115200 root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 0:1 ${fdt_addr} boot/${fdtfile} +load mmc 0:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/features/buildroot/board/solidrun/mx6cubox/genimage.cfg b/features/buildroot/board/solidrun/mx6cubox/genimage.cfg new file mode 100644 index 00000000..490986ac --- /dev/null +++ b/features/buildroot/board/solidrun/mx6cubox/genimage.cfg @@ -0,0 +1,29 @@ +# Minimal SD card image for the MX6 Cubox/Hummingboard +# +# U-Boot SPL and u-boot.img are flashed in the first 1MB raw partition. +# A single root filesystem partition is used (Ext4 in this case). +# + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + size = 512M + } +} diff --git a/features/buildroot/board/solidrun/mx6cubox/post-build.sh b/features/buildroot/board/solidrun/mx6cubox/post-build.sh new file mode 100755 index 00000000..43e091c5 --- /dev/null +++ b/features/buildroot/board/solidrun/mx6cubox/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none \ +-n "boot script" -d $BOARD_DIR/boot.scr.txt $BOARD_DIR/boot.scr + +install -m 0644 -D $BOARD_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/features/buildroot/board/solidrun/mx6cubox/post-image.sh b/features/buildroot/board/solidrun/mx6cubox/post-image.sh new file mode 100755 index 00000000..b4ac4608 --- /dev/null +++ b/features/buildroot/board/solidrun/mx6cubox/post-image.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/features/buildroot/board/solidrun/mx6cubox/readme.txt b/features/buildroot/board/solidrun/mx6cubox/readme.txt new file mode 100644 index 00000000..630ab6c7 --- /dev/null +++ b/features/buildroot/board/solidrun/mx6cubox/readme.txt @@ -0,0 +1,18 @@ +Solidrun's MX6 Cubox/Hummingboard + +https://www.solid-run.com/freescale-imx6-family/hummingboard/ + +https://www.solid-run.com/freescale-imx6-family/cubox-i/ + +To build a minimal support for these boards: + + $ make mx6cubox_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card: + +dd if=output/images/sdcard.img of=/dev/ + +For details about the medium image layout, see the definition in +board/solidrun/mx6cubox/genimage.cfg. diff --git a/features/buildroot/board/stmicroelectronics/stm32-post-build.sh b/features/buildroot/board/stmicroelectronics/stm32-post-build.sh new file mode 100755 index 00000000..e324afe5 --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32-post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# Kernel is built without devpts support +sed -i '/^devpts/d' ${TARGET_DIR}/etc/fstab + +# Kernel is built without network support +rm -f ${TARGET_DIR}/etc/init.d/S40network +rm -rf ${TARGET_DIR}/etc/network/ diff --git a/features/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh b/features/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh new file mode 100755 index 00000000..b19e0a60 --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +OUTPUT_DIR=$1 +BOARD_NAME=${2:-stm32f429discovery} + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR BOARD_NAME" + echo "" + echo "Arguments:" + echo " OUTPUT_DIR The Buildroot output directory." + echo " BOARD_NAME One of the available boards among:" + echo " stm32f429discovery, stm32f429disc1" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/${BOARD_NAME}.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429i-disco.bin 0x08000000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429-disco.dtb 0x08004000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \ + -c "reset run" \ + -c "shutdown" diff --git a/features/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch b/features/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch new file mode 100644 index 00000000..d6d5c61a --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch @@ -0,0 +1,32 @@ +From ded9afa688184b3240a92c2b8f114c545a09bc3f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 12 Mar 2016 23:14:41 +0100 +Subject: [PATCH] ARM: stm32f249-disco: don't force init= in /chosen/bootargs + +There is no reason to override the kernel's default init= value, as +this breaks userspace that assumes the kernel default of /init is +used. Since stm32 is often used with a minimal bootloader +(afboot-stm32) that doesn't provide any mechanism to override the DTB, +we need to adjust the kernel command line in the Device Tree source. + +Signed-off-by: Thomas Petazzoni +--- + arch/arm/boot/dts/stm32f429-disco.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts +index f0b731d..2bae81c 100644 +--- a/arch/arm/boot/dts/stm32f429-disco.dts ++++ b/arch/arm/boot/dts/stm32f429-disco.dts +@@ -53,7 +53,7 @@ + compatible = "st,stm32f429i-disco", "st,stm32f429"; + + chosen { +- bootargs = "root=/dev/ram rdinit=/linuxrc"; ++ bootargs = "root=/dev/ram"; + stdout-path = "serial0:115200n8"; + }; + +-- +2.6.4 + diff --git a/features/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt b/features/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt new file mode 100644 index 00000000..f512cb2e --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt @@ -0,0 +1,37 @@ +STM32F429 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F429 Discovery evaluation platform. + +Supported HW +------------ + + - STM32F429I-DISCO evaluation board + - STM32F429I-DISC1 evaluation board + +Building +-------- + + make stm32f429_disco_defconfig + make + +Wire the UART +------------- + +Use a USB to TTL adapter, and connect: + + - RX to PA9 + - TX to PA10 + - GND to one of the GND available on the board + +The UART is configured at 115200. + +Flashing +-------- + + ./board/stmicroelectronics/stm32f429-disco/flash.sh output/ \ + {stm32f429discovery|stm32f429disc1} + +It will flash the minimal bootloader, the Device Tree Blob, and the +kernel image which includes the root filesystem as initramfs. diff --git a/features/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh b/features/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh new file mode 100755 index 00000000..0ec0beb2 --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +OUTPUT_DIR=$1 + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469i-disco.bin 0x08000000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469-disco.dtb 0x08004000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \ + -c "reset run" \ + -c "shutdown" diff --git a/features/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch b/features/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch new file mode 100644 index 00000000..750e477d --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch @@ -0,0 +1,33 @@ +From c8f8f33c2f0460a34c9545b01a7972a7ed2df0e9 Mon Sep 17 00:00:00 2001 +From: Christophe Priouzeau +Date: Mon, 29 May 2017 13:38:16 +0200 +Subject: [PATCH] ARM: stm32f249-disco: don't force init= in /chosen/bootargs + +There is no reason to override the kernel's default init= value, as +this breaks userspace that assumes the kernel default of /init is +used. Since stm32 is often used with a minimal bootloader +(afboot-stm32) that doesn't provide any mechanism to override the DTB, +we need to adjust the kernel command line in the Device Tree source. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Christophe Priouzeau +--- + arch/arm/boot/dts/stm32f469-disco.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts +index 0dd56ef..93ee1b2 100644 +--- a/arch/arm/boot/dts/stm32f469-disco.dts ++++ b/arch/arm/boot/dts/stm32f469-disco.dts +@@ -53,7 +53,7 @@ + compatible = "st,stm32f469i-disco", "st,stm32f469"; + + chosen { +- bootargs = "root=/dev/ram rdinit=/linuxrc"; ++ bootargs = "root=/dev/ram"; + stdout-path = "serial0:115200n8"; + }; + +-- +2.7.4 + diff --git a/features/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt b/features/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt new file mode 100644 index 00000000..888bff08 --- /dev/null +++ b/features/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt @@ -0,0 +1,19 @@ +STM32F469 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F469 Discovery evaluation platform. + +Building +-------- + + make stm32f469_disco_defconfig + make + +Flashing +-------- + + ./board/stmicroelectronics/stm32f469-disco/flash.sh output/ + +It will flash the minimal bootloader, the Device Tree Blob, and the +kernel image which includes the root filesystem as initramfs. diff --git a/features/buildroot/board/synopsys/axs10x/post-build.sh b/features/buildroot/board/synopsys/axs10x/post-build.sh new file mode 100755 index 00000000..f23c8a99 --- /dev/null +++ b/features/buildroot/board/synopsys/axs10x/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty0 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty0::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty0::respawn:/sbin/getty 115200 tty0' ${TARGET_DIR}/etc/inittab +fi diff --git a/features/buildroot/board/synopsys/hsdk/genimage.cfg b/features/buildroot/board/synopsys/hsdk/genimage.cfg new file mode 100644 index 00000000..9103b202 --- /dev/null +++ b/features/buildroot/board/synopsys/hsdk/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "uImage" + } + file uboot.env { + image = "uboot-env.bin" + } + } + size = 20M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/synopsys/hsdk/linux.fragment b/features/buildroot/board/synopsys/hsdk/linux.fragment new file mode 100644 index 00000000..45d6c69a --- /dev/null +++ b/features/buildroot/board/synopsys/hsdk/linux.fragment @@ -0,0 +1,2 @@ +CONFIG_INITRAMFS_SOURCE="" +CONFIG_ARC_UBOOT_SUPPORT=y diff --git a/features/buildroot/board/synopsys/hsdk/readme.txt b/features/buildroot/board/synopsys/hsdk/readme.txt new file mode 100644 index 00000000..f4c65011 --- /dev/null +++ b/features/buildroot/board/synopsys/hsdk/readme.txt @@ -0,0 +1,33 @@ +Synopsys, Inc. +ARC HS Development Kit (HSDK) + +https://embarc.org/platforms.html + +How to build it +=============== + +Select the default configuration for the target: +$ make snps_archs38_hsdk_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ +├── boot.vfat +├── rootfs.ext2 +├── sdcard.img +├── u-boot +├── u-boot.bin +├── uboot-env.bin +└── uImage + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX + +2018, Evgeniy Didin + diff --git a/features/buildroot/board/synopsys/hsdk/uboot.env.txt b/features/buildroot/board/synopsys/hsdk/uboot.env.txt new file mode 100644 index 00000000..216f0c90 --- /dev/null +++ b/features/buildroot/board/synopsys/hsdk/uboot.env.txt @@ -0,0 +1,9 @@ +baudrate=115200 +bootargs=root=/dev/mmcblk0p2 rootwait +bootcmd=fatload mmc 0:1; bootm +bootdelay=2 +bootfile=uImage +loadaddr=0x82000000 +stderr=serial0@f0005000 +stdin=serial0@f0005000 +stdout=serial0@f0005000 diff --git a/features/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig b/features/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig new file mode 100644 index 00000000..8109e169 --- /dev/null +++ b/features/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig @@ -0,0 +1,143 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_CGROUPS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_EMBEDDED=y +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_CC_STACKPROTECTOR_REGULAR=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=8 +CONFIG_PREEMPT=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_CMDLINE="console=ttyAMA0 earlyprintk=pl011,0x1c090000 debug user_debug=31 loglevel=9 root=/dev/vda" +CONFIG_CMDLINE_FORCE=y +CONFIG_BINFMT_MISC=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_ARM_BIG_LITTLE_CPUFREQ=y +CONFIG_ARM_DT_BL_CPUFREQ=y +CONFIG_ARM_SPCI_CPUFREQ=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=y +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_SYN_COOKIES=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VEXPRESS_CONFIG=y +CONFIG_CONNECTOR=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_NBD=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_VIRTIO_BLK=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_DM=y +CONFIG_NETDEVICES=y +CONFIG_STMMAC_ETH=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_RESET_VEXPRESS=y +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_USB_HIDDEV=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_SYNOPSYS=y +CONFIG_USB_OHCI_HCD=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_ULPI=y +CONFIG_USB_DUMMY_HCD=m +CONFIG_USB_G_SERIAL=m +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_SWITCH=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_CLK_SP810=y +CONFIG_CLK_VEXPRESS_OSC=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_MAILBOX=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_BTRFS_FS=m +CONFIG_QFMT_V2=y +CONFIG_AUTOFS4_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=m +CONFIG_ECRYPT_FS=m +CONFIG_CRAMFS=m +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +CONFIG_FUNCTION_TRACER=y +CONFIG_STRICT_DEVMEM=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_LSM_MMAP_MIN_ADDR=0 + diff --git a/features/buildroot/board/synopsys/vdk/readme.txt b/features/buildroot/board/synopsys/vdk/readme.txt new file mode 100644 index 00000000..98046473 --- /dev/null +++ b/features/buildroot/board/synopsys/vdk/readme.txt @@ -0,0 +1,65 @@ +Synopsys VDK Software Development Platform + +Intro +===== + +The Virtualizer Development Kit (VDK) Family for ARM Cortex Products +consists of a set of virtual prototypes that provide a virtualizer for +the ARM core variants. The VDK is a standalone package that runs on an +host computer. + +Buildroot will generate the kernel image and a minimal root filesystem. + +How to build it +=============== + +Configure Buildroot +------------------- + +Configuring Buildroot is pretty simple, just execute: + + $ make snps_aarch64_vdk_defconfig + +Build the rootfs and kernel +--------------------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + -- rootfs.ext2 + -- Image + +Installing your rootfs and Image +================================ + +Now copy the content of the output/images folder to the VDK' skins +folder: + + $ cp rootfs.ext2 Image /skins/Vanilla-Cortex/ARMv8 + + +Starting the VDK +================================ + +Go the VDK' installation root and execute the 'start' script: + + $ cd + $ ./start.sh + +The VP Explorer application will be executed, starting the simulation +automatically. + +For more information about Synopsys' VDK please check: +http://www.synopsys.com/Prototyping/VirtualPrototyping/Pages/default.aspx diff --git a/features/buildroot/board/technexion/imx6ulpico/readme.txt b/features/buildroot/board/technexion/imx6ulpico/readme.txt new file mode 100644 index 00000000..7eab3f6b --- /dev/null +++ b/features/buildroot/board/technexion/imx6ulpico/readme.txt @@ -0,0 +1,70 @@ +***************************** +Technexion i.MX6UL Pico board +***************************** + +This file documents the Buildroot support for the Technexion i.MX6UL Pico board. + +Build +===== + +First, configure Buildroot for the i.MX6UL Pico board: + + make imx6ulpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx6ul-pico-hobbit.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6UL Pico board +========================= + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/features/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt b/features/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt new file mode 100644 index 00000000..4716c7ef --- /dev/null +++ b/features/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt @@ -0,0 +1,102 @@ +# Sample NVRAM for BCM94339 WLCSP with eTR,iPA, and eLNA. +sromrev=11 +boardrev=0x1100 +boardtype=0x06c9 +boardflags=0x10081401 +boardflags2=0x00000000 +boardflags3=0x08001188 +#boardnum=57410 +macaddr=00:90:4c:c5:12:38 +ccode=0 +regrev=0 +antswitch=0 +pdgain2g=7 +pdgain5g=7 +tworangetssi2g=0 +tworangetssi5g=0 +vendid=0x14e4 +devid=0x43ae +manfid=0x2d0 +#prodid=0x052e +nocrc=1 +otpimagesize=502 +xtalfreq=37400 +extpagain2g=2 +pdetrange2g=2 +extpagain5g=2 +pdetrange5g=2 +rxgains2gelnagaina0=2 +rxgains2gtrisoa0=6 +rxgains2gtrelnabypa0=1 +rxgains5gelnagaina0=4 +rxgains5gtrisoa0=4 +rxgains5gtrelnabypa0=1 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=0 +tssipos2g=0 +pa2ga0=0xFF47,0x17B5,0xFD2B +pa2gccka0=0xFF5F,0x1B46,0xFCCC +pa5ga0=0xff54,0x16ec,0xfd45,0xff52,0x16a1,0xfd4d,0xff46,0x15b7,0xfd5a,0xff56,0x156d,0xfd79 +pa5gbw40a0=0xff59,0x17ca,0xfd30,0xff42,0x163d,0xfd4b,0xff31,0x152e,0xfd55,0xff60,0x16d8,0xfd54 +pa5gbw80a0=0xff56,0x1740,0xfd3f,0xff50,0x1738,0xfd3d,0xff4d,0x16b4,0xfd42,0xff58,0x1634,0xfd60 +# Default Target Power for 2G -- 17dBm(11)/14dBm(54)/13dBm(MCS7)/12dBm(MCS8)/12dBm(MCS9) +maxp2ga0=74 +maxp5ga0=74,74,74,74 +cckbw202gpo=0x0000 +cckbw20ul2gpo=0x0000 +mcsbw202gpo=0xaa888888 +mcsbw402gpo=0xaa888888 +dot11agofdmhrbw202gpo=0x6666 +ofdmlrbw202gpo=0x0066 +tssifloor2g=500 +# Default Target Power for 5G -- 14dBm(54)/13dBm(MCS7)/12dBm(MCS8)/12dBm(MCS9) +mcsbw205glpo=0xaa866666 +mcsbw405glpo=0xaa866666 +mcsbw805glpo=0xaa866666 +mcsbw205gmpo=0xaa866666 +mcsbw405gmpo=0xaa866666 +mcsbw805gmpo=0xaa866666 +mcsbw205ghpo=0xaa866666 +mcsbw405ghpo=0xaa866666 +mcsbw805ghpo=0xaa866666 +mcslr5glpo=0x0000 +mcslr5gmpo=0x0000 +mcslr5ghpo=0x0000 +sb20in40hrpo=0x0 +sb20in80and160hr5glpo=0x0 +sb40and80hr5glpo=0x0 +sb20in80and160hr5gmpo=0x0 +sb40and80hr5gmpo=0x0 +sb20in80and160hr5ghpo=0x0 +sb40and80hr5ghpo=0x0 +sb20in40lrpo=0x0 +sb20in80and160lr5glpo=0x0 +sb40and80lr5glpo=0x0 +sb20in80and160lr5gmpo=0x0 +sb40and80lr5gmpo=0x0 +sb20in80and160lr5ghpo=0x0 +sb40and80lr5ghpo=0x0 +dot11agduphrpo=0x0 +dot11agduplrpo=0x0 +phycal_tempdelta=25 +cckdigfilttype=2 +swctrlmap_5g=0x00080008,0x00500010,0x00100008,0x000000,0x078 +swctrlmap_2g=0x00010001,0x00220002,0x00020001,0x042202,0x1ff +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +# +#GPIO 0 for SDIO HW OOB interruption +#muxenab=0x10 +#sd_gpout=0 +#sd_oobonly=1 +# +rssicorrnorm_c0=-2,0 +rssicorrnorm5g_c0=3,5,2,3,4,2,2,3,1,2,3,1 +## ED threshold level to address the new ETSI requirement - 10/31/2013 +ed_thresh2g=-77 +ed_thresh5g=-77 +# +paparambwver=1 diff --git a/features/buildroot/board/technexion/imx7dpico/readme.txt b/features/buildroot/board/technexion/imx7dpico/readme.txt new file mode 100644 index 00000000..53197d45 --- /dev/null +++ b/features/buildroot/board/technexion/imx7dpico/readme.txt @@ -0,0 +1,124 @@ +**************************** +Technexion i.MX7D Pico board +**************************** + +This file documents the Buildroot support for the Technexion i.MX7D Pico board. + +Build +===== + +First, configure Buildroot for the i.MX7D Pico board: + + make imx7dpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7d-pico.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-dtb.img + - SPL + - zImage + +Flash U-Boot and SPL +===== + +Note: This method is convenient for development purposes. +If the eMMC has already a U-Boot flashed with DFU support then +the user can go to step 2 below in order to update U-Boot. + +Put pico board in USB download mode (refer to the PICO-iMX7D Quick Start Guide +page 3) + +Connect a USB to serial adapter between the host PC and pico. + +Connect a USB cable between the OTG pico port and the host PC. + +Note: Some computers may be a bit strict with USB current draw and will +shut down their ports if the draw is too high. The solution for that is +to use an externally powered USB hub between the board and the host computer. + +Open a terminal program such as minicom. + +Copy SPL and u-boot-dtb.img to the imx_usb_loader folder. + +Load the SPL binary via USB: + +$ sudo ./imx_usb SPL + +Load the u-boot-dtb.img binary via USB: + +$ sudo ./imx_usb u-boot-dtb.img + +Then U-Boot starts and its messages appear in the console program. + +Use the default environment variables: + +=> env default -f -a +=> saveenv + +Run the DFU agent so we can flash the new images using dfu-util tool: + +=> dfu 0 mmc 0 + +Flash SPL and u-boot-dtb.img into the eMMC running the following commands on a PC: + +$ sudo dfu-util -D SPL -a spl + +$ sudo dfu-util -D u-boot-dtb.img -a u-boot + +Remove power from the pico board. + +Put pico board into normal boot mode. + +Power up the board and the new updated U-Boot should boot from eMMC. + +Flash the eMMC +============== + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX7D Pico board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/features/buildroot/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf b/features/buildroot/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf new file mode 100644 index 00000000..4824aff0 --- /dev/null +++ b/features/buildroot/board/technexion/imx7dpico/rootfs_overlay/boot/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +Label imx7d-pico-buildroot + kernel /boot/zImage + devicetree /boot/imx7d-pico-pi.dtb + append root=PARTUUID=${uuid} rootwait rw console=${console},${baudrate} \ No newline at end of file diff --git a/features/buildroot/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt b/features/buildroot/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt new file mode 100644 index 00000000..1ddd9295 --- /dev/null +++ b/features/buildroot/board/technexion/imx7dpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt @@ -0,0 +1,99 @@ +#AP6335_NVRAM_V1.5_03112014 +NVRAMRev=$Rev: 410316 $ +sromrev=11 +boardrev=0x1203 +boardtype=0x06c5 +boardflags=0x00000c01 +boardflags2=0x00002000 +boardflags3=0x101188 +macaddr=00:90:4c:c5:12:38 +ccode=0 +regrev=0 +antswitch=0 +pdgain2g=7 +pdgain5g=7 +tworangetssi2g=0 +tworangetssi5g=0 +femctrl=7 +pcieingress_war=15 +vendid=0x14e4 +devid=0x43ae +manfid=0x2d0 +nocrc=1 +otpimagesize=502 +xtalfreq=37400 +extpagain2g=2 +pdetrange2g=2 +extpagain5g=2 +pdetrange5g=2 +rxgains2gelnagaina0=0 +rxgains2gtrisoa0=7 +rxgains2gtrelnabypa0=0 +rxgains5gelnagaina0=0 +rxgains5gtrisoa0=11 +rxgains5gtrelnabypa0=0 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=0 +tssipos2g=0 +pa2ga0=-161,6269,-723 +pa2gccka0=-116,7568,-852 +pa5ga0=0xFF61,0x163C,0xFD55,0xFF5D,0x1671,0xFD4F,0xFF5F,0x16CA,0xFD45,0xFF60,0x1676,0xFD4D +pa5gbw40a0=0xFF61,0x163C,0xFD55,0xFF5D,0x1671,0xFD4F,0xFF5F,0x16CA,0xFD45,0xFF60,0x1676,0xFD4D +pa5gbw80a0=0xFF61,0x163C,0xFD55,0xFF5D,0x1671,0xFD4F,0xFF5F,0x16CA,0xFD45,0xFF60,0x1676,0xFD4D +pdoffset40ma0=0 +pdoffset80ma0=0 +pdoffsetcckma0=0 +maxp2ga0=75 +maxp5ga0=64,64,72,72 +cckbw202gpo=0x0000 +cckbw20ul2gpo=0x0 +mcsbw202gpo=0x99445533 +mcsbw402gpo=0x99775533 +dot11agofdmhrbw202gpo=0x2233 +ofdmlrbw202gpo=0x0000 +tssifloor2g=500 +mcsbw205glpo=0x66333330 +mcsbw405glpo=0x66665530 +mcsbw805glpo=0xAA555530 +mcsbw1605glpo=0x99555530 +mcsbw205gmpo=0x99BB5530 +mcsbw405gmpo=0x99BB5530 +mcsbw805gmpo=0xEE555530 +mcsbw1605gmpo=0x99555530 +mcsbw205ghpo=0x99995530 +mcsbw405ghpo=0x99BB5530 +mcsbw805ghpo=0xEE555530 +mcsbw1605ghpo=0x99555530 +mcslr5glpo=0x0000 +mcslr5gmpo=0x0000 +mcslr5ghpo=0x0000 +sb20in40hrrpo=0x0 +sb20in80and160hr5glpo=0x0 +sb40and80hr5glpo=0x0 +sb20in80and160hr5gmpo=0x0 +sb40and80hr5gmpo=0x0 +sb20in80and160hr5ghpo=0x0 +sb40and80hr5ghpo=0x0 +sb20in40lrpo=0x0 +sb20in80and160lr5glpo=0x0 +sb40and80lr5glpo=0x0 +sb20in80and160lr5gmpo=0x0 +sb40and80lr5gmpo=0x0 +sb20in80and160lr5ghpo=0x0 +sb40and80lr5ghpo=0x0 +dot11agduphrpo=0x0 +dot11agduplrpo=0x0 +phycal_tempdelta=25 +cckdigfilttype=2 +pacalidx2g=65 +dacrate2g=160 +swctrlmap_5g=0x00000008,0x00000010,0x00000008,0x000000,0x038 +swctrlmap_2g=0x00000001,0x00000002,0x00000001,0x040002,0x0ff +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +rssicorrnorm_c0=3,3 +rssicorrnorm5g_c0=2,3,4,2,3,3,0,1,2,0,1,2 +muxenab=0x10 diff --git a/features/buildroot/board/technexion/imx8mmpico/readme.txt b/features/buildroot/board/technexion/imx8mmpico/readme.txt new file mode 100644 index 00000000..3095d67b --- /dev/null +++ b/features/buildroot/board/technexion/imx8mmpico/readme.txt @@ -0,0 +1,96 @@ +********************************* +Technexion i.MX8M Mini Pico board +********************************* + +This file documents the Buildroot support for the Technexion i.MX8M +Mini Pico board. The Pico i.MX8M Mini system-on-module [1] is present +in development kits like the Pico Pi i.MX8M Mini [2]. + +Build +===== + +First, configure Buildroot for the i.MX8M Mini Pico board: + + make imx8mmpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - Image + - imx8-boot-sd.bin + - imx8mm-pico-pi.dtb + - imx8mm-pico-pi-ili9881c.dtb + - imx8mm-pico-pi-sn65dsi84-hj070na.dtb + - lpddr4_pmu_train_fw.bin + - rootfs.ext2 + - rootfs.ext4 + - sdcard.img + - u-boot.imx + +Flashing sdcard.img on the eMMC +=============================== + +i.MX8M Mini Pico board does not have a SD card slot. The storage is an +eMMC. An easy way to flash the eMMC is to use the u-boot ums +command. The boards are sold pre-flashed with such a u-boot. It is +assumed here that the board has already a working u-boot on eMMC and +jumpers are set to boot on eMMC. See [3]. + +Jumper configuration for eMMC boot: +J1: jumper on pins 4 and 6. +J2: jumper on pins 2 and 4. + +In case the board was flashed with a wrong u-boot, or the eMMC is +erased, u-boot can be loaded by USB Serial Download boot mode, using +imx-usb-loader. See [3] and [4]. + +For flashing: +- Plug the micro USB cable from the Debug USB Port, to your computer +- Plug the USB Type C to your computer, this will power up the board + +In the U-Boot prompt launch: + +=> ums 0 mmc 1 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +If your system automatically mount some device partitions, make sure +to unmount them. + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use with care! *** + +This operation can take several minutes, depending on the image +size. When tested, a 2MB/s transfer rate was observed. + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX8M Mini Pico board +=============================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board, with USB Type C connector. + +Enjoy! + +[1]. https://www.technexion.com/products/system-on-modules/pico/pico-compute-modules/detail/PICO-IMX8M-MINI +[2]. https://www.technexion.com/products/pico-evaluation-kits/detail/PICOPIIMX8MM1GDEV +[3]. https://www.technexion.com/support/knowledgebase/boot-configuration-settings-for-pico-baseboards/ +[4]. https://www.technexion.com/support/knowledgebase/loading-bootable-software-images-onto-the-emmc-of-picosom-on-pico-pi/ diff --git a/features/buildroot/board/technexion/imx8mpico/readme.txt b/features/buildroot/board/technexion/imx8mpico/readme.txt new file mode 100644 index 00000000..1a04e445 --- /dev/null +++ b/features/buildroot/board/technexion/imx8mpico/readme.txt @@ -0,0 +1,95 @@ +**************************** +Technexion i.MX8M Pico board +**************************** + +This file documents the Buildroot support for the Technexion i.MX8M +Pico board. The Pico i.MX8M system-on-module [1] is present in +development kits like the Pico Pi i.MX8M [2]. + +Build +===== + +First, configure Buildroot for the i.MX8M Pico board: + + make imx8mpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - Image + - imx8-boot-sd.bin + - lpddr4_pmu_train_fw.bin + - pico-8m-dcss-ili9881c.dtb + - pico-8m.dtb + - rootfs.ext4 + - sdcard.img + - signed_hdmi_imx8m.bin + - u-boot.imx + +Flashing sdcard.img on the eMMC +=============================== + +i.MX8M Pico board does not have a SD card slot. The storage is an +eMMC. An easy way to flash the eMMC is to use the u-boot ums +command. The boards are sold pre-flashed with such a u-boot. It is +assumed here that the board has already a working u-boot on eMMC and +jumpers are set to boot on eMMC. See [3]. + +Jumper configuration for eMMC boot: +J1: jumper on pins 4 and 6. +J2: jumper on pins 2 and 4. + +In case the board was flashed with a wrong u-boot, or the eMMC is +erased, u-boot can be loaded by USB Serial Download boot mode, using +imx-usb-loader. See [3] and [4]. + +For flashing: +- Plug the micro USB cable from the Debug USB Port, to your computer +- Plug the USB Type C to your computer, this will power up the board + +In the U-Boot prompt launch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +If your system automatically mount some device partitions, make sure +to unmount them. + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use with care! *** + +This operation can take several minutes, depending on the image +size. When tested, a 2MB/s transfer rate was observed. + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX8M Pico board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board, with USB Type C connector. + +Enjoy! + +[1]. https://www.technexion.com/products/system-on-modules/pico/pico-compute-modules/detail/PICO-IMX8M +[2]. https://www.technexion.com/products/system-on-modules/pico-evaluation-kits/detail/PICO-PI-IMX8M-BASIC +[3]. https://www.technexion.com/support/knowledgebase/boot-configuration-settings-for-pico-baseboards/ +[4]. https://www.technexion.com/support/knowledgebase/loading-bootable-software-images-onto-the-emmc-of-picosom-on-pico-pi/ diff --git a/features/buildroot/board/technologic/ts4800/genimage.cfg b/features/buildroot/board/technologic/ts4800/genimage.cfg new file mode 100644 index 00000000..2070cc50 --- /dev/null +++ b/features/buildroot/board/technologic/ts4800/genimage.cfg @@ -0,0 +1,37 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "imx51-ts4800.dtb" + } + } + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition mbrboot { + in-partition-table = "no" + image = "mbrboot.bin" + offset = 0 + } + + partition uboot { + partition-type = 0xda + image = "u-boot.bin" + size = 256k + } + + partition kernel { + partition-type = 0xC + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 256M + } +} diff --git a/features/buildroot/board/technologic/ts4800/linux.fragment b/features/buildroot/board/technologic/ts4800/linux.fragment new file mode 100644 index 00000000..0451c863 --- /dev/null +++ b/features/buildroot/board/technologic/ts4800/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_TOUCHSCREEN_TS4800=y +CONFIG_TS4800_WATCHDOG=y +CONFIG_TS4800_IRQ=y diff --git a/features/buildroot/board/technologic/ts4800/post-image.sh b/features/buildroot/board/technologic/ts4800/post-image.sh new file mode 100755 index 00000000..cc8e5da3 --- /dev/null +++ b/features/buildroot/board/technologic/ts4800/post-image.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Copyright (C) 2015 Savoir-faire Linux +# Post image generation script. + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP=${BUILD_DIR}/.genimage_tmp + +rm -rf ${GENIMAGE_TMP} + +${HOST_DIR}/bin/genimage \ + --config ${GENIMAGE_CFG} \ + --rootpath ${TARGET_DIR} \ + --tmppath ${GENIMAGE_TMP} \ + --inputpath $BINARIES_DIR \ + --outputpath $BINARIES_DIR + +exit $? diff --git a/features/buildroot/board/technologic/ts4800/readme.txt b/features/buildroot/board/technologic/ts4800/readme.txt new file mode 100644 index 00000000..20b50e9d --- /dev/null +++ b/features/buildroot/board/technologic/ts4800/readme.txt @@ -0,0 +1,50 @@ +Technologic Systems TS-4800 +=========================== + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-4800 System on Module. + +The TS-4800 is a TS-SOCKET macrocontroller board based on the Freescale +i.MX515 ARM Cortex-A8 CPU running at 800MHz. The TS-4800 features 10/100 +Ethernet, high speed USB host and device (OTG), microSD card, and 256MB +XNAND drive. More details on the board here: + http://wiki.embeddedarm.com/wiki/TS-4800 + +The TS-4800 is supported by mainline Linux as of 4.5 and by U-boot as of +v2016-07. The defconfig includes a custom 1st level bootloader located +in boot/ts4800-mbrboot. This one scans the SD card's partition table to +find partition having the 0xDA type, corresponding to U-boot. + +To build the default configuration you only have to: + + $ make ts4800_defconfig + $ make + +The ouput looks like: + output/images/ + ├── boot.vfat + ├── imx51-ts4800.dtb + ├── mbrboot.bin + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.bin + └── zImage + +The provided post-image script generates an image file containing 3 +partitions for U-boot, Linux kernel + device tree and rootfs +respectively: + $ fdisk output/images/sdcard.img + Device Boot Start End Blocks Id System + output/images/sdcard.img1 1 512 256 da Non-FS data + output/images/sdcard.img2 513 16896 8192 c W95 FAT32 (LBA) + output/images/sdcard.img3 16897 541184 262144 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +In order to test the image on TS-4800 board, a TS baseboard, such as +TS-8xxx the serie, is needed to provide power, console header, RJ45 +connector etc. diff --git a/features/buildroot/board/technologic/ts4900/genimage.cfg b/features/buildroot/board/technologic/ts4900/genimage.cfg new file mode 100644 index 00000000..7e580eb2 --- /dev/null +++ b/features/buildroot/board/technologic/ts4900/genimage.cfg @@ -0,0 +1,10 @@ +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 256M + } +} diff --git a/features/buildroot/board/technologic/ts4900/post-image.sh b/features/buildroot/board/technologic/ts4900/post-image.sh new file mode 100755 index 00000000..cb966d88 --- /dev/null +++ b/features/buildroot/board/technologic/ts4900/post-image.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Copyright (C) 2015-2016 Savoir-Faire Linux +# Post image generation script. + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG=$BOARD_DIR/genimage.cfg +GENIMAGE_TMP=$BUILD_DIR/.genimage_tmp + +rm -rf $GENIMAGE_TMP + +${HOST_DIR}/bin/genimage \ + --config ${GENIMAGE_CFG} \ + --rootpath $TARGET_DIR \ + --tmppath $GENIMAGE_TMP \ + --inputpath $BINARIES_DIR \ + --outputpath $BINARIES_DIR diff --git a/features/buildroot/board/technologic/ts4900/readme.txt b/features/buildroot/board/technologic/ts4900/readme.txt new file mode 100644 index 00000000..679454fd --- /dev/null +++ b/features/buildroot/board/technologic/ts4900/readme.txt @@ -0,0 +1,52 @@ +Technologic Systems TS-4900 +=========================== + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-4900 System on Module. + +The TS-4900 is a TS-SOCKET macrocontroller board based on the +Freescale i.MX6 Single or Quad Core ARM Cortex-A9 CPU clocked at +1GHz. The TS-4900 features Gigabit Ethernet, SATA II Port, PCI Express +Bus, high speed USB host and device (OTG), and microSD card. +More details on the board here: + http://wiki.embeddedarm.com/wiki/TS-4900 + +The TS-4900 is not currently supported by mainline Linux, so a +Technologic Systems Linux is used based on Linux 4.1. +The default U-boot configuration flashed scans the SD card to find the +0x83 partition type, corresponding to the rootfs. Then it will load +both uImage and dts from the /boot directory. +To build the default configuration you only have to: + + $ make ts4900_defconfig + $ make + +The output looks like: +output/images/ +├── imx6q-ts4900.dtb +├── rootfs.ext2 +├── rootfs.tar +├── sdcard.img +└── uImage + +Since both the uImage and the dts are contained in the /boot +directory, the provided post-image script generates an image file +containing only one partition for the rootfs: + + $ fdisk output/images/sdcard.img + Device Boot Start End Blocks Id System +output/images/sdcard.img1 1 524288 262144 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +In order to test the image on TS-4900 board, a TS baseboard, such as +the TS-9xxx series, is needed to provide power, console header, RJ45 +connector etc. + +The bootloader comes pre-flashed on the board on an SPI flash. Since +updating the bootloader is risky and not trivial, it is not included +in the Buildroot defconfig. Refer to +http://wiki.embeddedarm.com/wiki/TS-4900#U-Boot for details on which +U-Boot config to use and how to flash it. diff --git a/features/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg b/features/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg new file mode 100644 index 00000000..64f81877 --- /dev/null +++ b/features/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg @@ -0,0 +1,9 @@ +SERIAL 1 115200 +CONSOLE 0 + +DEFAULT linux + +LABEL linux + SAY Now booting the kernel from SYSLINUX... + LINUX /boot/bzImage + APPEND console=ttyS1,115200n8 root=/dev/sda1 rootfstype=ext4 rw diff --git a/features/buildroot/board/technologic/ts5500/linux-4.14.config b/features/buildroot/board/technologic/ts5500/linux-4.14.config new file mode 100644 index 00000000..eb81596e --- /dev/null +++ b/features/buildroot/board/technologic/ts5500/linux-4.14.config @@ -0,0 +1,111 @@ +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_MELAN=y +CONFIG_X86_GENERIC=y +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_NOHIGHMEM=y +# CONFIG_COMPACTION is not set +# CONFIG_BOUNCE is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_SUSPEND is not set +# CONFIG_ACPI is not set +CONFIG_CPU_IDLE=y +CONFIG_TS5500=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_BLK_DEV is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_ATA_GENERIC=y +CONFIG_PATA_LEGACY=y +CONFIG_NETDEVICES=y +# CONFIG_NET_CORE is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +CONFIG_NET_TULIP=y +CONFIG_DM9102=y +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_PHYLIB=y +CONFIG_DAVICOM_PHY=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_GPIOLIB=y +CONFIG_GPIO_TS5500=y +CONFIG_SENSORS_MAX197=y +CONFIG_WATCHDOG=y +CONFIG_SC520_WDT=y +CONFIG_USB=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_PL2303=y +# CONFIG_X86_PLATFORM_DEVICES is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_DMIID is not set +CONFIG_EXT4_FS=y +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_UTF8=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_XZ_DEC=y diff --git a/features/buildroot/board/technologic/ts5500/readme.txt b/features/buildroot/board/technologic/ts5500/readme.txt new file mode 100644 index 00000000..1e73ab3e --- /dev/null +++ b/features/buildroot/board/technologic/ts5500/readme.txt @@ -0,0 +1,52 @@ +Technologic Systems TS-5x00 SBCs +================================ + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-5x00 serie of x86-based Single Board Computers. + +TS-5x00 Single Board Computers are based on the AMD Elan520 processor. For more +information please have a look at http://wiki.embeddedarm.com/wiki/#AMD + +The kernel configuration works for any AMD Elan520-based SBCs, but the support +is enhanced for the TS-5500 and TS-5400 models (on-board devices registration +and additional sysfs attributes under /sys/devices/platform/). + +To build the default configuration you only have to: + + $ make ts5500_defconfig + $ make + +You will need a Compact Flash card of sufficient size and the first or only +partition configured as Linux type, with the bootable flag. + +You can transfer the system on the partition then optionally resize it with: + + # dd if=output/images/rootfs.ext4 of=/dev/sdX1 + # resize2fs /dev/sdX1 + +Or you can just extract the root filesystem to the partition with: + + # mount /dev/sdX1 /mnt + # tar -pxf output/images/rootfs.tar -C /mnt + # umount /mnt + +To install the bootloader, you will need to copy the MBR: + + # cat output/images/syslinux/mbr.bin > /dev/sdX + +Then install SYSLINUX in the mounted partition: + + # mount /dev/sdX1 /mnt + # output/host/sbin/extlinux --install /mnt/boot/syslinux + # umount /mnt + +IMPORTANT: In order for the board to boot the Compact Flash with a recent +config, the BIOS must use Logical Block Addressing (LBA). You can do it by +choosing "Ide 0: AUTOCONFIG, LBA" under "IDE DRIVE GEOMETRY" in the "Basic CMOS +Configuration" screen. Also, don't forget to set the 'active' (or 'bootable') +flag on partition 1. For details about the CMOS setup, please see: +http://wiki.embeddedarm.com/wiki/TS-5500#System_BIOS_Setup_Screens + +Connect a terminal program to the rs232 connector marked "COM2" +with baudrate set to 115200, insert the Compact Flash card into the socket, +power up the board, and enjoy. diff --git a/features/buildroot/board/technologic/ts7680/genimage.cfg b/features/buildroot/board/technologic/ts7680/genimage.cfg new file mode 100644 index 00000000..70b1dac6 --- /dev/null +++ b/features/buildroot/board/technologic/ts7680/genimage.cfg @@ -0,0 +1,14 @@ +image sdcard.img { + hdimage { + } + + partition unused { + size = 512 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 256M + } +} diff --git a/features/buildroot/board/technologic/ts7680/readme.txt b/features/buildroot/board/technologic/ts7680/readme.txt new file mode 100644 index 00000000..4ddd4915 --- /dev/null +++ b/features/buildroot/board/technologic/ts7680/readme.txt @@ -0,0 +1,51 @@ +Technologic Systems TS-7680 SBC +=============================== + +This document explains how to set up a basic Buildroot system for +the Technologic Systems TS-7680 Single Board Computer. + +The TS-7680 SBC is based on the Freescale i.MX286 ARM ARM926EJ-S +running at 454MHz. The TS-7680 features are 10/100 Ethernet ports, +Wi-Fi, microSD card, eMMC, NOR Flash, USB host port, CAN ports, +relays and ADC/DAC. More details on the board here: +https://wiki.embeddedarm.com/wiki/TS-7680 + +The TS-7680 uses a 3.14.28 Linux kernel provided by +Technologic Systems. + +To build the default configuration you only have to run: + + $ make ts7680_defconfig + $ make + +The output looks like: +output/images +├── imx28-ts7680.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +└── uImage + +The provided genimage configuration generates an image file containing +two partitions. The first one is unused, but mandatory as the +TS-7680 built-in bootloader loads the Linux uImage from the /boot +directory in the second partition. The second partition contains the +rootfs with the Linux uImage into the /boot directory. + + $ fdisk output/images/sdcard.img + output/images/sdcard.img1 1 1 1 512B 0 Empty + output/images/sdcard.img2 2 524289 524288 256M 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +To boot with Buildroot, insert this SD card on the board, make sure +the SD jumper is present and the U-Boot jumper is not. + +The bootloader comes pre-flashed on the board on an SPI flash. Since +updating the bootloader is risky and not trivial, it is not included +in the Buildroot defconfig. Refer to +https://wiki.embeddedarm.com/wiki/TS-7680#U-Boot for details on +which U-Boot config to use and how to flash it. diff --git a/features/buildroot/board/toradex/apalis-imx6/genimage.cfg b/features/buildroot/board/toradex/apalis-imx6/genimage.cfg new file mode 100644 index 00000000..fe359bd9 --- /dev/null +++ b/features/buildroot/board/toradex/apalis-imx6/genimage.cfg @@ -0,0 +1,15 @@ +# Minimal SD card image for the Toradex Apalis i.MX6 COM +# +# It does not need a boot section for a bootloader since it is booted +# from its internal flash memory (eMMC). + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 512M + } +} diff --git a/features/buildroot/board/toradex/apalis-imx6/post-image.sh b/features/buildroot/board/toradex/apalis-imx6/post-image.sh new file mode 100755 index 00000000..2b49f9d3 --- /dev/null +++ b/features/buildroot/board/toradex/apalis-imx6/post-image.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +GENIMAGE_CFG="$(dirname $0)/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +# copy the uEnv.txt to the output/images directory +cp board/toradex/apalis-imx6/uEnv.txt $BINARIES_DIR/uEnv.txt + +rm -rf "${GENIMAGE_TMP}" + +# generate rootfs.img +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +RET=${?} +exit ${RET} diff --git a/features/buildroot/board/toradex/apalis-imx6/readme.txt b/features/buildroot/board/toradex/apalis-imx6/readme.txt new file mode 100644 index 00000000..feddad64 --- /dev/null +++ b/features/buildroot/board/toradex/apalis-imx6/readme.txt @@ -0,0 +1,53 @@ +Toradex Apalis i.MX6 Computer on Module + +Intro +===== + +The Apalis iMX6 is a small form-factor Computer on Module that comes +in both quad core and dual core versions based on Freescale i.MX6Q and +Freescale i.MX6D SoCs respectively. The Cortex A9 quad core and dual +core CPU peaks at 1 GHz for commercial temperature variant, while the +industrial temperature variant has a peak frequency of 800 MHz. + +https://www.toradex.com/computer-on-modules/apalis-arm-family/freescale-imx-6 + +It supports two carrier boards: + +Apalis Evaluation Board +https://www.toradex.com/products/carrier-boards/apalis-evaluation-board + +Ixora Carrier Board +https://www.toradex.com/products/carrier-boards/ixora-carrier-board + +How to build it +=============== + +Configure Buildroot: + + $ make toradex_apalis_imx6_defconfig + +Compile everything and build the rootfs image: + + $ make + +How to boot the image +===================== + +The board only boots from its internal flash memory eMMC, so the +bootloader image should be copied to it, following the procedures +described in Toradex website. + +http://developer.toradex.com/knowledge-base/flashing-linux-on-imx6-modules + +Buildroot prepares a "sdcard.img" in output/images/ with the kernel +image, device tree and a root filesystem, ready to be dumped on an SD +card. + + $ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +To boot from the SD card, you should change the U-Boot +environment. Since U-Boot is running from internal eMMC, you will need +to access its command line prompt and manually set the necessary +variables to boot from the external SD card. For convenience, you can +use uEnv.txt provided in output/images/ as a reference to create the +necessary U-Boot variables to boot from the SD card. diff --git a/features/buildroot/board/toradex/apalis-imx6/uEnv.txt b/features/buildroot/board/toradex/apalis-imx6/uEnv.txt new file mode 100644 index 00000000..96ab80cf --- /dev/null +++ b/features/buildroot/board/toradex/apalis-imx6/uEnv.txt @@ -0,0 +1,6 @@ +boot_file=zImage +fdt_file=imx6q-apalis_v1_0-ixora.dtb +sdargs=ip=off root=/dev/mmcblk1p1 rw,noatime rootfstype=ext4 rootwait +sddtbload=ext2load mmc 2:1 ${fdt_addr_r} boot/${fdt_file} +sdkernelload=ext2load mmc 2:1 ${kernel_addr_r} boot/${boot_file} +bootcmd=run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs}; echo Booting from SD card...; run sddtbload; run sdkernelload; bootz ${kernel_addr_r} - ${fdt_addr_r} diff --git a/features/buildroot/board/udoo/mx6qdl/linux.fragment b/features/buildroot/board/udoo/mx6qdl/linux.fragment new file mode 100644 index 00000000..1d250998 --- /dev/null +++ b/features/buildroot/board/udoo/mx6qdl/linux.fragment @@ -0,0 +1 @@ +# CONFIG_USB is not set diff --git a/features/buildroot/board/udoo/mx6qdl/readme.txt b/features/buildroot/board/udoo/mx6qdl/readme.txt new file mode 100644 index 00000000..cf1a6104 --- /dev/null +++ b/features/buildroot/board/udoo/mx6qdl/readme.txt @@ -0,0 +1,17 @@ +Udoo MX6Q/DL board + +For information about MX6 Udoo boards: +http://www.udoo.org/ + +To build a minimal support for these boards: + + $ make mx6udoo_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a micro SD card: + +dd if=output/images/sdcard.img of=/dev/ + +For details about the medium image layout, see the definition in +board/udoo/mx6qdl/genimage.cfg. diff --git a/features/buildroot/board/udoo/neo/boot.scr.txt b/features/buildroot/board/udoo/neo/boot.scr.txt new file mode 100644 index 00000000..7a8aa4bd --- /dev/null +++ b/features/buildroot/board/udoo/neo/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 0:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=ttymxc0,115200 root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 0:1 ${fdt_addr} boot/${fdtfile} +load mmc 0:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/features/buildroot/board/udoo/neo/genimage.cfg b/features/buildroot/board/udoo/neo/genimage.cfg new file mode 100644 index 00000000..46209120 --- /dev/null +++ b/features/buildroot/board/udoo/neo/genimage.cfg @@ -0,0 +1,32 @@ +# Minimal SD card image for the MX6SX Udoo Neo board +# +# The SD card must have at least 1 MB free at the beginning. +# U-Boot and its environment are dumped as is. +# A single root filesystem partition is required (Ext4 in this case). +# +# For details about the layout, see: +# http://wiki.wandboard.org/index.php/Boot-process + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + size = 512M + } +} diff --git a/features/buildroot/board/udoo/neo/post-build.sh b/features/buildroot/board/udoo/neo/post-build.sh new file mode 100755 index 00000000..43e091c5 --- /dev/null +++ b/features/buildroot/board/udoo/neo/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none \ +-n "boot script" -d $BOARD_DIR/boot.scr.txt $BOARD_DIR/boot.scr + +install -m 0644 -D $BOARD_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/features/buildroot/board/udoo/neo/post-image.sh b/features/buildroot/board/udoo/neo/post-image.sh new file mode 100755 index 00000000..18e76aa4 --- /dev/null +++ b/features/buildroot/board/udoo/neo/post-image.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + diff --git a/features/buildroot/board/udoo/neo/readme.txt b/features/buildroot/board/udoo/neo/readme.txt new file mode 100644 index 00000000..f037ad48 --- /dev/null +++ b/features/buildroot/board/udoo/neo/readme.txt @@ -0,0 +1,16 @@ +MX6X Udoo Neo board + +http://www.udoo.org/udoo-neo/ + +To build a minimal support for these boards: + + $ make mx6sx_udoo_neo_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card: + +dd if=output/images/sdcard.img of=/dev/ + +For details about the medium image layout, see the definition in +board/udoo/neo/genimage.cfg. diff --git a/features/buildroot/board/wandboard/boot.scr.txt b/features/buildroot/board/wandboard/boot.scr.txt new file mode 100644 index 00000000..7a8aa4bd --- /dev/null +++ b/features/buildroot/board/wandboard/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 0:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=ttymxc0,115200 root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 0:1 ${fdt_addr} boot/${fdtfile} +load mmc 0:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/features/buildroot/board/wandboard/genimage.cfg b/features/buildroot/board/wandboard/genimage.cfg new file mode 100644 index 00000000..ad4a6a55 --- /dev/null +++ b/features/buildroot/board/wandboard/genimage.cfg @@ -0,0 +1,32 @@ +# Minimal SD card image for the Wandboard +# +# The SD card must have at least 1 MB free at the beginning. +# U-Boot and its environment are dumped as is. +# A single root filesystem partition is required (Ext4 in this case). +# +# For details about the layout, see: +# http://wiki.wandboard.org/index.php/Boot-process + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 70656 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + size = 512M + } +} diff --git a/features/buildroot/board/wandboard/post-build.sh b/features/buildroot/board/wandboard/post-build.sh new file mode 100755 index 00000000..43e091c5 --- /dev/null +++ b/features/buildroot/board/wandboard/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none \ +-n "boot script" -d $BOARD_DIR/boot.scr.txt $BOARD_DIR/boot.scr + +install -m 0644 -D $BOARD_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/features/buildroot/board/wandboard/post-image.sh b/features/buildroot/board/wandboard/post-image.sh new file mode 100755 index 00000000..18e76aa4 --- /dev/null +++ b/features/buildroot/board/wandboard/post-image.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + diff --git a/features/buildroot/board/wandboard/readme.txt b/features/buildroot/board/wandboard/readme.txt new file mode 100644 index 00000000..adc4e5c1 --- /dev/null +++ b/features/buildroot/board/wandboard/readme.txt @@ -0,0 +1,14 @@ +Wandboard + +http://www.wandboard.org + +To build a minimal support for this board: + + $ make wandboard_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card. + +For details about the medium image layout, see the definition in +board/wandboard/genimage.cfg. diff --git a/features/buildroot/board/warp7/readme.txt b/features/buildroot/board/warp7/readme.txt new file mode 100644 index 00000000..aff7a601 --- /dev/null +++ b/features/buildroot/board/warp7/readme.txt @@ -0,0 +1,118 @@ +***************** +Warp i.MX7S board +***************** + +This file documents the Buildroot support for the Warp i.MX7S board. + +Build +===== + +First, configure Buildroot for the Warp i.MX7S board: + + make warp7_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7s-warp.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot-dtb.imx + - zImage + +Flash the eMMC image +==================== + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped into the eMMC. Launch the following +command: + +sudo dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use it with care! *** + +For details about the medium image layout, see the definition in +board/warp7/genimage.cfg. + +How to recover from a bad eMMC image +==================================== + +In case a bad U-Boot has been flashed to the eMMC and the board no +longer boots, it is possible to recover using the imx_usb_loader utility. + +Put the warp7 board in USB download mode by removing the CPU board +from the base board then putting switch 2 in the upper position. + +Connect a USB to serial adapter between the host PC and warp7 serial +USB port, and also a USB cable between the OTG warp7 port and the host +PC. + +Copy u-boot-dtb.imx to the imx_usb_loader folder. + +Load u-boot-dtb.imx via USB: + +$ sudo ./imx_usb u-boot-dtb.imx + +Then U-Boot should start and its messages will appear in the console program. + +Open a terminal program such as minicom. + +Use the default environment variables: + +=> env default -f -a +=> saveenv + +Run the DFU command: +=> dfu 0 mmc 0 + +Transfer u-boot-dtb.imx that will be flashed into the eMMC: + +$ sudo dfu-util -D u-boot-dtb.imx -a boot + +Then on the U-Boot prompt the following message should be seen after a +successful upgrade: + +#DOWNLOAD ... OK +Ctrl+C to exit ... + +=> ums 0 mmc 0 + +sudo dd if=output/images/sdcard.img of=/dev/ + +Put warp7 back in eMMC boot mode by placing switch 2 in the lower position +and reboot the board. + +Boot the Warp i.MX7S board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/features/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/features/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 00000000..a1dc2035 --- /dev/null +++ b/features/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt @@ -0,0 +1,42 @@ +# 2.4 GHz, 20 MHz BW mode +manfid=0x2d0 +prodid=0x0726 +vendid=0x14e4 +devid=0x43e2 +boardtype=0x0726 +boardrev=0x1202 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +sromrev=11 +boardflags=0x00404201 +boardflags3=0x08000000 +xtalfreq=37400 +nocrc=1 +ag0=0 +aa2g=1 +ccode=ALL +#pa0itssit=0x20 +extpagain2g=0 +pa2ga0=-168,7161,-820 +AvVmid_c0=0x0,0xc8 +cckpwroffset0=5 +maxp2ga0=90 +#txpwrbckof=6 +cckbw202gpo=0 +legofdmbw202gpo=0x66111111 +mcsbw202gpo=0x77711111 +propbw202gpo=0xdd +ofdmdigfilttype=18 +ofdmdigfilttypebe=18 +papdmode=1 +papdvalidtest=1 +pacalidx2g=48 +papdepsoffset=-22 +papdendidx=58 +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b +#muxenab=0x10 +#BT COEX deferral limit setting +#btc_params 8 45000 +#btc_params 10 20000 +#spurconfig=0x3 diff --git a/features/buildroot/board/zynq/genimage.cfg b/features/buildroot/board/zynq/genimage.cfg new file mode 100644 index 00000000..76e61c3a --- /dev/null +++ b/features/buildroot/board/zynq/genimage.cfg @@ -0,0 +1,25 @@ +image boot.vfat { + vfat { + files = { + "boot.bin", + "u-boot.img", + "devicetree.dtb", + "uImage" + } + file uramdisk.image.gz { + image = "rootfs.cpio.uboot" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } +} diff --git a/features/buildroot/board/zynq/post-image.sh b/features/buildroot/board/zynq/post-image.sh new file mode 100755 index 00000000..0cf92e0a --- /dev/null +++ b/features/buildroot/board/zynq/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# By default U-Boot loads DTB from a file named "devicetree.dtb", so +# let's use a symlink with that name that points to the *first* +# devicetree listed in the config. + +FIRST_DT=$(sed -n \ + 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9\-]*\).*"$/\1/p' \ + ${BR2_CONFIG}) + +[ -z "${FIRST_DT}" ] || ln -fs ${FIRST_DT}.dtb ${BINARIES_DIR}/devicetree.dtb + +support/scripts/genimage.sh -c board/zynq/genimage.cfg diff --git a/features/buildroot/board/zynq/readme.txt b/features/buildroot/board/zynq/readme.txt new file mode 100644 index 00000000..16273496 --- /dev/null +++ b/features/buildroot/board/zynq/readme.txt @@ -0,0 +1,86 @@ +This is the Buildroot support for Zynq boards. Zynq boards are available from +Xilinx and some third party vendors, but the build procedure is very similar. + +Currently, three boards are natively supported by Buildroot: + - Xilinx ZC706 board (zynq_zc706_defconfig) + - Avnet ZedBoard (zynq_zed_defconfig) + - Avnet MicroZed (zynq_microzed_defconfig) + +Steps to create a working system for a Zynq board: + +1) Configuration (do one of the following) + make zynq_zc706_defconfig (ZC706) + make zynq_zed_defconfig (Zedboard) + make zynq_microzed_defconfig (MicroZed) +2) make +3) All needed files will be available in the output/images directory. + The sdcard.img file is a complete bootable image ready to be written + on the boot medium. To install it, simply copy the image to an SD + card: + + # dd if=output/images/sdcard.img of=/dev/sdX + + Where 'sdX' is the device node of the uSD. +4) boot your board + +You can alter the booting procedure by creating a file uEnv.txt +in the root of the SD card. It is a plain text file in format += one per line: + +kernel_image=myimage +modeboot=myboot +myboot=... + +Note: +The DTB for MicroZed is the same as the one for the Zedboard (zynq-zed.dtb), +and this is the recommended solution, see +https://forums.xilinx.com/t5/Embedded-Linux/Microzed-default-device-tree-dts/td-p/432856. + +References: + - ZC706 information including schematics, reference designs, and manuals are + available from + http://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html. + + - Zedboard/Microzed information including schematics, reference designs, and + manuals are available from http://www.zedboard.org . + +Support for other boards: + +If you want to build a system for other boards based on the same SoC +(for ex. Digilent Zybo board), and the board is already supported by +the upstream kernel and U-Boot, you simply need to change the +following Buildroot options: + + - Kernel Device Tree file name (BR2_LINUX_KERNEL_INTREE_DTS_NAME) + - U-Boot board defconfig (BR2_TARGET_UBOOT_BOARD_DEFCONFIG) + +Custom ps7_init_gpl.c/h support: + +To generate a working boot.bin image, ps7_init_gpl.c/h are required in +the U-Boot source tree. Without those files, boot.bin will be built +successfully but it will not be functional at all. Those files are +output from the Xilinx tools, but for convenience, U-Boot includes the +default ps7_init_gpl.c/h of popular boards. Those files may need to be +updated for any programmable logic customizations which impact +ps7_init (clock/pin setup & mapping/AXI bridge setup/etc). See +board/xilinx/zynq/ directory of U-Boot for natively supported ps7_init +files. If the ps7_init files for your board are not found in U-Boot, +you need to add them by yourself. + +1) Start with a defconfig supported by Buildroot (e.g. Zedboard) + make zynq_zed_defconfig + +2) make uboot-menuconfig + Visit the following menu and enable CONFIG_ZYNQ_CUSTOM_INIT. + + ARM architecture ---> + [*] Use custom ps7_init provided by Xilinx tool + +3) Copy ps7_init_gpl.c/h generated by the Xilinx tools into + output/build/uboot-xilinx-/board/xilinx/zynq/custom_hw_platform/ + +4) make + +Note: The files in step 3 will need to be re-copied after cleaning the +output directory and at this time, there is no way to save them as +part of the buildroot configuration, except as a U-Boot patch. diff --git a/features/buildroot/board/zynqmp/genimage.cfg b/features/buildroot/board/zynqmp/genimage.cfg new file mode 100644 index 00000000..30be086d --- /dev/null +++ b/features/buildroot/board/zynqmp/genimage.cfg @@ -0,0 +1,28 @@ +image boot.vfat { + vfat { + files = { + "boot.bin", + "u-boot.bin", + "atf-uboot.ub", + "system.dtb", + "Image" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/features/buildroot/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch b/features/buildroot/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch new file mode 100644 index 00000000..4d85e1bb --- /dev/null +++ b/features/buildroot/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch @@ -0,0 +1,52 @@ +From e5d72ed8339eb05285448aad3c89d21e4d18fd29 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Mon, 26 Feb 2018 09:40:34 +0100 +Subject: [PATCH] arm64: zynqmp: zcu106: fix SPL MMC booting + +The U-Boot SPL generated with the current zcu106 defconfig cannot boot +from MMC: + + [...] + U-Boot SPL 2018.01 (Feb 21 2018 - 17:47:14) + EL Level: EL3 + Trying to boot from MMC1 + sdhci_transfer_data: Error detected in status(0x408020)! + spl_load_image_fat_os: error reading image u-boot.bin, err - -2 + spl_load_image_fat: error reading image u-boot.img, err - -6 + SPL: failed to boot from all boot devices + ### ERROR ### Please RESET the board ### + +Fix by lowering the rpll value. The new value for the RPLL_CTRL +register comes from the current psu_init_gpl.c from the HDF file at +https://github.com/xilinx/hdf-examples/tree/01ad8ea5fd1989abf4ea5a072d019a16cb2bc546/zcu106-zynqmp +(generated by Vivado v2017.4). + +RPLL and sdio1_ref clocks before and after this change: + + - Old values: RPLL 1.36 GHz, sdio1_ref 272 MHz + - New values: RPLL 1.16 GHz, sdio1_ref 233 MHz + +Signed-off-by: Luca Ceresoli +Cc: Michal Simek +Upstream-status: accepted upstream in a different form +--- + + board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c b/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c +index 4d18abe000ca..e6fa477e53e7 100644 +--- a/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c ++++ b/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c +@@ -10,7 +10,7 @@ + static unsigned long psu_pll_init_data(void) + { + psu_mask_write(0xFF5E0034, 0xFE7FEDEFU, 0x7E4E2C62U); +- psu_mask_write(0xFF5E0030, 0x00717F00U, 0x00013C00U); ++ psu_mask_write(0xFF5E0030, 0x00717F00U, 0x00014600U); + psu_mask_write(0xFF5E0030, 0x00000008U, 0x00000008U); + psu_mask_write(0xFF5E0030, 0x00000001U, 0x00000001U); + psu_mask_write(0xFF5E0030, 0x00000001U, 0x00000000U); +-- +2.7.4 + diff --git a/features/buildroot/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch b/features/buildroot/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch new file mode 100644 index 00000000..487fff68 --- /dev/null +++ b/features/buildroot/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch @@ -0,0 +1,114 @@ +From 5e3cac50cc981e01d9072241035a8d4162560c71 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Mon, 12 Mar 2018 17:18:38 +0100 +Subject: [PATCH] arm64: zynqmp: Enable booting to ATF + +U-Boot is now able to boot to ARM Trusted Firmware (ATF). The boot +flow is SPL(EL3) loads ATF and full u-boot and jump to ATF(EL3) which +pass control to full u-boot(EL2). This has been tested on zcu106, so +enable it in this defconfig. + +To generate an image that triggers this booting flow, you need to pass +'-O arm-trusted-firmware' to mkimage. + +Signed-off-by: Luca Ceresoli +Signed-off-by: Michal Simek +Backported from upstream: http://git.denx.de/?p=u-boot.git;a=commit;h=5e3cac50cc981e01d9072241035a8d4162560c71 +--- + + configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig | 1 + + configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig | 1 + + configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig | 1 + + configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig | 1 + + configs/xilinx_zynqmp_zcu102_rev1_0_defconfig | 1 + + configs/xilinx_zynqmp_zcu102_revA_defconfig | 1 + + configs/xilinx_zynqmp_zcu102_revB_defconfig | 1 + + 7 files changed, 7 insertions(+) + +diff --git a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig +index c5bfa2b12638..488c72258b0e 100644 +--- a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig ++++ b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig +@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_FASTBOOT=y + CONFIG_FASTBOOT_FLASH=y +diff --git a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig +index f86dce403a42..5d501eec0edd 100644 +--- a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig ++++ b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig +@@ -20,6 +20,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_FASTBOOT=y + CONFIG_FASTBOOT_FLASH=y +diff --git a/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig b/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig +index 6e947cf56827..6f7eaebd7676 100644 +--- a/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig ++++ b/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig +@@ -16,6 +16,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_CMD_MEMTEST=y + CONFIG_SYS_ALT_MEMTEST=y +diff --git a/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig b/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig +index 1c934858c61c..7a3806cba4b5 100644 +--- a/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig ++++ b/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig +@@ -17,6 +17,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_CMD_MEMTEST=y + CONFIG_SYS_ALT_MEMTEST=y +diff --git a/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig b/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig +index e13c7c56f310..e4408f182ca0 100644 +--- a/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig ++++ b/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig +@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_FASTBOOT=y + CONFIG_FASTBOOT_FLASH=y +diff --git a/configs/xilinx_zynqmp_zcu102_revA_defconfig b/configs/xilinx_zynqmp_zcu102_revA_defconfig +index 5b2cd495ee85..b52f6789fd4b 100644 +--- a/configs/xilinx_zynqmp_zcu102_revA_defconfig ++++ b/configs/xilinx_zynqmp_zcu102_revA_defconfig +@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_FASTBOOT=y + CONFIG_FASTBOOT_FLASH=y +diff --git a/configs/xilinx_zynqmp_zcu102_revB_defconfig b/configs/xilinx_zynqmp_zcu102_revB_defconfig +index e6530fbfe7ff..80592554f682 100644 +--- a/configs/xilinx_zynqmp_zcu102_revB_defconfig ++++ b/configs/xilinx_zynqmp_zcu102_revB_defconfig +@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y + CONFIG_SPL_OS_BOOT=y + CONFIG_SPL_RAM_SUPPORT=y + CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_ATF=y + CONFIG_SYS_PROMPT="ZynqMP> " + CONFIG_FASTBOOT=y + CONFIG_FASTBOOT_FLASH=y +-- +2.7.4 + diff --git a/features/buildroot/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch b/features/buildroot/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch new file mode 100644 index 00000000..95ab7b3b --- /dev/null +++ b/features/buildroot/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch @@ -0,0 +1,68 @@ +From c7df098a71e05dc81cee818747759e8060b59626 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Mon, 4 Jun 2018 12:21:01 +0200 +Subject: [PATCH] arm64: zynqmp: accept an absolute path for PMUFW_INIT_FILE + +The value of PMUFW_INIT_FILE is prefixed with "$(srctree)/", thus +forcing it to be a relative path inside the U-Boot source tree. Since +the PMUFW is a binary file generated outside of U-Boot, the PMUFW +binary must be copied inside the U-Boot source tree before the +build. + +This generates a few problems: + + * if the source tree is shared among different out-of-tree builds, + they will pollute (and potentially corrupt) each other + * the source tree cannot be read-only + * any buildsystem must add a command to copy the PMUFW binary + * putting an externally-generated binary in the source tree is ugly + as hell + +Avoid these problems by accepting an absolute path for +PMUFW_INIT_FILE. This would be as simple as removing the "$(srctree)/" +prefix, but in order to keep backward compatibility we rather use the +shell and readlink to get the absolute path even when starting from a +relative path. + +Since 'readlink -f' produces an empty string if the file does not +exist, we also add a check to ensure the file configured in +PMUFW_INIT_FILE exists. Otherwise the build would exit successfully, +but produce a boot.bin without PMUFW as if PMUFW_INIT_FILE were empty. + +Tested in the 12 possible combinations of: + - PMUFW_INIT_FILE empty, relative, absolute, non-existing + - building in-tree, in subdir, in other directory + +Signed-off-by: Luca Ceresoli +Cc: Michal Simek +Cc: Simon Glass +Cc: Emmanuel Vadot +Signed-off-by: Michal Simek +Backported from upstream: https://git.denx.de/?p=u-boot.git;a=commit;h=c7df098a71e05dc81cee818747759e8060b59626 +--- + scripts/Makefile.spl | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl +index ef018b5b4056..252f13826d4c 100644 +--- a/scripts/Makefile.spl ++++ b/scripts/Makefile.spl +@@ -167,8 +167,14 @@ ifdef CONFIG_ARCH_ZYNQ + MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) + endif + ifdef CONFIG_ARCH_ZYNQMP ++ifneq ($(CONFIG_PMUFW_INIT_FILE),"") ++spl/boot.bin: zynqmp-check-pmufw ++zynqmp-check-pmufw: FORCE ++ ( cd $(srctree) && test -r $(CONFIG_PMUFW_INIT_FILE) ) \ ++ || ( echo "Cannot read $(CONFIG_PMUFW_INIT_FILE)" && false ) ++endif + MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \ +- -n $(srctree)/$(CONFIG_PMUFW_INIT_FILE) ++ -n "$(shell cd $(srctree); readlink -f $(CONFIG_PMUFW_INIT_FILE))" + endif + + spl/boot.bin: $(obj)/u-boot-spl.bin FORCE +-- +2.7.4 + diff --git a/features/buildroot/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch b/features/buildroot/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch new file mode 100644 index 00000000..b32e1627 --- /dev/null +++ b/features/buildroot/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch @@ -0,0 +1,175 @@ +From 4c9d54ab5a41d65000c8d249b6fb1b76056f1812 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Wed, 20 Jun 2018 12:11:50 +0200 +Subject: [PATCH] arm/arm64: zynq/zynqmp: pass the PS init file as a kconfig + variable + +U-Boot needs to link ps7_init_gpl.c on Zynq or psu_init_gpl.c on +ZynqMP (PS init for short). The current logic to locate this file for +both platforms is: + + 1. if a board-specific file exists in + board/xilinx/zynq[mp]/$(CONFIG_DEFAULT_DEVICE_TREE)/ps?_init_gpl.c + then use it + 2. otherwise use board/xilinx/zynq/ps?_init_gpl.c + +In the latter case the file does not exist in the U-Boot sources and +must be copied in the source tree from the outside before starting the +build. This is typical when it is generated from Xilinx tools while +developing a custom hardware. However making sure that a +board-specific file is _not_ found (and used) requires some trickery +such as removing or overwriting all PS init files (e.g.: the current +meta-xilinx yocto layer [0]). + +This generates a few problems: + + * if the source tree is shared among different out-of-tree builds, + they will pollute (and potentially corrupt) each other + * the source tree cannot be read-only + * any buildsystem must add a command to copy the PS init file binary + * overwriting or deleting files in the source tree is ugly as hell + +Simplify usage by allowing to pass the path to the desired PS init +file in kconfig variable XILINX_PS_INIT_FILE. It can be an absolute +path or relative to $(srctree). If the variable is set, the +user-specified file will always be used without being copied +around. If the the variable is left empty, for backward compatibility +fall back to the old behaviour. + +Since the issue is the same for Zynq and ZynqMP, add one kconfig +variable in a common place and use it for both. + +Also use the new kconfig help text to document all the ways to give +U-Boot the PS init file. + +Build-tested with all combinations of: + - platform: zynq or zynqmp + - PS init file: from XILINX_PS_INIT_FILE (absolute, relative path, + non-existing), in-tree board-specific, in board/xilinx/zynq[mp]/ + - building in-tree, in subdir, in other directory + +[0] https://github.com/Xilinx/meta-xilinx/blob/b2f74cc7fe5c4881589d5e440a17cb51fc66a7ab/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc#L9 + +Signed-off-by: Luca Ceresoli +Cc: Albert Aribaud +Cc: Michal Simek +Cc: Nathan Rossi +Backported from upstream: https://git.denx.de/?p=u-boot.git;a=commit;h=6da4f67ad09cd8b311d77b2b04e557b7ef65b56c +--- + arch/arm/Kconfig | 1 + + board/xilinx/Kconfig | 41 +++++++++++++++++++++++++++++++++++++++++ + board/xilinx/zynq/Makefile | 10 +++++++++- + board/xilinx/zynqmp/Makefile | 10 +++++++++- + 4 files changed, 60 insertions(+), 2 deletions(-) + create mode 100644 board/xilinx/Kconfig + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 22234cde2ab6..e04979d0ef7e 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -1293,4 +1293,5 @@ source "board/technologic/ts4600/Kconfig" + source "board/vscom/baltos/Kconfig" + source "board/woodburn/Kconfig" + source "board/work-microwave/work_92105/Kconfig" ++source "board/xilinx/Kconfig" + source "board/zipitz2/Kconfig" + + source "arch/arm/Kconfig.debug" +diff --git a/board/xilinx/Kconfig b/board/xilinx/Kconfig +new file mode 100644 +index 000000000000..aa3fa061edef +--- /dev/null ++++ b/board/xilinx/Kconfig +@@ -0,0 +1,41 @@ ++# Copyright (c) 2018, Luca Ceresoli ++# ++# SPDX-License-Identifier: GPL-2.0 ++ ++if ARCH_ZYNQ || ARCH_ZYNQMP ++ ++config XILINX_PS_INIT_FILE ++ string "Zynq/ZynqMP PS init file(s) location" ++ help ++ On Zynq and ZynqMP U-Boot SPL (or U-Boot proper if ++ ZYNQMP_PSU_INIT_ENABLED is set) is responsible for some ++ basic initializations, such as enabling peripherals and ++ configuring pinmuxes. The PS init file (called ++ psu_init_gpl.c on ZynqMP, ps7_init_gpl.c for Zynq-7000) ++ contains the code for such initializations. ++ ++ U-Boot contains PS init files for some boards, but each of ++ them describes only one specific configuration. Users of a ++ different board, or needing a different configuration, can ++ generate custom files using the Xilinx development tools. ++ ++ There are three ways to give a PS init file to U-Boot: ++ ++ 1. Set this variable to the path, either relative to the ++ source tree or absolute, where the psu_init_gpl.c or ++ ps7_init_gpl.c file is located. U-Boot will build this ++ file. ++ ++ 2. If you leave an empty string here, U-Boot will use ++ board/xilinx/zynq/$(CONFIG_DEFAULT_DEVICE_TREE)/ps7_init_gpl.c ++ for Zynq-7000, or ++ board/xilinx/zynqmp/$(CONFIG_DEFAULT_DEVICE_TREE)/psu_init_gpl.c ++ for ZynqMP. ++ ++ 3. If the above file does not exist, U-Boot will use ++ board/xilinx/zynq/ps7_init_gpl.c for Zynq-7000, or ++ board/xilinx/zynqmp/psu_init_gpl.c for ZynqMP. This file ++ is not provided by U-Boot, you have to copy it there ++ before the build. ++ ++endif +diff --git a/board/xilinx/zynq/Makefile b/board/xilinx/zynq/Makefile +index 5a76a26720cd..03ad5f0532ee 100644 +--- a/board/xilinx/zynq/Makefile ++++ b/board/xilinx/zynq/Makefile +@@ -5,10 +5,18 @@ + + obj-y := board.o + +-hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE)) ++ifneq ($(CONFIG_XILINX_PS_INIT_FILE),"") ++PS_INIT_FILE := $(shell cd $(srctree); readlink -f $(CONFIG_XILINX_PS_INIT_FILE)) ++init-objs := ps_init_gpl.o ++spl/board/xilinx/zynq/ps_init_gpl.o board/xilinx/zynq/ps_init_gpl.o: $(PS_INIT_FILE) ++ $(CC) $(c_flags) -I $(srctree)/$(src) -c -o $@ $^ ++endif + ++ifeq ($(init-objs),) ++hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE)) + init-objs := $(if $(wildcard $(srctree)/$(src)/$(hw-platform-y)/ps7_init_gpl.c),\ + $(hw-platform-y)/ps7_init_gpl.o) ++endif + + ifeq ($(init-objs),) + ifneq ($(wildcard $(srctree)/$(src)/ps7_init_gpl.c),) +diff --git a/board/xilinx/zynqmp/Makefile b/board/xilinx/zynqmp/Makefile +index 05ccd25dcef3..960b81fc5853 100644 +--- a/board/xilinx/zynqmp/Makefile ++++ b/board/xilinx/zynqmp/Makefile +@@ -5,10 +5,18 @@ + + obj-y := zynqmp.o + +-hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE)) ++ifneq ($(CONFIG_XILINX_PS_INIT_FILE),"") ++PS_INIT_FILE := $(shell cd $(srctree); readlink -f $(CONFIG_XILINX_PS_INIT_FILE)) ++init-objs := ps_init_gpl.o ++spl/board/xilinx/zynqmp/ps_init_gpl.o board/xilinx/zynqmp/ps_init_gpl.o: $(PS_INIT_FILE) ++ $(CC) $(c_flags) -I $(srctree)/$(src) -c -o $@ $^ ++endif + ++ifeq ($(init-objs),) ++hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE)) + init-objs := $(if $(wildcard $(srctree)/$(src)/$(hw-platform-y)/psu_init_gpl.c),\ + $(hw-platform-y)/psu_init_gpl.o) ++endif + + ifeq ($(init-objs),) + ifneq ($(wildcard $(srctree)/$(src)/psu_init_gpl.c),) +-- +2.7.4 + diff --git a/features/buildroot/board/zynqmp/post-image.sh b/features/buildroot/board/zynqmp/post-image.sh new file mode 100755 index 00000000..b2b99fed --- /dev/null +++ b/features/buildroot/board/zynqmp/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# 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. + +FIRST_DT=$(sed -nr \ + -e 's|^BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/([-_/[:alnum:]\\.]*).*"$|\1|p' \ + ${BR2_CONFIG}) + +[ -z "${FIRST_DT}" ] || ln -fs ${FIRST_DT}.dtb ${BINARIES_DIR}/system.dtb + +support/scripts/genimage.sh -c board/zynqmp/genimage.cfg diff --git a/features/buildroot/board/zynqmp/readme.txt b/features/buildroot/board/zynqmp/readme.txt new file mode 100644 index 00000000..da37f4cc --- /dev/null +++ b/features/buildroot/board/zynqmp/readme.txt @@ -0,0 +1,51 @@ +******************************** +Xilinx ZCU106 board - ZynqMP SoC +******************************** + +This document describes the Buildroot support for the ZCU106 board by +Xilinx, based on the Zynq UltraScale+ MPSoC (aka ZynqMP). It has been +tested with the EK-U1-ZCU106-ES2 pre-production board. + +How to build it +=============== + +Configure Buildroot: + + $ make zynqmp_zcu106_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- atf-uboot.ub + +-- bl31.bin + +-- boot.bin + +-- boot.vfat + +-- Image + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- system.dtb -> zynqmp-zcu106-revA.dtb + +-- u-boot.bin + `-- zynqmp-zcu106-revA.dtb + +How to write the SD card +======================== + +WARNING! This will destroy all the card content. Use with care! + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to an SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the SD. + +Eject the SD card, insert it in the board, and power it up. diff --git a/features/buildroot/boot/Config.in b/features/buildroot/boot/Config.in new file mode 100644 index 00000000..97bd3de6 --- /dev/null +++ b/features/buildroot/boot/Config.in @@ -0,0 +1,26 @@ +menu "Bootloaders" + +source "boot/afboot-stm32/Config.in" +source "boot/at91bootstrap/Config.in" +source "boot/at91bootstrap3/Config.in" +source "boot/at91dataflashboot/Config.in" +source "boot/arm-trusted-firmware/Config.in" +source "boot/barebox/Config.in" +source "boot/binaries-marvell/Config.in" +source "boot/boot-wrapper-aarch64/Config.in" +source "boot/grub2/Config.in" +source "boot/gummiboot/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" +source "boot/opensbi/Config.in" +source "boot/riscv-pk/Config.in" +source "boot/s500-bootloader/Config.in" +source "boot/shim/Config.in" +source "boot/syslinux/Config.in" +source "boot/ts4800-mbrboot/Config.in" +source "boot/uboot/Config.in" +source "boot/vexpress-firmware/Config.in" + +endmenu diff --git a/features/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch b/features/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch new file mode 100644 index 00000000..3f359dc3 --- /dev/null +++ b/features/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch @@ -0,0 +1,61 @@ +From 0d581abe6620ac69adec321b94390e009802f36a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 13 Mar 2016 14:32:33 +0100 +Subject: [PATCH] Use ld instead of gcc for linking + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index ce40314..271bb4f 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,7 @@ + CROSS_COMPILE ?= arm-none-eabi- + + CC = $(CROSS_COMPILE)gcc ++LD = $(CROSS_COMPILE)ld + OBJCOPY = $(CROSS_COMPILE)objcopy + OBJDUMP = $(CROSS_COMPILE)objdump + SIZE = $(CROSS_COMPILE)size +@@ -10,7 +11,7 @@ OPENOCD = openocd + CFLAGS := -mthumb -mcpu=cortex-m4 + CFLAGS += -ffunction-sections -fdata-sections + CFLAGS += -Os -std=gnu99 -Wall +-LDFLAGS := -nostartfiles -Wl,--gc-sections ++LINKERFLAGS := -nostartfiles --gc-sections + + obj-y += gpio.o mpu.o + obj-f4 += $(obj-y) usart-f4.o +@@ -22,22 +23,22 @@ all: stm32f429i-disco stm32429i-eval stm32f469i-disco stm32746g-eval + $(CC) -c $(CFLAGS) $< -o $@ + + stm32f429i-disco: stm32f429i-disco.o $(obj-f4) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32f429i-disco.elf stm32f429i-disco.o $(obj-f4) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32f429i-disco.elf stm32f429i-disco.o $(obj-f4) + $(OBJCOPY) -Obinary stm32f429i-disco.elf stm32f429i-disco.bin + $(SIZE) stm32f429i-disco.elf + + stm32429i-eval: stm32429i-eval.o $(obj-f4) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32429i-eval.elf stm32429i-eval.o $(obj-f4) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32429i-eval.elf stm32429i-eval.o $(obj-f4) + $(OBJCOPY) -Obinary stm32429i-eval.elf stm32429i-eval.bin + $(SIZE) stm32429i-eval.elf + + stm32f469i-disco: stm32f469i-disco.o $(obj-f4) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32f469i-disco.elf stm32f469i-disco.o $(obj-f4) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32f469i-disco.elf stm32f469i-disco.o $(obj-f4) + $(OBJCOPY) -Obinary stm32f469i-disco.elf stm32f469i-disco.bin + $(SIZE) stm32f469i-disco.elf + + stm32746g-eval: stm32746g-eval.o $(obj-f7) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32746g-eval.elf stm32746g-eval.o $(obj-f7) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32746g-eval.elf stm32746g-eval.o $(obj-f7) + $(OBJCOPY) -Obinary stm32746g-eval.elf stm32746g-eval.bin + $(SIZE) stm32746g-eval.elf + +-- +2.6.4 + diff --git a/features/buildroot/boot/afboot-stm32/Config.in b/features/buildroot/boot/afboot-stm32/Config.in new file mode 100644 index 00000000..309b9e04 --- /dev/null +++ b/features/buildroot/boot/afboot-stm32/Config.in @@ -0,0 +1,7 @@ +config BR2_TARGET_AFBOOT_STM32 + bool "afboot-stm32" + depends on BR2_arm + help + afboot-stm32 is a very small bootloader for STM32 platforms + + https://github.com/mcoquelin-stm32/afboot-stm32 diff --git a/features/buildroot/boot/afboot-stm32/afboot-stm32.hash b/features/buildroot/boot/afboot-stm32/afboot-stm32.hash new file mode 100644 index 00000000..431fbc33 --- /dev/null +++ b/features/buildroot/boot/afboot-stm32/afboot-stm32.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dbd715c8b99f7d266f74a04707a4dac76b75b31321f24dee5256a6348260530c afboot-stm32-0.1.tar.gz diff --git a/features/buildroot/boot/afboot-stm32/afboot-stm32.mk b/features/buildroot/boot/afboot-stm32/afboot-stm32.mk new file mode 100644 index 00000000..ee17fab5 --- /dev/null +++ b/features/buildroot/boot/afboot-stm32/afboot-stm32.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# afboot-stm32 +# +################################################################################ + +AFBOOT_STM32_VERSION = 0.1 +AFBOOT_STM32_SITE = $(call github,mcoquelin-stm32,afboot-stm32,v$(AFBOOT_STM32_VERSION)) +AFBOOT_STM32_INSTALL_IMAGES = YES +AFBOOT_STM32_INSTALL_TARGET = NO + +define AFBOOT_STM32_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) all +endef + +define AFBOOT_STM32_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0755 -t $(BINARIES_DIR) -D $(@D)/stm32*.bin +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/arm-trusted-firmware/Config.in b/features/buildroot/boot/arm-trusted-firmware/Config.in new file mode 100644 index 00000000..beb95fbf --- /dev/null +++ b/features/buildroot/boot/arm-trusted-firmware/Config.in @@ -0,0 +1,138 @@ +config BR2_TARGET_ARM_TRUSTED_FIRMWARE + bool "ARM Trusted Firmware (ATF)" + depends on (BR2_ARM_CPU_ARMV8A || BR2_ARM_CPU_ARMV7A) && \ + BR2_TARGET_UBOOT + help + Enable this option if you want to build the ATF for your ARM + based embedded device. + + https://github.com/ARM-software/arm-trusted-firmware + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE +choice + prompt "ATF Version" + help + Select the specific ATF version you want to use + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION + bool "v1.4" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION + string "URL of custom ATF tarball" + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE + string "ATF version" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION + string + default "v1.4" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION + default "custom" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION \ + if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git + E.G. a sha id, a tag, .. + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM + string "ATF platform" + help + Target plaform to build for. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP + bool "Build FIP image" + help + This option enables building the FIP image (Firmware Image + Package). This is typically the image format used by + platforms were ATF encapsulates the second stage bootloader + (such as U-Boot). + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + bool "Build BL31 image" + help + This option enables building the BL31 image. This is + typically used on platforms where another bootloader (e.g + U-Boot) encapsulates ATF BL31. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT + bool "Build BL31 U-Boot image" + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + help + Generates a U-Boot image named atf-uboot.ub containing + bl31.bin. This is used for example by the Xilinx version of + U-Boot SPL to load ATF on the ZynqMP SoC. + +choice + prompt "BL32" + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_DEFAULT + help + Select BL32 stage for the trusted firmware + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_DEFAULT + bool "Default" + help + With this option selected, ATF will not use any BL32 stage, + unless if one is explicitly chosen using the SPD (for + AArch64) or AARCH32_SP (for AArch32) variables, which can be + passed through + BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE + bool "OP-TEE OS" + depends on BR2_TARGET_OPTEE_OS + help + This option allows to embed OP-TEE OS as the BL32 part of + the ARM Trusted Firmware boot sequence. + +endchoice + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + bool "Use U-Boot as BL33" + depends on BR2_TARGET_UBOOT + help + This option allows to embed u-boot.bin as the BL33 part of + the ARM Trusted Firmware. It ensures that the u-boot package + gets built before ATF, and that the appropriate BL33 + variable pointing to u-boot.bin is passed when building ATF. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES + string "Additional ATF build variables" + help + Additional parameters for the ATF build + E.G. 'DEBUG=1 LOG_LEVEL=20' + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG + bool "Build in debug mode" + help + Enable this option to build ATF with DEBUG=1. + +endif diff --git a/features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash b/features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..39407186 --- /dev/null +++ b/features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6dae02acd85278394bfad6e2683e186e5332a711e4491ac4632ad6480f6e5494 arm-trusted-firmware-v1.4.tar.gz +sha256 487795b8023df866259fa159bab94706b747fb0d623b7913f1c4955c0ab5f164 license.rst diff --git a/features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk b/features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk new file mode 100644 index 00000000..a7814e53 --- /dev/null +++ b/features/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk @@ -0,0 +1,171 @@ +################################################################################ +# +# arm-trusted-firmware +# +################################################################################ + +ARM_TRUSTED_FIRMWARE_VERSION = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION)) + +ifeq ($(ARM_TRUSTED_FIRMWARE_VERSION),custom) +# Handle custom ATF tarballs as specified by the configuration +ARM_TRUSTED_FIRMWARE_TARBALL = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION)) +ARM_TRUSTED_FIRMWARE_SITE = $(patsubst %/,%,$(dir $(ARM_TRUSTED_FIRMWARE_TARBALL))) +ARM_TRUSTED_FIRMWARE_SOURCE = $(notdir $(ARM_TRUSTED_FIRMWARE_TARBALL)) +else ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y) +ARM_TRUSTED_FIRMWARE_SITE = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)) +ARM_TRUSTED_FIRMWARE_SITE_METHOD = git +else +# Handle stable official ATF versions +ARM_TRUSTED_FIRMWARE_SITE = $(call github,ARM-software,arm-trusted-firmware,$(ARM_TRUSTED_FIRMWARE_VERSION)) +# The licensing of custom or from-git versions is unknown. +# This is valid only for the official v1.4. +ARM_TRUSTED_FIRMWARE_LICENSE = BSD-3-Clause +ARM_TRUSTED_FIRMWARE_LICENSE_FILES = license.rst +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE)$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(ARM_TRUSTED_FIRMWARE_SOURCE) +endif + +ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES = YES + +ARM_TRUSTED_FIRMWARE_PLATFORM = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM)) + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += DEBUG=1 +ARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/debug +else +ARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/release +endif + +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES)) \ + PLAT=$(ARM_TRUSTED_FIRMWARE_PLATFORM) + +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARM_ARCH_MAJOR=7 +else ifeq ($(BR2_ARM_CPU_ARMV8A),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARM_ARCH_MAJOR=8 +endif + +ifeq ($(BR2_arm),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARCH=aarch32 +else ifeq ($(BR2_aarch64),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARCH=aarch64 +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE),y) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += optee-os +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + BL32=$(BINARIES_DIR)/tee-header_v2.bin \ + BL32_EXTRA1=$(BINARIES_DIR)/tee-pager_v2.bin \ + BL32_EXTRA2=$(BINARIES_DIR)/tee-pageable_v2.bin +ifeq ($(BR2_aarch64),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SPD=opteed +endif +ifeq ($(BR2_arm),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += AARCH32_SP=optee +endif +endif # BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/u-boot.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += uboot +endif + +ifeq ($(BR2_TARGET_VEXPRESS_FIRMWARE),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += vexpress-firmware +endif + +ifeq ($(BR2_TARGET_BINARIES_MARVELL),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += binaries-marvell +endif + +ifeq ($(BR2_TARGET_MV_DDR_MARVELL),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += MV_DDR_PATH=$(MV_DDR_MARVELL_DIR) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += mv-ddr-marvell +endif + +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS = all + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP),y) +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += fip +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-openssl +# fiptool only exists in newer (>= 1.3) versions of ATF, so we build +# it conditionally. We need to explicitly build it as it requires +# OpenSSL, and therefore needs to be passed proper variables to find +# the host OpenSSL. +define ARM_TRUSTED_FIRMWARE_BUILD_FIPTOOL + if test -d $(@D)/tools/fiptool; then \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/fiptool \ + $(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \ + CPPFLAGS="$(HOST_CPPFLAGS)" \ + LDLIBS="$(HOST_LDFLAGS) -lcrypto" ; \ + fi +endef +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31),y) +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += bl31 +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT),y) +define ARM_TRUSTED_FIRMWARE_BL31_UBOOT_BUILD +# Get the entry point address from the elf. + BASE_ADDR=$$($(TARGET_READELF) -h $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31/bl31.elf | \ + sed -r '/^ Entry point address:\s*(.*)/!d; s//\1/') && \ + $(MKIMAGE) \ + -A $(MKIMAGE_ARCH) -O arm-trusted-firmware -C none \ + -a $${BASE_ADDR} -e $${BASE_ADDR} \ + -d $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31.bin \ + $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/atf-uboot.ub +endef +define ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL + $(INSTALL) -m 0644 $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/atf-uboot.ub \ + $(BINARIES_DIR)/atf-uboot.ub +endef +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += RESET_TO_BL31=1 +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-uboot-tools +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF),y) +define ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL_ELF + $(INSTALL) -D -m 0644 $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31/bl31.elf \ + $(BINARIES_DIR)/bl31.elf +endef +endif + +define ARM_TRUSTED_FIRMWARE_BUILD_CMDS + $(ARM_TRUSTED_FIRMWARE_BUILD_FIPTOOL) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \ + $(ARM_TRUSTED_FIRMWARE_MAKE_TARGETS) + $(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_BUILD) +endef + +define ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES_CMDS + cp -dpf $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/*.bin $(BINARIES_DIR)/ + $(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL) + $(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL_ELF) +endef + +# Configuration check +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE)$(BR_BUILDING),yy) + +ifeq ($(ARM_TRUSTED_FIRMWARE_VERSION),custom) +ifeq ($(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION))),) +$(error No tarball location specified. Please check BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION)) +endif +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y) +ifeq ($(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)),) +$(error No repository specified. Please check BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL) +endif +endif + +endif + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/at91bootstrap/Config.in b/features/buildroot/boot/at91bootstrap/Config.in new file mode 100644 index 00000000..0f6430fd --- /dev/null +++ b/features/buildroot/boot/at91bootstrap/Config.in @@ -0,0 +1,49 @@ +config BR2_TARGET_AT91BOOTSTRAP + bool "AT91 Bootstrap" + depends on BR2_arm926t + help + AT91Bootstrap is a first level bootloader for the Atmel AT91 + devices. It integrates algorithms for: + - Device initialization such as clock configuration, PIO + settings... + - Peripheral drivers such as PIO, PMC or SDRAMC... + - Physical media algorithm such as DataFlash, NandFlash, NOR + Flash... + +if BR2_TARGET_AT91BOOTSTRAP + +config BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named at91bootstrap--.patch. + + Most users may leave this empty + +config BR2_TARGET_AT91BOOTSTRAP_BOARD + string "Bootstrap board" + default "" + help + This is used to do a make _config + +choice + prompt "Boot Memory" + default BR2_TARGET_AT91BOOTSTRAP_DATAFLASH + help + Select Chip for which AT91 bootstrap should be built + +config BR2_TARGET_AT91BOOTSTRAP_DATAFLASH + bool "Data Flash" + +config BR2_TARGET_AT91BOOTSTRAP_NANDFLASH + bool "NAND Flash" + +endchoice + +config BR2_TARGET_AT91BOOTSTRAP_MEMORY + string + default "dataflash" if BR2_TARGET_AT91BOOTSTRAP_DATAFLASH + default "nandflash" if BR2_TARGET_AT91BOOTSTRAP_NANDFLASH + +endif diff --git a/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch b/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch new file mode 100644 index 00000000..eab3c209 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch @@ -0,0 +1,334 @@ +When using an EABI toolchain, the default compilation generates +references to __aeabi_unwind_cpp_pr0(). This symbol is defined in +libgcc, but we don't want to use it for a bootloader. + +Therefore, this patch passes some additional CFLAGS to disable the +generation of such references by avoiding unwind tables, exceptions, +etc. + +Signed-off-by: Thomas Petazzoni +--- + board/at91cap9adk/dataflash/Makefile | 2 +- + board/at91cap9adk/norflash/Makefile | 2 +- + board/at91cap9stk/nandflash/Makefile | 2 +- + board/at91sam9260ek/dataflash/Makefile | 2 +- + board/at91sam9260ek/nandflash/Makefile | 2 +- + board/at91sam9261ek/dataflash/Makefile | 2 +- + board/at91sam9261ek/nandflash/Makefile | 2 +- + board/at91sam9263ek/dataflash/Makefile | 2 +- + board/at91sam9263ek/nandflash/Makefile | 2 +- + board/at91sam9g10ek/dataflash/Makefile | 2 +- + board/at91sam9g10ek/nandflash/Makefile | 2 +- + board/at91sam9g20ek/dataflash/Makefile | 2 +- + board/at91sam9g20ek/nandflash/Makefile | 2 +- + board/at91sam9g45ekes/nandflash/Makefile | 2 +- + board/at91sam9m10ekes/dataflash/Makefile | 2 +- + board/at91sam9m10ekes/nandflash/Makefile | 2 +- + board/at91sam9m10g45ek/dataflash/Makefile | 2 +- + board/at91sam9m10g45ek/nandflash/Makefile | 2 +- + board/at91sam9rlek/dataflash/Makefile | 2 +- + board/at91sam9rlek/nandflash/Makefile | 2 +- + board/at91sam9xeek/dataflash/Makefile | 2 +- + board/at91sam9xeek/nandflash/Makefile | 2 +- + lib/Makefile | 2 +- + 23 files changed, 23 insertions(+), 23 deletions(-) + +Index: Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91cap9adk/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile +@@ -34,7 +34,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91cap9adk/norflash/Makefile ++++ Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile +@@ -34,7 +34,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91cap9stk/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + +Index: Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9260ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9260ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9261ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9261ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9263ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile +@@ -34,7 +34,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9263ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile +@@ -33,7 +33,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g10ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g10ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g20ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g20ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g45ekes/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9rlek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9rlek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9xeek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile +@@ -38,7 +38,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9xeek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile +@@ -38,7 +38,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/lib/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/lib/Makefile ++++ Bootstrap-v1.16/lib/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. diff --git a/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch b/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch new file mode 100644 index 00000000..e4ed04e8 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch @@ -0,0 +1,29 @@ +From b783d1f9bf985c0981e755bd2c13e091e9d6837f Mon Sep 17 00:00:00 2001 +From: Gregory Hermant +Date: Tue, 6 Nov 2012 09:38:50 +0100 +Subject: [PATCH] at91bootstrap: fix overlap linker issue + +The linker script of the at91bootstrap package has to be modified when +built from gcc-4.6.x version. Indeed a section named text.startup is +created and has to be added into the text section. + +Signed-off-by: Gregory Hermant +--- + elf32-littlearm.lds | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/elf32-littlearm.lds b/elf32-littlearm.lds +index a33952f..4f3ba25 100644 +--- a/elf32-littlearm.lds ++++ b/elf32-littlearm.lds +@@ -7,6 +7,7 @@ SECTIONS + .text : { + _stext = .; + *(.text) ++ *(.text*) + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + . = ALIGN(4); +-- +1.7.9.5 + diff --git a/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch b/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch new file mode 100644 index 00000000..0c9b9114 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch @@ -0,0 +1,284 @@ +From d4e4a1aad559e35d84b445d1379be94ad036984e Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni +Date: Thu, 25 Oct 2012 22:57:14 +0200 +Subject: [PATCH] u-boot relocation fix + +Every AT91SAM plaforms were broken between 2010.12 and 2011.03 because +of the relocation changes. + +We have to get JUMP_ADDR consistant with what is used by u-boot +(CONFIG_SYS_TEXT_BASE). + +I didn't know what to do with at91sam9m10g45ek as it doesn't seems to be +converted yet. But anyway, that means that it is either not working or +doesn't care so changing it here shouldn't harm. + +We also have to increase the IMG_SIZE as u-boot as grown larger than the +default value. As requested on the u-boot ML, we assume that it could +be up to 495kB big. + +It means that now, you have to flash your kernel at 0x00084000 instead +of 0x00042000. And so you also have to load it from that adress from +u-boot. + +Then, remember that you could decrease IMG_SIZE to boot faster. + +Signed-off-by: Alexandre Belloni +--- + board/at91sam9260ek/dataflash/at91sam9260ek.h | 4 ++-- + board/at91sam9260ek/nandflash/at91sam9260ek.h | 2 +- + board/at91sam9261ek/dataflash/at91sam9261ek.h | 4 ++-- + board/at91sam9261ek/nandflash/at91sam9261ek.h | 2 +- + board/at91sam9263ek/dataflash/at91sam9263ek.h | 4 ++-- + board/at91sam9263ek/nandflash/at91sam9263ek.h | 2 +- + board/at91sam9g10ek/dataflash/at91sam9g10ek.h | 4 ++-- + board/at91sam9g10ek/nandflash/at91sam9g10ek.h | 2 +- + board/at91sam9g20ek/dataflash/at91sam9g20ek.h | 4 ++-- + board/at91sam9g20ek/nandflash/at91sam9g20ek.h | 2 +- + board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h | 2 +- + .../at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h | 2 +- + board/at91sam9rlek/dataflash/at91sam9rlek.h | 4 ++-- + board/at91sam9rlek/nandflash/at91sam9rlek.h | 2 +- + board/at91sam9xeek/dataflash/at91sam9xeek.h | 4 ++-- + board/at91sam9xeek/nandflash/at91sam9xeek.h | 2 +- + 16 files changed, 23 insertions(+), 23 deletions(-) + +diff --git a/board/at91sam9260ek/dataflash/at91sam9260ek.h b/board/at91sam9260ek/dataflash/at91sam9260ek.h +index 1834246..91081a1 100644 +--- a/board/at91sam9260ek/dataflash/at91sam9260ek.h ++++ b/board/at91sam9260ek/dataflash/at91sam9260ek.h +@@ -74,10 +74,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9260-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9260ek/nandflash/at91sam9260ek.h b/board/at91sam9260ek/nandflash/at91sam9260ek.h +index 2cac601..f8fdff2 100644 +--- a/board/at91sam9260ek/nandflash/at91sam9260ek.h ++++ b/board/at91sam9260ek/nandflash/at91sam9260ek.h +@@ -92,7 +92,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9260-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9261ek/dataflash/at91sam9261ek.h b/board/at91sam9261ek/dataflash/at91sam9261ek.h +index 8ce30e9..276ba3d 100644 +--- a/board/at91sam9261ek/dataflash/at91sam9261ek.h ++++ b/board/at91sam9261ek/dataflash/at91sam9261ek.h +@@ -97,10 +97,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9261-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9261ek/nandflash/at91sam9261ek.h b/board/at91sam9261ek/nandflash/at91sam9261ek.h +index badc3ac..e628c97 100644 +--- a/board/at91sam9261ek/nandflash/at91sam9261ek.h ++++ b/board/at91sam9261ek/nandflash/at91sam9261ek.h +@@ -114,7 +114,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9261-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9263ek/dataflash/at91sam9263ek.h b/board/at91sam9263ek/dataflash/at91sam9263ek.h +index 5c9da4b..870f9e2 100644 +--- a/board/at91sam9263ek/dataflash/at91sam9263ek.h ++++ b/board/at91sam9263ek/dataflash/at91sam9263ek.h +@@ -96,10 +96,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x4B2 /* AT91SAM9263-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9263ek/nandflash/at91sam9263ek.h b/board/at91sam9263ek/nandflash/at91sam9263ek.h +index 505afc7..8ab4f46 100644 +--- a/board/at91sam9263ek/nandflash/at91sam9263ek.h ++++ b/board/at91sam9263ek/nandflash/at91sam9263ek.h +@@ -108,7 +108,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 1202 /* AT91SAM9263-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g10ek/dataflash/at91sam9g10ek.h b/board/at91sam9g10ek/dataflash/at91sam9g10ek.h +index b2faf44..f4f556b 100644 +--- a/board/at91sam9g10ek/dataflash/at91sam9g10ek.h ++++ b/board/at91sam9g10ek/dataflash/at91sam9g10ek.h +@@ -98,10 +98,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9261-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g10ek/nandflash/at91sam9g10ek.h b/board/at91sam9g10ek/nandflash/at91sam9g10ek.h +index 66c40a3..6c3ecda 100644 +--- a/board/at91sam9g10ek/nandflash/at91sam9g10ek.h ++++ b/board/at91sam9g10ek/nandflash/at91sam9g10ek.h +@@ -115,7 +115,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9G10-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g20ek/dataflash/at91sam9g20ek.h b/board/at91sam9g20ek/dataflash/at91sam9g20ek.h +index eea0439..7fc70d6 100644 +--- a/board/at91sam9g20ek/dataflash/at91sam9g20ek.h ++++ b/board/at91sam9g20ek/dataflash/at91sam9g20ek.h +@@ -75,10 +75,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS1 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x658 /* AT91SAM9G20-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g20ek/nandflash/at91sam9g20ek.h b/board/at91sam9g20ek/nandflash/at91sam9g20ek.h +index 31bd499..e797e4d 100644 +--- a/board/at91sam9g20ek/nandflash/at91sam9g20ek.h ++++ b/board/at91sam9g20ek/nandflash/at91sam9g20ek.h +@@ -93,7 +93,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x658 /* AT91SAM9G20-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h b/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h +index a60fd41..5587a00 100644 +--- a/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h ++++ b/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h +@@ -89,7 +89,7 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x9CD /* AT91SAM9M10-EKES */ + #define JUMP_ADDR 0x73F00000 /* Final Jump Address */ +diff --git a/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h b/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h +index 5c726b5..9090097 100644 +--- a/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h ++++ b/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h +@@ -85,7 +85,7 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x726 /* AT91SAM9M10G45-EK */ + #define JUMP_ADDR 0x73F00000 /* Final Jump Address */ +diff --git a/board/at91sam9rlek/dataflash/at91sam9rlek.h b/board/at91sam9rlek/dataflash/at91sam9rlek.h +index 05c42dc..150f17e 100644 +--- a/board/at91sam9rlek/dataflash/at91sam9rlek.h ++++ b/board/at91sam9rlek/dataflash/at91sam9rlek.h +@@ -89,10 +89,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 1326 /* AT91SAM9RL-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9rlek/nandflash/at91sam9rlek.h b/board/at91sam9rlek/nandflash/at91sam9rlek.h +index 656b4ba..594db8f 100644 +--- a/board/at91sam9rlek/nandflash/at91sam9rlek.h ++++ b/board/at91sam9rlek/nandflash/at91sam9rlek.h +@@ -112,7 +112,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 1326 /* AT91SAM9RL-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9xeek/dataflash/at91sam9xeek.h b/board/at91sam9xeek/dataflash/at91sam9xeek.h +index 27d1822..08e515d 100644 +--- a/board/at91sam9xeek/dataflash/at91sam9xeek.h ++++ b/board/at91sam9xeek/dataflash/at91sam9xeek.h +@@ -74,10 +74,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS1 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9XE-EK same id as AT91SAM9260-EK*/ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9xeek/nandflash/at91sam9xeek.h b/board/at91sam9xeek/nandflash/at91sam9xeek.h +index 5dbc63e..9fac7cb 100644 +--- a/board/at91sam9xeek/nandflash/at91sam9xeek.h ++++ b/board/at91sam9xeek/nandflash/at91sam9xeek.h +@@ -94,7 +94,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9XE-EK same id as AT91SAM9260-EK*/ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +-- +1.7.9.5 + diff --git a/features/buildroot/boot/at91bootstrap/at91bootstrap.hash b/features/buildroot/boot/at91bootstrap/at91bootstrap.hash new file mode 100644 index 00000000..b1f963b8 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap/at91bootstrap.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d66192a274247f4baa39fa932eadf903d7add55641d89d30402f967c4f2282a5 AT91Bootstrap1.16.zip diff --git a/features/buildroot/boot/at91bootstrap/at91bootstrap.mk b/features/buildroot/boot/at91bootstrap/at91bootstrap.mk new file mode 100644 index 00000000..c68b56b6 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap/at91bootstrap.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# at91bootstrap +# +################################################################################ + +AT91BOOTSTRAP_VERSION = 1.16 +AT91BOOTSTRAP_SITE = ftp://www.at91.com/pub/at91bootstrap +AT91BOOTSTRAP_SOURCE = AT91Bootstrap$(AT91BOOTSTRAP_VERSION).zip + +AT91BOOTSTRAP_BOARD = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_BOARD)) +AT91BOOTSTRAP_MEMORY = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_MEMORY)) +AT91BOOTSTRAP_MAKE_SUBDIR = board/$(AT91BOOTSTRAP_BOARD)/$(AT91BOOTSTRAP_MEMORY) +AT91BOOTSTRAP_BINARY = $(AT91BOOTSTRAP_MAKE_SUBDIR)/$(AT91BOOTSTRAP_MEMORY)_$(AT91BOOTSTRAP_BOARD).bin + +AT91BOOTSTRAP_INSTALL_IMAGES = YES +AT91BOOTSTRAP_INSTALL_TARGET = NO + +define AT91BOOTSTRAP_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(AT91BOOTSTRAP_DL_DIR)/$(AT91BOOTSTRAP_SOURCE) + mv $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)/* $(@D) + rmdir $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION) +endef + +ifneq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR)),) +define AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES + $(APPLY_PATCHES) $(@D) $(BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR) \*.patch +endef + +AT91BOOTSTRAP_POST_PATCH_HOOKS += AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES +endif + +define AT91BOOTSTRAP_BUILD_CMDS + $(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C $(@D)/$(AT91BOOTSTRAP_MAKE_SUBDIR) +endef + +define AT91BOOTSTRAP_INSTALL_IMAGES_CMDS + cp $(@D)/$(AT91BOOTSTRAP_BINARY) $(BINARIES_DIR) +endef + +$(eval $(generic-package)) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP)$(BR_BUILDING),yy) +ifeq ($(AT91BOOTSTRAP_BOARD),) +$(error No AT91Bootstrap board name set. Check your BR2_TARGET_AT91BOOTSTRAP_BOARD setting) +endif +endif diff --git a/features/buildroot/boot/at91bootstrap3/Config.in b/features/buildroot/boot/at91bootstrap3/Config.in new file mode 100644 index 00000000..89ef3fc9 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap3/Config.in @@ -0,0 +1,91 @@ +config BR2_TARGET_AT91BOOTSTRAP3 + bool "AT91 Bootstrap 3" + depends on BR2_arm926t || BR2_cortex_a5 + help + AT91Bootstrap is a first level bootloader for the Atmel AT91 + devices. It integrates algorithms for: + - Device initialization such as clock configuration, PIO + settings... + - Peripheral drivers such as PIO, PMC or SDRAMC... + - Physical media algorithm such as DataFlash, NandFlash, NOR + Flash... + + https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap + +if BR2_TARGET_AT91BOOTSTRAP3 + +choice + + prompt "AT91 Bootstrap 3 version" + +config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + bool "3.8.13" + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + bool "Custom Git repository" + help + This option allows Buildroot to get the AT91 Bootstrap 3 + source code from a Git repository. + +endchoice + +if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git + E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_AT91BOOTSTRAP3_VERSION + string + default "v3.8.13" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + default BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION \ + if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named at91bootstrap3-.patch. + + Most users may leave this empty + +# +# Configuration selection +# + +choice + prompt "AT91 Bootstrap 3 configuration" + default BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + +config BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG + string "Defconfig name" + depends on BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + help + Name of the at91bootstrap3 defconfig file to use, without the + trailing _defconfig. The defconfig is located at + board//_defconfig in the at91bootstrap3 + tree. + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG + help + Path to the at91bootstrap3 configuration file + +endif # BR2_TARGET_AT91BOOTSTRAP3 diff --git a/features/buildroot/boot/at91bootstrap3/at91bootstrap3.hash b/features/buildroot/boot/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 00000000..ecfda3b2 --- /dev/null +++ b/features/buildroot/boot/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a5a10579598d47475696fab56c086225b0f4b710299e2dc9e0f9b6f72ed98be8 at91bootstrap3-v3.8.13.tar.gz diff --git a/features/buildroot/boot/at91bootstrap3/at91bootstrap3.mk b/features/buildroot/boot/at91bootstrap3/at91bootstrap3.mk new file mode 100644 index 00000000..685be5bb --- /dev/null +++ b/features/buildroot/boot/at91bootstrap3/at91bootstrap3.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# at91bootstrap3 +# +################################################################################ + +AT91BOOTSTRAP3_VERSION = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_VERSION)) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y) +AT91BOOTSTRAP3_SITE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)) +AT91BOOTSTRAP3_SITE_METHOD = git +BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE) +else +AT91BOOTSTRAP3_SITE = $(call github,linux4sam,at91bootstrap,$(AT91BOOTSTRAP3_VERSION)) +endif + +AT91BOOTSTRAP3_LICENSE = Atmel License +AT91BOOTSTRAP3_LICENSE_FILES = main.c + +AT91BOOTSTRAP3_INSTALL_IMAGES = YES +AT91BOOTSTRAP3_INSTALL_TARGET = NO + +AT91BOOTSTRAP3_CUSTOM_PATCH_DIR = \ + $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR)) + +AT91BOOTSTRAP3_MAKE_OPTS = CROSS_COMPILE=$(TARGET_CROSS) DESTDIR=$(BINARIES_DIR) + +ifneq ($(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR),) +define AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES + $(APPLY_PATCHES) $(@D) $(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR) \*.patch +endef + +AT91BOOTSTRAP3_POST_PATCH_HOOKS += AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES +endif + +define AT91BOOTSTRAP3_BUILD_CMDS + $(MAKE) $(AT91BOOTSTRAP3_MAKE_OPTS) -C $(@D) +endef + +define AT91BOOTSTRAP3_INSTALL_IMAGES_CMDS + cp $(@D)/binaries/*.bin $(BINARIES_DIR) +endef + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y) +AT91BOOTSTRAP3_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y) +AT91BOOTSTRAP3_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE)) +endif + +AT91BOOTSTRAP3_KCONFIG_EDITORS = menuconfig xconfig gconfig +AT91BOOTSTRAP3_KCONFIG_OPTS = $(AT91BOOTSTRAP3_MAKE_OPTS) + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y) +# We must use the user-supplied kconfig value, because +# AT91BOOTSTRAP3_KCONFIG_DEFCONFIG will at least contain +# the trailing _defconfig +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),) +$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y) +ifeq ($(AT91BOOTSTRAP3_KCONFIG_FILE),) +$(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y) +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)),) +$(error No custom at91bootstrap3 repository URL specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL setting) +endif +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION)),) +$(error No custom at91bootstrap3 repository version specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION setting) +endif +endif + +endif # BR_BUILDING + +$(eval $(kconfig-package)) diff --git a/features/buildroot/boot/at91dataflashboot/Config.in b/features/buildroot/boot/at91dataflashboot/Config.in new file mode 100644 index 00000000..4055f964 --- /dev/null +++ b/features/buildroot/boot/at91dataflashboot/Config.in @@ -0,0 +1,3 @@ +config BR2_TARGET_AT91DATAFLASHBOOT + bool "AT91 DataFlashBoot" + depends on BR2_arm926t diff --git a/features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch b/features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch new file mode 100644 index 00000000..41d97ad2 --- /dev/null +++ b/features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch @@ -0,0 +1,22 @@ +Disable the automatic installation of at91dataflashboot since it tries +to install things to /tftpboot, which is not possible when not +building as root. + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: at91dataflashboot-1.05/Makefile +=================================================================== +--- at91dataflashboot-1.05.orig/Makefile ++++ at91dataflashboot-1.05/Makefile +@@ -40,7 +40,7 @@ + + I=config.h com.h dataflash.h embedded_services.h main.h stdio.h include/AT91RM9200.h include/lib_AT91RM9200.h + +-all: clean $(BINNAME) $(LSSNAME) install ++all: clean $(BINNAME) $(LSSNAME) + $(SIZE) $(OUTNAME) + + # C objects here diff --git a/features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch b/features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch new file mode 100644 index 00000000..e38905f7 --- /dev/null +++ b/features/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch @@ -0,0 +1,43 @@ +Get at91dataflashboot to build with EABI toolchains, by providing the +__aeabi_uidiv and __aeabi_uidivmod symbols. The code is based on +U-Boot's code. + +Signed-off-by: Thomas Petazzoni +--- + _udivsi3.S | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +Index: DataflashBoot-1.05/_udivsi3.S +=================================================================== +--- DataflashBoot-1.05.orig/_udivsi3.S ++++ DataflashBoot-1.05/_udivsi3.S +@@ -12,8 +12,11 @@ + .text + .globl __udivsi3 + .type __udivsi3 ,function ++ .globl __aeabi_uidiv ++ .type __aeabi_uidiv ,function + .align 0 + __udivsi3 : ++ __aeabi_uidiv: + cmp divisor, #0 + beq Ldiv0 + mov curbit, #1 +@@ -68,6 +71,17 @@ + mov r0, #0 @ about as wrong as it could be + ldmia sp!, {pc} + .size __udivsi3 , . - __udivsi3 ++ ++.globl __aeabi_uidivmod ++__aeabi_uidivmod: ++ ++ stmfd sp!, {r0, r1, ip, lr} ++ bl __aeabi_uidiv ++ ldmfd sp!, {r1, r2, ip, lr} ++ mul r3, r0, r2 ++ sub r1, r1, r3 ++ mov pc, lr ++ + /* # 235 "libgcc1.S" */ + /* # 320 "libgcc1.S" */ + /* # 421 "libgcc1.S" */ diff --git a/features/buildroot/boot/at91dataflashboot/at91dataflashboot.hash b/features/buildroot/boot/at91dataflashboot/at91dataflashboot.hash new file mode 100644 index 00000000..57df4e53 --- /dev/null +++ b/features/buildroot/boot/at91dataflashboot/at91dataflashboot.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 2cfeb6a9236e1a743c8010f05e504dbc92169ef42d9a6cf7948954a577bfc386 DataflashBoot-1.05.tar.bz2 diff --git a/features/buildroot/boot/at91dataflashboot/at91dataflashboot.mk b/features/buildroot/boot/at91dataflashboot/at91dataflashboot.mk new file mode 100644 index 00000000..0ad8b6fc --- /dev/null +++ b/features/buildroot/boot/at91dataflashboot/at91dataflashboot.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# at91dataflashboot +# +################################################################################ + +AT91DATAFLASHBOOT_VERSION = 1.05 +AT91DATAFLASHBOOT_SOURCE = DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).tar.bz2 +AT91DATAFLASHBOOT_SITE = ftp://www.at91.com/pub/buildroot + +AT91DATAFLASHBOOT_INSTALL_TARGET = NO +AT91DATAFLASHBOOT_INSTALL_IMAGES = YES + +define AT91DATAFLASHBOOT_BUILD_CMDS + make -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) +endef + +define AT91DATAFLASHBOOT_INSTALL_IMAGES_CMDS + cp $(@D)/DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).bin $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/barebox/Config.in b/features/buildroot/boot/barebox/Config.in new file mode 100644 index 00000000..f4c0c27d --- /dev/null +++ b/features/buildroot/boot/barebox/Config.in @@ -0,0 +1,85 @@ +config BR2_TARGET_BAREBOX + bool "Barebox" + help + The Barebox bootloader, formerly known as U-Boot v2. + + http://www.barebox.org + +if BR2_TARGET_BAREBOX +choice + prompt "version" + help + Select the specific Barebox version you want to use + +config BR2_TARGET_BAREBOX_LATEST_VERSION + bool "2019.07.0" + +config BR2_TARGET_BAREBOX_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_BAREBOX_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_BAREBOX_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE + string "Barebox version" + depends on BR2_TARGET_BAREBOX_CUSTOM_VERSION + +if BR2_TARGET_BAREBOX_CUSTOM_TARBALL + +config BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION + string "URL of custom Barebox tarball" + +endif + +config BR2_TARGET_BAREBOX_VERSION + string + default "2019.07.0" if BR2_TARGET_BAREBOX_LATEST_VERSION + default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION + default "custom" if BR2_TARGET_BAREBOX_CUSTOM_TARBALL + default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT + +config BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named barebox--.patch. + + Most users may leave this empty + +if BR2_TARGET_BAREBOX_CUSTOM_GIT + +config BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL + string "URL of custom Git repository" + +config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION + string "Custom Git version" + +endif + +source boot/barebox/barebox/Config.in + +menuconfig BR2_TARGET_BAREBOX_AUX + bool "Build barebox with an auxiliary config" + help + Build barebox with an auxiliary configuration. + + Useful for building an SPL (Secondary Program Loader) in + addition to the traditional TPL (Tertiary Program Loader), + such as the X-Loader or MLO for Texas Instruments + processors. + +if BR2_TARGET_BAREBOX_AUX + +source boot/barebox/barebox-aux/Config.in + +endif + +endif diff --git a/features/buildroot/boot/barebox/barebox-aux/Config.in b/features/buildroot/boot/barebox/barebox-aux/Config.in new file mode 100644 index 00000000..d39d24f7 --- /dev/null +++ b/features/buildroot/boot/barebox/barebox-aux/Config.in @@ -0,0 +1,75 @@ +choice + prompt "Barebox configuration" + default BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + +config BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_BAREBOX_AUX_BOARD_DEFCONFIG + string "board defconfig" + depends on BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + help + Name of the board for which Barebox should be built, without + the _defconfig suffix. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG + help + Path to the barebox configuration file + +config BR2_TARGET_BAREBOX_AUX_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main Barebox configuration file. + +config BR2_TARGET_BAREBOX_AUX_IMAGE_FILE + string "Image file names" + help + Space-separated list of barebox images which will be copied to + the images directory. + + If left empty, defaults to: + - barebox.bin for barebox versions older than 2012.10. + - barebox-flash-image for later versions. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV + bool "Generate an environment image" + help + Generate a custom environment image. This environment will + contain the variables and scripts to be used at boot by + barebox. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV_PATH + string "Environment path" + depends on BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV + help + Path to the directory containing the custom barebox + environment. Depending on your setup, it will probably be + based on either the content of the defaultenv or + defaultenv-2 directories in the barebox source code, plus + the additions needed. The output will be an image in the + barebox devfs format, stored in the images directory, with + the same name as the directory name given here. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_EMBEDDED_ENV_PATH + string "Embedded environment path" + help + If this option is not empty, it is the path to a custom + embedded barebox environment. This image will be used when + the environment found in the environment sector is + invalid. This option sets the barebox Kconfig option + CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This + way it is possible to use Buildroot variables like + TOPDIR etc. to refer to the custom environment. + + Depending on your setup, the custom embedded environment + will probably be based on either the content of the + defaultenv or defaultenv-2 directories in the barebox source + code. diff --git a/features/buildroot/boot/barebox/barebox-aux/barebox-aux.hash b/features/buildroot/boot/barebox/barebox-aux/barebox-aux.hash new file mode 120000 index 00000000..b6462b80 --- /dev/null +++ b/features/buildroot/boot/barebox/barebox-aux/barebox-aux.hash @@ -0,0 +1 @@ +../barebox.hash \ No newline at end of file diff --git a/features/buildroot/boot/barebox/barebox-aux/barebox-aux.mk b/features/buildroot/boot/barebox/barebox-aux/barebox-aux.mk new file mode 100644 index 00000000..fb287d36 --- /dev/null +++ b/features/buildroot/boot/barebox/barebox-aux/barebox-aux.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# barebox-aux +# +################################################################################ + +# Instantiate the auxiliary barebox package +$(eval $(barebox-package)) diff --git a/features/buildroot/boot/barebox/barebox.hash b/features/buildroot/boot/barebox/barebox.hash new file mode 100644 index 00000000..70b500da --- /dev/null +++ b/features/buildroot/boot/barebox/barebox.hash @@ -0,0 +1,5 @@ +# From https://www.barebox.org/download/barebox-2019.07.0.tar.bz2.md5 +md5 8fb8e8ec3775228c34f7de2096872f51 barebox-2019.07.0.tar.bz2 + +# Locally calculated +sha256 8512ac1b91ef48f8b657fad446edc868eb7da30e93d6ff7854f0006854b6a3a6 barebox-2019.07.0.tar.bz2 diff --git a/features/buildroot/boot/barebox/barebox.mk b/features/buildroot/boot/barebox/barebox.mk new file mode 100644 index 00000000..52178d89 --- /dev/null +++ b/features/buildroot/boot/barebox/barebox.mk @@ -0,0 +1,161 @@ +################################################################################ +# +# barebox +# +################################################################################ + +################################################################################ +# inner-barebox-package -- generates the KConfig logic and make targets needed +# to support a barebox package. All barebox packages are built from the same +# source (origin, version and patches). The remainder of the package +# configuration is unique to each barebox package. +# +# argument 1 is the uppercase package name (used for variable name-space) +################################################################################ + +define inner-barebox-package + +$(1)_VERSION = $$(call qstrip,$$(BR2_TARGET_BAREBOX_VERSION)) + +ifeq ($$($(1)_VERSION),custom) +# Handle custom Barebox tarballs as specified by the configuration +$(1)_TARBALL = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION)) +$(1)_SITE = $$(patsubst %/,%,$$(dir $$($(1)_TARBALL))) +$(1)_SOURCE = $$(notdir $$($(1)_TARBALL)) +else ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_GIT),y) +$(1)_SITE = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL)) +$(1)_SITE_METHOD = git +else +# Handle stable official Barebox versions +$(1)_SOURCE = barebox-$$($(1)_VERSION).tar.bz2 +$(1)_SITE = https://www.barebox.org/download +endif + +$(1)_DEPENDENCIES = host-lzop +$(1)_LICENSE = GPL-2.0 with exceptions +$(1)_LICENSE_FILES = COPYING + +$(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH)) + +ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),) +define $(1)_APPLY_CUSTOM_PATCHES + $$(APPLY_PATCHES) $$(@D) \ + $$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \*.patch +endef + +$(1)_POST_PATCH_HOOKS += $(1)_APPLY_CUSTOM_PATCHES +endif + +$(1)_INSTALL_IMAGES = YES +ifneq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +$(1)_INSTALL_TARGET = NO +endif + +ifeq ($$(KERNEL_ARCH),i386) +$(1)_ARCH = x86 +else ifeq ($$(KERNEL_ARCH),x86_64) +$(1)_ARCH = x86 +else ifeq ($$(KERNEL_ARCH),powerpc) +$(1)_ARCH = ppc +else ifeq ($$(KERNEL_ARCH),arm64) +$(1)_ARCH = arm +else +$(1)_ARCH = $$(KERNEL_ARCH) +endif + +$(1)_MAKE_FLAGS = ARCH=$$($(1)_ARCH) CROSS_COMPILE="$$(TARGET_CROSS)" +$(1)_MAKE_ENV = $$(TARGET_MAKE_ENV) + +ifeq ($$(BR2_TARGET_$(1)_USE_DEFCONFIG),y) +$(1)_KCONFIG_DEFCONFIG = $$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))_defconfig +else ifeq ($$(BR2_TARGET_$(1)_USE_CUSTOM_CONFIG),y) +$(1)_KCONFIG_FILE = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE)) +endif + +$(1)_KCONFIG_FRAGMENT_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_CONFIG_FRAGMENT_FILES)) +$(1)_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig +$(1)_KCONFIG_OPTS = $$($(1)_MAKE_FLAGS) + +$(1)_KCONFIG_DEPENDENCIES = \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) + +ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +define $(1)_BUILD_BAREBOXENV_CMDS + $$(TARGET_CC) $$(TARGET_CFLAGS) $$(TARGET_LDFLAGS) -o $$(@D)/bareboxenv \ + $$(@D)/scripts/bareboxenv.c +endef +endif + +ifeq ($$(BR2_TARGET_$(1)_CUSTOM_ENV),y) +$(1)_ENV_NAME = $$(notdir $$(call qstrip,\ + $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH))) +define $(1)_BUILD_CUSTOM_ENV + $$(@D)/scripts/bareboxenv -s \ + $$(call qstrip, $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)) \ + $$(@D)/$$($(1)_ENV_NAME) +endef +define $(1)_INSTALL_CUSTOM_ENV + cp $$(@D)/$$($(1)_ENV_NAME) $$(BINARIES_DIR) +endef +endif + +ifneq ($$($(1)_CUSTOM_EMBEDDED_ENV_PATH),) +define $(1)_KCONFIG_FIXUP_CMDS + $$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_ENVIRONMENT,$$(@D)/.config) + $$(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENVIRONMENT_PATH,"$$($(1)_CUSTOM_EMBEDDED_ENV_PATH)",$$(@D)/.config) +endef +endif + +define $(1)_BUILD_CMDS + $$($(1)_BUILD_BAREBOXENV_CMDS) + $$(TARGET_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D) + $$($(1)_BUILD_CUSTOM_ENV) +endef + +$(1)_IMAGE_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_IMAGE_FILE)) + +define $(1)_INSTALL_IMAGES_CMDS + if test -n "$$($(1)_IMAGE_FILES)"; then \ + cp -L $$(foreach image,$$($(1)_IMAGE_FILES),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \ + elif test -h $$(@D)/barebox-flash-image ; then \ + cp -L $$(@D)/barebox-flash-image $$(BINARIES_DIR)/barebox.bin ; \ + else \ + cp $$(@D)/barebox.bin $$(BINARIES_DIR);\ + fi + $$($(1)_INSTALL_CUSTOM_ENV) +endef + +ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +define $(1)_INSTALL_TARGET_CMDS + cp $$(@D)/bareboxenv $$(TARGET_DIR)/usr/bin +endef +endif + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($$(BR2_TARGET_$(1))$$(BR_BUILDING),yy) +# We must use the user-supplied kconfig value, because +# $(1)_KCONFIG_DEFCONFIG will at least contain the +# trailing _defconfig +ifeq ($$(or $$($(1)_KCONFIG_FILE),$$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))),) +$$(error No Barebox config. Check your BR2_TARGET_$(1)_BOARD_DEFCONFIG or BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE settings) +endif +endif + +$$(eval $$(kconfig-package)) + +endef + +################################################################################ +# barebox-package -- the target generator macro for barebox packages +################################################################################ + +barebox-package=$(call inner-barebox-package,$(call UPPERCASE,$(pkgname))) + +include boot/barebox/barebox/barebox.mk +include boot/barebox/barebox-aux/barebox-aux.mk + +ifeq ($(BR2_TARGET_BAREBOX)$(BR2_TARGET_BAREBOX_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(BAREBOX_SOURCE) +endif diff --git a/features/buildroot/boot/barebox/barebox/Config.in b/features/buildroot/boot/barebox/barebox/Config.in new file mode 100644 index 00000000..958e294e --- /dev/null +++ b/features/buildroot/boot/barebox/barebox/Config.in @@ -0,0 +1,80 @@ +choice + prompt "Barebox configuration" + default BR2_TARGET_BAREBOX_USE_DEFCONFIG + +config BR2_TARGET_BAREBOX_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG + string "board defconfig" + depends on BR2_TARGET_BAREBOX_USE_DEFCONFIG + help + Name of the board for which Barebox should be built, without + the _defconfig suffix. + +config BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG + help + Path to the barebox configuration file + +config BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main Barebox configuration file. + +config BR2_TARGET_BAREBOX_IMAGE_FILE + string "Image file names" + help + Space-separated list of barebox images which will be copied to + the images directory. + + If left empty, defaults to: + - barebox.bin for barebox versions older than 2012.10. + - barebox-flash-image for later versions. + +config BR2_TARGET_BAREBOX_BAREBOXENV + bool "bareboxenv tool in target" + help + Install bareboxenv tool in target. + +config BR2_TARGET_BAREBOX_CUSTOM_ENV + bool "Generate an environment image" + help + Generate a custom environment image. This environment will + contain the variables and scripts to be used at boot by + barebox. + +config BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH + string "Environment path" + depends on BR2_TARGET_BAREBOX_CUSTOM_ENV + help + Path to the directory containing the custom barebox + environment. Depending on your setup, it will probably be + based on either the content of the defaultenv or + defaultenv-2 directories in the barebox source code, plus + the additions needed. The output will be an image in the + barebox devfs format, stored in the images directory, with + the same name as the directory name given here. + +config BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH + string "Embedded environment path" + help + If this option is not empty, it is the path to a custom + embedded barebox environment. This image will be used when + the environment found in the environment sector is + invalid. This option sets the barebox Kconfig option + CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This + way it is possible to use Buildroot variables like + TOPDIR etc. to refer to the custom environment. + + Depending on your setup, the custom embedded environment + will probably be based on either the content of the + defaultenv or defaultenv-2 directories in the barebox source + code. diff --git a/features/buildroot/boot/barebox/barebox/barebox.hash b/features/buildroot/boot/barebox/barebox/barebox.hash new file mode 120000 index 00000000..b6462b80 --- /dev/null +++ b/features/buildroot/boot/barebox/barebox/barebox.hash @@ -0,0 +1 @@ +../barebox.hash \ No newline at end of file diff --git a/features/buildroot/boot/barebox/barebox/barebox.mk b/features/buildroot/boot/barebox/barebox/barebox.mk new file mode 100644 index 00000000..39afb0fc --- /dev/null +++ b/features/buildroot/boot/barebox/barebox/barebox.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# barebox +# +################################################################################ + +define BAREBOX_HELP_CMDS + @echo ' barebox-menuconfig - Run barebox menuconfig' + @echo ' barebox-savedefconfig - Run barebox savedefconfig' +endef + +# Instantiate the barebox package +$(eval $(barebox-package)) diff --git a/features/buildroot/boot/binaries-marvell/Config.in b/features/buildroot/boot/binaries-marvell/Config.in new file mode 100644 index 00000000..63052070 --- /dev/null +++ b/features/buildroot/boot/binaries-marvell/Config.in @@ -0,0 +1,32 @@ +config BR2_TARGET_BINARIES_MARVELL + bool "binaries-marvell" + depends on BR2_aarch64 + help + Some systems, including Marvell Armada SoC, have a separate + System Control Processor (SCP) for power management, clocks, + reset and system control. ATF Boot Loader stage 2 (BL2) loads + optional SCP_BL2 image into a platform-specific region + of secure memory. This package downloads and installs such + firmwares, which are needed to build ATF. + + https://github.com/MarvellEmbeddedProcessors/binaries-marvell/ + +if BR2_TARGET_BINARIES_MARVELL + +choice + prompt "Marvell Armada platform" + +config BR2_TARGET_BINARIES_MARVELL_7040 + bool "7040" + +config BR2_TARGET_BINARIES_MARVELL_8040 + bool "8040" + +endchoice + +config BR2_TARGET_BINARIES_MARVELL_IMAGE + string + default "mrvl_scp_bl2_mss_ap_cp1_a8040.img" if BR2_TARGET_BINARIES_MARVELL_8040 + default "mrvl_scp_bl2_mss_ap_cp1_a7040.img" if BR2_TARGET_BINARIES_MARVELL_7040 + +endif diff --git a/features/buildroot/boot/binaries-marvell/binaries-marvell.hash b/features/buildroot/boot/binaries-marvell/binaries-marvell.hash new file mode 100644 index 00000000..0d214502 --- /dev/null +++ b/features/buildroot/boot/binaries-marvell/binaries-marvell.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 45c348d7a62fd147e7c6a59211a77876ce5dd26de690bd45ab79c8ff891acedf binaries-marvell-14481806e699dcc6f7025dbe3e46cf26bb787791.tar.gz +sha256 509a36bb6faa106bbc9730c23038a361ee0c860e53a4cdf9e8605c0174fe45f7 README.md diff --git a/features/buildroot/boot/binaries-marvell/binaries-marvell.mk b/features/buildroot/boot/binaries-marvell/binaries-marvell.mk new file mode 100644 index 00000000..6c701485 --- /dev/null +++ b/features/buildroot/boot/binaries-marvell/binaries-marvell.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# binaries-marvell +# +################################################################################ + +# This is version binaries-marvell-armada-18.06 +BINARIES_MARVELL_VERSION = 14481806e699dcc6f7025dbe3e46cf26bb787791 +BINARIES_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,binaries-marvell,$(BINARIES_MARVELL_VERSION)) + +BINARIES_MARVELL_LICENSE = GPL-2.0 with freertos-exception-2.0 +BINARIES_MARVELL_LICENSE_FILES = README.md + +BINARIES_MARVELL_IMAGE = $(call qstrip,$(BR2_TARGET_BINARIES_MARVELL_IMAGE)) +BINARIES_MARVELL_INSTALL_IMAGES = YES + +define BINARIES_MARVELL_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/$(BINARIES_MARVELL_IMAGE) $(BINARIES_DIR)/scp-fw.bin +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/boot-wrapper-aarch64/Config.in b/features/buildroot/boot/boot-wrapper-aarch64/Config.in new file mode 100644 index 00000000..efb70dcd --- /dev/null +++ b/features/buildroot/boot/boot-wrapper-aarch64/Config.in @@ -0,0 +1,41 @@ +comment "boot-wrapper-aarch64 needs a Linux kernel to be built" + depends on BR2_aarch64 + depends on !BR2_LINUX_KERNEL + +config BR2_TARGET_BOOT_WRAPPER_AARCH64 + bool "boot-wrapper-aarch64" + depends on BR2_aarch64 + depends on BR2_LINUX_KERNEL + help + The boot-wrapper-aarch64 is a small bootloader that makes it + possible to start an Aarch64 kernel inside the available + software simulators for the Aarch64 architecture. + + git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git + +if BR2_TARGET_BOOT_WRAPPER_AARCH64 + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS + string "Device Tree Source name" + default "" + help + Name of the Device Tree Source file to use to generate the + Device Tree Blob that will be embedded in the image + generated by the boot wrapper. Valid names are the .dts + files from arch/arm64/boot/dts/ in the kernel source + tree. The name must be specified without the .dts suffix. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS + string "Kernel bootargs" + default "" + help + Kernel bootargs to embed inside the image generated by the + boot wrapper. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI + bool "Boot secondary SMP cores using PSCI" + help + Boot secondary SMP cores using PSCI firmware calls. If + disabled, the spin-table method is used instead. + +endif diff --git a/features/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk b/features/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk new file mode 100644 index 00000000..cd6e1b7b --- /dev/null +++ b/features/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# boot-wrapper-aarch64 +# +################################################################################ + +BOOT_WRAPPER_AARCH64_VERSION = 4266507a84f8c06452109d38e0350d4759740694 +BOOT_WRAPPER_AARCH64_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git +BOOT_WRAPPER_AARCH64_LICENSE = BSD-3-Clause +BOOT_WRAPPER_AARCH64_LICENSE_FILES = LICENSE.txt +BOOT_WRAPPER_AARCH64_DEPENDENCIES = linux +BOOT_WRAPPER_AARCH64_INSTALL_IMAGES = YES + +# The Git repository does not have the generated configure script and +# Makefile. +BOOT_WRAPPER_AARCH64_AUTORECONF = YES + +BOOT_WRAPPER_AARCH64_DTB = /arch/arm64/boot/dts/$(basename $(call qstrip,$(BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS))).dtb + +# Fixup the path to the DTB in configure.ac. In the future, this +# should hopefully be made more configurable by the +# boot-wrapper-aarch64 developers. +define BOOT_WRAPPER_AARCH64_FIX_DTB_NAME + $(SED) 's%^KERN_DTB=.*%KERN_DTB=$(BOOT_WRAPPER_AARCH64_DTB)%' $(@D)/configure.ac +endef + +BOOT_WRAPPER_AARCH64_PRE_PATCH_HOOKS += BOOT_WRAPPER_AARCH64_FIX_DTB_NAME + +BOOT_WRAPPER_AARCH64_CONF_OPTS = \ + --with-kernel-dir=$(LINUX_DIR) \ + --with-cmdline=$(BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS) + +ifeq ($(BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI),y) +BOOT_WRAPPER_AARCH64_CONF_OPTS += --enable-psci +else +BOOT_WRAPPER_AARCH64_CONF_OPTS += --disable-psci +endif + +# We need to convince the configure script that the Linux kernel tree +# exists, as well as the DTB and the kernel Image. Even though those +# are available on the build machine, the configure script uses +# AC_CHECK_FILE tests, which are always disabled in cross-compilation +# situations. +BOOT_WRAPPER_AARCH64_CONF_ENV = \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR))=yes \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)$(BOOT_WRAPPER_AARCH64_DTB))=yes \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)/arch/arm64/boot/Image)=yes + +define BOOT_WRAPPER_AARCH64_INSTALL_IMAGES_CMDS + cp $(@D)/linux-system.axf $(BINARIES_DIR) +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/boot/common.mk b/features/buildroot/boot/common.mk new file mode 100644 index 00000000..3021e519 --- /dev/null +++ b/features/buildroot/boot/common.mk @@ -0,0 +1 @@ +include $(sort $(wildcard boot/*/*.mk)) diff --git a/features/buildroot/boot/grub2/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch b/features/buildroot/boot/grub2/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch new file mode 100644 index 00000000..cd8b5e73 --- /dev/null +++ b/features/buildroot/boot/grub2/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch @@ -0,0 +1,74 @@ +From 842c390469e2c2e10b5aa36700324cd3bde25875 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Sat, 17 Feb 2018 06:47:28 -0800 +Subject: [PATCH] x86-64: Treat R_X86_64_PLT32 as R_X86_64_PC32 + +Starting from binutils commit bd7ab16b4537788ad53521c45469a1bdae84ad4a: + +https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a + +x86-64 assembler generates R_X86_64_PLT32, instead of R_X86_64_PC32, for +32-bit PC-relative branches. Grub2 should treat R_X86_64_PLT32 as +R_X86_64_PC32. + +Signed-off-by: H.J. Lu +Reviewed-by: Daniel Kiper +Signed-off-by: Romain Naour +--- + grub-core/efiemu/i386/loadcore64.c | 1 + + grub-core/kern/x86_64/dl.c | 1 + + util/grub-mkimagexx.c | 1 + + util/grub-module-verifier.c | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/grub-core/efiemu/i386/loadcore64.c b/grub-core/efiemu/i386/loadcore64.c +index e49d0b6..18facf4 100644 +--- a/grub-core/efiemu/i386/loadcore64.c ++++ b/grub-core/efiemu/i386/loadcore64.c +@@ -98,6 +98,7 @@ grub_arch_efiemu_relocate_symbols64 (grub_efiemu_segment_t segs, + break; + + case R_X86_64_PC32: ++ case R_X86_64_PLT32: + err = grub_efiemu_write_value (addr, + *addr32 + rel->r_addend + + sym.off +diff --git a/grub-core/kern/x86_64/dl.c b/grub-core/kern/x86_64/dl.c +index 4406906..3a73e6e 100644 +--- a/grub-core/kern/x86_64/dl.c ++++ b/grub-core/kern/x86_64/dl.c +@@ -70,6 +70,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr, + break; + + case R_X86_64_PC32: ++ case R_X86_64_PLT32: + { + grub_int64_t value; + value = ((grub_int32_t) *addr32) + rel->r_addend + sym->st_value - +diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c +index a2bb054..39d7efb 100644 +--- a/util/grub-mkimagexx.c ++++ b/util/grub-mkimagexx.c +@@ -841,6 +841,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections, + break; + + case R_X86_64_PC32: ++ case R_X86_64_PLT32: + { + grub_uint32_t *t32 = (grub_uint32_t *) target; + *t32 = grub_host_to_target64 (grub_target_to_host32 (*t32) +diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c +index 9179285..a79271f 100644 +--- a/util/grub-module-verifier.c ++++ b/util/grub-module-verifier.c +@@ -19,6 +19,7 @@ struct grub_module_verifier_arch archs[] = { + -1 + }, (int[]){ + R_X86_64_PC32, ++ R_X86_64_PLT32, + -1 + } + }, +-- +2.7.4 + diff --git a/features/buildroot/boot/grub2/Config.in b/features/buildroot/boot/grub2/Config.in new file mode 100644 index 00000000..e4513399 --- /dev/null +++ b/features/buildroot/boot/grub2/Config.in @@ -0,0 +1,123 @@ +config BR2_TARGET_GRUB2_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_arm + default y if BR2_aarch64 + depends on BR2_USE_MMU + +config BR2_TARGET_GRUB2 + bool "grub2" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on BR2_USE_WCHAR + help + GNU GRUB is a Multiboot boot loader. It was derived from + GRUB, the GRand Unified Bootloader, which was originally + designed and implemented by Erich Stefan Boleyn. GRUB 2 has + replaced what was formerly known as GRUB (i.e. version + 0.9x), which has, in turn, become GRUB Legacy. + + Amongst others, GRUB2 offers EFI support, which GRUB Legacy + doesn't provide. + + For additional notes on using Grub 2 with Buildroot, see + boot/grub2/readme.txt + + http://www.gnu.org/software/grub/ + +if BR2_TARGET_GRUB2 + +choice + prompt "Platform" + +config BR2_TARGET_GRUB2_I386_PC + bool "i386-pc" + depends on BR2_i386 || BR2_x86_64 + help + Select this option if the platform you're targetting is a + x86 or x86-64 legacy BIOS based platform. + +config BR2_TARGET_GRUB2_I386_EFI + bool "i386-efi" + depends on BR2_i386 || BR2_x86_64 + help + Select this option if the platform you're targetting has a + 32 bits EFI BIOS. Note that some x86-64 platforms use a 32 + bits EFI BIOS, and this option should be used in this case. + +config BR2_TARGET_GRUB2_X86_64_EFI + bool "x86-64-efi" + depends on BR2_x86_64 + help + Select this option if the platform you're targetting has a + 64 bits EFI BIOS. + +config BR2_TARGET_GRUB2_ARM_UBOOT + bool "arm-uboot" + depends on BR2_arm + help + Select this option if the platform you're targetting is an + ARM u-boot platform, and you want to boot Grub 2 as an u-boot + compatible image. + +config BR2_TARGET_GRUB2_ARM_EFI + bool "arm-efi" + depends on BR2_arm + help + Select this option if the platform you're targetting is an + ARM platform and you want to boot Grub 2 as an EFI + application. + +config BR2_TARGET_GRUB2_ARM64_EFI + bool "arm64-efi" + depends on BR2_aarch64 + help + Select this option if the platform you're targetting is an + Aarch64 platform and you want to boot Grub 2 as an EFI + application. + +endchoice + +if BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_GRUB2_ARM_UBOOT + +config BR2_TARGET_GRUB2_BOOT_PARTITION + string "boot partition" + default "hd0,msdos1" + help + Specify the partition where the /boot/grub/grub.cfg file is + located. Use 'hd0,msdos1' for the first partition of the + first disk if using a legacy partition table, or 'hd0,gpt1' + if using GPT partition table. + +endif # BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_GRUB2_ARM_UBOOT + +config BR2_TARGET_GRUB2_BUILTIN_MODULES + string "builtin modules" + default "boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk" if BR2_TARGET_GRUB2_I386_PC + default "boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop" \ + if BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI || \ + BR2_TARGET_GRUB2_ARM_EFI || BR2_TARGET_GRUB2_ARM64_EFI + default "linux ext2 fat part_msdos normal" if BR2_TARGET_GRUB2_ARM_UBOOT + +config BR2_TARGET_GRUB2_BUILTIN_CONFIG + string "builtin config" + help + Path to a Grub 2 configuration file that will be embedded + into the Grub image itself. This allows to set the root + device and other configuration parameters, but however menu + entries cannot be described in this embedded configuration. + +config BR2_TARGET_GRUB2_INSTALL_TOOLS + bool "install tools" + help + Install support tools to interact with GNU GRUB Multiboot + boot loader. + + This will also install the Grub 2 loadable modules to the + target. + +endif # BR2_TARGET_GRUB2 + +comment "grub2 needs a toolchain w/ wchar" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR diff --git a/features/buildroot/boot/grub2/grub.cfg b/features/buildroot/boot/grub2/grub.cfg new file mode 100644 index 00000000..bd3e3f00 --- /dev/null +++ b/features/buildroot/boot/grub2/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} diff --git a/features/buildroot/boot/grub2/grub2.hash b/features/buildroot/boot/grub2/grub2.hash new file mode 100644 index 00000000..7f0679fe --- /dev/null +++ b/features/buildroot/boot/grub2/grub2.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 810b3798d316394f94096ec2797909dbf23c858e48f7b3830826b8daa06b7b0f grub-2.02.tar.xz diff --git a/features/buildroot/boot/grub2/grub2.mk b/features/buildroot/boot/grub2/grub2.mk new file mode 100644 index 00000000..65371f01 --- /dev/null +++ b/features/buildroot/boot/grub2/grub2.mk @@ -0,0 +1,140 @@ +################################################################################ +# +# grub2 +# +################################################################################ + +GRUB2_VERSION = 2.02 +GRUB2_SITE = http://ftp.gnu.org/gnu/grub +GRUB2_SOURCE = grub-$(GRUB2_VERSION).tar.xz +GRUB2_LICENSE = GPL-3.0+ +GRUB2_LICENSE_FILES = COPYING +GRUB2_DEPENDENCIES = host-bison host-flex host-grub2 +HOST_GRUB2_DEPENDENCIES = host-bison host-flex +GRUB2_INSTALL_IMAGES = YES + +ifeq ($(BR2_TARGET_GRUB2_INSTALL_TOOLS),y) +GRUB2_INSTALL_TARGET = YES +else +GRUB2_INSTALL_TARGET = NO +endif + +GRUB2_BUILTIN_MODULES = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES)) +GRUB2_BUILTIN_CONFIG = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_CONFIG)) +GRUB2_BOOT_PARTITION = $(call qstrip,$(BR2_TARGET_GRUB2_BOOT_PARTITION)) + +ifeq ($(BR2_TARGET_GRUB2_I386_PC),y) +GRUB2_IMAGE = $(BINARIES_DIR)/grub.img +GRUB2_CFG = $(TARGET_DIR)/boot/grub/grub.cfg +GRUB2_PREFIX = ($(GRUB2_BOOT_PARTITION))/boot/grub +GRUB2_TUPLE = i386-pc +GRUB2_TARGET = i386 +GRUB2_PLATFORM = pc +else ifeq ($(BR2_TARGET_GRUB2_I386_EFI),y) +GRUB2_IMAGE = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootia32.efi +GRUB2_CFG = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX = /EFI/BOOT +GRUB2_TUPLE = i386-efi +GRUB2_TARGET = i386 +GRUB2_PLATFORM = efi +else ifeq ($(BR2_TARGET_GRUB2_X86_64_EFI),y) +GRUB2_IMAGE = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi +GRUB2_CFG = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX = /EFI/BOOT +GRUB2_TUPLE = x86_64-efi +GRUB2_TARGET = x86_64 +GRUB2_PLATFORM = efi +else ifeq ($(BR2_TARGET_GRUB2_ARM_UBOOT),y) +GRUB2_IMAGE = $(BINARIES_DIR)/boot-part/grub/grub.img +GRUB2_CFG = $(BINARIES_DIR)/boot-part/grub/grub.cfg +GRUB2_PREFIX = ($(GRUB2_BOOT_PARTITION))/boot/grub +GRUB2_TUPLE = arm-uboot +GRUB2_TARGET = arm +GRUB2_PLATFORM = uboot +else ifeq ($(BR2_TARGET_GRUB2_ARM_EFI),y) +GRUB2_IMAGE = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootarm.efi +GRUB2_CFG = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX = /EFI/BOOT +GRUB2_TUPLE = arm-efi +GRUB2_TARGET = arm +GRUB2_PLATFORM = efi +else ifeq ($(BR2_TARGET_GRUB2_ARM64_EFI),y) +GRUB2_IMAGE = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootaa64.efi +GRUB2_CFG = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX = /EFI/BOOT +GRUB2_TUPLE = arm64-efi +GRUB2_TARGET = aarch64 +GRUB2_PLATFORM = efi +endif + +# Grub2 is kind of special: it considers CC, LD and so on to be the +# tools to build the host programs and uses TARGET_CC, TARGET_CFLAGS, +# TARGET_CPPFLAGS, TARGET_LDFLAGS to build the bootloader itself. +# +# NOTE: TARGET_STRIP is overridden by !BR2_STRIP_strip, so always +# use the cross compile variant to ensure grub2 builds + +HOST_GRUB2_CONF_ENV = \ + CPP="$(HOSTCC) -E" + +GRUB2_CONF_ENV = \ + CPP="$(TARGET_CC) -E" \ + TARGET_CC="$(TARGET_CC)" \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS) -fno-stack-protector" \ + TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ + TARGET_NM="$(TARGET_NM)" \ + TARGET_OBJCOPY="$(TARGET_OBJCOPY)" \ + TARGET_STRIP="$(TARGET_CROSS)strip" + +GRUB2_CONF_OPTS = \ + --target=$(GRUB2_TARGET) \ + --with-platform=$(GRUB2_PLATFORM) \ + --prefix=/ \ + --exec-prefix=/ \ + --disable-grub-mkfont \ + --enable-efiemu=no \ + ac_cv_lib_lzma_lzma_code=no \ + --enable-device-mapper=no \ + --enable-libzfs=no \ + --disable-werror + +HOST_GRUB2_CONF_OPTS = \ + --disable-grub-mkfont \ + --enable-efiemu=no \ + ac_cv_lib_lzma_lzma_code=no \ + --enable-device-mapper=no \ + --enable-libzfs=no \ + --disable-werror + +ifeq ($(BR2_TARGET_GRUB2_I386_PC),y) +define GRUB2_IMAGE_INSTALL_ELTORITO + cat $(HOST_DIR)/lib/grub/$(GRUB2_TUPLE)/cdboot.img $(GRUB2_IMAGE) > \ + $(BINARIES_DIR)/grub-eltorito.img +endef +endif + +define GRUB2_INSTALL_IMAGES_CMDS + mkdir -p $(dir $(GRUB2_IMAGE)) + $(HOST_DIR)/usr/bin/grub-mkimage \ + -d $(@D)/grub-core/ \ + -O $(GRUB2_TUPLE) \ + -o $(GRUB2_IMAGE) \ + -p "$(GRUB2_PREFIX)" \ + $(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \ + $(GRUB2_BUILTIN_MODULES) + mkdir -p $(dir $(GRUB2_CFG)) + $(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG) + $(GRUB2_IMAGE_INSTALL_ELTORITO) +endef + +ifeq ($(GRUB2_PLATFORM),efi) +define GRUB2_EFI_STARTUP_NSH + echo $(notdir $(GRUB2_IMAGE)) > \ + $(BINARIES_DIR)/efi-part/startup.nsh +endef +GRUB2_POST_INSTALL_IMAGES_HOOKS += GRUB2_EFI_STARTUP_NSH +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/boot/grub2/readme.txt b/features/buildroot/boot/grub2/readme.txt new file mode 100644 index 00000000..0282fbdd --- /dev/null +++ b/features/buildroot/boot/grub2/readme.txt @@ -0,0 +1,190 @@ +Notes on using Grub2 for BIOS-based platforms +============================================= + +1. Create a disk image + dd if=/dev/zero of=disk.img bs=1M count=32 +2. Partition it (either legacy or GPT style partitions work) + cfdisk disk.img + - Create one partition, type Linux, for the root + filesystem. The only constraint is to make sure there + is enough free space *before* the first partition to + store Grub2. Leaving 1 MB of free space is safe. +3. Setup loop device and loop partitions + sudo losetup -f disk.img + sudo partx -a /dev/loop0 +4. Prepare the root partition + sudo mkfs.ext3 -L root /dev/loop0p1 + sudo mount /dev/loop0p1 /mnt + sudo tar -C /mnt -xf output/images/rootfs.tar + sudo umount /mnt +5. Install Grub2 + sudo ./output/host/sbin/grub-bios-setup \ + -b ./output/host/lib/grub/i386-pc/boot.img \ + -c ./output/images/grub.img -d . /dev/loop0 +6. Cleanup loop device + sudo partx -d /dev/loop0 + sudo losetup -d /dev/loop0 +7. Your disk.img is ready! + +Using genimage +-------------- + +If you use genimage to generate your complete image, +installing Grub can be tricky. Here is how to achieve Grub's +installation with genimage: + +partition boot { + in-partition-table = "no" + image = "path_to_boot.img" + offset = 0 + size = 512 +} +partition grub { + in-partition-table = "no" + image = "path_to_grub.img" + offset = 512 +} + +The result is not byte to byte identical to what +grub-bios-setup does but it works anyway. + +To test your BIOS image in Qemu +------------------------------- + +qemu-system-{i386,x86-64} -hda disk.img + +Notes on using Grub2 for x86/x86_64 EFI-based platforms +======================================================= + +1. Create a disk image + dd if=/dev/zero of=disk.img bs=1M count=32 +2. Partition it with GPT partitions + cgdisk disk.img + - Create a first partition, type EF00, for the + bootloader and kernel image + - Create a second partition, type 8300, for the root + filesystem. +3. Setup loop device and loop partitions + sudo losetup -f disk.img + sudo partx -a /dev/loop0 +4. Prepare the boot partition + sudo mkfs.vfat -n boot /dev/loop0p1 + sudo mount /dev/loop0p1 /mnt + sudo cp -a output/images/efi-part/* /mnt/ + sudo cp output/images/bzImage /mnt/ + sudo umount /mnt +5. Prepare the root partition + sudo mkfs.ext3 -L root /dev/loop0p2 + sudo mount /dev/loop0p2 /mnt + sudo tar -C /mnt -xf output/images/rootfs.tar + sudo umount /mnt +6 Cleanup loop device + sudo partx -d /dev/loop0 + sudo losetup -d /dev/loop0 +7. Your disk.img is ready! + +To test your i386/x86-64 EFI image in Qemu +------------------------------------------ + +1. Download the EFI BIOS for Qemu + Version IA32 or X64 depending on the chosen Grub2 + platform (i386-efi vs. x86-64-efi) + https://www.kraxel.org/repos/jenkins/edk2/ + (or use one provided by your distribution as OVMF) +2. Extract, and rename OVMF.fd to bios.bin and + CirrusLogic5446.rom to vgabios-cirrus.bin. +3. qemu-system-{i386,x86-64} -L ovmf-dir/ -hda disk.img +4. Make sure to pass pci=nocrs to the kernel command line, + to workaround a bug in the EFI BIOS regarding the + EFI framebuffer. + +Notes on using Grub2 for ARM u-boot-based platforms +=================================================== + +The following steps show how to use the Grub2 arm-uboot platform +support in the simplest way possible and with a single +buildroot-generated filesystem. + + 1. Load qemu_arm_vexpress_defconfig + + 2. Enable u-boot with the vexpress_ca9x4 board name and with + u-boot.elf image format. + + 3. Enable grub2 for the arm-uboot platform. + + 4. Enable "Install kernel image to /boot in target" in the kernel + menu to populate a /boot directory with zImage in it. + + 5. The upstream u-boot vexpress_ca9x4 doesn't have CONFIG_API enabled + by default, which is required. + + Before building, patch u-boot (for example, make u-boot-extract to + edit the source before building) file + include/configs/vexpress_common.h to define: + + #define CONFIG_API + #define CONFIG_SYS_MMC_MAX_DEVICE 1 + + 6. Create a custom grub2 config file with the following contents and + set its path in BR2_TARGET_GRUB2_CFG: + + set default="0" + set timeout="5" + + menuentry "Buildroot" { + set root='(hd0)' + linux /boot/zImage root=/dev/mmcblk0 console=ttyAMA0 + devicetree /boot/vexpress-v2p-ca9.dtb + } + + 7. Create a custom builtin config file with the following contents + and set its path in BR2_TARGET_GRUB2_BUILTIN_CONFIG: + + set root=(hd0) + set prefix=/boot/grub + + 8. Create a custom post-build script which copies files from + ${BINARIES_DIR}/boot-part to $(TARGET_DIR)/boot (set its path in + BR2_ROOTFS_POST_BUILD_SCRIPT): + + #!/bin/sh + cp -r ${BINARIES_DIR}/boot-part/* ${TARGET_DIR}/boot/ + + 9. make + +10. Run qemu with: + + qemu-system-arm -M vexpress-a9 -kernel output/images/u-boot -m 1024 \ + -nographic -sd output/images/rootfs.ext2 + +11. In u-boot, stop at the prompt and run grub2 with: + + => ext2load mmc 0:0 ${loadaddr} /boot/grub/grub.img + => bootm + +12. This should bring the grub2 menu, upon which selecting the "Buildroot" + entry should boot Linux. + + +Notes on using Grub2 for Aarch64 EFI-based platforms +==================================================== + +The following steps show how to use the Grub2 arm64-efi platform, +using qemu and EFI firmware built for qemu. + + 1. Load aarch64_efi_defconfig + + 2. make + + 3. Download the EFI firmware for qemu aarch64 + https://www.kraxel.org/repos/jenkins/edk2/ + (or use one provided by your distribution as OVMF-aarch64 or AAVMF) + + 4. Run qemu with: + + qemu-system-aarch64 -M virt -cpu cortex-a57 -m 512 -nographic \ + -bios /QEMU_EFI.fd -hda output/images/disk.img \ + -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 + + 5. This should bring the grub2 menu, upon which selecting the + "Buildroot" entry should boot Linux. diff --git a/features/buildroot/boot/gummiboot/0001-Allow-building-with-newer-glibc-versions.patch b/features/buildroot/boot/gummiboot/0001-Allow-building-with-newer-glibc-versions.patch new file mode 100644 index 00000000..b35cd499 --- /dev/null +++ b/features/buildroot/boot/gummiboot/0001-Allow-building-with-newer-glibc-versions.patch @@ -0,0 +1,31 @@ +From 40ab4167b5a45c772304a879c71b47d54de3b0e3 Mon Sep 17 00:00:00 2001 +From: Esben Haabendal +Date: Wed, 20 Mar 2019 14:19:40 +0100 +Subject: [PATCH] Allow building with newer glibc versions + +Newer glibc versions does not include sys/sysmacros.h from sys/types.h +anymore. Including it unconditionally should be safe. + +See https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html for why +this was done. + +Signed-off-by: Esben Haabendal +--- + src/setup/setup.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/setup/setup.c b/src/setup/setup.c +index 6a4275a2ae36..53429375a146 100644 +--- a/src/setup/setup.c ++++ b/src/setup/setup.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "efivars.h" + +-- +2.21.0 + diff --git a/features/buildroot/boot/gummiboot/0002-Fix-linking-for-non-host-compatible-targets.patch b/features/buildroot/boot/gummiboot/0002-Fix-linking-for-non-host-compatible-targets.patch new file mode 100644 index 00000000..7104a581 --- /dev/null +++ b/features/buildroot/boot/gummiboot/0002-Fix-linking-for-non-host-compatible-targets.patch @@ -0,0 +1,54 @@ +From fc05ced797b87286b8ec7303fe32bf200a072972 Mon Sep 17 00:00:00 2001 +From: Esben Haabendal +Date: Mon, 18 Mar 2019 11:14:31 +0100 +Subject: [PATCH] Fix linking for non-host compatible targets + +Without this, gummiboot build system will use host 'ld' when linking +target binary, which is obviously not a good idea. + +Signed-off-by: Esben Haabendal +--- + Makefile.am | 4 ++-- + configure.ac | 4 ++++ + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 6568a355ed74..9051dd44edd9 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -142,7 +142,7 @@ $(top_builddir)/src/efi/%.o: $(top_srcdir)/src/efi/%.c $(addprefix $(top_srcdir) + $(AM_V_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@ + + $(gummiboot_solib): $(gummiboot_objects) +- $(AM_V_CCLD)$(LD) $(efi_ldflags) $(gummiboot_objects) \ ++ $(AM_V_CCLD)$(EFI_LD) $(efi_ldflags) $(gummiboot_objects) \ + -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \ + nm -D -u $@ | grep ' U ' && exit 1 || : + .DELETE_ON_ERROR: $(gummboot_solib) +@@ -177,7 +177,7 @@ $(top_builddir)/src/efi/%.o: $(top_srcdir)/src/efi/%.c $(addprefix $(top_srcdir) + $(AM_V_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@ + + $(stub_solib): $(stub_objects) +- $(AM_V_CCLD)$(LD) $(efi_ldflags) $(stub_objects) \ ++ $(AM_V_CCLD)$(EFI_LD) $(efi_ldflags) $(stub_objects) \ + -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \ + nm -D -u $@ | grep ' U ' && exit 1 || : + .DELETE_ON_ERROR: $(gummboot_solib) +diff --git a/configure.ac b/configure.ac +index 27bbe1d73396..b948696c220b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -40,6 +40,10 @@ dnl Don't try to use things like -std=c99 for efi compilation + EFI_CC=$CC + AC_SUBST([EFI_CC]) + ++dnl Allow specifying linker compatible with the compiler ++EFI_LD=$LD ++AC_SUBST([EFI_LD]) ++ + AC_PROG_CC_C99 + AM_PROG_CC_C_O + AC_PROG_GCC_TRADITIONAL +-- +2.21.0 + diff --git a/features/buildroot/boot/gummiboot/Config.in b/features/buildroot/boot/gummiboot/Config.in new file mode 100644 index 00000000..1b5c4279 --- /dev/null +++ b/features/buildroot/boot/gummiboot/Config.in @@ -0,0 +1,24 @@ +config BR2_TARGET_GUMMIBOOT + bool "gummiboot" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + select BR2_PACKAGE_GNU_EFI + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + gummiboot is a simple UEFI boot manager which executes + configured EFI images. The default entry is selected by a + configured pattern (glob) or an on-screen menu. + + gummiboot operates on the EFI System Partition (ESP) + only. Configuration file fragments, kernels, initrds, other + EFI images need to reside on the ESP. Linux kernels need to + be built with CONFIG_EFI_STUB to be able to be directly + executed as an EFI image. + + See the Grub2 help text for details on preparing an EFI + capable disk image using Gummiboot: the instructions are + exactly the same, except that the Gummiboot configuration + files will be located in /loader/ inside the EFI partition. + + http://freedesktop.org/wiki/Software/gummiboot/ diff --git a/features/buildroot/boot/gummiboot/buildroot.conf b/features/buildroot/boot/gummiboot/buildroot.conf new file mode 100644 index 00000000..8a6f02e5 --- /dev/null +++ b/features/buildroot/boot/gummiboot/buildroot.conf @@ -0,0 +1,4 @@ +title Buildroot +version 1 +linux /bzImage +options console=ttyS0 root=/dev/sda2 diff --git a/features/buildroot/boot/gummiboot/gummiboot.mk b/features/buildroot/boot/gummiboot/gummiboot.mk new file mode 100644 index 00000000..748e8703 --- /dev/null +++ b/features/buildroot/boot/gummiboot/gummiboot.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# gummiboot +# +################################################################################ + +GUMMIBOOT_SITE = https://gitlab.freedesktop.org/archived-projects/gummiboot.git +GUMMIBOOT_SITE_METHOD = git +GUMMIBOOT_VERSION = 2bcd919c681c952eb867ef1bdb458f1bc49c2d55 +GUMMIBOOT_LICENSE = LGPL-2.1+ +GUMMIBOOT_LICENSE_FILES = LICENSE + +# The git archive does not have the autoconf/automake stuff generated. +GUMMIBOOT_AUTORECONF = YES +GUMMIBOOT_DEPENDENCIES = gnu-efi host-pkgconf util-linux +GUMMIBOOT_INSTALL_TARGET = NO +GUMMIBOOT_INSTALL_IMAGES = YES + +ifeq ($(BR2_i386),y) +GUMMIBOOT_IMGARCH = ia32 +else ifeq ($(BR2_x86_64),y) +GUMMIBOOT_IMGARCH = x64 +endif + +GUMMIBOOT_CONF_OPTS = \ + --host=$(BR2_ARCH) \ + --with-efi-libdir=$(STAGING_DIR)/usr/lib \ + --with-efi-ldsdir=$(STAGING_DIR)/usr/lib \ + --with-efi-includedir=$(STAGING_DIR)/usr/include \ + --disable-manpages + +define GUMMIBOOT_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/gummiboot$(GUMMIBOOT_IMGARCH).efi \ + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(GUMMIBOOT_IMGARCH).efi + echo "boot$(GUMMIBOOT_IMGARCH).efi" > \ + $(BINARIES_DIR)/efi-part/startup.nsh + $(INSTALL) -D -m 0644 boot/gummiboot/loader.conf \ + $(BINARIES_DIR)/efi-part/loader/loader.conf + $(INSTALL) -D -m 0644 boot/gummiboot/buildroot.conf \ + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/boot/gummiboot/loader.conf b/features/buildroot/boot/gummiboot/loader.conf new file mode 100644 index 00000000..93b77b8f --- /dev/null +++ b/features/buildroot/boot/gummiboot/loader.conf @@ -0,0 +1,2 @@ +timeout 3 +default buildroot diff --git a/features/buildroot/boot/lpc32xxcdl/Config.in b/features/buildroot/boot/lpc32xxcdl/Config.in new file mode 100644 index 00000000..97137aa7 --- /dev/null +++ b/features/buildroot/boot/lpc32xxcdl/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_LPC32XXCDL + bool "LPC32XX CDL (kickstart and S1L)" + depends on BR2_arm926t + +if BR2_TARGET_LPC32XXCDL + +config BR2_TARGET_LPC32XXCDL_BOARDNAME + string "LPC32xx board name" + +endif #BR2_TARGET_LPC32XXCDL diff --git a/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch new file mode 100644 index 00000000..6aecbdeb --- /dev/null +++ b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch @@ -0,0 +1,52 @@ +Use CROSS_COMPILE as compiler name and stop using libc + +Signed-off-by: Alexandre Belloni +--- + makerule/lpc32xx/make.lpc32xx.gnu | 22 +++++++++++----------- + 1 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/makerule/lpc32xx/make.lpc32xx.gnu b/makerule/lpc32xx/make.lpc32xx.gnu +index 1014c28..3277d99 100644 +--- a/makerule/lpc32xx/make.lpc32xx.gnu ++++ b/makerule/lpc32xx/make.lpc32xx.gnu +@@ -27,19 +27,19 @@ CFLAGS += -mno-sched-prolog -fno-hosted -mno-thumb-interwork -ffunction-sectio + CFLAGS += -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) + AFLAGS = -mcpu=arm926ej-s + AFLAGS += -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) +-CC = arm-none-eabi-gcc +-AS = arm-none-eabi-as +-AR = arm-none-eabi-ar -r +-LD = arm-none-eabi-gcc +-NM = arm-none-eabi-nm +-OBJDUMP = arm-none-eabi-objdump +-OBJCOPY = arm-none-eabi-objcopy +-READELF = arm-none-eabi-readelf ++CC = $(CROSS_COMPILE)gcc ++AS = $(CROSS_COMPILE)as ++AR = $(CROSS_COMPILE)ar -r ++LD = $(CROSS_COMPILE)gcc ++NM = $(CROSS_COMPILE)nm ++OBJDUMP = $(CROSS_COMPILE)objdump ++OBJCOPY = $(CROSS_COMPILE)objcopy ++READELF = $(CROSS_COMPILE)readelf + LDFLAGS += -Wl,--gc-sections + + LK = -static + LK += -Wl,--start-group $(TARGET_CSP_LIB) $(TARGET_BSP_LIB) $(TARGET_GEN_LIB) +-LK += -lgcc -lc -lg -lm -lstdc++ -lsupc++ ++LK += -nostdlib -lgcc #-lc -lg -lm -lstdc++ -lsupc++ + LK += -Wl,--end-group + MAP = -Xlinker -Map -Xlinker + LDESC = -Xlinker -T +@@ -47,6 +47,6 @@ ENTRY = -e + BIN = -bin + EXT = .elf + LEXT = +-ELFTOREC =arm-none-eabi-objcopy -O srec --strip-all --verbose +-ELFTOBIN =arm-none-eabi-objcopy -I elf32-littlearm -O binary --strip-all --verbose ++ELFTOREC = $(OBJCOPY) -O srec --strip-all --verbose ++ELFTOBIN = $(OBJCOPY) -I elf32-littlearm -O binary --strip-all --verbose + REC =.srec +-- +1.7.7.3 + diff --git a/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch new file mode 100644 index 00000000..39966f01 --- /dev/null +++ b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch @@ -0,0 +1,969 @@ +Remove duplicated files to stop the linker from complaining about duplicate +symbols + +Signed-off-by: Alexandre Belloni +--- +--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sysapi_timer.c 2011-10-05 19:10:37.000000000 +0200 ++++ /dev/null 2012-01-01 16:39:47.918907000 +0100 +@@ -1,212 +0,0 @@ +-/*********************************************************************** +- * $Id:: sysapi_timer.c 3394 2010-05-06 17:56:27Z usb10132 $ +- * +- * Project: Time support functions +- * +- * Description: +- * Implements the following functions required for the S1L API +- * time_init +- * time_reset +- * time_start +- * time_stop +- * time_get +- * time_get_rate +- * +- *********************************************************************** +- * Software that is described herein is for illustrative purposes only +- * which provides customers with programming information regarding the +- * products. This software is supplied "AS IS" without any warranties. +- * NXP Semiconductors assumes no responsibility or liability for the +- * use of the software, conveys no license or title under any patent, +- * copyright, or mask work right to the product. NXP Semiconductors +- * reserves the right to make changes in the software without +- * notification. NXP Semiconductors also make no representation or +- * warranty that such application will be suitable for the specified +- * use without further testing or modification. +- **********************************************************************/ +- +-#include "s1l_sys_inf.h" +-#include "lpc32xx_intc_driver.h" +-#include "lpc32xx_timer_driver.h" +- +-static UNS_64 base_rate; +-static INT_32 tdev = 0; +- +-/*********************************************************************** +- * +- * Function: time_init +- * +- * Purpose: Initializes time system +- * +- * Processing: Initializes the system timer. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: 0 if the init failed, otherwise non-zero +- * +- * Notes: None +- * +- **********************************************************************/ +-INT_32 time_init(void) +-{ +- TMR_PSCALE_SETUP_T pscale; +- +- /* Open timer driver */ +- if (tdev == 0) +- { +- tdev = timer_open((void *) TIMER_CNTR0, 0); +- if (tdev != 0) +- { +- /* Use a prescale count to 100000 */ +- pscale.ps_tick_val = 100000; +- pscale.ps_us_val = 0; /* Not needed when ps_tick_val != 0 */ +- timer_ioctl(tdev, TMR_SETUP_PSCALE, (INT_32) &pscale); +- +- /* Get timer clock rate */ +- base_rate = (UNS_64) timer_ioctl(tdev, TMR_GET_STATUS, +- TMR_GET_CLOCK); +- } +- } +- +- return tdev; +-} +- +-/*********************************************************************** +- * +- * Function: time_reset +- * +- * Purpose: Resets system timer +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-void time_reset(void) +-{ +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_RESET, 1); +- } +-} +- +-/*********************************************************************** +- * +- * Function: time_start +- * +- * Purpose: Starts system timer +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-void time_start(void) +-{ +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_ENABLE, 1); +- } +-} +- +-/*********************************************************************** +- * +- * Function: time_stop +- * +- * Purpose: Stops system timer +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-void time_stop(void) +-{ +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_ENABLE, 0); +- } +-} +- +-/*********************************************************************** +- * +- * Function: time_get +- * +- * Purpose: Returns current system time value +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: The number of ticks of the timer counter +- * +- * Notes: None +- * +- **********************************************************************/ +-UNS_64 time_get(void) +-{ +- TMR_COUNTS_T tcounts; +- UNS_64 ticks = 0; +- +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_GET_COUNTS, (INT_32) &tcounts); +- +- /* Compute number of timer ticks */ +- ticks = (UNS_64) tcounts.count_val * 100000; +- ticks = ticks + (UNS_64) tcounts.ps_count_val; +- } +- +- return ticks; +-} +- +-/*********************************************************************** +- * +- * Function: time_get_rate +- * +- * Purpose: +- * Returns base tick rate (ticks per second) of the time counter +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: The timer tick rate (in ticks per second) +- * +- * Notes: None +- * +- **********************************************************************/ +-UNS_64 time_get_rate(void) +-{ +- return base_rate; +-} +- +--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sys_mmu_cmd_group.c 2011-10-05 19:10:37.000000000 +0200 ++++ /dev/null 2012-01-01 16:39:47.918907000 +0100 +@@ -1,746 +0,0 @@ +-/*********************************************************************** +- * $Id:: sys_mmu_cmd_group.c 3430 2010-05-07 17:39:08Z usb10132 $ +- * +- * Project: Command processor for peek, poke, dump, and fill +- * +- * Description: +- * Processes commands from the command prompt +- * +- *********************************************************************** +- * Software that is described herein is for illustrative purposes only +- * which provides customers with programming information regarding the +- * products. This software is supplied "AS IS" without any warranties. +- * NXP Semiconductors assumes no responsibility or liability for the +- * use of the software, conveys no license or title under any patent, +- * copyright, or mask work right to the product. NXP Semiconductors +- * reserves the right to make changes in the software without +- * notification. NXP Semiconductors also make no representation or +- * warranty that such application will be suitable for the specified +- * use without further testing or modification. +- **********************************************************************/ +- +-#include "lpc_arm922t_cp15_driver.h" +-#include "lpc_string.h" +-#include "startup.h" +-#include "s1l_cmds.h" +-#include "s1l_sys_inf.h" +- +-/* dcache command */ +-BOOL_32 cmd_dcache(void); +-static UNS_32 cmd_dcache_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "dcache" command */ +- (PARSE_TYPE_DEC | PARSE_TYPE_END) +-}; +-static CMD_ROUTE_T core_dcache_cmd = +-{ +- (UNS_8 *) "dcache", +- cmd_dcache, +- (UNS_8 *) "Enables, disables, or flushes data cache", +- (UNS_8 *) "dcache [0(disable), 1(enable), 2(flush)]", +- cmd_dcache_plist, +- NULL +-}; +- +-/* icache command */ +-BOOL_32 cmd_icache(void); +-static UNS_32 cmd_icache_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "icache" command */ +- (PARSE_TYPE_DEC | PARSE_TYPE_END) +-}; +-static CMD_ROUTE_T core_icache_cmd = +-{ +- (UNS_8 *) "icache", +- cmd_icache, +- (UNS_8 *) "Enables or disables instruction cache", +- (UNS_8 *) "icache [0(disable), 1(enable)]", +- cmd_icache_plist, +- NULL +-}; +- +-/* inval command */ +-BOOL_32 cmd_inval(void); +-static UNS_32 cmd_inval_plist[] = +-{ +- (PARSE_TYPE_STR | PARSE_TYPE_END) /* The "inval" command */ +-}; +-static CMD_ROUTE_T core_inval_cmd = +-{ +- (UNS_8 *) "inval", +- cmd_inval, +- (UNS_8 *) "Flushes data cache and invalidates instruction cache", +- (UNS_8 *) "inval", +- cmd_inval_plist, +- NULL +-}; +- +-/* mmuenab command */ +-BOOL_32 cmd_mmuenab(void); +-static UNS_32 cmd_mmuenab_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "mmuenab" command */ +- (PARSE_TYPE_DEC | PARSE_TYPE_END) +-}; +-static CMD_ROUTE_T core_mmuenab_cmd = +-{ +- (UNS_8 *) "mmuenab", +- cmd_mmuenab, +- (UNS_8 *) "Enables or disables the MMU", +- (UNS_8 *) "mmuenab [0(disable), 1(enable)]", +- cmd_mmuenab_plist, +- NULL +-}; +- +-/* map command */ +-BOOL_32 cmd_map(void); +-static UNS_32 cmd_map_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "map" command */ +- (PARSE_TYPE_HEX), +- (PARSE_TYPE_HEX), +- (PARSE_TYPE_DEC), +- (PARSE_TYPE_DEC | PARSE_TYPE_END), +-}; +-static CMD_ROUTE_T core_map_cmd = +-{ +- (UNS_8 *) "map", +- cmd_map, +- (UNS_8 *) "Maps a range of physical address sections to virtual addresses", +- (UNS_8 *) "map [virt hex addr][phy hex addr][sections][0(uncached), 1(cached), 2(unmap)]", +- cmd_map_plist, +- NULL +-}; +- +-/* mmuinfo command */ +-static BOOL_32 cmd_mmuinfo(void); +-static UNS_32 cmd_mmuinfo_plist[] = +-{ +- (PARSE_TYPE_STR | PARSE_TYPE_END) /* The "mmuinfo" command */ +-}; +-static CMD_ROUTE_T core_mmuinfo_cmd = +-{ +- (UNS_8 *) "mmuinfo", +- cmd_mmuinfo, +- (UNS_8 *) "Dumps page table and MMU info", +- (UNS_8 *) "mmuinfo", +- cmd_mmuinfo_plist, +- NULL +-}; +- +-/* MMU group */ +-static GROUP_LIST_T mmu_group = +-{ +- (UNS_8 *) "mmu", /* mmu group */ +- (UNS_8 *) "MMU command group", +- NULL, +- NULL +-}; +- +-static UNS_8 enabled_msg [] =" enabled"; +-static UNS_8 disabled_msg [] =" disabled"; +-static UNS_8 dcache_msg[] = "Data cache"; +-static UNS_8 icache_msg[] = "Instruction cache"; +-static UNS_8 pagetab_msg[] = "Page table at address: "; +-static UNS_8 slist_msg[] = "Type Virt Phy fl Size"; +-static UNS_8 mmu_msg [] ="MMU"; +-static UNS_8 cpage_msg[] = "Coarse page:"; +-static UNS_8 fpage_msg[] = "Fine page :"; +-static UNS_8 sect_msg[] = "Section :"; +-static UNS_8 mbytes_msg[] = "M"; +-static UNS_8 map1_err_msg[] = +- "Error : section addresses must be aligned on a 32-bit boundary"; +-static UNS_8 map2_err_msg[] = +- "Error : Number of sections exceeds address range of device"; +-static UNS_8 phya_msg[] = "Virtual address "; +-static UNS_8 mapped_msg[] = " mapped to physical address "; +-static UNS_8 unmapped_msg[] = " unmapped from physical address "; +-static UNS_8 cached_msg[] = " (cached)"; +-static UNS_8 inval_msg[] = " invalidated"; +-static UNS_8 caches_msg [] ="Caches"; +-static UNS_8 flushed_msg[] = " flushed"; +- +-/*********************************************************************** +- * +- * Function: show_section +- * +- * Purpose: Display section information +- * +- * Processing: +- * See function. +- * +- * Parameters: +- * mmu_reg : MMU settings for this section +- * virt_addr : Starting virtual address for this section +- * segs : Number of 1M segments for this section +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-static void show_section(UNS_32 mmu_reg, +- UNS_32 virt_addr, +- UNS_32 segs) +-{ +- UNS_8 straddr [16]; +- UNS_32 mmu_phy; +- +- if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) != +- ARM922T_L1D_TYPE_FAULT) +- { +- if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == +- ARM922T_L1D_TYPE_CPAGE) +- { +- term_dat_out(cpage_msg); +- } +- else if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == +- ARM922T_L1D_TYPE_FPAGE) +- { +- term_dat_out(fpage_msg); +- } +- else +- { +- term_dat_out(sect_msg); +- } +- +- /* Compute virtual address */ +- str_makehex(straddr, virt_addr, 8); +- term_dat_out(straddr); +- term_dat_out((UNS_8 *) " "); +- +- /* Compute mapped physical address */ +- if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == +- ARM922T_L1D_TYPE_SECTION) +- { +- mmu_phy = mmu_reg & 0xFFF00000; +- } +- else +- { +- /* Don't compute addresses for non-sections */ +- mmu_phy = 0; +- } +- str_makehex(straddr, mmu_phy, 8); +- term_dat_out(straddr); +- term_dat_out((UNS_8 *) " "); +- +- /* MMU flags */ +- if ((mmu_reg & ARM922T_L1D_BUFFERABLE) != 0) +- { +- term_dat_out((UNS_8 *) "b"); +- } +- else +- { +- term_dat_out((UNS_8 *) " "); +- } +- if ((mmu_reg & ARM922T_L1D_CACHEABLE) != 0) +- { +- term_dat_out((UNS_8 *) "c"); +- } +- else +- { +- term_dat_out((UNS_8 *) " "); +- } +- term_dat_out((UNS_8 *) " "); +- +- /* Displays used megabytes */ +- str_makedec(straddr, segs); +- term_dat_out(straddr); +- term_dat_out_crlf(mbytes_msg); +- } +-} +- +-/*********************************************************************** +- * +- * Function: mmu_dumpinfo +- * +- * Purpose: Display MMU info +- * +- * Processing: +- * Display the MMU information, including enable status, cache +- * status, and page table. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-static BOOL_32 mmu_dumpinfo(void) +-{ +- UNS_32 segsz, last_mmu_reg, mmu_vrt, mmu_reg, mmu_vrtsav = 0, *pt; +- UNS_32 mlast_mmu_reg, mmmu_reg; +- int idx; +- UNS_8 hexaddr [16]; +- +- term_dat_out(mmu_msg); +- if (cp15_mmu_enabled() == FALSE) +- { +- term_dat_out_crlf(disabled_msg); +- } +- else +- { +- term_dat_out_crlf(enabled_msg); +- +- /* Get MMU control register word */ +- mmu_reg = cp15_get_mmu_control_reg(); +- +- /* Instruction cache status */ +- term_dat_out(icache_msg); +- if ((mmu_reg & ARM922T_MMU_CONTROL_I) == 0) +- { +- term_dat_out_crlf(disabled_msg); +- } +- else +- { +- term_dat_out_crlf(enabled_msg); +- } +- +- /* Data cache status */ +- term_dat_out(dcache_msg); +- if ((mmu_reg & ARM922T_MMU_CONTROL_C) == 0) +- { +- term_dat_out_crlf(disabled_msg); +- } +- else +- { +- term_dat_out_crlf(enabled_msg); +- } +- +- term_dat_out(pagetab_msg); +- mmu_reg = (UNS_32) cp15_get_ttb(); +- str_makehex(hexaddr, mmu_reg, 8); +- term_dat_out_crlf(hexaddr); +- term_dat_out_crlf(slist_msg); +- +- /* Process MMU table - assume that the physical and +- virtual locations of table are the same */ +- pt = (UNS_32 *) mmu_reg; +- mmu_vrt = 0x0; +- segsz = 0xFFFFFFFF; +- last_mmu_reg = mlast_mmu_reg = 0xFFFFFFFF; +- for (idx = 0; idx < 4096; idx++) +- { +- mmu_reg = *pt; +- mmmu_reg = (mmu_reg & (ARM922T_L1D_TYPE_PG_SN_MASK | +- ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE)); +- segsz = segsz + 1; +- +- if ((last_mmu_reg != 0xFFFFFFFF) && +- (mlast_mmu_reg != mmmu_reg)) +- { +- show_section(last_mmu_reg, mmu_vrtsav, segsz); +- segsz = 0; +- } +- +- if (mlast_mmu_reg != mmmu_reg) +- { +- mmu_vrtsav = mmu_vrt; +- last_mmu_reg = mmu_reg; +- mlast_mmu_reg = mmmu_reg; +- } +- +- pt++; +- mmu_vrt += 0x00100000; +- } +- } +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: mmu_dumpmap +- * +- * Purpose: Map a virtual address range to a physical range +- * +- * Processing: +- * From the input addresses and number of sections, generate the +- * appropriate entries in the page table. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-static BOOL_32 mmu_dumpmap(UNS_32 vrt, +- UNS_32 phy, +- UNS_32 sections, +- UNS_32 cache) +-{ +- BOOL_32 processed = FALSE; +- UNS_32 mmu_phy, mmu_vrt, tmp1 = 0, tmp2, *pt; +- UNS_8 hexaddr [16]; +- +- /* Verify address boundaries are sectional */ +- mmu_vrt = vrt & ~ARM922T_L2D_SN_BASE_MASK; +- mmu_phy = phy & ~ARM922T_L2D_SN_BASE_MASK; +- if ((mmu_vrt != 0) || (mmu_phy != 0)) +- { +- term_dat_out_crlf(map1_err_msg); +- } +- else +- { +- /* Verify that address range and section count will not +- exceed address range of device */ +- tmp1 = vrt >> 20; +- tmp1 = (tmp1 + sections) - 1; +- tmp2 = phy >> 20; +- tmp2 = (tmp2 + sections) - 1; +- if ((tmp1 < 4096) && (tmp2 < 4096)) +- { +- /* Good address range and good section count */ +- processed = TRUE; +- } +- else +- { +- term_dat_out_crlf(map2_err_msg); +- } +- } +- +- /* Generate static part of MMU word */ +- if (cache == 0) +- { +- /* Section mapped with cache disabled */ +- tmp1 = ARM922T_L1D_TYPE_SECTION; +- } +- else if (cache == 1) +- { +- /* Section mapped with cache enabled */ +- tmp1 = (ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE | +- ARM922T_L1D_TYPE_SECTION); +- } +- else if (cache == 2) +- { +- /* Section unmapped */ +- tmp1 = ARM922T_L1D_TYPE_FAULT; +- } +- tmp1 |= ARM922T_L1D_AP_ALL; +- +- /* Offset into page table for virtual address */ +- tmp2 = (vrt >> 20); +- pt = cp15_get_ttb() + tmp2; +- +- /* Loop until all sections are complete */ +- while ((sections > 0) && (processed == TRUE)) +- { +- /* Add in physical address */ +- tmp2 = tmp1 | (phy & ARM922T_L2D_SN_BASE_MASK); +- +- /* Save new section descriptor for virtual address */ +- *pt = tmp2; +- +- /* Output message shown the map */ +- term_dat_out(phya_msg); +- str_makehex(hexaddr, phy, 8); +- term_dat_out(hexaddr); +- if (cache == 2) +- { +- term_dat_out(unmapped_msg); +- } +- else +- { +- term_dat_out(mapped_msg); +- } +- str_makehex(hexaddr, vrt, 8); +- term_dat_out(hexaddr); +- if (cache == 1) +- { +- term_dat_out(cached_msg); +- } +- term_dat_out_crlf((UNS_8 *) ""); +- +- /* Next section and page table entry*/ +- phy += 0x00100000; +- vrt += 0x00100000; +- pt++; +- sections--; +- } +- +- return processed; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_mmuinfo +- * +- * Purpose: Display MMU information +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-static BOOL_32 cmd_mmuinfo(void) +-{ +- mmu_dumpinfo(); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_map +- * +- * Purpose: Map a physical address region to a virtual region +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_map(void) +-{ +- UNS_32 phy, virt, sects, ce = 0; +- +- /* Get arguments */ +- virt = cmd_get_field_val(1); +- phy = cmd_get_field_val(2); +- sects = cmd_get_field_val(3); +- ce = cmd_get_field_val(4); +- +- if (ce <= 2) +- { +- mmu_dumpmap(virt, phy, sects, ce); +- } +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_inval +- * +- * Purpose: MMU cache flush and invalidate +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_inval(void) +-{ +- dcache_flush(); +- icache_inval(); +- term_dat_out(caches_msg); +- term_dat_out(inval_msg); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_dcache +- * +- * Purpose: MMU data cache enable and disable +- * +- * Processing: +- * If the value passed in the parser is 1, enable the data cache, +- * otherwise disable the data cache. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_dcache(void) +-{ +- UNS_32 cenable; +- UNS_8 *ppar; +- +- /* Get argument */ +- cenable = cmd_get_field_val(1); +- +- switch (cenable) +- { +- case 0: +- dcache_flush(); +- cp15_set_dcache(0); +- ppar = disabled_msg; +- break; +- +- case 1: +- cp15_invalidate_cache(); +- cp15_set_dcache(1); +- ppar = enabled_msg; +- break; +- +- case 2: +- default: +- dcache_flush(); +- ppar = flushed_msg; +- break; +- } +- +- term_dat_out(dcache_msg); +- term_dat_out_crlf(ppar); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_icache +- * +- * Purpose: MMU instruction cache enable and disable +- * +- * Processing: +- * If the value passed in the parser is 1, enable the instruction +- * cache, otherwise disable the instruction cache. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_icache(void) +-{ +- UNS_32 cenable; +- UNS_8 *ppar; +- +- /* Get argument */ +- cenable = cmd_get_field_val(1); +- +- if (cenable == 1) +- { +- dcache_flush(); +- cp15_invalidate_cache(); +- cp15_set_icache(1); +- ppar = enabled_msg; +- } +- else +- { +- cp15_set_icache(0); +- ppar = disabled_msg; +- } +- +- term_dat_out(icache_msg); +- term_dat_out_crlf(ppar); +- +- return TRUE; +-} +- +- +-/*********************************************************************** +- * +- * Function: cmd_mmuenab +- * +- * Purpose: Enable or disable MMU +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_mmuenab(void) +-{ +- UNS_8 *ppar; +- UNS_32 cenable; +- +- term_dat_out_crlf((UNS_8 *) "Warning: Changing MMU status on " +- " cached and buffered code can cause system crashes."); +- +- /* Get argument */ +- cenable = cmd_get_field_val(1); +- +- if (cenable == 1) +- { +- if ((cp15_get_mmu_control_reg() & ARM922T_MMU_CONTROL_C) != 0) +- { +- cp15_invalidate_cache(); +- } +- +- cp15_set_mmu(1); +- ppar = enabled_msg; +- } +- else +- { +- cp15_dcache_flush(); +- cp15_write_buffer_flush(); +- cp15_invalidate_cache(); +- cp15_set_mmu(0); +- ppar = disabled_msg; +- } +- +- term_dat_out(mmu_msg); +- term_dat_out_crlf(ppar); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: mmu_cmd_group_init +- * +- * Purpose: Initialize MMU command group +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothin +- * +- * Notes: None +- * +- **********************************************************************/ +-void mmu_cmd_group_init(void) +-{ +- /* Add MMU group */ +- cmd_add_group(&mmu_group); +- +- /* Add commands to the MMU group */ +- cmd_add_new_command(&mmu_group, &core_dcache_cmd); +- cmd_add_new_command(&mmu_group, &core_icache_cmd); +- cmd_add_new_command(&mmu_group, &core_inval_cmd); +- cmd_add_new_command(&mmu_group, &core_mmuenab_cmd); +- cmd_add_new_command(&mmu_group, &core_map_cmd); +- cmd_add_new_command(&mmu_group, &core_mmuinfo_cmd); +-} diff --git a/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch new file mode 100644 index 00000000..cfd77bea --- /dev/null +++ b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch @@ -0,0 +1,188 @@ +Fix compilation and eabi issues + +Since we are not linking with libc anymore, we need to define our own memset, +strlen and memcpy. Also, as we are using a *libc compiler, we need to "handle" +exceptions (mostly division by 0) by defining raise() and +__aeabi_unwind_cpp_pr0. + +Signed-off-by: Alexandre Belloni +--- + csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c | 41 +++++++++++++++++++++++ + csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c | 41 +++++++++++++++++++++++ + csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c | 41 +++++++++++++++++++++++ + 3 files changed, 123 insertions(+), 0 deletions(-) + +diff --git a/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c +index 385b0ab..f1f0a0a 100644 +--- a/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c ++++ b/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + /* errno definition */ + #undef errno +@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){ + return 0; + } + ++void * memset(void * s,int c,size_t count) ++{ ++ char *xs = (char *) s; ++ ++ while (count--) ++ *xs++ = c; ++ ++ return s; ++} ++ ++ ++size_t strlen(const char * s) ++{ ++ const char *sc; ++ ++ for (sc = s; *sc != '\0'; ++sc) ++ /* nothing */; ++ return sc - s; ++} ++ ++void * memcpy(void * dest,const void *src,size_t count) ++{ ++ char *tmp = (char *) dest, *s = (char *) src; ++ ++ while (count--) ++ *tmp++ = *s++; ++ ++ return dest; ++} ++ ++ ++/* Dummy functions to avoid linker complaints */ ++void __aeabi_unwind_cpp_pr0(void) ++{ ++}; ++ ++void raise(void) ++{ ++}; ++ + #endif /*__GNUC__*/ +diff --git a/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c +index 385b0ab..f1f0a0a 100644 +--- a/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c ++++ b/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + /* errno definition */ + #undef errno +@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){ + return 0; + } + ++void * memset(void * s,int c,size_t count) ++{ ++ char *xs = (char *) s; ++ ++ while (count--) ++ *xs++ = c; ++ ++ return s; ++} ++ ++ ++size_t strlen(const char * s) ++{ ++ const char *sc; ++ ++ for (sc = s; *sc != '\0'; ++sc) ++ /* nothing */; ++ return sc - s; ++} ++ ++void * memcpy(void * dest,const void *src,size_t count) ++{ ++ char *tmp = (char *) dest, *s = (char *) src; ++ ++ while (count--) ++ *tmp++ = *s++; ++ ++ return dest; ++} ++ ++ ++/* Dummy functions to avoid linker complaints */ ++void __aeabi_unwind_cpp_pr0(void) ++{ ++}; ++ ++void raise(void) ++{ ++}; ++ + #endif /*__GNUC__*/ +diff --git a/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c +index cfdb674..6b50c60 100644 +--- a/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c ++++ b/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + /* errno definition */ + #undef errno +@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){ + return 0; + } + ++void * memset(void * s,int c,size_t count) ++{ ++ char *xs = (char *) s; ++ ++ while (count--) ++ *xs++ = c; ++ ++ return s; ++} ++ ++ ++size_t strlen(const char * s) ++{ ++ const char *sc; ++ ++ for (sc = s; *sc != '\0'; ++sc) ++ /* nothing */; ++ return sc - s; ++} ++ ++void * memcpy(void * dest,const void *src,size_t count) ++{ ++ char *tmp = (char *) dest, *s = (char *) src; ++ ++ while (count--) ++ *tmp++ = *s++; ++ ++ return dest; ++} ++ ++ ++/* Dummy functions to avoid linker complaints */ ++void __aeabi_unwind_cpp_pr0(void) ++{ ++}; ++ ++void raise(void) ++{ ++}; ++ + #endif /*__GNUC__*/ +-- +1.7.7.3 + diff --git a/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch new file mode 100644 index 00000000..94c18478 --- /dev/null +++ b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch @@ -0,0 +1,521 @@ +Use slashes instead of backslashes + +Signed-off-by: Alexandre Belloni +--- + .../bsps/common/examples/buildfiles/makefile | 10 +++--- + .../startup/examples/burners/makefile.burner | 16 +++++----- + csps/lpc32xx/bsps/ea3250/source/makefile | 10 +++--- + csps/lpc32xx/bsps/fdi3250/source/makefile | 12 ++++---- + csps/lpc32xx/bsps/phy3250/examples/makefile | 2 +- + csps/lpc32xx/bsps/phy3250/source/makefile | 2 +- + .../examples/Burners/nor/kickstart/makefile | 2 +- + .../startup/examples/Burners/nor/norerase/makefile | 2 +- + .../startup/examples/Burners/nor/s1lapp/makefile | 2 +- + .../examples/Burners/spi/kickstart/makefile | 2 +- + csps/lpc32xx/source/makefile | 10 +++--- + lpc/source/makefile | 10 +++--- + makefile | 2 +- + makerule/common/make.rules.environment | 30 ++++++++++---------- + makerule/lpc32xx/make.lpc32xx.gnu | 2 +- + makerule/lpc32xx/make.lpc32xx.iar | 12 ++++---- + makerule/lpc32xx/make.lpc32xx.keil | 6 ++-- + makerule/lpc32xx/make.lpc32xx.rvw | 2 +- + 18 files changed, 67 insertions(+), 67 deletions(-) + +diff --git a/csps/lpc32xx/bsps/common/examples/buildfiles/makefile b/csps/lpc32xx/bsps/common/examples/buildfiles/makefile +index cf4977c..1da2201 100644 +--- a/csps/lpc32xx/bsps/common/examples/buildfiles/makefile ++++ b/csps/lpc32xx/bsps/common/examples/buildfiles/makefile +@@ -25,16 +25,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -42,6 +42,6 @@ CFLAGS +=-I..\Include + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + +diff --git a/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner b/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner +index fca3947..18bd703 100644 +--- a/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner ++++ b/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner +@@ -22,9 +22,9 @@ + # + ######################################################################## + +-COMMON_BASE := $(NXPMCU_SOFTWARE)\csps\$(CSP)\bsps\common +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) +-include $(COMMON_BASE)\startup\examples\buildfiles\make.env ++COMMON_BASE := $(NXPMCU_SOFTWARE)/csps/$(CSP)/bsps/common ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) ++include $(COMMON_BASE)/startup/examples/buildfiles/make.env + + ######################################################################## + # ARM Realview +@@ -38,7 +38,7 @@ AFLAGS += --predefine "USE_ALL_STACKS SETL {TRUE}" + #AFLAGS += --predefine "RW_RELOC SETL {TRUE}" + + # This runs from IRAM +-LDSCRIPT =$(COMMON_BASE)\startup\examples\buildfiles\ldscript_iram_rvw.ld ++LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_rvw.ld + LDFLAGS = --remove + MAP = --map --info=totals,sizes,unused --symbols --list + endif +@@ -55,7 +55,7 @@ AFLAGS += --predefine "USE_ALL_STACKS SETL {TRUE}" + #AFLAGS += --predefine "RW_RELOC SETL {TRUE}" + + # This runs from IRAM +-LDSCRIPT =$(COMMON_BASE)\startup\examples\buildfiles\ldscript_iram_rvw.ld ++LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_rvw.ld + LDFLAGS = --remove + MAP = --map --info=totals,sizes,unused --symbols --list + endif +@@ -72,7 +72,7 @@ AFLAGS += --defsym USE_ALL_STACKS=1 + #AFLAGS += --defsym RW_RELOC=1 + + # This runs from IRAM +-LDSCRIPT =$(COMMON_BASE)\startup\examples\buildfiles\ldscript_iram_gnu.ld ++LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_gnu.ld + + endif + +@@ -108,7 +108,7 @@ endif + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes + + ######################################################################## + # +@@ -157,6 +157,6 @@ endif + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: debug bin +diff --git a/csps/lpc32xx/bsps/ea3250/source/makefile b/csps/lpc32xx/bsps/ea3250/source/makefile +index 7cada25..2899b20 100644 +--- a/csps/lpc32xx/bsps/ea3250/source/makefile ++++ b/csps/lpc32xx/bsps/ea3250/source/makefile +@@ -22,16 +22,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -64,7 +64,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/csps/lpc32xx/bsps/fdi3250/source/makefile b/csps/lpc32xx/bsps/fdi3250/source/makefile +index 4e153bb..11e4b63 100644 +--- a/csps/lpc32xx/bsps/fdi3250/source/makefile ++++ b/csps/lpc32xx/bsps/fdi3250/source/makefile +@@ -22,16 +22,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -53,7 +53,7 @@ lib_clean: + # delete all targets this Makefile can make and all built libraries + # linked in + lib_realclean: +- -@$(RM) $(BSP_LIB_DIR)\*.a ++ -@$(RM) $(BSP_LIB_DIR)/*.a + -@$(RMDIR) $(BSP_LIB_DIR) + + clean: lib_clean +@@ -65,7 +65,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/csps/lpc32xx/bsps/phy3250/examples/makefile b/csps/lpc32xx/bsps/phy3250/examples/makefile +index b939252..e7feaa6 100644 +--- a/csps/lpc32xx/bsps/phy3250/examples/makefile ++++ b/csps/lpc32xx/bsps/phy3250/examples/makefile +@@ -25,7 +25,7 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + SUBDIRS = adc dram_self_refresh hstimer hsuart i2c kscan lcd_colorbars + SUBDIRS += lcd_tsc mi2c mstimer pwm pwm_simple rtc sdcard sdcard_dma +diff --git a/csps/lpc32xx/bsps/phy3250/source/makefile b/csps/lpc32xx/bsps/phy3250/source/makefile +index 7c48e7d..750b776 100644 +--- a/csps/lpc32xx/bsps/phy3250/source/makefile ++++ b/csps/lpc32xx/bsps/phy3250/source/makefile +@@ -32,7 +32,7 @@ include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes + AFLAGS +=-I../Include + CFLAGS +=-I../Include + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile +index 01e2b38..526d6cc 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile +@@ -78,7 +78,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile +index ce329f5..e81b8db 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile +@@ -77,7 +77,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile +index 4426fc7..196faec 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile +@@ -77,7 +77,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile +index dc73b64..39fc304 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile +@@ -78,7 +78,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/source/makefile b/csps/lpc32xx/source/makefile +index 8e05456..16bd944 100644 +--- a/csps/lpc32xx/source/makefile ++++ b/csps/lpc32xx/source/makefile +@@ -25,16 +25,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + + ######################################################################## +@@ -68,7 +68,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/lpc/source/makefile b/lpc/source/makefile +index 2860db9..ae7d612 100644 +--- a/lpc/source/makefile ++++ b/lpc/source/makefile +@@ -25,16 +25,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -67,7 +67,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/makefile b/makefile +index 8645fcc..86fa6bc 100644 +--- a/makefile ++++ b/makefile +@@ -34,7 +34,7 @@ TARGETS_CLN =gen_clean csp_clean bsp_clean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # +diff --git a/makerule/common/make.rules.environment b/makerule/common/make.rules.environment +index d5737fe..4e6df48 100644 +--- a/makerule/common/make.rules.environment ++++ b/makerule/common/make.rules.environment +@@ -52,7 +52,7 @@ ASTYLE =astyle --options=$(BUILD_ROOT)/tools/astyle.cfg + # + ######################################################################## + +-CSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\lib ++CSP_LIB_DIR =$(BUILD_ROOT)/csps/$(CSP)/lib + + ######################################################################## + # +@@ -60,7 +60,7 @@ CSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\lib + # + ######################################################################## + +-BSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\bsps\$(BSP)\lib ++BSP_LIB_DIR =$(BUILD_ROOT)/csps/$(CSP)/bsps/$(BSP)/lib + + ######################################################################## + # +@@ -68,7 +68,7 @@ BSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\bsps\$(BSP)\lib + # + ######################################################################## + +-GEN_LIB_DIR =$(BUILD_ROOT)\$(GEN)\lib ++GEN_LIB_DIR =$(BUILD_ROOT)/$(GEN)/lib + + ######################################################################## + # +@@ -76,9 +76,9 @@ GEN_LIB_DIR =$(BUILD_ROOT)\$(GEN)\lib + # + ######################################################################## + +-CSP_DIR =$(BUILD_ROOT)\csps\$(CSP) +-CSP_SRC_DIR =$(CSP_DIR)\source +-CSP_INC_DIR =$(CSP_DIR)\include ++CSP_DIR =$(BUILD_ROOT)/csps/$(CSP) ++CSP_SRC_DIR =$(CSP_DIR)/source ++CSP_INC_DIR =$(CSP_DIR)/include + + ######################################################################## + # +@@ -86,9 +86,9 @@ CSP_INC_DIR =$(CSP_DIR)\include + # + ######################################################################## + +-BSP_DIR =$(BUILD_ROOT)\csps\$(CSP)\bsps\$(BSP) +-BSP_SRC_DIR =$(BSP_DIR)\source +-BSP_INC_DIR =$(BSP_DIR)\include ++BSP_DIR =$(BUILD_ROOT)/csps/$(CSP)/bsps/$(BSP) ++BSP_SRC_DIR =$(BSP_DIR)/source ++BSP_INC_DIR =$(BSP_DIR)/include + + ######################################################################## + # +@@ -96,9 +96,9 @@ BSP_INC_DIR =$(BSP_DIR)\include + # + ######################################################################## + +-GEN_DIR =$(BUILD_ROOT)\$(GEN) +-GEN_SRC_DIR =$(GEN_DIR)\source +-GEN_INC_DIR =$(GEN_DIR)\include ++GEN_DIR =$(BUILD_ROOT)/$(GEN) ++GEN_SRC_DIR =$(GEN_DIR)/source ++GEN_INC_DIR =$(GEN_DIR)/include + + ######################################################################## + # +@@ -151,6 +151,6 @@ endif + # + ######################################################################## + +-TARGET_CSP_LIB =$(CSP_LIB_DIR)\$(CSP_ARCHIVE) +-TARGET_BSP_LIB =$(BSP_LIB_DIR)\$(BSP_ARCHIVE) +-TARGET_GEN_LIB =$(GEN_LIB_DIR)\$(GEN_ARCHIVE) ++TARGET_CSP_LIB =$(CSP_LIB_DIR)/$(CSP_ARCHIVE) ++TARGET_BSP_LIB =$(BSP_LIB_DIR)/$(BSP_ARCHIVE) ++TARGET_GEN_LIB =$(GEN_LIB_DIR)/$(GEN_ARCHIVE) +diff --git a/makerule/lpc32xx/make.lpc32xx.gnu b/makerule/lpc32xx/make.lpc32xx.gnu +index 3277d99..d80b98d 100644 +--- a/makerule/lpc32xx/make.lpc32xx.gnu ++++ b/makerule/lpc32xx/make.lpc32xx.gnu +@@ -19,7 +19,7 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + + CPU = arm926ej-s + CFLAGS = -mcpu=arm926ej-s -Wall -Os +diff --git a/makerule/lpc32xx/make.lpc32xx.iar b/makerule/lpc32xx/make.lpc32xx.iar +index 238ebbf..27d163f 100644 +--- a/makerule/lpc32xx/make.lpc32xx.iar ++++ b/makerule/lpc32xx/make.lpc32xx.iar +@@ -19,12 +19,12 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + +-IARBASE = $(IAR_ROOT)\ARM +-IARTOOLS = $(IARBASE)\bin +-IAR_LIB = $(IARBASE)\lib +-IAR_INC = $(IARBASE)\inc ++IARBASE = $(IAR_ROOT)/ARM ++IARTOOLS = $(IARBASE)/bin ++IAR_LIB = $(IARBASE)/lib ++IAR_INC = $(IARBASE)/inc + CC = iccarm + CCP = iccarm + AS = iasmarm +@@ -36,7 +36,7 @@ CFLAGS += -I"$(IAR_INC)" + AFLAGS = --cpu 5TEJ + LDFLAGS = + LK = "$(TARGET_GEN_LIB)" "$(TARGET_CSP_LIB)" "$(TARGET_BSP_LIB)" +-;LK += "$(IAR_LIB)\dl4tpannl8f.r79" ++;LK += "$(IAR_LIB)/dl4tpannl8f.r79" + MAP = --map + LDESC = --config + ENTRY = --entry +diff --git a/makerule/lpc32xx/make.lpc32xx.keil b/makerule/lpc32xx/make.lpc32xx.keil +index dd27583..7334d3f 100644 +--- a/makerule/lpc32xx/make.lpc32xx.keil ++++ b/makerule/lpc32xx/make.lpc32xx.keil +@@ -19,7 +19,7 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + + CC =armcc + CCP =armcc +@@ -27,11 +27,11 @@ AS =armasm + LD =armlink + AR =armar -r -s + CFLAGS =--arm -O3 -g --device DARMP3 -D__MICROLIB +-CFLAGS +=-I$(KEIL_RVCT)\inc -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) ++CFLAGS +=-I$(KEIL_RVCT)/inc -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) + AFLAGS =--arm --device=DARMP3 + AFLAGS +=-I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) + LDFLAGS =--noremove +-LK =--device DARMP3 --libpath $(KEIL_RVCT)\lib --scan $(TARGET_CSP_LIB) ++LK =--device DARMP3 --libpath $(KEIL_RVCT)/lib --scan $(TARGET_CSP_LIB) + LK +=--scan $(TARGET_BSP_LIB) + LK +=--scan $(TARGET_GEN_LIB) + MAP =--map --list +diff --git a/makerule/lpc32xx/make.lpc32xx.rvw b/makerule/lpc32xx/make.lpc32xx.rvw +index 59961dd..2419976 100644 +--- a/makerule/lpc32xx/make.lpc32xx.rvw ++++ b/makerule/lpc32xx/make.lpc32xx.rvw +@@ -19,7 +19,7 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + + CC =armcc + CCP =armcpp +-- +1.7.7.3 + diff --git a/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk new file mode 100644 index 00000000..30afed05 --- /dev/null +++ b/features/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# lpc32xxcdl +# +################################################################################ + +LPC32XXCDL_VERSION = lpc32xx_cdl_v2.11 +LPC32XXCDL_SITE = http://git.lpcware.com/lpc3xxx_cdl.git +LPC32XXCDL_SITE_METHOD = git + +LPC32XXCDL_INSTALL_TARGET = NO +LPC32XXCDL_INSTALL_IMAGES = YES + +ifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),"ea3250") +LPC32XXCDL_KICKSTART = kickstart/nand +LPC32XXCDL_KICKSTART_BURNER = nand/kickstart +LPC32XXCDL_S1L = s1l +LPC32XXCDL_S1L_BURNER = nand/s1lapp +endif + +ifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),"phy3250") +LPC32XXCDL_KICKSTART = kickstart/kickstart_nand +LPC32XXCDL_KICKSTART_BURNER = nand/kickstart +LPC32XXCDL_S1L = s1l/s1l_nand_boot +LPC32XXCDL_S1L_BURNER = nand/s1lapp +endif + +ifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),"fdi3250") +LPC32XXCDL_KICKSTART = kickstart/nand +LPC32XXCDL_KICKSTART_BURNER = nand/kickstart_jtag +LPC32XXCDL_S1L = s1l +LPC32XXCDL_S1L_BURNER = nand/s1lapp_jtag +endif + +LPC32XXCDL_BUILD_FLAGS = \ + CROSS_COMPILE=$(TARGET_CROSS) \ + NXPMCU_WINBASE=$(@D) \ + NXPMCU_SOFTWARE=$(@D) \ + BSP=$(BR2_TARGET_LPC32XXCDL_BOARDNAME) \ + CSP=lpc32xx TOOL=gnu GEN=lpc + +LPC32XXCDL_BOARD_STARTUP_DIR = \ + csps/lpc32xx/bsps/$(BR2_TARGET_LPC32XXCDL_BOARDNAME)/startup/examples/ + +# Source files are with dos newlines, which our patch infrastructure doesn't +# handle. Work around it by converting the affected files to unix newlines +# before patching +define LPC32XXCDL_DOS2UNIX_FOR_PATCH + sed -n 's|^[+-]\{3\} [^/]\+\([^ \t]*\)\(.*\)|$(@D)\1|p' \ + boot/lpc32xxcdl/*.patch| sort -u | xargs $(SED) 's/\x0D$$//' +endef + +LPC32XXCDL_POST_EXTRACT_HOOKS += LPC32XXCDL_DOS2UNIX_FOR_PATCH + +define LPC32XXCDL_BUILD_CMDS + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_KICKSTART_BURNER) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_KICKSTART) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_S1L_BURNER) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_S1L) +endef + +define LPC32XXCDL_INSTALL_IMAGES_CMDS + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_KICKSTART_BURNER)/*gnu.bin $(BINARIES_DIR) + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_KICKSTART)/*gnu.bin $(BINARIES_DIR) + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_S1L_BURNER)/*gnu.bin $(BINARIES_DIR) + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_S1L)/*gnu.bin $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/mv-ddr-marvell/0001-mv_ddr-mv_ddr4_training_leveling.c-uninitialized-var.patch b/features/buildroot/boot/mv-ddr-marvell/0001-mv_ddr-mv_ddr4_training_leveling.c-uninitialized-var.patch new file mode 100644 index 00000000..eada18b4 --- /dev/null +++ b/features/buildroot/boot/mv-ddr-marvell/0001-mv_ddr-mv_ddr4_training_leveling.c-uninitialized-var.patch @@ -0,0 +1,31 @@ +From 5867fcad6e88af3d843bfa831648d84a53732d57 Mon Sep 17 00:00:00 2001 +From: Heinrich Schuchardt +Date: Wed, 19 Dec 2018 17:17:13 +0100 +Subject: [PATCH] mv_ddr: mv_ddr4_training_leveling.c: uninitialized variable + +With GCC 8.2 uninitialized variables lead to a build error. + +Signed-off-by: Heinrich Schuchardt +Signed-off-by: Baruch Siach +--- +Upstream status: commit 5867fcad6e8 + + mv_ddr4_training_leveling.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mv_ddr4_training_leveling.c b/mv_ddr4_training_leveling.c +index 144e21a03c01..cb95389f5466 100644 +--- a/mv_ddr4_training_leveling.c ++++ b/mv_ddr4_training_leveling.c +@@ -368,7 +368,7 @@ static int mv_ddr4_dynamic_pb_wl_supp(u32 dev_num, enum mv_wl_supp_mode ecc_mode + u32 subphy_num = ddr3_tip_dev_attr_get(dev_num, MV_ATTR_OCTET_PER_INTERFACE); + u8 compare_result = 0; + u32 orig_phase; +- u32 rd_data, wr_data; ++ u32 rd_data, wr_data = 0; + u32 flag, step; + struct mv_ddr_topology_map *tm = mv_ddr_topology_map_get(); + u32 ecc_phy_access_id; +-- +2.20.1 + diff --git a/features/buildroot/boot/mv-ddr-marvell/Config.in b/features/buildroot/boot/mv-ddr-marvell/Config.in new file mode 100644 index 00000000..4ee8c95b --- /dev/null +++ b/features/buildroot/boot/mv-ddr-marvell/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_MV_DDR_MARVELL + bool "mv-ddr-marvell" + depends on BR2_aarch64 + help + Marvell keeps algorithms for DDR training in a separate + repository. This code is not built separately, it is needed + as a dependency to build ATF firmware for Marvell Armada 7040 + and 8040 SoCs. + + https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/ diff --git a/features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash b/features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash new file mode 100644 index 00000000..90fab71d --- /dev/null +++ b/features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9aaea1f5e8bf3c9d7e735f569d130b5c2ec773c43e0cfabc9b8dee32adbf7e4e mv-ddr-marvell-99d772547314f84921268d57e53d8769197d3e21.tar.gz diff --git a/features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk b/features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk new file mode 100644 index 00000000..8d508215 --- /dev/null +++ b/features/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# mv-ddr-marvell +# +################################################################################ + +# This is the commit for mv_ddr-armada-18.09.2 +MV_DDR_MARVELL_VERSION = 99d772547314f84921268d57e53d8769197d3e21 +MV_DDR_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,mv-ddr-marvell,$(MV_DDR_MARVELL_VERSION)) +MV_DDR_MARVELL_LICENSE = GPL-2.0+ or LGPL-2.1 with freertos-exception-2.0, BSD-3-Clause, Marvell Commercial +MV_DDR_MARVELL_LICENSE_FILES = ddr3_init.c + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/mxs-bootlets/Config.in b/features/buildroot/boot/mxs-bootlets/Config.in new file mode 100644 index 00000000..b3e392af --- /dev/null +++ b/features/buildroot/boot/mxs-bootlets/Config.in @@ -0,0 +1,90 @@ +config BR2_TARGET_MXS_BOOTLETS + bool "mxs-bootlets" + depends on BR2_arm + help + Stage1 bootloaders for Freescale iMX23/iMX28 SoCs + +if BR2_TARGET_MXS_BOOTLETS + +choice + prompt "Source" + default BR2_TARGET_MXS_BOOTLETS_FREESCALE + help + Select the location of the bootlets you want to use + +config BR2_TARGET_MXS_BOOTLETS_FREESCALE + bool "Freescale 10.12.01 version" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL + string "URL of custom bootlets tarball" + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL + +if BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL + string "URL of custom Git repository" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION + string "Custom Git version" + +endif + +choice + prompt "Bootstream" + help + Select which bootstream to generate + +config BR2_TARGET_MXS_BOOTLETS_BAREBOX + bool "Barebox Bootloader" + depends on BR2_TARGET_BAREBOX + +config BR2_TARGET_MXS_BOOTLETS_LINUX + bool "Linux Kernel" + depends on BR2_LINUX_KERNEL + +config BR2_TARGET_MXS_BOOTLETS_UBOOT + bool "U-boot bootloader" + depends on BR2_TARGET_UBOOT + +endchoice + +config BR2_TARGET_MXS_BOOTLETS_HAS_IVT + bool "HAB Support" + help + Enable this option if you are building bootlets + for the iMX28 platform that needs to include instructions + for the secure boot mechanism present on these SoCs + +choice + prompt "Board" + help + Select the board to build the bootlets for + +config BR2_TARGET_MXS_BOOTLETS_STMP37xx + bool "Sigmatel ST-MP3-7xx Board" + +config BR2_TARGET_MXS_BOOTLETS_STMP378x + bool "Sigmatel ST-MP3-78x Board" + +config BR2_TARGET_MXS_BOOTLETS_IMX28EVK + bool "Freescale iMX28 EVK Board" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD + bool "Custom board" +endchoice + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME + string "Custom board name" + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD + help + Name of the board to build the bootlets for + +endif diff --git a/features/buildroot/boot/mxs-bootlets/barebox_ivt.bd b/features/buildroot/boot/mxs-bootlets/barebox_ivt.bd new file mode 100644 index 00000000..0c67e9cf --- /dev/null +++ b/features/buildroot/boot/mxs-bootlets/barebox_ivt.bd @@ -0,0 +1,34 @@ +// STMP378x ROM command script to load and run U-Boot + +sources { + power_prep="./power_prep/power_prep"; + sdram_prep="./boot_prep/boot_prep"; + barebox="./barebox"; +} + +section (0) { + + //---------------------------------------------------------- + // Power Supply initialization + //---------------------------------------------------------- + + load power_prep; + load ivt (entry = power_prep:_start) > 0x8000; + hab call 0x8000; + + //---------------------------------------------------------- + // SDRAM initialization + //---------------------------------------------------------- + + load sdram_prep; + load ivt (entry = sdram_prep:_start) > 0x8000; + hab call 0x8000; + //---------------------------------------------------------- + // Load and call u_boot - ELF ARM image + //---------------------------------------------------------- + + load barebox; + load ivt (entry = barebox:start) > 0x8000; + hab call 0x8000; + +} diff --git a/features/buildroot/boot/mxs-bootlets/mxs-bootlets.hash b/features/buildroot/boot/mxs-bootlets/mxs-bootlets.hash new file mode 100644 index 00000000..6d3483c7 --- /dev/null +++ b/features/buildroot/boot/mxs-bootlets/mxs-bootlets.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 63f6068ae36884adef4259bbb1fe2591755718f22c46d0a59d854883dfab1ffc imx-bootlets-src-10.12.01.tar.gz diff --git a/features/buildroot/boot/mxs-bootlets/mxs-bootlets.mk b/features/buildroot/boot/mxs-bootlets/mxs-bootlets.mk new file mode 100644 index 00000000..adc22767 --- /dev/null +++ b/features/buildroot/boot/mxs-bootlets/mxs-bootlets.mk @@ -0,0 +1,106 @@ +################################################################################ +# +# mxs-bootlets +# +################################################################################ + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL),y) +MXS_BOOTLETS_TARBALL = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL)) +MXS_BOOTLETS_SITE = $(patsubst %/,%,$(dir $(MXS_BOOTLETS_TARBALL))) +MXS_BOOTLETS_SOURCE = $(notdir $(MXS_BOOTLETS_TARBALL)) +BR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE) +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT),y) +MXS_BOOTLETS_SITE = $(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL) +MXS_BOOTLETS_SITE_METHOD = git +MXS_BOOTLETS_VERSION = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION)) +BR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE) +else +MXS_BOOTLETS_VERSION = 10.12.01 +MXS_BOOTLETS_SITE = http://download.ossystems.com.br/bsp/freescale/source +MXS_BOOTLETS_SOURCE = imx-bootlets-src-$(MXS_BOOTLETS_VERSION).tar.gz +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP37xx),y) +MXS_BOOTLETS_BOARD = stmp37xx_dev +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP378x),y) +MXS_BOOTLETS_BOARD = stmp378x_dev +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_IMX28EVK),y) +MXS_BOOTLETS_BOARD = iMX28_EVK +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD),y) +MXS_BOOTLETS_BOARD = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME)) +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_HAS_IVT),y) +MXS_BOOTLETS_IVT_SUFFIX = _ivt +MXS_BOOTLETS_ELFTOSB_OPTIONS += -f imx28 +endif + +MXS_BOOTLETS_DEPENDENCIES = host-elftosb +MXS_BOOTLETS_LICENSE = GPL-2.0+ + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y) +MXS_BOOTLETS_DEPENDENCIES += barebox +MXS_BOOTLETS_BOOTDESC = barebox$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_barebox$(MXS_BOOTLETS_IVT_SUFFIX).sb + +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y) +MXS_BOOTLETS_DEPENDENCIES += linux +MXS_BOOTLETS_BOOTDESC = linux$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_linux$(MXS_BOOTLETS_IVT_SUFFIX).sb + +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y) +MXS_BOOTLETS_DEPENDENCIES += uboot +MXS_BOOTLETS_BOOTDESC = uboot$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_uboot$(MXS_BOOTLETS_IVT_SUFFIX).sb +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y) +define MXS_BOOTLETS_SED_BAREBOX + sed -i 's,[^ *]barebox.*;,\tbarebox="$(BAREBOX_DIR)/barebox";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y) +define MXS_BOOTLETS_BUILD_LINUX_PREP + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) linux_prep +endef +define MXS_BOOTLETS_SED_LINUX + sed -i 's,[^ *]linux_prep.*;,\tlinux_prep="$(@D)/linux_prep/output-target/linux_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + sed -i 's,[^ *]zImage.*;,\tzImage="$(LINUX_DIR)/arch/arm/boot/zImage";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y) +define MXS_BOOTLETS_SED_UBOOT + sed -i 's,[^ *]u_boot.*;,\tu_boot="$(UBOOT_DIR)/u-boot";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +define MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC + cp boot/mxs-bootlets/barebox_ivt.bd $(@D)/ +endef + +MXS_BOOTLETS_POST_EXTRACT_HOOKS += MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC + +define MXS_BOOTLETS_BUILD_CMDS + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) power_prep + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) boot_prep + $(MXS_BOOTLETS_BUILD_LINUX_PREP) + sed -i 's,[^ *]power_prep.*;,\tpower_prep="$(@D)/power_prep/power_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + sed -i 's,[^ *]sdram_prep.*;,\tsdram_prep="$(@D)/boot_prep/boot_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + $(MXS_BOOTLETS_SED_BAREBOX) + $(MXS_BOOTLETS_SED_LINUX) + $(MXS_BOOTLETS_SED_UBOOT) + $(HOST_DIR)/bin/elftosb $(MXS_BOOTLETS_ELFTOSB_OPTIONS) \ + -z -c $(@D)/$(MXS_BOOTLETS_BOOTDESC) \ + -o $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) +endef + +define MXS_BOOTLETS_INSTALL_TARGET_CMDS + cp $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) $(BINARIES_DIR)/ +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/opensbi/Config.in b/features/buildroot/boot/opensbi/Config.in new file mode 100644 index 00000000..5f3cc133 --- /dev/null +++ b/features/buildroot/boot/opensbi/Config.in @@ -0,0 +1,25 @@ +config BR2_TARGET_OPENSBI + bool "opensbi" + depends on BR2_riscv + help + OpenSBI aims to provide an open-source and extensible + implementation of the RISC-V SBI specification for a platform + specific firmware (M-mode) and a general purpose OS, + hypervisor or bootloader (S-mode or HS-mode). OpenSBI + implementation can be easily extended by RISC-V platform or + System-on-Chip vendors to fit a particular hadware + configuration. + + https://github.com/riscv/opensbi.git + +if BR2_TARGET_OPENSBI +config BR2_TARGET_OPENSBI_PLAT + string "OpenSBI Platform" + default "" + help + Specifies the OpenSBI platform to build. If no platform is + specified only the OpenSBI platform independent static + library libsbi.a is built. If a platform is specified then + the platform specific static library libplatsbi.a and firmware + examples are built. +endif diff --git a/features/buildroot/boot/opensbi/opensbi.hash b/features/buildroot/boot/opensbi/opensbi.hash new file mode 100644 index 00000000..21f802bc --- /dev/null +++ b/features/buildroot/boot/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d3060bf51af00204ce90fc73106955c694463b59a5b81be64cf780cd32743abf opensbi-0.4.tar.gz diff --git a/features/buildroot/boot/opensbi/opensbi.mk b/features/buildroot/boot/opensbi/opensbi.mk new file mode 100644 index 00000000..83552a54 --- /dev/null +++ b/features/buildroot/boot/opensbi/opensbi.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# opensbi +# +################################################################################ + +OPENSBI_VERSION = 0.4 +OPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION)) +OPENSBI_LICENSE = BSD-2-Clause +OPENSBI_LICENSE_FILES = COPYING.BSD +OPENSBI_INSTALL_TARGET = NO +OPENSBI_INSTALL_STAGING = YES + +OPENSBI_MAKE_ENV = \ + CROSS_COMPILE=$(TARGET_CROSS) + +OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT)) +ifneq ($(OPENSBI_PLAT),) +OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT) +endif + +define OPENSBI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D) +endef + +ifneq ($(OPENSBI_PLAT),) +OPENSBI_INSTALL_IMAGES = YES +define OPENSBI_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.bin $(BINARIES_DIR)/fw_jump.bin + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.elf $(BINARIES_DIR)/fw_jump.elf + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_dynamic.bin $(BINARIES_DIR)/fw_dynamic.bin + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_dynamic.elf $(BINARIES_DIR)/fw_dynamic.elf +endef +endif + +# libsbi.a is not a library meant to be linked in user-space code, but +# with bare metal code, which is why we don't install it in +# $(STAGING_DIR)/usr/lib +define OPENSBI_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/optee-os/Config.in b/features/buildroot/boot/optee-os/Config.in new file mode 100644 index 00000000..bd685b58 --- /dev/null +++ b/features/buildroot/boot/optee-os/Config.in @@ -0,0 +1,102 @@ +config BR2_TARGET_OPTEE_OS + bool "optee_os" + depends on BR2_ARM_CPU_ARMV8A || BR2_ARM_CPU_ARMV7A + help + OP-TEE OS provides the secure world boot image and the trust + application development kit of the OP-TEE project. OP-TEE OS + also provides generic trusted application one can embedded + into its system. + + http://github.com/OP-TEE/optee_os + +if BR2_TARGET_OPTEE_OS + +choice + prompt "OP-TEE OS version" + default BR2_TARGET_OPTEE_OS_LATEST + help + Select the version of OP-TEE OS you want to use + +config BR2_TARGET_OPTEE_OS_LATEST + bool "3.5.0" + help + Use the latest release tag from the OP-TEE OS official Git + repository. + +config BR2_TARGET_OPTEE_OS_CUSTOM_GIT + bool "Custom Git repository" + help + Use a custom version fetched from a Git repository. + +endchoice + +if BR2_TARGET_OPTEE_OS_CUSTOM_GIT + +config BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL + string "URL of custom repository" + depends on BR2_TARGET_OPTEE_OS_CUSTOM_GIT + help + Specific location of the reference source tree Git + repository. + +config BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION + string "Custom repository version" + depends on BR2_TARGET_OPTEE_OS_CUSTOM_GIT + help + Revision to use in the typical format used by Git, i.e a + SHA1 or a tag. + +endif + +config BR2_TARGET_OPTEE_OS_VERSION + string + default "3.5.0" if BR2_TARGET_OPTEE_OS_LATEST + default BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \ + if BR2_TARGET_OPTEE_OS_CUSTOM_GIT + +config BR2_TARGET_OPTEE_OS_CORE + bool "Build core" + default y + help + This option will build and install the OP-TEE core + boot images. + +config BR2_TARGET_OPTEE_OS_SDK + bool "Build TA devkit" + default y + help + This option will build and install the OP-TEE development + kit for building OP-TEE trusted application images. It is + installed in the staging directory /lib/optee. + +config BR2_TARGET_OPTEE_OS_SERVICES + bool "Build service TAs and libs" + default y + select BR2_TARGET_OPTEE_OS_CORE + help + This option installs the service trusted applications and + trusted shared libraries built from OP-TEE OS source tree. + These are installed in target /lib/optee_armtz directory + as other trusted applications. At runtime OP-TEE OS can + load these from this non-secure filesystem/directory into + the secure world for execution. + +config BR2_TARGET_OPTEE_OS_PLATFORM + string "Target platform (mandatory)" + help + Value for the mandated PLATFORM build directive provided to + OP-TEE OS. + +config BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR + string "Target platform flavor (optional)" + help + Value for the optional PLATFORM_FLAVOR build directive + provided to OP-TEE OS. + +config BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES + string "Additional build variables" + help + Additional parameters for the OP-TEE OS build + E.g. 'CFG_TEE_CORE_LOG_LEVEL=3 CFG_UNWIND=y' + +endif # BR2_TARGET_OPTEE_OS diff --git a/features/buildroot/boot/optee-os/optee-os.hash b/features/buildroot/boot/optee-os/optee-os.hash new file mode 100644 index 00000000..1c8f5d6b --- /dev/null +++ b/features/buildroot/boot/optee-os/optee-os.hash @@ -0,0 +1,4 @@ +# From https://github.com/OP-TEE/optee_os/archive/3.5.0.tar.gz +sha256 a02fe8e7fdee9653e9207059071735a839b1255fdaf311a2a6cfd185a4cee6a2 optee-os-3.5.0.tar.gz +# Locally computed +sha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a LICENSE diff --git a/features/buildroot/boot/optee-os/optee-os.mk b/features/buildroot/boot/optee-os/optee-os.mk new file mode 100644 index 00000000..bd415512 --- /dev/null +++ b/features/buildroot/boot/optee-os/optee-os.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# optee-os +# +################################################################################ + +OPTEE_OS_VERSION = $(call qstrip,$(BR2_TARGET_OPTEE_OS_VERSION)) +OPTEE_OS_LICENSE = BSD-2-Clause +OPTEE_OS_LICENSE_FILES = LICENSE + +OPTEE_OS_INSTALL_STAGING = YES +OPTEE_OS_INSTALL_IMAGES = YES + +ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y) +OPTEE_OS_SITE = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL)) +OPTEE_OS_SITE_METHOD = git +BR_NO_CHECK_HASH_FOR += $(OPTEE_OS_SOURCE) +else +OPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION)) +endif + +OPTEE_OS_DEPENDENCIES = host-openssl host-python-pycrypto + +# On 64bit targets, OP-TEE OS can be built in 32bit mode, or +# can be built in 64bit mode and support 32bit and 64bit +# trusted applications. Since buildroot currently references +# a single cross compiler, build exclusively in 32bit +# or 64bit mode. +OPTEE_OS_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CROSS_COMPILE_core="$(TARGET_CROSS)" \ + CROSS_COMPILE_ta_arm64="$(TARGET_CROSS)" \ + CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" + +ifeq ($(BR2_aarch64),y) +OPTEE_OS_MAKE_OPTS += \ + CFG_ARM64_core=y \ + CFG_USER_TA_TARGETS=ta_arm64 +else +OPTEE_OS_MAKE_OPTS += \ + CFG_ARM32_core=y +endif + +# Get mandatory PLAFORM and optional PLATFORM_FLAVOR and additional +# variables +OPTEE_OS_MAKE_OPTS += PLATFORM=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)) +ifneq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)),) +OPTEE_OS_MAKE_OPTS += PLATFORM_FLAVOR=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)) +endif +OPTEE_OS_MAKE_OPTS += $(call qstrip,$(BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES)) + +# Requests OP-TEE OS to build from subdirectory out/ of its sourcetree +# root path otherwise the output directory path depends on the target +# platform name. +OPTEE_OS_BUILDDIR_OUT = out +ifeq ($(BR2_aarch64),y) +OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm64 +OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm64 +endif +ifeq ($(BR2_arm),y) +OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm32 +OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm32 +endif + +ifeq ($(BR2_TARGET_OPTEE_OS_CORE),y) +define OPTEE_OS_BUILD_CORE + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \ + $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) all +endef +define OPTEE_OS_INSTALL_IMAGES_CORE + mkdir -p $(BINARIES_DIR) + cp -dpf $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/core/tee.bin $(BINARIES_DIR) + cp -dpf $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/core/tee-*_v2.bin $(BINARIES_DIR) +endef +endif # BR2_TARGET_OPTEE_OS_CORE + +ifeq ($(BR2_TARGET_OPTEE_OS_SERVICES),y) +define OPTEE_OS_INSTALL_TARGET_CMDS + $(if $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta), + $(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \ + $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta) + $(if $(wildcard $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta), + $(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \ + $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta) +endef +endif # BR2_TARGET_OPTEE_OS_SERVICES + +ifeq ($(BR2_TARGET_OPTEE_OS_SDK),y) +define OPTEE_OS_BUILD_SDK + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \ + $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) ta_dev_kit +endef +define OPTEE_OS_INSTALL_STAGING_CMDS + mkdir -p $(OPTEE_OS_SDK) + cp -ardpf $(@D)/$(OPTEE_OS_LOCAL_SDK)/* $(OPTEE_OS_SDK) +endef +endif # BR2_TARGET_OPTEE_OS_SDK + +define OPTEE_OS_BUILD_CMDS + $(OPTEE_OS_BUILD_CORE) + $(OPTEE_OS_BUILD_SDK) +endef + +define OPTEE_OS_INSTALL_IMAGES_CMDS + $(OPTEE_OS_INSTALL_IMAGES_CORE) + $(OPTEE_OS_INSTALL_IMAGES_SERVICES) +endef + +ifeq ($(BR2_TARGET_OPTEE_OS)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)),) +$(error No OP-TEE OS platform set. Check your BR2_TARGET_OPTEE_OS_PLATFORM setting) +endif +endif # BR2_TARGET_OPTEE_OS && BR2_BUILDING + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/riscv-pk/Config.in b/features/buildroot/boot/riscv-pk/Config.in new file mode 100644 index 00000000..cf9c5cd8 --- /dev/null +++ b/features/buildroot/boot/riscv-pk/Config.in @@ -0,0 +1,17 @@ +comment "riscv-pk needs a Linux kernel to be built" + depends on BR2_riscv + depends on !BR2_LINUX_KERNEL + +config BR2_TARGET_RISCV_PK + bool "riscv-pk (deprecated)" + depends on BR2_riscv + depends on BR2_LINUX_KERNEL + help + The RISC-V Proxy Kernel (pk) and Boot Loader (BBL) have + been deprecated. Please use OpenSBI instead. + + The RISC-V Proxy Kernel (pk) package contains the Berkeley + Boot Loader (BBL) which has been designed to boot a Linux + kernel on a RISC-V processor. + + https://github.com/riscv/riscv-pk.git diff --git a/features/buildroot/boot/riscv-pk/riscv-pk.mk b/features/buildroot/boot/riscv-pk/riscv-pk.mk new file mode 100644 index 00000000..0ab5879e --- /dev/null +++ b/features/buildroot/boot/riscv-pk/riscv-pk.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# riscv-pk +# +################################################################################ + +RISCV_PK_VERSION = 706cc77c369fd3e4734b5a6aa813d421347f1814 +RISCV_PK_SITE = git://github.com/riscv/riscv-pk.git +RISCV_PK_LICENSE = BSD-3-Clause +RISCV_PK_LICENSE_FILES = LICENSE +RISCV_PK_DEPENDENCIES = linux +RISCV_PK_SUBDIR = build +RISCV_PK_INSTALL_IMAGES = YES + +define RISCV_PK_CONFIGURE_CMDS + mkdir -p $(@D)/build + (cd $(@D)/build; \ + $(TARGET_CONFIGURE_OPTS) ../configure \ + --host=$(GNU_TARGET_NAME) \ + --with-payload=$(BINARIES_DIR)/vmlinux \ + ) +endef + +define RISCV_PK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/build bbl +endef + +define RISCV_PK_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0755 $(@D)/build/bbl $(BINARIES_DIR)/bbl +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/s500-bootloader/Config.in b/features/buildroot/boot/s500-bootloader/Config.in new file mode 100644 index 00000000..7bb689f3 --- /dev/null +++ b/features/buildroot/boot/s500-bootloader/Config.in @@ -0,0 +1,17 @@ +config BR2_TARGET_S500_BOOTLOADER + bool "s500-bootloader" + depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS + help + 1st level bootloader for Actions Semiconductor S500 SoC. + + https://github.com/xapp-le/owl + +config BR2_TARGET_S500_BOOTLOADER_BOARD + string "board to configure for" + depends on BR2_TARGET_S500_BOOTLOADER + help + Specify the board to configure the bootloader for. + This should be the name of a directory under s500/boards + containing a suitable bootloader.ini file. diff --git a/features/buildroot/boot/s500-bootloader/s500-bootloader.hash b/features/buildroot/boot/s500-bootloader/s500-bootloader.hash new file mode 100644 index 00000000..d538f23b --- /dev/null +++ b/features/buildroot/boot/s500-bootloader/s500-bootloader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b183024ac69f51ea7befd28d03b2ec35a7280e270405600fb4f37aa91d9c9571 s500-bootloader-a8d7fa1d9a7f353ec4613febf30f4ca99a10a106.tar.gz diff --git a/features/buildroot/boot/s500-bootloader/s500-bootloader.mk b/features/buildroot/boot/s500-bootloader/s500-bootloader.mk new file mode 100644 index 00000000..bc87b091 --- /dev/null +++ b/features/buildroot/boot/s500-bootloader/s500-bootloader.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s500-bootloader +# +################################################################################ + +S500_BOOTLOADER_VERSION = a8d7fa1d9a7f353ec4613febf30f4ca99a10a106 +S500_BOOTLOADER_SITE = $(call github,xapp-le,owl,$(S500_BOOTLOADER_VERSION)) +S500_BOOTLOADER_LICENSE = PROPRIETARY +S500_BOOTLOADER_INSTALL_TARGET = NO +S500_BOOTLOADER_INSTALL_IMAGES = YES + +S500_BOOTLOADER_BOARD = $(call qstrip,$(BR2_TARGET_S500_BOOTLOADER_BOARD)) + +define S500_BOOTLOADER_BUILD_CMDS + cd $(@D) && ./tools/utils/bootloader_pack \ + s500/bootloader/bootloader.bin \ + s500/boards/$(S500_BOOTLOADER_BOARD)/bootloader.ini \ + s500-bootloader.bin +endef + +define S500_BOOTLOADER_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/s500-bootloader.bin \ + $(BINARIES_DIR)/s500-bootloader.bin +endef + +$(eval $(generic-package)) + +ifeq ($(BR2_TARGET_S500_BOOTLOADER)$(BR_BUILDING),yy) +# we NEED a board name +ifeq ($(S500_BOOTLOADER_BOARD),) +$(error No s500-bootloader board specified. Check your BR2_TARGET_S500_BOOTLOADER settings) +endif +endif diff --git a/features/buildroot/boot/shim/Config.in b/features/buildroot/boot/shim/Config.in new file mode 100644 index 00000000..ea6650f5 --- /dev/null +++ b/features/buildroot/boot/shim/Config.in @@ -0,0 +1,19 @@ +config BR2_TARGET_SHIM + bool "shim" + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + # ARM32 build currently broken + depends on !BR2_ARM_CPU_HAS_ARM + select BR2_PACKAGE_GNU_EFI + help + Boot loader to chain-load signed boot loaders under Secure + Boot. + + This package provides a minimalist boot loader which allows + verifying signatures of other UEFI binaries against either + the Secure Boot DB/DBX or against a built-in signature + database. Its purpose is to allow a small, + infrequently-changing binary to be signed by the UEFI CA, + while allowing an OS distributor to revision their main + bootloader independently of the CA. + + https://github.com/rhboot/shim diff --git a/features/buildroot/boot/shim/shim.hash b/features/buildroot/boot/shim/shim.hash new file mode 100644 index 00000000..318390f8 --- /dev/null +++ b/features/buildroot/boot/shim/shim.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 279d19cc95b9974ea2379401a6a0653d949c3fa3d61f0c4bd6a7b9e840bdc425 shim-15.tar.gz +sha256 15edf527919ddcb2f514ab9d16ad07ef219e4bb490e0b79560be510f0c159cc2 COPYRIGHT diff --git a/features/buildroot/boot/shim/shim.mk b/features/buildroot/boot/shim/shim.mk new file mode 100644 index 00000000..ba5bc519 --- /dev/null +++ b/features/buildroot/boot/shim/shim.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# shim +# +################################################################################ + +SHIM_VERSION = 15 +SHIM_SITE = $(call github,rhboot,shim,$(SHIM_VERSION)) +SHIM_LICENSE = BSD-2-Clause +SHIM_LICENSE_FILES = COPYRIGHT +SHIM_DEPENDENCIES = gnu-efi +SHIM_INSTALL_TARGET = NO +SHIM_INSTALL_IMAGES = YES + +SHIM_MAKE_OPTS = \ + ARCH="$(GNU_EFI_PLATFORM)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DASHJ="-j$(PARALLEL_JOBS)" \ + EFI_INCLUDE="$(STAGING_DIR)/usr/include/efi" \ + EFI_PATH="$(STAGING_DIR)/usr/lib" \ + LIBDIR="$(STAGING_DIR)/usr/lib" + +define SHIM_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(SHIM_MAKE_OPTS) +endef + +define SHIM_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0755 -t $(BINARIES_DIR) $(@D)/*.efi +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch b/features/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch new file mode 100644 index 00000000..633d996e --- /dev/null +++ b/features/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch @@ -0,0 +1,82 @@ +From da5cbd1a3b248f2d32281a1766a3d1414c0e8e03 Mon Sep 17 00:00:00 2001 +From: Sylvain Gault +Date: Tue, 29 Sep 2015 02:38:25 +0200 +Subject: [PATCH] bios: Fix alignment change with gcc 5 + +The section aligment specified in the ld scripts have to be greater or +equal to those in the .o files generated by gcc. + +Signed-off-by: Sylvain Gault +Tested-by: poma +Signed-off-by: Paulo Alcantara +Signed-off-by: Frank Hunleth +--- + core/i386/syslinux.ld | 6 +++--- + core/x86_64/syslinux.ld | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 7b4e012..7390451 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -266,7 +266,7 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __rodata_vma = .; + __rodata_lma = __rodata_vma + __text_lma - __text_vma; +@@ -361,7 +361,7 @@ SECTIONS + __dynamic_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __data_vma = .; + __data_lma = __data_vma + __text_lma - __text_vma; +@@ -377,7 +377,7 @@ SECTIONS + __pm_code_dwords = (__pm_code_len + 3) >> 2; + + . = ALIGN(128); +- ++ + __bss_vma = .; + __bss_lma = .; /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld +index 1057112..bf815c4 100644 +--- a/core/x86_64/syslinux.ld ++++ b/core/x86_64/syslinux.ld +@@ -266,7 +266,7 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __rodata_vma = .; + __rodata_lma = __rodata_vma + __text_lma - __text_vma; +@@ -361,7 +361,7 @@ SECTIONS + __dynamic_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __data_vma = .; + __data_lma = __data_vma + __text_lma - __text_vma; +@@ -377,7 +377,7 @@ SECTIONS + __pm_code_dwords = (__pm_code_len + 3) >> 2; + + . = ALIGN(128); +- ++ + __bss_vma = .; + __bss_lma = .; /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +-- +2.7.4 + diff --git a/features/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch b/features/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch new file mode 100644 index 00000000..64a08b85 --- /dev/null +++ b/features/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch @@ -0,0 +1,30 @@ +From 250bf2c921713434627dc7bc8b0918fa0841f9b7 Mon Sep 17 00:00:00 2001 +From: Graham Inggs +Date: Wed, 5 Apr 2017 22:03:12 +0200 +Subject: [PATCH] Disable PIE to avoid FTBFS on amd64 + +gcc 6.x has PIE support enabled by default, which causes a build issue +with syslinux. This patch disables PIE support in the relevant +syslinux Makefile. + +Signed-off-by: Ryan Coe +--- + gpxe/src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gpxe/src/Makefile b/gpxe/src/Makefile +index cc91d78..077af64 100644 +--- a/gpxe/src/Makefile ++++ b/gpxe/src/Makefile +@@ -4,7 +4,7 @@ + # + + CLEANUP := +-CFLAGS := ++CFLAGS := -fno-PIE + ASFLAGS := + LDFLAGS := + MAKEDEPS := Makefile +-- +2.7.4 + diff --git a/features/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch b/features/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch new file mode 100644 index 00000000..4eedf497 --- /dev/null +++ b/features/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch @@ -0,0 +1,32 @@ +From c0287594239d5af2082cac20817f8e8b11a4b1b2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Wed, 5 Apr 2017 14:18:09 +0200 +Subject: [PATCH] memdisk: Force ld output format to 32-bits +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On toolchains where the default output is x86_64, we need to be +consistent with the other .o files + +Signed-off-by: Benoît Allard +--- + memdisk/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/memdisk/Makefile b/memdisk/Makefile +index e6557d8..06613ff 100644 +--- a/memdisk/Makefile ++++ b/memdisk/Makefile +@@ -78,7 +78,7 @@ memdisk16.o: memdisk16.asm + $(NASM) -f bin $(NASMOPT) $(NFLAGS) $(NINCLUDE) -o $@ -l $*.lst $< + + memdisk_%.o: memdisk_%.bin +- $(LD) -r -b binary -o $@ $< ++ $(LD) --oformat elf32-i386 -r -b binary -o $@ $< + + memdisk16.elf: $(OBJS16) + $(LD) -Ttext 0 -o $@ $^ +-- +2.7.4 + diff --git a/features/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch b/features/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch new file mode 100644 index 00000000..e091a3a8 --- /dev/null +++ b/features/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch @@ -0,0 +1,60 @@ +From e000251144056c99e390a2a4449d06cbd2a19c0a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Wed, 5 Apr 2017 14:25:02 +0200 +Subject: [PATCH] utils: Use the host toolchain to build. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The utilities are meant to run on the host machine, hence must be built using +the host toolchain. + +Signed-off-by: Benoît Allard +--- + utils/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/utils/Makefile b/utils/Makefile +index dfe6259..ac91aaa 100644 +--- a/utils/Makefile ++++ b/utils/Makefile +@@ -17,8 +17,8 @@ + VPATH = $(SRC) + include $(MAKEDIR)/syslinux.mk + +-CFLAGS = $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC) +-LDFLAGS = -O2 ++CFLAGS = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC) ++LDFLAGS = $(LDFLAGS_FOR_BUILD) -O2 + + C_TARGETS = isohybrid gethostip memdiskfind + SCRIPT_TARGETS = mkdiskimage +@@ -35,7 +35,7 @@ ISOHDPFX = $(addprefix $(OBJ)/,../mbr/isohdpfx.bin ../mbr/isohdpfx_f.bin \ + all: $(TARGETS) + + %.o: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< + + mkdiskimage: mkdiskimage.in ../mbr/mbr.bin bin2hex.pl + $(PERL) $(SRC)/bin2hex.pl < $(OBJ)/../mbr/mbr.bin | cat $(SRC)/mkdiskimage.in - > $@ +@@ -51,13 +51,13 @@ isohdpfx.c: $(ISOHDPFX) isohdpfxarray.pl + $(PERL) $(SRC)/isohdpfxarray.pl $(ISOHDPFX) > $@ + + isohybrid: isohybrid.o isohdpfx.o +- $(CC) $(LDFLAGS) -o $@ $^ -luuid ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ -luuid + + gethostip: gethostip.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + memdiskfind: memdiskfind.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + tidy dist: + rm -f *.o .*.d isohdpfx.c +-- +2.1.4 + diff --git a/features/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch b/features/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch new file mode 100644 index 00000000..c6fa7feb --- /dev/null +++ b/features/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch @@ -0,0 +1,44 @@ +From 83e1f00990c25554723609bb549e18b987034317 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Thu, 6 Apr 2017 09:43:46 +0200 +Subject: [PATCH] lzo: Use the host toolchain for prepcore +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + lzo/Makefile | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/lzo/Makefile b/lzo/Makefile +index 29f1fa6..c016e5a 100644 +--- a/lzo/Makefile ++++ b/lzo/Makefile +@@ -11,10 +11,13 @@ + ## ----------------------------------------------------------------------- + + VPATH = $(SRC) +-include $(MAKEDIR)/build.mk ++include $(MAKEDIR)/syslinux.mk + + INCLUDES += -I$(SRC)/include + ++%.o: %.c ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS_FOR_BUILD) $(INCLUDES) -c -o $@ $< ++ + LIBOBJS = $(patsubst %.c,%.o,$(subst $(SRC)/,,$(wildcard $(SRC)/src/*.c))) + LIB = lzo.a + BINS = prepcore +@@ -30,7 +33,7 @@ $(LIB) : $(LIBOBJS) + $(RANLIB) $@ + + prepcore : prepcore.o $(LIB) +- $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) ++ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ $^ $(LIBS) + + tidy dist clean spotless: + rm -f $(BINS) +-- +2.1.4 + diff --git a/features/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch b/features/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch new file mode 100644 index 00000000..c3760102 --- /dev/null +++ b/features/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch @@ -0,0 +1,37 @@ +From 39274503292a6003b1b0c93f694e34f11e85ea44 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Fri, 9 Jun 2017 11:55:14 +0200 +Subject: [PATCH] The VPrint definition is now part of the exports of + gnu-efi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + efi/fio.h | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/efi/fio.h b/efi/fio.h +index 65fff8d..a1bfe68 100644 +--- a/efi/fio.h ++++ b/efi/fio.h +@@ -11,15 +11,6 @@ + #define MAX_EFI_ARGS 64 + #define WS(c16) (c16 == L' ' || c16 == CHAR_TAB) + +-/* VPrint is not in export declarations in gnu-efi lib yet +- * although it is a global function; declare it here +- */ +-extern UINTN +-VPrint ( +- IN CHAR16 *fmt, +- va_list args +- ); +- + extern EFI_STATUS efi_errno; + + void efi_memcpy(unsigned char *dst, unsigned char *src, size_t len); +-- +2.1.4 + diff --git a/features/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch b/features/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch new file mode 100644 index 00000000..90d0b81f --- /dev/null +++ b/features/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch @@ -0,0 +1,37 @@ +From 3bd5c2d951421a89f76b2423e5810862f53486c1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Fri, 9 Jun 2017 11:59:43 +0200 +Subject: [PATCH] Update the longjump calls to fit the new declaration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + efi/main.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/efi/main.c b/efi/main.c +index 208fee4f..71d31a5c 100644 +--- a/efi/main.c ++++ b/efi/main.c +@@ -10,7 +10,6 @@ + #include + #include + #include +-#include + + #include "efi.h" + #include "fio.h" +@@ -30,7 +29,7 @@ uint32_t timer_irq; + __export uint8_t KbdMap[256]; + char aux_seg[256]; + +-static jmp_buf load_error_buf; ++static jmp_buf *load_error_buf; + + static inline EFI_STATUS + efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid, EFI_HANDLE agent, +-- +2.13.3 + diff --git a/features/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch b/features/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch new file mode 100644 index 00000000..9ec12a17 --- /dev/null +++ b/features/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch @@ -0,0 +1,32 @@ +From ca8aaded0c7c3900397029bd9520132b62629308 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Mon, 12 Jun 2017 14:59:16 +0200 +Subject: [PATCH] efi/wrapper: build it with the host toolchain. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The wrapper program is executed on the build machine, so it should be +built with CC_FOR_BUILD. + +Signed-off-by: Benoît Allard +--- + efi/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/efi/Makefile b/efi/Makefile +index d5443bd5..d24d16db 100644 +--- a/efi/Makefile ++++ b/efi/Makefile +@@ -79,7 +79,7 @@ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) + # cp $^ $@ + + wrapper: wrapper.c +- $(CC) $^ -o $@ ++ $(CC_FOR_BUILD) $^ -o $@ + + # + # Build the wrapper app and wrap our .so to produce a .efi +-- +2.13.3 + diff --git a/features/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch b/features/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch new file mode 100644 index 00000000..916012f6 --- /dev/null +++ b/features/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch @@ -0,0 +1,295 @@ +From 76946dd67bc856eaf4fe69d0826547a794176f78 Mon Sep 17 00:00:00 2001 +From: Sylvain Gault +Date: Tue, 29 Sep 2015 04:45:09 +0200 +Subject: [PATCH] bios: Don't try to guess the sections alignment + +For the compression / decompression to succeed, the sections layout must +be the same between the virtual memory and load memory. The section +alignment was kept in sync by introducing aligment that should be +greater or equal to the actual section alignment. + +This patch compute the load memory addresses of the sections so that +the layout is the same as the virtual memory addresses. + +Signed-off-by: Sylvain Gault +Tested-by: poma +Signed-off-by: Paulo Alcantara + +Upstream: 0cc9a99e560a2f52bcf052fd85b1efae35ee812f +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + core/i386/syslinux.ld | 63 ++++++++++--------------------------------------- + core/x86_64/syslinux.ld | 63 ++++++++++--------------------------------------- + 2 files changed, 24 insertions(+), 102 deletions(-) + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 73904510..92b75b11 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -255,10 +255,9 @@ SECTIONS + . = 0x100000; + + __pm_code_start = .; ++ __vma_to_lma = __pm_code_lma - __pm_code_start; + +- __text_vma = .; +- __text_lma = __pm_code_lma; +- .text : AT(__text_lma) { ++ .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) + __text_start = .; + *(.text) +@@ -266,106 +265,68 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(32); +- +- __rodata_vma = .; +- __rodata_lma = __rodata_vma + __text_lma - __text_vma; +- .rodata : AT(__rodata_lma) { ++ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + __rodata_end = .; + } + +- . = ALIGN(4); +- +- __ctors_vma = .; +- __ctors_lma = __ctors_vma + __text_lma - __text_vma; +- .ctors : AT(__ctors_lma) { ++ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { + __ctors_start = .; + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; + } + +- __dtors_vma = .; +- __dtors_lma = __dtors_vma + __text_lma - __text_vma; +- .dtors : AT(__dtors_lma) { ++ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; + } + +- . = ALIGN(4); +- +- __dynsym_vma = .; +- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma; +- .dynsym : AT(__dynsym_lma) { ++ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; + } + __dynsym_len = __dynsym_end - __dynsym_start; + +- . = ALIGN(4); +- +- __dynstr_vma = .; +- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma; +- .dynstr : AT(__dynstr_lma) { ++ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; + } + __dynstr_len = __dynstr_end - __dynstr_start; + +- . = ALIGN(4); +- +- __gnu_hash_vma = .; +- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma; +- .gnu.hash : AT(__gnu_hash_lma) { ++ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; + } + + +- . = ALIGN(4); +- +- __dynlink_vma = .; +- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma; +- .dynlink : AT(__dynlink_lma) { ++ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { + __dynlink_start = .; + *(.dynlink) + __dynlink_end = .; + } + +- . = ALIGN(4); +- +- __got_vma = .; +- __got_lma = __got_vma + __text_lma - __text_vma; +- .got : AT(__got_lma) { ++ .got : AT(ADDR(.got) + __vma_to_lma) { + __got_start = .; + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; + } + +- . = ALIGN(4); +- +- __dynamic_vma = .; +- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma; +- .dynamic : AT(__dynamic_lma) { ++ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; + } + +- . = ALIGN(32); +- +- __data_vma = .; +- __data_lma = __data_vma + __text_lma - __text_vma; +- .data : AT(__data_lma) { ++ .data : AT(ADDR(.data) + __vma_to_lma) { + __data_start = .; + *(.data) + *(.data.*) +diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld +index bf815c46..70c6e00a 100644 +--- a/core/x86_64/syslinux.ld ++++ b/core/x86_64/syslinux.ld +@@ -255,10 +255,9 @@ SECTIONS + . = 0x100000; + + __pm_code_start = .; ++ __vma_to_lma = __pm_code_lma - __pm_code_start; + +- __text_vma = .; +- __text_lma = __pm_code_lma; +- .text : AT(__text_lma) { ++ .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) + __text_start = .; + *(.text) +@@ -266,106 +265,68 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(32); +- +- __rodata_vma = .; +- __rodata_lma = __rodata_vma + __text_lma - __text_vma; +- .rodata : AT(__rodata_lma) { ++ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + __rodata_end = .; + } + +- . = ALIGN(4); +- +- __ctors_vma = .; +- __ctors_lma = __ctors_vma + __text_lma - __text_vma; +- .ctors : AT(__ctors_lma) { ++ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { + __ctors_start = .; + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; + } + +- __dtors_vma = .; +- __dtors_lma = __dtors_vma + __text_lma - __text_vma; +- .dtors : AT(__dtors_lma) { ++ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; + } + +- . = ALIGN(4); +- +- __dynsym_vma = .; +- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma; +- .dynsym : AT(__dynsym_lma) { ++ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; + } + __dynsym_len = __dynsym_end - __dynsym_start; + +- . = ALIGN(4); +- +- __dynstr_vma = .; +- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma; +- .dynstr : AT(__dynstr_lma) { ++ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; + } + __dynstr_len = __dynstr_end - __dynstr_start; + +- . = ALIGN(4); +- +- __gnu_hash_vma = .; +- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma; +- .gnu.hash : AT(__gnu_hash_lma) { ++ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; + } + + +- . = ALIGN(4); +- +- __dynlink_vma = .; +- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma; +- .dynlink : AT(__dynlink_lma) { ++ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { + __dynlink_start = .; + *(.dynlink) + __dynlink_end = .; + } + +- . = ALIGN(4); +- +- __got_vma = .; +- __got_lma = __got_vma + __text_lma - __text_vma; +- .got : AT(__got_lma) { ++ .got : AT(ADDR(.got) + __vma_to_lma) { + __got_start = .; + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; + } + +- . = ALIGN(4); +- +- __dynamic_vma = .; +- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma; +- .dynamic : AT(__dynamic_lma) { ++ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; + } + +- . = ALIGN(32); +- +- __data_vma = .; +- __data_lma = __data_vma + __text_lma - __text_vma; +- .data : AT(__data_lma) { ++ .data : AT(ADDR(.data) + __vma_to_lma) { + __data_start = .; + *(.data) + *(.data.*) +-- +2.13.3 + diff --git a/features/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch b/features/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch new file mode 100644 index 00000000..8b6d5254 --- /dev/null +++ b/features/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch @@ -0,0 +1,622 @@ +From a14b1b3d3e375d2e8af8804171ef5e52574dbb2a Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" +Date: Tue, 9 Feb 2016 18:15:50 -0800 +Subject: [PATCH] core: Clean up the i386-bios build + +Remove symbols and data structures not used in the i386-bios build, +and clean up the linker script so that most internal symbols are +HIDDEN. + +Signed-off-by: H. Peter Anvin + +Upstream: ff859050fa4e6535cae098dc35d88a265466448d + +This patch fixes the following build failure with i386 binutils 2.28.1: + +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld -Bsymbolic -pie -E --hash-style=gnu -T +/builds/arnout/buildroot/output/build/syslinux-6.03/core/i386/syslinux.ld -M -o ldlinux.elf ldlinux.o \ + --start-group libcom32.a --whole-archive /builds/arnout/buildroot/output/build/syslinux-6.03/bios/com32/lib/libcom32core.a libldlinux.a --end-group -N +--no-omagic \ + > ldlinux.map +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: ldlinux.elf: Not enough room for program headers, try linking with -N +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: final link failed: Bad value +/builds/arnout/buildroot/output/build/syslinux-6.03/core/Makefile:167: recipe for target 'ldlinux.elf' failed + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + core/extern.inc | 17 +-- + core/i386/syslinux.ld | 287 +++++++++++++++++++++++++------------------------- + core/layout.inc | 11 -- + 3 files changed, 143 insertions(+), 172 deletions(-) + +diff --git a/core/extern.inc b/core/extern.inc +index af8eb04c..ce4abfab 100644 +--- a/core/extern.inc ++++ b/core/extern.inc +@@ -12,27 +12,17 @@ + ; hello.c + extern hello + +- ;abort.c +- extern abort_load_new +- + ; elflink/load_env32.c + extern load_env32, pm_env32_run + +- ; memscan.c +- extern highmem_init +- +- extern linux_kernel +- + extern mp1, mp2, mp3, mp4, mp5 + +- extern hexdump, mydump ++ extern hexdump + + extern mem_init + + ; fs.c +- extern pm_fs_init, pm_searchdir, getfssec, getfsbytes +- extern pm_mangle_name, pm_load_config +- extern pm_open_file, pm_close_file ++ extern pm_fs_init + extern SectorSize, SectorShift + + ; chdir.c +@@ -41,9 +31,6 @@ + ; readdir.c + extern opendir, readdir, closedir + +- ; newconfig.c +- extern pm_is_config_file +- + ; idle.c + extern __idle + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 92b75b11..39198d75 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -1,7 +1,7 @@ + /* ----------------------------------------------------------------------- + * + * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved +- * Copyright 2009 Intel Corporation; author: H. Peter Anvin ++ * Copyright 2009-2016 Intel Corporation; author: H. Peter Anvin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -12,7 +12,7 @@ + * ----------------------------------------------------------------------- */ + + /* +- * Linker script for the SYSLINUX core ++ * Linker script for the SYSLINUX core when built for i386-bios + */ + + OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +@@ -26,7 +26,7 @@ SECTIONS + { + /* Prefix structure for the compression program */ + . = 0; +- __module_start = .; ++ HIDDEN(__module_start = ABSOLUTE(.)); + .prefix : { + *(.prefix) + } +@@ -35,81 +35,82 @@ SECTIONS + . = 0x1000; + + .earlybss (NOLOAD) : { +- __earlybss_start = .; ++ HIDDEN(__earlybss_start = .); + *(.earlybss) +- __earlybss_end = .; ++ HIDDEN(__earlybss_end = .); + } +- __earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start); +- __earlybss_dwords = (__earlybss_len + 3) >> 2; ++ HIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start)); ++ HIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2); + + . = ALIGN(4); + .bss16 (NOLOAD) : { +- __bss16_start = .; ++ HIDDEN(__bss16_start = .); + *(.bss16) +- __bss16_end = .; ++ HIDDEN(__bss16_end = .); + } +- __bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start); +- __bss16_dwords = (__bss16_len + 3) >> 2; ++ HIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start)); ++ HIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2); + + . = ALIGN(4); + .config : AT (__config_lma) { +- __config_start = .; ++ HIDDEN(__config_start = .); + *(.config) +- __config_end = .; ++ HIDDEN(__config_end = .); + } +- __config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start); +- __config_dwords = (__config_len + 3) >> 2; ++ HIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start)); ++ HIDDEN(__config_dwords = (__config_len + 3) >> 2); + + /* Generated and/or copied code */ + + . = ALIGN(128); /* Minimum separation from mutable data */ + .replacestub : AT (__replacestub_lma) { +- __replacestub_start = .; ++ HIDDEN(__replacestub_start = .); + *(.replacestub) +- __replacestub_end = .; ++ HIDDEN(__replacestub_end = .); + } +- __replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start); +- __replacestub_dwords = (__replacestub_len + 3) >> 2; ++ HIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start)); ++ HIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2); + + . = ALIGN(16); +- __gentextnr_lma = .; ++ HIDDEN(__gentextnr_lma = .); + .gentextnr : AT(__gentextnr_lma) { +- __gentextnr_start = .; ++ HIDDEN(__gentextnr_start = .); + *(.gentextnr) +- __gentextnr_end = .; ++ HIDDEN(__gentextnr_end = .); + } +- __gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start); +- __gentextnr_dwords = (__gentextnr_len + 3) >> 2; ++ HIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start)); ++ HIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2); + + . = STACK_BASE; + .stack16 : AT(STACK_BASE) { +- __stack16_start = .; ++ HIDDEN(__stack16_start = .); + . += STACK_LEN; +- __stack16_end = .; ++ HIDDEN(__stack16_end = .); + } +- __stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start); +- __stack16_dwords = (__stack16_len + 3) >> 2; ++ HIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start)); ++ HIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2); + + /* Initialized sections */ + + . = 0x7c00; + .init : { + FILL(0x90909090) +- __init_start = .; ++ HIDDEN(__init_start = .); + *(.init) +- __init_end = .; ++ HIDDEN(__init_end = .); + } +- __init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start); +- __init_dwords = (__init_len + 3) >> 2; ++ HIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start)); ++ HIDDEN(__init_dwords = (__init_len + 3) >> 2); + ++ . = ALIGN(4); + .text16 : { + FILL(0x90909090) +- __text16_start = .; ++ HIDDEN(__text16_start = .); + *(.text16) +- __text16_end = .; ++ HIDDEN(__text16_end = .); + } +- __text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start); +- __text16_dwords = (__text16_len + 3) >> 2; ++ HIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start)); ++ HIDDEN(__text16_dwords = (__text16_len + 3) >> 2); + + /* + * .textnr is used for 32-bit code that is used on the code +@@ -118,99 +119,92 @@ SECTIONS + . = ALIGN(16); + .textnr : { + FILL(0x90909090) +- __textnr_start = .; ++ HIDDEN(__textnr_start = .); + *(.textnr) +- __textnr_end = .; ++ HIDDEN(__textnr_end = .); + } +- __textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start); +- __textnr_dwords = (__textnr_len + 3) >> 2; ++ HIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start)); ++ HIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2); + + . = ALIGN(16); +- __bcopyxx_start = .; ++ HIDDEN(__bcopyxx_start = .); + + .bcopyxx.text : { + FILL(0x90909090) +- __bcopyxx_text_start = .; ++ HIDDEN(__bcopyxx_text_start = .); + *(.bcopyxx.text) +- __bcopyxx_text_end = .; ++ HIDDEN(__bcopyxx_text_end = .); + } +- __bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start); +- __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2; ++ HIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start)); ++ HIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2); + + .bcopyxx.data : { +- __bcopyxx_data_start = .; ++ HIDDEN(__bcopyxx_data_start = .); + *(.bcopyxx.text) +- __bcopyxx_data_end = .; ++ HIDDEN(__bcopyxx_data_end = .); + } +- __bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start); +- __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2; ++ HIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start)); ++ HIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2); + +- __bcopyxx_end = .; +- __bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start); +- __bcopyxx_dwords = (__bcopyxx_len + 3) >> 2; ++ HIDDEN(__bcopyxx_end = .); ++ HIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start)); ++ HIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2); + + . = ALIGN(4); + .data16 : { +- __data16_start = .; ++ HIDDEN(__data16_start = .); + *(.data16) +- __data16_end = .; ++ HIDDEN(__data16_end = .); + } +- __data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start); +- __data16_dwords = (__data16_len + 3) >> 2; ++ HIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start)); ++ HIDDEN(__data16_dwords = (__data16_len + 3) >> 2); + + . = ALIGN(4); +- __config_lma = .; ++ HIDDEN(__config_lma = ABSOLUTE(.)); + . += SIZEOF(.config); + + . = ALIGN(4); +- __replacestub_lma = .; ++ HIDDEN(__replacestub_lma = ABSOLUTE(.)); + . += SIZEOF(.replacestub); + + /* The 32-bit code loads above the non-progbits sections */ + + . = ALIGN(16); +- __pm_code_lma = .; ++ HIDDEN(__pm_code_lma = ABSOLUTE(.)); + +- __high_clear_start = .; ++ HIDDEN(__high_clear_start = .); + + . = ALIGN(512); + .adv (NOLOAD) : { +- __adv_start = .; ++ HIDDEN(__adv_start = .); + *(.adv) +- __adv_end = .; ++ HIDDEN(__adv_end = .); + } +- __adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start); +- __adv_dwords = (__adv_len + 3) >> 2; ++ HIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start)); ++ HIDDEN(__adv_dwords = (__adv_len + 3) >> 2); + + /* Late uninitialized sections */ + + . = ALIGN(4); + .uibss (NOLOAD) : { +- __uibss_start = .; ++ HIDDEN(__uibss_start = .); + *(.uibss) +- __uibss_end = .; ++ HIDDEN(__uibss_end = .); + } +- __uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start); +- __uibss_dwords = (__uibss_len + 3) >> 2; ++ HIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start)); ++ HIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2); + +- _end16 = .; +- __assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow"); ++ HIDDEN(_end16 = .); ++ HIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow")); + + /* + * Special 16-bit segments + */ +- +- . = ALIGN(65536); +- .real_mode (NOLOAD) : { +- *(.real_mode) +- } +- real_mode_seg = core_real_mode >> 4; +- + . = ALIGN(65536); + .xfer_buf (NOLOAD) : { + *(.xfer_buf) + } +- xfer_buf_seg = core_xfer_buf >> 4; ++ HIDDEN(xfer_buf_seg = core_xfer_buf >> 4); + + /* + * The auxilliary data segment is used by the 16-bit code +@@ -219,33 +213,33 @@ SECTIONS + + . = ALIGN(16); + .auxseg (NOLOAD) : { +- __auxseg_start = .; ++ HIDDEN(__auxseg_start = .); + *(.auxseg) +- __auxseg_end = .; ++ HIDDEN(__auxseg_end = .); + } +- __auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start); +- __auxseg_dwords = (__auxseg_len + 3) >> 2; +- aux_seg = __auxseg_start >> 4; ++ HIDDEN(__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start)); ++ HIDDEN(__auxseg_dwords = (__auxseg_len + 3) >> 2); ++ HIDDEN(aux_seg = __auxseg_start >> 4); + + /* + * Used to allocate lowmem buffers from 32-bit code + */ + .lowmem (NOLOAD) : { +- __lowmem_start = .; ++ HIDDEN(__lowmem_start = .); + *(.lowmem) +- __lowmem_end = .; ++ HIDDEN(__lowmem_end = .); + } +- __lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start); +- __lowmem_dwords = (__lowmem_len + 3) >> 2; ++ HIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start)); ++ HIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2); + +- __high_clear_end = .; ++ HIDDEN(__high_clear_end = .); + +- __high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start); +- __high_clear_dwords = (__high_clear_len + 3) >> 2; ++ HIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start)); ++ HIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2); + + /* Start of the lowmem heap */ + . = ALIGN(16); +- __lowmem_heap = .; ++ HIDDEN(__lowmem_heap = .); + + /* + * 32-bit code. This is a hack for the moment due to the +@@ -254,136 +248,137 @@ SECTIONS + + . = 0x100000; + +- __pm_code_start = .; +- __vma_to_lma = __pm_code_lma - __pm_code_start; ++ HIDDEN(__pm_code_start = .); ++ HIDDEN(__vma_to_lma = ABSOLUTE(__pm_code_lma - __pm_code_start)); + + .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) +- __text_start = .; ++ HIDDEN(__text_start = .); + *(.text) + *(.text.*) +- __text_end = .; ++ HIDDEN(__text_end = .); + } + + .rodata : AT(ADDR(.rodata) + __vma_to_lma) { +- __rodata_start = .; ++ HIDDEN(__rodata_start = .); + *(.rodata) + *(.rodata.*) +- __rodata_end = .; ++ HIDDEN(__rodata_end = .); + } + + .ctors : AT(ADDR(.ctors) + __vma_to_lma) { +- __ctors_start = .; ++ HIDDEN(__ctors_start = .); + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) +- __ctors_end = .; ++ HIDDEN(__ctors_end = .); + } + + .dtors : AT(ADDR(.dtors) + __vma_to_lma) { +- __dtors_start = .; ++ HIDDEN(__dtors_start = .); + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) +- __dtors_end = .; ++ HIDDEN(__dtors_end = .); + } + + .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { +- __dynsym_start = .; +- *(.dynsym) +- __dynsym_end = .; ++ HIDDEN(__dynsym_start = .); ++ KEEP (*(.dynsym)) ++ HIDDEN(__dynsym_end = .); + } +- __dynsym_len = __dynsym_end - __dynsym_start; ++ HIDDEN(__dynsym_len = __dynsym_end - __dynsym_start); + + .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { +- __dynstr_start = .; +- *(.dynstr) +- __dynstr_end = .; ++ HIDDEN(__dynstr_start = .); ++ KEEP (*(.dynstr)) ++ HIDDEN(__dynstr_end = .); + } +- __dynstr_len = __dynstr_end - __dynstr_start; ++ HIDDEN(__dynstr_len = __dynstr_end - __dynstr_start); + + .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { +- __gnu_hash_start = .; +- *(.gnu.hash) +- __gnu_hash_end = .; ++ HIDDEN(__gnu_hash_start = .); ++ KEEP (*(.gnu.hash)) ++ HIDDEN(__gnu_hash_end = .); + } + + + .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { +- __dynlink_start = .; +- *(.dynlink) +- __dynlink_end = .; ++ HIDDEN(__dynlink_start = .); ++ KEEP (*(.dynlink)) ++ HIDDEN(__dynlink_end = .); + } + + .got : AT(ADDR(.got) + __vma_to_lma) { +- __got_start = .; +- KEEP (*(.got.plt)) ++ HIDDEN(__got_start = .); + KEEP (*(.got)) +- __got_end = .; ++ KEEP (*(.got.plt)) ++ HIDDEN(__got_end = .); + } + + .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { +- __dynamic_start = .; +- *(.dynamic) +- __dynamic_end = .; ++ HIDDEN(__dynamic_start = .); ++ KEEP (*(.dynamic)) ++ HIDDEN(__dynamic_end = .); + } + + .data : AT(ADDR(.data) + __vma_to_lma) { +- __data_start = .; ++ HIDDEN(__data_start = .); + *(.data) + *(.data.*) +- __data_end = .; ++ HIDDEN(__data_end = .); + } + +- __pm_code_end = .; +- __pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start); +- __pm_code_dwords = (__pm_code_len + 3) >> 2; ++ HIDDEN(__pm_code_end = .); ++ HIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start)); ++ HIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2); + + . = ALIGN(128); + +- __bss_vma = .; +- __bss_lma = .; /* Dummy */ ++ HIDDEN(__bss_vma = .); ++ HIDDEN(__bss_lma = ABSOLUTE(.)); /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +- __bss_start = .; ++ HIDDEN(__bss_start = .); + *(.bss) + *(.bss.*) + *(COMMON) +- __bss_end = .; ++ HIDDEN(__bss_end = .); + } +- __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); +- __bss_dwords = (__bss_len + 3) >> 2; ++ HIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start)); ++ HIDDEN(__bss_dwords = (__bss_len + 3) >> 2); + + /* Very large objects which don't need to be zeroed */ + +- __hugebss_vma = .; +- __hugebss_lma = .; /* Dummy */ ++ HIDDEN(__hugebss_vma = .); ++ HIDDEN(__hugebss_lma = ABSOLUTE(.)); /* Dummy */ + .hugebss (NOLOAD) : AT (__hugebss_lma) { +- __hugebss_start = .; ++ HIDDEN(__hugebss_start = .); + *(.hugebss) + *(.hugebss.*) +- __hugebss_end = .; ++ HIDDEN(__hugebss_end = .); + } +- __hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start); +- __hugebss_dwords = (__hugebss_len + 3) >> 2; ++ HIDDEN(__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start)); ++ HIDDEN(__hugebss_dwords = (__hugebss_len + 3) >> 2); + + + /* XXX: This stack should be unified with the COM32 stack */ +- __stack_vma = .; +- __stack_lma = .; /* Dummy */ ++ HIDDEN(__stack_vma = .); ++ HIDDEN(__stack_lma = ABSOLUTE(.)); /* Dummy */ + .stack (NOLOAD) : AT(__stack_lma) { +- __stack_start = .; ++ HIDDEN(__stack_start = .); + *(.stack) +- __stack_end = .; ++ HIDDEN(__stack_end = .); + } +- __stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start); +- __stack_dwords = (__stack_len + 3) >> 2; ++ HIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start)); ++ HIDDEN(__stack_dwords = (__stack_len + 3) >> 2); + +- _end = .; ++ HIDDEN(_end = .); + + /* COM32R and kernels are loaded after our own PM code */ + . = ALIGN(65536); +- free_high_memory = .; ++ HIDDEN(free_high_memory = .); + + /* Stuff we don't need... */ + /DISCARD/ : { + *(.eh_frame) ++ *(.interp) + } + } +diff --git a/core/layout.inc b/core/layout.inc +index 53ca783d..635df537 100644 +--- a/core/layout.inc ++++ b/core/layout.inc +@@ -139,17 +139,6 @@ serial_buf_size equ 4096 ; Should be a power of 2 + core_xfer_buf resb 65536 + + ; +-; Segment for the real mode code (needed as long as we have a in-kernel +-; loader and/or COM16 support. +-; One symbol for the segment number, one for the absolute address +-; +- extern real_mode_seg +- section .real_mode write nobits align=65536 +- global core_real_mode:data hidden +-core_real_mode resb 65536 +-comboot_seg equ real_mode_seg ; COMBOOT image loading zone +- +-; + ; At the very end, the lowmem heap + ; + extern __lowmem_heap +-- +2.13.3 + diff --git a/features/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch b/features/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch new file mode 100644 index 00000000..62675cf6 --- /dev/null +++ b/features/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch @@ -0,0 +1,53 @@ +From 4df2e7c0ae84bfbdba0ed285c0664aa089b38b7e Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 30 Sep 2017 19:49:55 -0300 +Subject: [PATCH] extlinux: Use the host toolchain to build. + +It is meant to run on the host machine, hence must be built using the +host toolchain. + +Signed-off-by: Carlos Santos +--- + extlinux/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/extlinux/Makefile b/extlinux/Makefile +index 02d1db51..5c4baa5a 100644 +--- a/extlinux/Makefile ++++ b/extlinux/Makefile +@@ -18,9 +18,9 @@ include $(MAKEDIR)/syslinux.mk + + OPTFLAGS = -g -Os + INCLUDES = -I$(SRC) -I$(objdir) -I$(SRC)/../libinstaller +-CFLAGS = $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \ ++CFLAGS = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \ + $(OPTFLAGS) $(INCLUDES) +-LDFLAGS = ++LDFLAGS = $(LDFLAGS_FOR_BUILD) + + SRCS = main.c \ + mountinfo.c \ +@@ -52,16 +52,16 @@ spotless: clean + installer: extlinux + + extlinux: $(OBJS) +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + strip: + $(STRIP) extlinux + + %.o: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< + %.i: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $< + %.s: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $< + + -include .*.d +-- +2.13.5 + diff --git a/features/buildroot/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch b/features/buildroot/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch new file mode 100644 index 00000000..beba5cc2 --- /dev/null +++ b/features/buildroot/boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch @@ -0,0 +1,34 @@ +From 1a74985b2a404639b08882c57f3147229605dfd5 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Tue, 19 Apr 2016 06:50:31 -0400 +Subject: [PATCH] extlinux: pull in sys/sysmacros.h for major/minor/makedev + +These functions are defined in sys/sysmacros.h, so add the include to +main.c. This is already handled correctly in mountinfo.c. Otherwise +we get build failures like: + +main.o: In function 'find_device_sysfs': +extlinux/main.c:1131: undefined reference to 'minor' + +Signed-off-by: Mike Frysinger +Signed-off-by: Gene Cumm +Signed-off-by: Alexander Sverdlin +--- + extlinux/main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/extlinux/main.c b/extlinux/main.c +index a7ebd49..ebff7ea 100644 +--- a/extlinux/main.c ++++ b/extlinux/main.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.10.5.GIT + diff --git a/features/buildroot/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch b/features/buildroot/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch new file mode 100644 index 00000000..17a6d37c --- /dev/null +++ b/features/buildroot/boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch @@ -0,0 +1,45 @@ +From 44a1b42e561b9a257209300e2860b901b100cc17 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Tue, 26 Feb 2019 08:07:22 -0300 +Subject: [PATCH] Fix build with gnu-efi version 3.0.9 + +Adapt a patch already applied upstream to prevent multiple definitions +of 'memset' and 'memcpy'. + +Signed-off-by: Carlos Santos +(adapted from commit 363d61c4f112b972649b19d67e96b9321f738f00) +--- + mk/lib.mk | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/mk/lib.mk b/mk/lib.mk +index ceb95bd0..c9b6eaf3 100644 +--- a/mk/lib.mk ++++ b/mk/lib.mk +@@ -186,9 +186,9 @@ MINLIBOBJS = \ + # $(LIBVESA_OBJS) + + CORELIBOBJS = \ +- memcpy.o memset.o memcmp.o printf.o strncmp.o vfprintf.o \ ++ memcmp.o printf.o strncmp.o vfprintf.o \ + strlen.o vsnprintf.o snprintf.o stpcpy.o strcmp.o strdup.o \ +- strcpy.o strncpy.o setjmp.o fopen.o fread.o fread2.o puts.o \ ++ strcpy.o strncpy.o fopen.o fread.o fread2.o puts.o \ + strtoul.o strntoumax.o strcasecmp.o \ + sprintf.o strlcat.o strchr.o strlcpy.o strncasecmp.o ctypes.o \ + fputs.o fwrite2.o fwrite.o fgetc.o fclose.o lmalloc.o \ +@@ -203,6 +203,11 @@ CORELIBOBJS = \ + $(LIBENTRY_OBJS) \ + $(LIBMODULE_OBJS) + ++ifndef EFI_BUILD ++# For EFI, these are part of gnu-efi ++CORELIBOBJS += setjmp.o memcpy.o memset.o ++endif ++ + LDFLAGS = -m elf_$(ARCH) --hash-style=gnu -T $(com32)/lib/$(ARCH)/elf.ld + + .SUFFIXES: .c .o .a .so .lo .i .S .s .ls .ss .lss +-- +2.14.5 + diff --git a/features/buildroot/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch b/features/buildroot/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch new file mode 100644 index 00000000..fedd8156 --- /dev/null +++ b/features/buildroot/boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch @@ -0,0 +1,47 @@ +From beb526ca925983c7da229043790ecd552d910650 Mon Sep 17 00:00:00 2001 +From: Christian Stewart +Date: Thu, 4 Apr 2019 23:24:31 -0700 +Subject: [PATCH] Fix build with binutils note gnu property section + +This fixes the following build error with newer binutils: + + objcopy -O binary mbr.elf mbr.bin + perl /build/syslinux/src/syslinux/mbr/checksize.pl mbr.bin + mbr.bin: too big (452 > 440) + +Corresponding bug reports: + + - https://bugs.archlinux.org/task/60405 + - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906414 + +Strips the .note.gnu.property in the linker scripts for the MBRs. + +Signed-off-by: Christian Stewart +--- + mbr/i386/mbr.ld | 1 + + mbr/x86_64/mbr.ld | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/mbr/i386/mbr.ld b/mbr/i386/mbr.ld +index d14ba802..53683461 100644 +--- a/mbr/i386/mbr.ld ++++ b/mbr/i386/mbr.ld +@@ -70,4 +70,5 @@ SECTIONS + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } ++ /DISCARD/ : { *(.note.gnu.property) } + } +diff --git a/mbr/x86_64/mbr.ld b/mbr/x86_64/mbr.ld +index ae27d49a..b8c0d895 100644 +--- a/mbr/x86_64/mbr.ld ++++ b/mbr/x86_64/mbr.ld +@@ -69,4 +69,5 @@ SECTIONS + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } ++ /DISCARD/ : { *(.note.gnu.property) } + } +-- +2.21.0 + diff --git a/features/buildroot/boot/syslinux/Config.in b/features/buildroot/boot/syslinux/Config.in new file mode 100644 index 00000000..339a97f0 --- /dev/null +++ b/features/buildroot/boot/syslinux/Config.in @@ -0,0 +1,62 @@ +config BR2_TARGET_SYSLINUX + bool "syslinux" + depends on BR2_i386 || BR2_x86_64 + # Make sure at least one of the flavors is installed + select BR2_TARGET_SYSLINUX_ISOLINUX \ + if !BR2_TARGET_SYSLINUX_PXELINUX && \ + !BR2_TARGET_SYSLINUX_MBR && \ + !BR2_TARGET_SYSLINUX_EFI + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The syslinux bootloader for x86 systems. + This includes: syslinux, pxelinux, extlinux. + + http://syslinux.org + +if BR2_TARGET_SYSLINUX + +config BR2_TARGET_SYSLINUX_LEGACY_BIOS + bool + +config BR2_TARGET_SYSLINUX_ISOLINUX + bool "install isolinux" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'isolinux' image, to boot off + optical media (CDROM, DVD.) + +config BR2_TARGET_SYSLINUX_PXELINUX + bool "install pxelinux" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'pxelinux' image, to boot off + the network using PXE. + +config BR2_TARGET_SYSLINUX_MBR + bool "install mbr" + depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615 + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'mbr' image, to boot off a + local MBR-partition (e.g. prepared with 'extlinux' + or 'syslinux'). + +config BR2_TARGET_SYSLINUX_EFI + bool "install efi" + depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS + select BR2_PACKAGE_GNU_EFI + help + Install the 'efi' image, to boot from an EFI environment. + +if BR2_TARGET_SYSLINUX_LEGACY_BIOS + +config BR2_TARGET_SYSLINUX_C32 + string "modules to install" + help + Enter a space-separated list of .c32 modules to install. + Leave empty to install no module. + +endif # BR2_TARGET_SYSLINUX_LEGACY_BIOS + +endif # BR2_TARGET_SYSLINUX diff --git a/features/buildroot/boot/syslinux/syslinux.hash b/features/buildroot/boot/syslinux/syslinux.hash new file mode 100644 index 00000000..5303f4df --- /dev/null +++ b/features/buildroot/boot/syslinux/syslinux.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/boot/syslinux/sha256sums.asc +sha256 26d3986d2bea109d5dc0e4f8c4822a459276cf021125e8c9f23c3cca5d8c850e syslinux-6.03.tar.xz diff --git a/features/buildroot/boot/syslinux/syslinux.mk b/features/buildroot/boot/syslinux/syslinux.mk new file mode 100644 index 00000000..67bc6925 --- /dev/null +++ b/features/buildroot/boot/syslinux/syslinux.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# syslinux to make target msdos/iso9660 filesystems bootable +# +################################################################################ + +SYSLINUX_VERSION = 6.03 +SYSLINUX_SOURCE = syslinux-$(SYSLINUX_VERSION).tar.xz +SYSLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/boot/syslinux + +SYSLINUX_LICENSE = GPL-2.0+ +SYSLINUX_LICENSE_FILES = COPYING + +SYSLINUX_INSTALL_IMAGES = YES + +# host-util-linux needed to provide libuuid when building host tools +SYSLINUX_DEPENDENCIES = host-nasm host-upx util-linux host-util-linux + +ifeq ($(BR2_TARGET_SYSLINUX_LEGACY_BIOS),y) +SYSLINUX_TARGET += bios +endif + +# The syslinux build system must be forced to use Buildroot's gnu-efi +# package by setting EFIINC, LIBDIR and LIBEFI. Otherwise, it uses its +# own copy of gnu-efi included in syslinux's sources since 6.03 +# release. +ifeq ($(BR2_TARGET_SYSLINUX_EFI),y) +ifeq ($(BR2_ARCH_IS_64),y) +SYSLINUX_EFI_BITS = efi64 +else +SYSLINUX_EFI_BITS = efi32 +endif # 64-bit +SYSLINUX_DEPENDENCIES += gnu-efi +SYSLINUX_TARGET += $(SYSLINUX_EFI_BITS) +SYSLINUX_EFI_ARGS = \ + EFIINC=$(STAGING_DIR)/usr/include/efi \ + LIBDIR=$(STAGING_DIR)/usr/lib \ + LIBEFI=$(STAGING_DIR)/usr/lib/libefi.a +endif # EFI + +# The syslinux tarball comes with pre-compiled binaries. +# Since timestamps might not be in the correct order, a rebuild is +# not always triggered for all the different images. +# Cleanup the mess even before we attempt a build, so we indeed +# build everything from source. +define SYSLINUX_CLEANUP + rm -rf $(@D)/bios $(@D)/efi32 $(@D)/efi64 +endef +SYSLINUX_POST_PATCH_HOOKS += SYSLINUX_CLEANUP + +# syslinux build system has no convenient way to pass CFLAGS, +# and the internal zlib should take precedence so -I shouldn't +# be used. +define SYSLINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_LD)" \ + NASM="$(HOST_DIR)/bin/nasm" \ + CC_FOR_BUILD="$(HOSTCC)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + $(SYSLINUX_EFI_ARGS) -C $(@D) $(SYSLINUX_TARGET) +endef + +# While the actual bootloader is compiled for the target, several +# utilities for installing the bootloader are meant for the host. +# Repeat the target, otherwise syslinux will try to build everything +# Repeat LD (and CC) as it happens that some binaries are linked at +# install-time. +define SYSLINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(SYSLINUX_EFI_ARGS) INSTALLROOT=$(HOST_DIR) \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_LD)" \ + -C $(@D) $(SYSLINUX_TARGET) install +endef + +# That 'syslinux' binary is an installer actually built for the target. +# However, buildroot makes no usage of it, so better delete it than have it +# installed at the wrong place +define SYSLINUX_POST_INSTALL_CLEANUP + rm -rf $(HOST_DIR)/bin/syslinux +endef +SYSLINUX_POST_INSTALL_TARGET_HOOKS += SYSLINUX_POST_INSTALL_CLEANUP + +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_ISOLINUX) += bios/core/isolinux.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_PXELINUX) += bios/core/pxelinux.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_MBR) += bios/mbr/mbr.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_EFI) += $(SYSLINUX_EFI_BITS)/efi/syslinux.efi + +SYSLINUX_C32 = $(call qstrip,$(BR2_TARGET_SYSLINUX_C32)) + +# We install the c32 modules from the host-installed tree, where they +# are all neatly installed in a single location, while they are +# scattered around everywhere in the build tree. +define SYSLINUX_INSTALL_IMAGES_CMDS + for i in $(SYSLINUX_IMAGES-y); do \ + $(INSTALL) -D -m 0755 $(@D)/$$i $(BINARIES_DIR)/syslinux/$${i##*/}; \ + done + for i in $(SYSLINUX_C32); do \ + $(INSTALL) -D -m 0755 $(HOST_DIR)/share/syslinux/$${i} \ + $(BINARIES_DIR)/syslinux/$${i}; \ + done +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/ts4800-mbrboot/Config.in b/features/buildroot/boot/ts4800-mbrboot/Config.in new file mode 100644 index 00000000..7ed0b213 --- /dev/null +++ b/features/buildroot/boot/ts4800-mbrboot/Config.in @@ -0,0 +1,7 @@ +config BR2_TARGET_TS4800_MBRBOOT + bool "ts4800-mbrboot" + depends on BR2_ARM_CPU_ARMV7A + help + First level bootloader for TS4800 board + + https://github.com/embeddedarm/ts4800-mbrboot diff --git a/features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash b/features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash new file mode 100644 index 00000000..04e70728 --- /dev/null +++ b/features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 617c70dcf50b7ad35ed3f40666ff2a9a654a5440b522ad73662abdf9f843cee9 ts4800-mbrboot-cf8f7072ed5a4a4e48fcb9841b2e31e519ec5dca.tar.gz diff --git a/features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk b/features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk new file mode 100644 index 00000000..3dde6c6a --- /dev/null +++ b/features/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ts4800-mbrboot +# +################################################################################ + +TS4800_MBRBOOT_VERSION = cf8f7072ed5a4a4e48fcb9841b2e31e519ec5dca +TS4800_MBRBOOT_SITE = $(call github,embeddedarm,ts4800-mbrboot,$(TS4800_MBRBOOT_VERSION)) +TS4800_MBRBOOT_LICENSE = BSD-2-Clause +TS4800_MBRBOOT_LICENSE_FILES = LICENSE +TS4800_MBRBOOT_INSTALL_IMAGES = YES + +define TS4800_MBRBOOT_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define TS4800_MBRBOOT_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/mbrboot.bin $(BINARIES_DIR)/mbrboot.bin +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch b/features/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch new file mode 100644 index 00000000..8b814f2d --- /dev/null +++ b/features/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch @@ -0,0 +1,742 @@ +From ee11fed43e2bd029f71af1e72ab9bb5652f5fc54 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Wed, 29 Jul 2015 20:32:59 +0300 +Subject: [PATCH] Revert "arch: Make board selection choices optional" + +This reverts commit a26cd04920dc069fd6e91abb785426cf6c29f45f. + +Reverted commit caused an issue with "make oldconfig" - default prompt +for target selection was set as No that lead to missing platform +selection by automated scripts like that: +------------------>8------------------ +"yes "" | make oldconfig" on defconfig +------------------>8------------------ + +And that lead to build failure: +------------------>8------------------ +$ make +scripts/kconfig/conf --silentoldconfig Kconfig + CHK include/config.h + UPD include/config.h + GEN include/autoconf.mk +In file included from ./include/common.h:18:0: +include/config.h:5:22: fatal error: configs/.h: No such file or directory + #include + ^ +compilation terminated. +scripts/Makefile.autoconf:72: recipe for target 'include/autoconf.mk' failed +make[1]: *** [include/autoconf.mk] Error 1 +------------------>8------------------ + +Signed-off-by: Alexey Brodkin +--- + arch/arc/Kconfig | 1 - + arch/arm/Kconfig | 1 - + arch/arm/cpu/armv7/exynos/Kconfig | 1 - + arch/arm/cpu/armv7/mx5/Kconfig | 1 - + arch/arm/cpu/armv7/mx6/Kconfig | 1 - + arch/arm/cpu/armv7/omap3/Kconfig | 1 - + arch/arm/cpu/armv7/omap4/Kconfig | 1 - + arch/arm/cpu/armv7/omap5/Kconfig | 1 - + arch/arm/cpu/armv7/rmobile/Kconfig | 1 - + arch/arm/cpu/armv7/s5pc1xx/Kconfig | 1 - + arch/arm/mach-at91/Kconfig | 1 - + arch/arm/mach-bcm283x/Kconfig | 1 - + arch/arm/mach-davinci/Kconfig | 1 - + arch/arm/mach-integrator/Kconfig | 2 -- + arch/arm/mach-keystone/Kconfig | 1 - + arch/arm/mach-kirkwood/Kconfig | 1 - + arch/arm/mach-nomadik/Kconfig | 1 - + arch/arm/mach-orion5x/Kconfig | 1 - + arch/arm/mach-socfpga/Kconfig | 1 - + arch/arm/mach-tegra/Kconfig | 1 - + arch/arm/mach-tegra/tegra114/Kconfig | 1 - + arch/arm/mach-tegra/tegra124/Kconfig | 1 - + arch/arm/mach-tegra/tegra20/Kconfig | 1 - + arch/arm/mach-tegra/tegra30/Kconfig | 1 - + arch/arm/mach-zynq/Kconfig | 1 - + arch/avr32/Kconfig | 1 - + arch/blackfin/Kconfig | 1 - + arch/m68k/Kconfig | 1 - + arch/microblaze/Kconfig | 1 - + arch/mips/Kconfig | 1 - + arch/nds32/Kconfig | 1 - + arch/nios2/Kconfig | 1 - + arch/openrisc/Kconfig | 1 - + arch/powerpc/Kconfig | 1 - + arch/powerpc/cpu/mpc512x/Kconfig | 1 - + arch/powerpc/cpu/mpc5xx/Kconfig | 1 - + arch/powerpc/cpu/mpc5xxx/Kconfig | 1 - + arch/powerpc/cpu/mpc8260/Kconfig | 1 - + arch/powerpc/cpu/mpc83xx/Kconfig | 1 - + arch/powerpc/cpu/mpc85xx/Kconfig | 1 - + arch/powerpc/cpu/mpc86xx/Kconfig | 1 - + arch/powerpc/cpu/mpc8xx/Kconfig | 1 - + arch/powerpc/cpu/ppc4xx/Kconfig | 1 - + arch/sh/Kconfig | 1 - + arch/sparc/Kconfig | 1 - + board/amcc/canyonlands/Kconfig | 1 - + board/coreboot/Kconfig | 1 - + board/dbau1x00/Kconfig | 1 - + board/google/Kconfig | 1 - + board/intel/Kconfig | 1 - + board/micronas/vct/Kconfig | 1 - + board/seco/Kconfig | 2 -- + board/sunxi/Kconfig | 1 - + 53 files changed, 55 deletions(-) + +diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig +index 925e312..640cda8 100644 +--- a/arch/arc/Kconfig ++++ b/arch/arc/Kconfig +@@ -129,7 +129,6 @@ config ARC_CACHE_LINE_SHIFT + + choice + prompt "Target select" +- optional + + config TARGET_TB100 + bool "Support tb100" +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 9908b43..8eeb46c 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -64,7 +64,6 @@ config SEMIHOSTING + + choice + prompt "Target select" +- optional + + config ARCH_AT91 + bool "Atmel AT91" +diff --git a/arch/arm/cpu/armv7/exynos/Kconfig b/arch/arm/cpu/armv7/exynos/Kconfig +index 4a7d82f..f2fe748 100644 +--- a/arch/arm/cpu/armv7/exynos/Kconfig ++++ b/arch/arm/cpu/armv7/exynos/Kconfig +@@ -2,7 +2,6 @@ if ARCH_EXYNOS + + choice + prompt "EXYNOS board select" +- optional + + config TARGET_SMDKV310 + select SUPPORT_SPL +diff --git a/arch/arm/cpu/armv7/mx5/Kconfig b/arch/arm/cpu/armv7/mx5/Kconfig +index 9f250c6..2d6c0ce 100644 +--- a/arch/arm/cpu/armv7/mx5/Kconfig ++++ b/arch/arm/cpu/armv7/mx5/Kconfig +@@ -12,7 +12,6 @@ config MX53 + + choice + prompt "MX5 board select" +- optional + + config TARGET_USBARMORY + bool "Support USB armory" +diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig +index 10908c4..662596f 100644 +--- a/arch/arm/cpu/armv7/mx6/Kconfig ++++ b/arch/arm/cpu/armv7/mx6/Kconfig +@@ -27,7 +27,6 @@ config MX6SX + + choice + prompt "MX6 board select" +- optional + + config TARGET_SECOMX6 + bool "Support secomx6 boards" +diff --git a/arch/arm/cpu/armv7/omap3/Kconfig b/arch/arm/cpu/armv7/omap3/Kconfig +index b32a6b0..cc82c50 100644 +--- a/arch/arm/cpu/armv7/omap3/Kconfig ++++ b/arch/arm/cpu/armv7/omap3/Kconfig +@@ -2,7 +2,6 @@ if OMAP34XX + + choice + prompt "OMAP3 board select" +- optional + + config TARGET_AM3517_EVM + bool "AM3517 EVM" +diff --git a/arch/arm/cpu/armv7/omap4/Kconfig b/arch/arm/cpu/armv7/omap4/Kconfig +index df27ea1..eccf897 100644 +--- a/arch/arm/cpu/armv7/omap4/Kconfig ++++ b/arch/arm/cpu/armv7/omap4/Kconfig +@@ -2,7 +2,6 @@ if OMAP44XX + + choice + prompt "OMAP4 board select" +- optional + + config TARGET_DUOVERO + bool "OMAP4430 Gumstix Duovero" +diff --git a/arch/arm/cpu/armv7/omap5/Kconfig b/arch/arm/cpu/armv7/omap5/Kconfig +index 20c3bd9..aca862d 100644 +--- a/arch/arm/cpu/armv7/omap5/Kconfig ++++ b/arch/arm/cpu/armv7/omap5/Kconfig +@@ -2,7 +2,6 @@ if OMAP54XX + + choice + prompt "OMAP5 board select" +- optional + + config TARGET_CM_T54 + bool "CompuLab CM-T54" +diff --git a/arch/arm/cpu/armv7/rmobile/Kconfig b/arch/arm/cpu/armv7/rmobile/Kconfig +index ef56286..638b63d 100644 +--- a/arch/arm/cpu/armv7/rmobile/Kconfig ++++ b/arch/arm/cpu/armv7/rmobile/Kconfig +@@ -2,7 +2,6 @@ if RMOBILE + + choice + prompt "Renesus ARM SoCs board select" +- optional + + config TARGET_ARMADILLO_800EVA + bool "armadillo 800 eva board" +diff --git a/arch/arm/cpu/armv7/s5pc1xx/Kconfig b/arch/arm/cpu/armv7/s5pc1xx/Kconfig +index 792ef59..65cc9eb 100644 +--- a/arch/arm/cpu/armv7/s5pc1xx/Kconfig ++++ b/arch/arm/cpu/armv7/s5pc1xx/Kconfig +@@ -2,7 +2,6 @@ if ARCH_S5PC1XX + + choice + prompt "S5PC1XX board select" +- optional + + config TARGET_S5P_GONI + bool "S5P Goni board" +diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig +index bbf4228..5dc2cb2 100644 +--- a/arch/arm/mach-at91/Kconfig ++++ b/arch/arm/mach-at91/Kconfig +@@ -2,7 +2,6 @@ if ARCH_AT91 + + choice + prompt "Atmel AT91 board select" +- optional + + config TARGET_AT91RM9200EK + bool "Atmel AT91RM9200 evaluation kit" +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 2315a13..d40f505 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -3,7 +3,6 @@ menu "Broadcom BCM283X family" + + choice + prompt "Broadcom BCM283X board select" +- optional + + config TARGET_RPI + bool "Raspberry Pi" +diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig +index e6cb390..3ef55d3 100644 +--- a/arch/arm/mach-davinci/Kconfig ++++ b/arch/arm/mach-davinci/Kconfig +@@ -2,7 +2,6 @@ if ARCH_DAVINCI + + choice + prompt "DaVinci board select" +- optional + + config TARGET_ENBW_CMC + bool "EnBW CMC board" +diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig +index c54d69d..8ffc544 100644 +--- a/arch/arm/mach-integrator/Kconfig ++++ b/arch/arm/mach-integrator/Kconfig +@@ -3,7 +3,6 @@ menu "Integrator Options" + + choice + prompt "Integrator platform select" +- optional + + config ARCH_INTEGRATOR_AP + bool "Support Integrator/AP platform" +@@ -19,7 +18,6 @@ config ARCH_CINTEGRATOR + + choice + prompt "Integrator core module select" +- optional + + config CM720T + bool "Core Module for ARM720T" +diff --git a/arch/arm/mach-keystone/Kconfig b/arch/arm/mach-keystone/Kconfig +index 67f1a33..134ae87 100644 +--- a/arch/arm/mach-keystone/Kconfig ++++ b/arch/arm/mach-keystone/Kconfig +@@ -2,7 +2,6 @@ if ARCH_KEYSTONE + + choice + prompt "TI Keystone board select" +- optional + + config TARGET_K2HK_EVM + bool "TI Keystone 2 Kepler/Hawking EVM" +diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig +index 1261885..45c6687 100644 +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -2,7 +2,6 @@ if KIRKWOOD + + choice + prompt "Marvell Kirkwood board select" +- optional + + config TARGET_OPENRD + bool "Marvell OpenRD Board" +diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig +index ba72a41..265f336 100644 +--- a/arch/arm/mach-nomadik/Kconfig ++++ b/arch/arm/mach-nomadik/Kconfig +@@ -2,7 +2,6 @@ if ARCH_NOMADIK + + choice + prompt "Nomadik board select" +- optional + + config NOMADIK_NHK8815 + bool "ST 8815 Nomadik Hardware Kit" +diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig +index 7644b8d..291c511 100644 +--- a/arch/arm/mach-orion5x/Kconfig ++++ b/arch/arm/mach-orion5x/Kconfig +@@ -2,7 +2,6 @@ if ORION5X + + choice + prompt "Marvell Orion board select" +- optional + + config TARGET_EDMINIV2 + bool "LaCie Ethernet Disk mini V2" +diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig +index e46c348..204efca 100644 +--- a/arch/arm/mach-socfpga/Kconfig ++++ b/arch/arm/mach-socfpga/Kconfig +@@ -2,7 +2,6 @@ if ARCH_SOCFPGA + + choice + prompt "Altera SOCFPGA board select" +- optional + + config TARGET_SOCFPGA_ARRIA5 + bool "Altera SOCFPGA Arria V" +diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig +index 54bd648..ef77c84 100644 +--- a/arch/arm/mach-tegra/Kconfig ++++ b/arch/arm/mach-tegra/Kconfig +@@ -2,7 +2,6 @@ if TEGRA + + choice + prompt "Tegra SoC select" +- optional + + config TEGRA20 + bool "Tegra20 family" +diff --git a/arch/arm/mach-tegra/tegra114/Kconfig b/arch/arm/mach-tegra/tegra114/Kconfig +index 1047b92..31012bc 100644 +--- a/arch/arm/mach-tegra/tegra114/Kconfig ++++ b/arch/arm/mach-tegra/tegra114/Kconfig +@@ -2,7 +2,6 @@ if TEGRA114 + + choice + prompt "Tegra114 board select" +- optional + + config TARGET_DALMORE + bool "NVIDIA Tegra114 Dalmore evaluation board" +diff --git a/arch/arm/mach-tegra/tegra124/Kconfig b/arch/arm/mach-tegra/tegra124/Kconfig +index f3324ff..86c1301 100644 +--- a/arch/arm/mach-tegra/tegra124/Kconfig ++++ b/arch/arm/mach-tegra/tegra124/Kconfig +@@ -2,7 +2,6 @@ if TEGRA124 + + choice + prompt "Tegra124 board select" +- optional + + config TARGET_JETSON_TK1 + bool "NVIDIA Tegra124 Jetson TK1 board" +diff --git a/arch/arm/mach-tegra/tegra20/Kconfig b/arch/arm/mach-tegra/tegra20/Kconfig +index 1bb8dff..7f09f81 100644 +--- a/arch/arm/mach-tegra/tegra20/Kconfig ++++ b/arch/arm/mach-tegra/tegra20/Kconfig +@@ -2,7 +2,6 @@ if TEGRA20 + + choice + prompt "Tegra20 board select" +- optional + + config TARGET_HARMONY + bool "NVIDIA Tegra20 Harmony evaluation board" +diff --git a/arch/arm/mach-tegra/tegra30/Kconfig b/arch/arm/mach-tegra/tegra30/Kconfig +index e78331e..3abdc7b 100644 +--- a/arch/arm/mach-tegra/tegra30/Kconfig ++++ b/arch/arm/mach-tegra/tegra30/Kconfig +@@ -2,7 +2,6 @@ if TEGRA30 + + choice + prompt "Tegra30 board select" +- optional + + config TARGET_APALIS_T30 + bool "Toradex Apalis T30 board" +diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig +index 1de5b07..6b0e295 100644 +--- a/arch/arm/mach-zynq/Kconfig ++++ b/arch/arm/mach-zynq/Kconfig +@@ -10,7 +10,6 @@ config ZYNQ_CUSTOM_INIT + + choice + prompt "Xilinx Zynq board select" +- optional + + config TARGET_ZYNQ_ZED + bool "Zynq ZedBoard" +diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig +index eb33774..801b9cc 100644 +--- a/arch/avr32/Kconfig ++++ b/arch/avr32/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_ATNGW100 + bool "Support atngw100" +diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig +index 0a2fb4d..31913fe 100644 +--- a/arch/blackfin/Kconfig ++++ b/arch/blackfin/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_BCT_BRETTL2 + bool "Support bct-brettl2" +diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig +index 26509b7..69cb0f7 100644 +--- a/arch/m68k/Kconfig ++++ b/arch/m68k/Kconfig +@@ -114,7 +114,6 @@ config M548x + + choice + prompt "Target select" +- optional + + config TARGET_M52277EVB + bool "Support M52277EVB" +diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig +index 077b2a7..6f419f0 100644 +--- a/arch/microblaze/Kconfig ++++ b/arch/microblaze/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_MICROBLAZE_GENERIC + bool "Support microblaze-generic" +diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig +index 7f7e258..87b94ac 100644 +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -10,7 +10,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_QEMU_MIPS + bool "Support qemu-mips" +diff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig +index 98b0282..81b0a01 100644 +--- a/arch/nds32/Kconfig ++++ b/arch/nds32/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_ADP_AG101 + bool "Support adp-ag101" +diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig +index 8ae7f6e..b3be7b5 100644 +--- a/arch/nios2/Kconfig ++++ b/arch/nios2/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_NIOS2_GENERIC + bool "Support nios2-generic" +diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig +index 11014d1..4d62b4c 100644 +--- a/arch/openrisc/Kconfig ++++ b/arch/openrisc/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_OPENRISC_GENERIC + bool "Support openrisc-generic" +diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig +index 3b3f446..8e5a3e2 100644 +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "CPU select" +- optional + + config MPC512X + bool "MPC512X" +diff --git a/arch/powerpc/cpu/mpc512x/Kconfig b/arch/powerpc/cpu/mpc512x/Kconfig +index 53450ae..a0f0ede 100644 +--- a/arch/powerpc/cpu/mpc512x/Kconfig ++++ b/arch/powerpc/cpu/mpc512x/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_PDM360NG + bool "Support pdm360ng" +diff --git a/arch/powerpc/cpu/mpc5xx/Kconfig b/arch/powerpc/cpu/mpc5xx/Kconfig +index 5275447..aad4a7c 100644 +--- a/arch/powerpc/cpu/mpc5xx/Kconfig ++++ b/arch/powerpc/cpu/mpc5xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_CMI_MPC5XX + bool "Support cmi_mpc5xx" +diff --git a/arch/powerpc/cpu/mpc5xxx/Kconfig b/arch/powerpc/cpu/mpc5xxx/Kconfig +index 5d49228..eec9d7d 100644 +--- a/arch/powerpc/cpu/mpc5xxx/Kconfig ++++ b/arch/powerpc/cpu/mpc5xxx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_A3M071 + bool "Support a3m071" +diff --git a/arch/powerpc/cpu/mpc8260/Kconfig b/arch/powerpc/cpu/mpc8260/Kconfig +index e93732d..55941c8 100644 +--- a/arch/powerpc/cpu/mpc8260/Kconfig ++++ b/arch/powerpc/cpu/mpc8260/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_KM82XX + bool "Support km82xx" +diff --git a/arch/powerpc/cpu/mpc83xx/Kconfig b/arch/powerpc/cpu/mpc83xx/Kconfig +index 3fb901f..88a3bd6 100644 +--- a/arch/powerpc/cpu/mpc83xx/Kconfig ++++ b/arch/powerpc/cpu/mpc83xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_MPC8308_P1M + bool "Support mpc8308_p1m" +diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig +index 3e8d0b1..aff5fdb 100644 +--- a/arch/powerpc/cpu/mpc85xx/Kconfig ++++ b/arch/powerpc/cpu/mpc85xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_SBC8548 + bool "Support sbc8548" +diff --git a/arch/powerpc/cpu/mpc86xx/Kconfig b/arch/powerpc/cpu/mpc86xx/Kconfig +index fe1859d..14e8b1a 100644 +--- a/arch/powerpc/cpu/mpc86xx/Kconfig ++++ b/arch/powerpc/cpu/mpc86xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_SBC8641D + bool "Support sbc8641d" +diff --git a/arch/powerpc/cpu/mpc8xx/Kconfig b/arch/powerpc/cpu/mpc8xx/Kconfig +index 79cee35..e8bcbe9 100644 +--- a/arch/powerpc/cpu/mpc8xx/Kconfig ++++ b/arch/powerpc/cpu/mpc8xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_TQM823L + bool "Support TQM823L" +diff --git a/arch/powerpc/cpu/ppc4xx/Kconfig b/arch/powerpc/cpu/ppc4xx/Kconfig +index 10b86e0..4d5954a 100644 +--- a/arch/powerpc/cpu/ppc4xx/Kconfig ++++ b/arch/powerpc/cpu/ppc4xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_CSB272 + bool "Support csb272" +diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig +index 6ac22af..ff8f5b5 100644 +--- a/arch/sh/Kconfig ++++ b/arch/sh/Kconfig +@@ -29,7 +29,6 @@ config SH_32BIT + + choice + prompt "Target select" +- optional + + config TARGET_RSK7203 + bool "RSK+ 7203" +diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig +index 04dc08f..2df09b2 100644 +--- a/arch/sparc/Kconfig ++++ b/arch/sparc/Kconfig +@@ -14,7 +14,6 @@ config LEON3 + + choice + prompt "Board select" +- optional + + config TARGET_GRSIM_LEON2 + bool "GRSIM simulating a LEON2 board" +diff --git a/board/amcc/canyonlands/Kconfig b/board/amcc/canyonlands/Kconfig +index a655dbc..ef66ad4 100644 +--- a/board/amcc/canyonlands/Kconfig ++++ b/board/amcc/canyonlands/Kconfig +@@ -11,7 +11,6 @@ config SYS_CONFIG_NAME + + choice BOARD_TYPE + prompt "Select which board to build for" +- optional + + config CANYONLANDS + bool "Glacier" +diff --git a/board/coreboot/Kconfig b/board/coreboot/Kconfig +index ede6065..dc9b70f 100644 +--- a/board/coreboot/Kconfig ++++ b/board/coreboot/Kconfig +@@ -8,7 +8,6 @@ if VENDOR_COREBOOT + + choice + prompt "Mainboard model" +- optional + + config TARGET_COREBOOT + bool "coreboot" +diff --git a/board/dbau1x00/Kconfig b/board/dbau1x00/Kconfig +index b813adb..1286e45 100644 +--- a/board/dbau1x00/Kconfig ++++ b/board/dbau1x00/Kconfig +@@ -13,7 +13,6 @@ menu "dbau1x00 board options" + + choice + prompt "Select au1x00 SoC type" +- optional + + config DBAU1100 + bool "Select AU1100" +diff --git a/board/google/Kconfig b/board/google/Kconfig +index e9559c9..302f68e 100644 +--- a/board/google/Kconfig ++++ b/board/google/Kconfig +@@ -8,7 +8,6 @@ if VENDOR_GOOGLE + + choice + prompt "Mainboard model" +- optional + + config TARGET_CHROMEBOOK_LINK + bool "Chromebook link" +diff --git a/board/intel/Kconfig b/board/intel/Kconfig +index 3d9ecf0..7fe21b9 100644 +--- a/board/intel/Kconfig ++++ b/board/intel/Kconfig +@@ -8,7 +8,6 @@ if VENDOR_INTEL + + choice + prompt "Mainboard model" +- optional + + config TARGET_CROWNBAY + bool "Crown Bay" +diff --git a/board/micronas/vct/Kconfig b/board/micronas/vct/Kconfig +index c518079..288a1ae 100644 +--- a/board/micronas/vct/Kconfig ++++ b/board/micronas/vct/Kconfig +@@ -13,7 +13,6 @@ menu "vct board options" + + choice + prompt "Board variant" +- optional + + config VCT_PLATINUM + bool "Enable VCT_PLATINUM" +diff --git a/board/seco/Kconfig b/board/seco/Kconfig +index af16697..dcb1ac8 100644 +--- a/board/seco/Kconfig ++++ b/board/seco/Kconfig +@@ -2,7 +2,6 @@ if TARGET_SECOMX6 + + choice + prompt "SECO i.MX6 Board variant" +- optional + + config SECOMX6_Q7 + bool "Q7" +@@ -17,7 +16,6 @@ endchoice + + choice + prompt "SECO i.MX6 SoC variant" +- optional + + config SECOMX6Q + bool "i.MX6Q" +diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig +index 2a1cd3c..808de26 100644 +--- a/board/sunxi/Kconfig ++++ b/board/sunxi/Kconfig +@@ -18,7 +18,6 @@ config SUNXI_GEN_SUN6I + + choice + prompt "Sunxi SoC Variant" +- optional + + config MACH_SUN4I + bool "sun4i (Allwinner A10)" +-- +2.4.3 + diff --git a/features/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch b/features/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch new file mode 100644 index 00000000..eded9a31 --- /dev/null +++ b/features/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch @@ -0,0 +1,39 @@ +From 7c8d81605302e7d7fdd3e7d8eb69302bddc64a2c Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Fri, 16 Sep 2016 12:12:26 +0300 +Subject: [PATCH] arc: Use -mcpu=XXX instead of obsolete -marcXXX + +With newer ARC tools old way of CPU specification gets obsolete, +so we're switching to newer and more common way of setting "-mcpu". + +Signed-off-by: Alexey Brodkin +--- + arch/arc/config.mk | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arc/config.mk b/arch/arc/config.mk +index 7c974f0..13676bd 100644 +--- a/arch/arc/config.mk ++++ b/arch/arc/config.mk +@@ -31,15 +31,15 @@ CONFIG_MMU = 1 + endif + + ifdef CONFIG_CPU_ARC750D +-PLATFORM_CPPFLAGS += -marc700 ++PLATFORM_CPPFLAGS += -mcpu=arc700 + endif + + ifdef CONFIG_CPU_ARC770D +-PLATFORM_CPPFLAGS += -marc700 -mlock -mswape ++PLATFORM_CPPFLAGS += -mcpu=arc700 -mlock -mswape + endif + + ifdef CONFIG_CPU_ARCEM6 +-PLATFORM_CPPFLAGS += -marcem ++PLATFORM_CPPFLAGS += -mcpu=arcem + endif + + ifdef CONFIG_CPU_ARCHS34 +-- +2.7.4 + diff --git a/features/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch b/features/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch new file mode 100644 index 00000000..eded9a31 --- /dev/null +++ b/features/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch @@ -0,0 +1,39 @@ +From 7c8d81605302e7d7fdd3e7d8eb69302bddc64a2c Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Fri, 16 Sep 2016 12:12:26 +0300 +Subject: [PATCH] arc: Use -mcpu=XXX instead of obsolete -marcXXX + +With newer ARC tools old way of CPU specification gets obsolete, +so we're switching to newer and more common way of setting "-mcpu". + +Signed-off-by: Alexey Brodkin +--- + arch/arc/config.mk | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arc/config.mk b/arch/arc/config.mk +index 7c974f0..13676bd 100644 +--- a/arch/arc/config.mk ++++ b/arch/arc/config.mk +@@ -31,15 +31,15 @@ CONFIG_MMU = 1 + endif + + ifdef CONFIG_CPU_ARC750D +-PLATFORM_CPPFLAGS += -marc700 ++PLATFORM_CPPFLAGS += -mcpu=arc700 + endif + + ifdef CONFIG_CPU_ARC770D +-PLATFORM_CPPFLAGS += -marc700 -mlock -mswape ++PLATFORM_CPPFLAGS += -mcpu=arc700 -mlock -mswape + endif + + ifdef CONFIG_CPU_ARCEM6 +-PLATFORM_CPPFLAGS += -marcem ++PLATFORM_CPPFLAGS += -mcpu=arcem + endif + + ifdef CONFIG_CPU_ARCHS34 +-- +2.7.4 + diff --git a/features/buildroot/boot/uboot/Config.in b/features/buildroot/boot/uboot/Config.in new file mode 100644 index 00000000..993979f2 --- /dev/null +++ b/features/buildroot/boot/uboot/Config.in @@ -0,0 +1,555 @@ +config BR2_TARGET_UBOOT + bool "U-Boot" + help + Build "Das U-Boot" Boot Monitor + +if BR2_TARGET_UBOOT +choice + prompt "Build system" + default BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG if BR2_TARGET_UBOOT_LATEST_VERSION + default BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + bool "Kconfig" + help + Select this option if you use a recent U-Boot version (2015.04 + or newer), so that we use the Kconfig build system. + +config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + bool "Legacy" + help + Select this option if you use an old U-Boot (older than + 2015.04), so that we use the old build system. + +endchoice + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY +config BR2_TARGET_UBOOT_BOARDNAME + string "U-Boot board name" + help + One of U-Boot supported boards to be built. + This will be suffixed with _config to meet U-Boot standard + naming. See boards.cfg in U-Boot source code for the list of + available configurations. +endif + +choice + prompt "U-Boot Version" + help + Select the specific U-Boot version you want to use + +config BR2_TARGET_UBOOT_LATEST_VERSION + bool "2019.07" + +config BR2_TARGET_UBOOT_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_UBOOT_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_UBOOT_CUSTOM_GIT + bool "Custom Git repository" + +config BR2_TARGET_UBOOT_CUSTOM_HG + bool "Custom Mercurial repository" + +config BR2_TARGET_UBOOT_CUSTOM_SVN + bool "Custom Subversion repository" + +endchoice + +config BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE + string "U-Boot version" + depends on BR2_TARGET_UBOOT_CUSTOM_VERSION + +config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION + string "URL of custom U-Boot tarball" + depends on BR2_TARGET_UBOOT_CUSTOM_TARBALL + +if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN + +config BR2_TARGET_UBOOT_CUSTOM_REPO_URL + string "URL of custom repository" + default BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL \ + if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != "" # legacy + +config BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION + string "Custom repository version" + default BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION \ + if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != "" # legacy + help + Revision to use in the typical format used by + Git/Mercurial/Subversion E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_UBOOT_VERSION + string + default "2019.07" if BR2_TARGET_UBOOT_LATEST_VERSION + default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_UBOOT_CUSTOM_VERSION + default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL + default BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION \ + if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN + +config BR2_TARGET_UBOOT_PATCH + string "Custom U-Boot patches" + default BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" # legacy + help + A space-separated list of patches to apply to U-Boot. + Each patch can be described as an URL, a local file path, + or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + + Most users may leave this empty + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG +choice + prompt "U-Boot configuration" + default BR2_TARGET_UBOOT_USE_DEFCONFIG + +config BR2_TARGET_UBOOT_USE_DEFCONFIG + bool "Using an in-tree board defconfig file" + +config BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG + bool "Using a custom board (def)config file" + +endchoice + +config BR2_TARGET_UBOOT_BOARD_DEFCONFIG + string "Board defconfig" + depends on BR2_TARGET_UBOOT_USE_DEFCONFIG + help + Name of the board for which U-Boot should be built, without + the _defconfig suffix. + +config BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG + help + Path to the U-Boot configuration file. + +config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main U-Boot configuration file. +endif + +config BR2_TARGET_UBOOT_NEEDS_DTC + bool "U-Boot needs dtc" + select BR2_PACKAGE_HOST_DTC + help + Select this option if your U-Boot board configuration + requires the Device Tree compiler to be available. + +config BR2_TARGET_UBOOT_NEEDS_PYLIBFDT + bool "U-Boot needs pylibfdt" + help + Select this option if your U-Boot board configuration + requires the Python libfdt library to be available. + +config BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS + bool "U-Boot needs pyelftools" + help + Select this option if your U-Boot board configuration + requires the Python pyelftools library to be available. + This is used by some rockchip SOCs for elf parsing. + For example: rk3399 soc boards. + +config BR2_TARGET_UBOOT_NEEDS_OPENSSL + bool "U-Boot needs OpenSSL" + help + Select this option if your U-Boot board configuration + requires OpenSSL to be available on the host. This is + typically the case when the board configuration has + CONFIG_FIT_SIGNATURE enabled. + +config BR2_TARGET_UBOOT_NEEDS_LZOP + bool "U-Boot needs lzop" + help + Select this option if your U-Boot board configuration + requires lzop to be available on the host. This is typically + the case when the board configuration has CONFIG_SPL_LZO + enabled. + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31 + bool "U-Boot needs ATF BL31" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE + depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + help + Some specific platforms (such as Allwinner A64/H5) + encapsulate the BL31 part of ATF inside U-Boot. This option + makes sure ATF gets built prior to U-Boot, and that the BL31 + variable pointing to ATF's BL31 binary, is passed during the + Buildroot build. + +choice + prompt "U-Boot ATF BL31 format" + default BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN + depends on BR2_TARGET_UBOOT_NEEDS_ATF_BL31 + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN + bool "bl31.bin" + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF + bool "bl31.elf" + +endchoice + +menu "U-Boot binary format" + +config BR2_TARGET_UBOOT_FORMAT_AIS + bool "u-boot.ais" + help + AIS (Application Image Script) is a format defined by TI. + It is required to load code/data on OMAP-L1 processors. + u-boot.ais contains U-Boot with the SPL support. + +config BR2_TARGET_UBOOT_FORMAT_BIN + bool "u-boot.bin" + default y + +config BR2_TARGET_UBOOT_FORMAT_DTB_BIN + bool "u-boot-dtb.bin" + +config BR2_TARGET_UBOOT_FORMAT_DTB_IMG + bool "u-boot-dtb.img" + +config BR2_TARGET_UBOOT_FORMAT_DTB_IMX + bool "u-boot-dtb.imx" + +config BR2_TARGET_UBOOT_FORMAT_IMG + bool "u-boot.img" + +config BR2_TARGET_UBOOT_FORMAT_IMX + bool "u-boot.imx" + +config BR2_TARGET_UBOOT_FORMAT_NAND_BIN + bool "u-boot-nand.bin" + +config BR2_TARGET_UBOOT_FORMAT_KWB + bool "u-boot.kwb (Marvell)" + depends on BR2_arm + +config BR2_TARGET_UBOOT_FORMAT_ELF + bool "u-boot.elf" + +config BR2_TARGET_UBOOT_FORMAT_SB + bool "u-boot.sb (Freescale i.MX28)" + depends on BR2_arm + +config BR2_TARGET_UBOOT_FORMAT_SD + bool "u-boot.sd (Freescale i.MX28)" + depends on BR2_arm + help + This is Freescale i.MX28 SB format, with a header for booting + from an SD card. + + U-boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +config BR2_TARGET_UBOOT_FORMAT_NAND + bool "u-boot.nand (Freescale i.MX28)" + depends on BR2_arm + help + This is Freescale i.MX28 BootStream format (.sb), with a + header for booting from a NAND flash. + + U-boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + There are two possibilities when preparing an image writable + to NAND flash: + 1) The NAND was not written at all yet or the BCB (Boot + Control Blocks) is broken. In this case, the NAND image + 'u-boot.nand' needs to written. + 2) The NAND flash was already written with a good BCB. This + applies after 'u-boot.nand' was correctly written. There is no + need to write the BCB again. In this case, the bootloader can + be upgraded by writing 'u-boot.sb'. + + To satisfy both cases, the 'u-boot.nand' image obtained from + mxsboot as well as the U-Boot make target 'u-boot.sb' are + copied to the binaries directory. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +if BR2_TARGET_UBOOT_FORMAT_NAND + +config BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE + int "NAND page size" + default 2048 + help + The NAND page size of the targets NAND flash in bytes as a + decimal integer value. + + The value provided here is passed to the -w option of mxsboot. + +config BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE + int "NAND OOB size" + default 64 + help + The NAND OOB size of the targets NAND flash in bytes as a + decimal integer value. + + The value provided here is passed to the -o option of mxsboot. + +config BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE + int "NAND erase size" + default 131072 + help + The NAND eraseblock size of the targets NAND flash in bytes as + a decimal integer value. + + The value provided here is passed to the -e option of mxsboot. + +endif + +config BR2_TARGET_UBOOT_FORMAT_CUSTOM + bool "Custom (specify below)" + help + On some platforms, the standard U-Boot binary is not called + u-boot.bin, but u-boot.bin. If this is your case, + you should select this option and specify the correct name(s) + in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME. + +config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME + string "U-Boot binary format: custom names" + depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM + help + In case the U-Boot binary for the target platform is not among + the default names, one or more custom names can be listed + here. + Use space to separate multiple names. + Example: + u-boot_magic.bin + +endmenu + +config BR2_TARGET_UBOOT_OMAP_IFT + bool "produce a .ift signed image (OMAP)" + depends on BR2_TARGET_UBOOT_FORMAT_BIN + depends on BR2_arm || BR2_armeb + select BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS + help + Use gpsign to produce an image of u-boot.bin signed with + a Configuration Header for booting on OMAP processors. + This allows U-Boot to boot without the need for an + intermediate bootloader (e.g. x-loader) if it is written + on the first sector of the boot medium. + This only works for some media, such as NAND. Check your + chip documentation for details. You might also want to + read the documentation of gpsign, the tool that generates + the .ift image, at: + https://github.com/nmenon/omap-u-boot-utils/blob/master/README + +if BR2_TARGET_UBOOT_OMAP_IFT + +config BR2_TARGET_UBOOT_OMAP_IFT_CONFIG + string "gpsign Configuration Header config file" + help + The Configuration Header (CH) config file defines the + desired content of the CH for the signed image. + It usually contains external RAM settings and + possibly other external devices initialization. + The omap-u-boot-utils software contains example + configuration files for some boards: + https://github.com/nmenon/omap-u-boot-utils/tree/master/configs + +endif + +config BR2_TARGET_UBOOT_SPL + bool "Install U-Boot SPL binary image" + depends on !BR2_TARGET_XLOADER + help + Install the U-Boot SPL binary image to the images + directory. + SPL is a first stage bootloader loaded into internal + memory in charge of enabling and configuring the + external memory (DDR), and load the u-boot program + into DDR. + +config BR2_TARGET_UBOOT_SPL_NAME + string "U-Boot SPL/TPL binary image name(s)" + default "spl/u-boot-spl.bin" + depends on BR2_TARGET_UBOOT_SPL + help + A space-separated list of SPL/TPL binaries, generated during + u-boot build. For most platform SPL name is spl/u-boot-spl.bin + and TPL name is tpl/u-boot-tpl.bin but not always. SPL name is + MLO on OMAP and SPL on i.MX6 for example. + +config BR2_TARGET_UBOOT_ZYNQ_IMAGE + bool "Generate image for Xilinx Zynq" + depends on BR2_arm + depends on BR2_TARGET_UBOOT_SPL + depends on BR2_TARGET_UBOOT_FORMAT_DTB_IMG + help + Generate the BOOT.BIN file from U-Boot's SPL. The image + boots the Xilinx Zynq chip without any FPGA bitstream. + A bitstream can be loaded by the U-Boot. The SPL searchs + for u-boot-dtb.img file so this U-Boot format is required + to be set. + +config BR2_TARGET_UBOOT_ZYNQMP + bool "Boot on the Xilinx ZynqMP SoCs" + depends on BR2_aarch64 + help + Enable options specific to the Xilinx ZynqMP family of SoCs. + +if BR2_TARGET_UBOOT_ZYNQMP + +config BR2_TARGET_UBOOT_ZYNQMP_PMUFW + string "PMU firmware location" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + help + Location of a PMU firmware binary. + + If not empty, instructs the U-Boot build process to generate + a boot.bin (to be loaded by the ZynqMP boot ROM) containing + both the U-Boot SPL and the PMU firmware in the + Xilinx-specific boot format. + + The value can be an absolute or relative path, and will be + used directly from where it is located, or an URI + (e.g. http://...), and it will be downloaded and used from + the download directory. + + If empty, the generated boot.bin will not contain a PMU + firmware. + + This feature requires U-Boot >= 2018.07. + +config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE + string "Custom psu_init_gpl file" + depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + help + On ZynqMP the booloader is responsible for some basic + initializations, such as enabling peripherals and + configuring pinmuxes. The psu_init_gpl.c file (and, + optionally, psu_init_gpl.h) contains the code for such + initializations. + + Although U-Boot contains psu_init_gpl.c files for some + boards, each of them describes only one specific + configuration. Users of a different board, or needing a + different configuration, can generate custom files using the + Xilinx development tools. + + Set this variable to the path to your psu_init_gpl.c file + (e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if + needed, should be in the same directory. U-Boot will build + and link the user-provided file instead of the built-in one. + + Leave empty to use the files provided by U-Boot. + + This feature requires commit + 6da4f67ad09cd8b311d77b2b04e557b7ef65b56c from upstream + U-Boot, available from versions after 2018.07. + +endif + +config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC + bool "CRC image for Altera SoC FPGA (mkpimage)" + depends on BR2_arm + depends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN + help + Pass the U-Boot image through the mkpimage tool to enable + booting on the Altera SoC FPGA based platforms. + + On some platforms, it's the SPL that needs to be passed + through mkpimage. On some other platforms there is no SPL + because the internal SRAM is big enough to store the full + U-Boot. In this case, it's directly the full U-Boot image + that is passed through mkpimage. + + If BR2_TARGET_UBOOT_SPL is enabled then + BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using + header version 0. + + Otherwise the full u-boot-dtb.bin is converted using + mkpimage header version 1. + + In either case the resulting file will be given a .crc + extension. + +menuconfig BR2_TARGET_UBOOT_ENVIMAGE + bool "Environment image" + help + Generate a valid binary environment image from a text file + describing the key=value pairs of the environment. + + The environment image will be called uboot-env.bin. + + Leave empty to generate image from compiled-in env. + +if BR2_TARGET_UBOOT_ENVIMAGE + +config BR2_TARGET_UBOOT_ENVIMAGE_SOURCE + string "Source files for environment" + help + Text files describing the environment. Files should have + lines of the form var=value, one per line. Blank lines and + lines starting with a # are ignored. + + Multiple source files are concatenated in the order listed. + +config BR2_TARGET_UBOOT_ENVIMAGE_SIZE + string "Size of environment" + help + Size of envronment, can be prefixed with 0x for hexadecimal + values. + +config BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT + bool "Environment has two copies" + help + Some platforms define in their U-Boot configuration that the + U-Boot environment should be duplicated in two locations (for + extra safety). Check your U-Boot configuration for the + CONFIG_ENV_ADDR_REDUND and CONFIG_ENV_SIZE_REDUND settings to + see if this is the case for your platform. + + If it is the case, then you should enable this option to + ensure that the U-Boot environment image generated by + Buildroot is compatible with the "redundant environment" + mechanism of U-Boot. + +endif # BR2_TARGET_UBOOT_ENVIMAGE + +config BR2_TARGET_UBOOT_BOOT_SCRIPT + bool "Generate a U-Boot boot script" + help + Generate a U-Boot boot script, given a file listing U-Boot + commands to be executed at boot time. The generated boot + script will be called 'boot.scr'. + +if BR2_TARGET_UBOOT_BOOT_SCRIPT + +config BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE + string "U-Boot boot script source" + help + Source file to generate the U-Boot boot script. + +endif + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + +config BR2_TARGET_UBOOT_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to arch/ARCH/dts/ before starting the + build. + + To use this device tree source file, the U-Boot configuration + file must refer to it. + +endif + +endif # BR2_TARGET_UBOOT diff --git a/features/buildroot/boot/uboot/uboot.hash b/features/buildroot/boot/uboot/uboot.hash new file mode 100644 index 00000000..d2830eeb --- /dev/null +++ b/features/buildroot/boot/uboot/uboot.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 bff4fa77e8da17521c030ca4c5b947a056c1b1be4d3e6ee8637020b8d50251d0 u-boot-2019.07.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Licenses/gpl-2.0.txt diff --git a/features/buildroot/boot/uboot/uboot.mk b/features/buildroot/boot/uboot/uboot.mk new file mode 100644 index 00000000..0a8856d7 --- /dev/null +++ b/features/buildroot/boot/uboot/uboot.mk @@ -0,0 +1,473 @@ +################################################################################ +# +# uboot +# +################################################################################ + +UBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION)) +UBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME)) + +UBOOT_LICENSE = GPL-2.0+ +UBOOT_LICENSE_FILES = Licenses/gpl-2.0.txt + +UBOOT_INSTALL_IMAGES = YES + +ifeq ($(UBOOT_VERSION),custom) +# Handle custom U-Boot tarballs as specified by the configuration +UBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)) +UBOOT_SITE = $(patsubst %/,%,$(dir $(UBOOT_TARBALL))) +UBOOT_SOURCE = $(notdir $(UBOOT_TARBALL)) +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = git +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_HG),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = hg +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_SVN),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = svn +else +# Handle stable official U-Boot versions +UBOOT_SITE = ftp://ftp.denx.de/pub/u-boot +UBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2 +endif + +ifeq ($(BR2_TARGET_UBOOT)$(BR2_TARGET_UBOOT_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE) +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN),y) +UBOOT_BINS += u-boot.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y) +UBOOT_BINS += u-boot +# To make elf usable for debuging on ARC use special target +ifeq ($(BR2_arc),y) +UBOOT_MAKE_TARGET += mdbtrick +endif +endif + +# Call 'make all' unconditionally +UBOOT_MAKE_TARGET += all + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y) +UBOOT_BINS += u-boot.kwb +UBOOT_MAKE_TARGET += u-boot.kwb +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y) +UBOOT_BINS += u-boot.ais +UBOOT_MAKE_TARGET += u-boot.ais +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y) +UBOOT_BINS += u-boot-nand.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y) +UBOOT_BINS += u-boot-dtb.img +UBOOT_MAKE_TARGET += u-boot-dtb.img +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMX),y) +UBOOT_BINS += u-boot-dtb.imx +UBOOT_MAKE_TARGET += u-boot-dtb.imx +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_BIN),y) +UBOOT_BINS += u-boot-dtb.bin +UBOOT_MAKE_TARGET += u-boot-dtb.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y) +UBOOT_BINS += u-boot.img +UBOOT_MAKE_TARGET += u-boot.img +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y) +UBOOT_BINS += u-boot.imx +UBOOT_MAKE_TARGET += u-boot.imx +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y) +UBOOT_BINS += u-boot.sb +UBOOT_MAKE_TARGET += u-boot.sb +# mxsimage needs OpenSSL +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y) +# BootStream (.sb) is generated by U-Boot, we convert it to SD format +UBOOT_BINS += u-boot.sd +UBOOT_MAKE_TARGET += u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y) +UBOOT_BINS += u-boot.nand +UBOOT_MAKE_TARGET += u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y) +UBOOT_BINS += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME)) +endif + +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y) +UBOOT_BINS += u-boot.bin +UBOOT_BIN_IFT = u-boot.bin.ift +endif + +# The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so +# we have to special case it. Similar for i386/x86_64 -> x86 +ifeq ($(KERNEL_ARCH),arm64) +UBOOT_ARCH = arm +else ifneq ($(filter $(KERNEL_ARCH),i386 x86_64),) +UBOOT_ARCH = x86 +else +UBOOT_ARCH = $(KERNEL_ARCH) +endif + +UBOOT_MAKE_OPTS += \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH=$(UBOOT_ARCH) \ + HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31),y) +UBOOT_DEPENDENCIES += arm-trusted-firmware +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF),y) +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.elf +else +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.bin +endif +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y) +UBOOT_DEPENDENCIES += host-dtc +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYLIBFDT),y) +UBOOT_DEPENDENCIES += host-python host-swig +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS),y) +UBOOT_DEPENDENCIES += host-python-pyelftools +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSSL),y) +UBOOT_DEPENDENCIES += host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_LZOP),y) +UBOOT_DEPENDENCIES += host-lzop +endif + +# prior to u-boot 2013.10 the license info was in COPYING. Copy it so +# legal-info finds it +define UBOOT_COPY_OLD_LICENSE_FILE + if [ -f $(@D)/COPYING ]; then \ + $(INSTALL) -m 0644 -D $(@D)/COPYING $(@D)/Licenses/gpl-2.0.txt; \ + fi +endef + +UBOOT_POST_EXTRACT_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE +UBOOT_POST_RSYNC_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define UBOOT_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),u-boot) +endef +UBOOT_POST_EXTRACT_HOOKS += UBOOT_XTENSA_OVERLAY_EXTRACT +UBOOT_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +# Analogous code exists in linux/linux.mk. Basically, the generic +# package infrastructure handles downloading and applying remote +# patches. Local patches are handled depending on whether they are +# directories or files. +UBOOT_PATCHES = $(call qstrip,$(BR2_TARGET_UBOOT_PATCH)) +UBOOT_PATCH = $(filter ftp://% http://% https://%,$(UBOOT_PATCHES)) + +define UBOOT_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(UBOOT_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_LOCAL_PATCHES + +# This is equivalent to upstream commit +# http://git.denx.de/?p=u-boot.git;a=commitdiff;h=e0d20dc1521e74b82dbd69be53a048847798a90a. It +# fixes a build failure when libfdt-devel is installed system-wide. +# This only works when scripts/dtc/libfdt exists (E.G. versions containing +# http://git.denx.de/?p=u-boot.git;a=commitdiff;h=c0e032e0090d6541549b19cc47e06ccd1f302893) +define UBOOT_FIXUP_LIBFDT_INCLUDE + if [ -d $(@D)/scripts/dtc/libfdt ]; then \ + $(SED) 's%-I$$(srctree)/lib/libfdt%-I$$(srctree)/scripts/dtc/libfdt%' $(@D)/tools/Makefile; \ + fi +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_FIXUP_LIBFDT_INCLUDE + +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +define UBOOT_CONFIGURE_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(UBOOT_BOARD_NAME)_config +endef +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y) +UBOOT_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y) +UBOOT_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)) +endif # BR2_TARGET_UBOOT_USE_DEFCONFIG + +UBOOT_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES)) +UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +# UBOOT_MAKE_OPTS overrides HOSTCC / HOSTLDFLAGS to allow the build to +# find our host-openssl. However, this triggers a bug in the kconfig +# build script that causes it to build with /usr/include/ncurses.h +# (which is typically wchar) but link with +# $(HOST_DIR)/lib/libncurses.so (which is not). We don't actually +# need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS +# override again. In addition, host-ccache is not ready at kconfig +# time, so use HOSTCC_NOCCACHE. +UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS="" +define UBOOT_HELP_CMDS + @echo ' uboot-menuconfig - Run U-Boot menuconfig' + @echo ' uboot-savedefconfig - Run U-Boot savedefconfig' + @echo ' uboot-update-defconfig - Save the U-Boot configuration to the path specified' + @echo ' by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE' +endef +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) + +define UBOOT_BUILD_CMDS + $(if $(UBOOT_CUSTOM_DTS_PATH), + cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ + ) + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(UBOOT_MAKE_TARGET) + $(if $(BR2_TARGET_UBOOT_FORMAT_SD), + $(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd) + $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), + $(@D)/tools/mxsboot \ + -w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE) \ + -o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE) \ + -e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE) \ + nand $(@D)/u-boot.sb $(@D)/u-boot.nand) +endef + +define UBOOT_BUILD_OMAP_IFT + $(HOST_DIR)/bin/gpsign -f $(@D)/u-boot.bin \ + -c $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)) +endef + +ifneq ($(BR2_TARGET_UBOOT_ENVIMAGE),) +UBOOT_GENERATE_ENV_FILE=$(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)) +define UBOOT_GENERATE_ENV_IMAGE + $(if $(UBOOT_GENERATE_ENV_FILE), \ + cat $(UBOOT_GENERATE_ENV_FILE), \ + CROSS_COMPILE="$(TARGET_CROSS)" $(@D)/scripts/get_default_envs.sh $(@D)) \ + >$(@D)/buildroot-env.txt + $(HOST_DIR)/bin/mkenvimage -s $(BR2_TARGET_UBOOT_ENVIMAGE_SIZE) \ + $(if $(BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT),-r) \ + $(if $(filter "BIG",$(BR2_ENDIAN)),-b) \ + -o $(BINARIES_DIR)/uboot-env.bin \ + $(@D)/buildroot-env.txt +endef +endif + +define UBOOT_INSTALL_IMAGES_CMDS + $(foreach f,$(UBOOT_BINS), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) + $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), + cp -dpf $(@D)/u-boot.sb $(BINARIES_DIR)) + $(if $(BR2_TARGET_UBOOT_SPL), + $(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) + ) + $(UBOOT_GENERATE_ENV_IMAGE) + $(if $(BR2_TARGET_UBOOT_BOOT_SCRIPT), + $(MKIMAGE) -C none -A $(MKIMAGE_ARCH) -T script \ + -d $(call qstrip,$(BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE)) \ + $(BINARIES_DIR)/boot.scr) +endef + +ifeq ($(BR2_TARGET_UBOOT_ZYNQMP),y) + +UBOOT_ZYNQMP_PMUFW = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PMUFW)) + +ifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),) +UBOOT_EXTRA_DOWNLOADS += $(UBOOT_ZYNQMP_PMUFW) +BR_NO_CHECK_HASH_FOR += $(notdir $(UBOOT_ZYNQMP_PMUFW)) +UBOOT_ZYNQMP_PMUFW_PATH = $(UBOOT_DL_DIR)/$(notdir $(UBOOT_ZYNQMP_PMUFW)) +else ifneq ($(UBOOT_ZYNQMP_PMUFW),) +UBOOT_ZYNQMP_PMUFW_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PMUFW)) +endif + +define UBOOT_ZYNQMP_KCONFIG_PMUFW + $(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(UBOOT_ZYNQMP_PMUFW_PATH)", \ + $(@D)/.config) +endef + +UBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE)) +UBOOT_ZYNQMP_PSU_INIT_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT)) + +ifneq ($(UBOOT_ZYNQMP_PSU_INIT),) +define UBOOT_ZYNQMP_KCONFIG_PSU_INIT + $(call KCONFIG_SET_OPT,CONFIG_XILINX_PS_INIT_FILE,"$(UBOOT_ZYNQMP_PSU_INIT_PATH)", \ + $(@D)/.config) +endef +endif + +endif # BR2_TARGET_UBOOT_ZYNQMP + +define UBOOT_INSTALL_OMAP_IFT_IMAGE + cp -dpf $(@D)/$(UBOOT_BIN_IFT) $(BINARIES_DIR)/ +endef + +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)),) +$(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting) +endif +ifeq ($(wildcard $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))),) +$(error gpsign config file $(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG) not found. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting) +endif +endif +UBOOT_DEPENDENCIES += host-omap-u-boot-utils +UBOOT_POST_BUILD_HOOKS += UBOOT_BUILD_OMAP_IFT +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_OMAP_IFT_IMAGE +endif + +ifeq ($(BR2_TARGET_UBOOT_ZYNQ_IMAGE),y) +define UBOOT_GENERATE_ZYNQ_IMAGE + $(HOST_DIR)/bin/python2 \ + $(HOST_DIR)/bin/zynq-boot-bin.py \ + -u $(@D)/$(firstword $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME))) \ + -o $(BINARIES_DIR)/BOOT.BIN +endef +UBOOT_DEPENDENCIES += host-zynq-boot-bin +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_GENERATE_ZYNQ_IMAGE +endif + +ifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC),y) +ifeq ($(BR2_TARGET_UBOOT_SPL),y) +UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)) +UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 0 +else +UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = u-boot-dtb.bin +UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 1 +endif +define UBOOT_CRC_ALTERA_SOCFPGA_IMAGE + $(foreach f,$(UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES), \ + $(HOST_DIR)/bin/mkpimage \ + -v $(UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION) \ + -o $(BINARIES_DIR)/$(notdir $(call qstrip,$(f))).crc \ + $(@D)/$(call qstrip,$(f)) + ) +endef +UBOOT_DEPENDENCIES += host-mkpimage +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_CRC_ALTERA_SOCFPGA_IMAGE +endif + +define UBOOT_KCONFIG_FIXUP_CMDS + $(UBOOT_ZYNQMP_KCONFIG_PMUFW) + $(UBOOT_ZYNQMP_KCONFIG_PSU_INIT) +endef + +ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SIZE)),) +$(error Please provide Uboot environment size (BR2_TARGET_UBOOT_ENVIMAGE_SIZE setting)) +endif +endif +UBOOT_DEPENDENCIES += host-uboot-tools +endif + +ifeq ($(BR2_TARGET_UBOOT_BOOT_SCRIPT),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE)),) +$(error Please define a source file for Uboot boot script (BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE setting)) +endif +endif +UBOOT_DEPENDENCIES += host-uboot-tools +endif + +ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy) + +# +# Check U-Boot board name (for legacy) or the defconfig/custom config +# file options (for kconfig) +# +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +ifeq ($(UBOOT_BOARD_NAME),) +$(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting) +endif # UBOOT_BOARD_NAME +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG)),) +$(error No board defconfig name specified, check your BR2_TARGET_UBOOT_BOARD_DEFCONFIG setting) +endif # qstrip BR2_TARGET_UBOOT_BOARD_DEFCONFIG +endif # BR2_TARGET_UBOOT_USE_DEFCONFIG +ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)),) +$(error No board configuration file specified, check your BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE +endif # BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +# +# Check custom version option +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE)),) +$(error No custom U-Boot version specified. Check your BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE +endif # BR2_TARGET_UBOOT_CUSTOM_VERSION + +# +# Check custom tarball option +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)),) +$(error No custom U-Boot tarball specified. Check your BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION +endif # BR2_TARGET_UBOOT_CUSTOM_TARBALL + +# +# Check Git/Mercurial repo options +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT)$(BR2_TARGET_UBOOT_CUSTOM_HG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)),) +$(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_URL setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_URL +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION)),) +$(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION +endif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG + +endif # BR2_TARGET_UBOOT && BR_BUILDING + +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +UBOOT_DEPENDENCIES += \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) +$(eval $(generic-package)) +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +UBOOT_MAKE_ENV = $(TARGET_MAKE_ENV) +UBOOT_KCONFIG_DEPENDENCIES = \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) +$(eval $(kconfig-package)) +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY diff --git a/features/buildroot/boot/vexpress-firmware/Config.in b/features/buildroot/boot/vexpress-firmware/Config.in new file mode 100644 index 00000000..265fb4be --- /dev/null +++ b/features/buildroot/boot/vexpress-firmware/Config.in @@ -0,0 +1,8 @@ +config BR2_TARGET_VEXPRESS_FIRMWARE + bool "vexpress-firmware" + depends on BR2_aarch64 + help + Versatile Express firmware from ARM, with Linaro mods last + change. + + https://git.linaro.org/arm/vexpress-firmware.git diff --git a/features/buildroot/boot/vexpress-firmware/vexpress-firmware.hash b/features/buildroot/boot/vexpress-firmware/vexpress-firmware.hash new file mode 100644 index 00000000..40f64c75 --- /dev/null +++ b/features/buildroot/boot/vexpress-firmware/vexpress-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 def599c86ab3606f7f67c0190e9b237fbc0cf934a951ffb1c5fb0c47d8a8f3d2 vexpress-firmware-901f81977c3b367a2e0bf3d6444be302822d97a3.tar.gz diff --git a/features/buildroot/boot/vexpress-firmware/vexpress-firmware.mk b/features/buildroot/boot/vexpress-firmware/vexpress-firmware.mk new file mode 100644 index 00000000..693a9cb8 --- /dev/null +++ b/features/buildroot/boot/vexpress-firmware/vexpress-firmware.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# vexpress-firmware +# +################################################################################ + +VEXPRESS_FIRMWARE_VERSION = 901f81977c3b367a2e0bf3d6444be302822d97a3 +VEXPRESS_FIRMWARE_SITE = https://git.linaro.org/arm/vexpress-firmware.git +VEXPRESS_FIRMWARE_SITE_METHOD = git +# The only available license files are in PDF and RTF formats, and we +# support only plain text. +VEXPRESS_FIRMWARE_LICENSE = ARM EULA + +VEXPRESS_FIRMWARE_INSTALL_IMAGES = YES + +define VEXPRESS_FIRMWARE_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/SOFTWARE/bl30.bin $(BINARIES_DIR)/scp-fw.bin +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/build b/features/buildroot/build new file mode 100644 index 0000000000000000000000000000000000000000..6f117e81d9f4d36f2f84fdd8e53a88d436d823ef GIT binary patch literal 132833 zcmeHw378yLb#6&WmOS=AV!(ch6DW^ljkfBZ>6y_;qi<}5;Cr&AneJNdf6hJk+;h)4_uNmtGU3J)^hx!Yk5&RZ%2hvHl4*yX5jnLnor^BtG=~DnO}jYj}Pn|+P-sSXJ%+{ z=dkz%KL_2%?ulRd*ge%7D%UeZ+jeF$?zdk4-nxsKk%9PWT*ak(9=j)J=}{@L(uVKp zUj3bTT(*-L9$4-@!vpT=`p1Sx&Uoy>`m5FE@mL-0^|v(tf|y|~Je#RO8+5CDZg>IM zv!k9|S9HR|!5Rg9pvVt9UU9zspo=TPf4e|_m=PZy2`-c$EcxLzy~;{F)7$g6xOBnC zdzE2)x^DN;LkAA+8&f@BE$CrE&DoBn=KMgF{MSx7c2*lqWm1EKsYnk}`BU-p>#upP z(ue1-xZ;YsJJtA3b#g8WbR)98e0=xCzwlh;JOIw0vWu!_s+ysu3%+ZmV_{iV>e8kY z%YwvG_iH08^^O)^>6fBnDFTErN@r~^4a!ta3!}g;YKHF?eGl>{2WC&visQn@xJE!e9)4KfY`W-_^0pVopR`#!h)TL6E`$Z!4HtQ!?t9nvY{;{z4=wTXA1NT|QW&Hi z-_V^Ht@tQ;BLAsflbe8;*M5YE^BhIks1t(@F+3k&*XG zmY%f>IW2D(>csWevs>A+C01`LL@&}E2ZPvGg;E>~3wmIg~G#59E85pNEdP^!T8A>2b`Z6}6y8czz6%u^TI%05^UTHy#hINGRy= zrrw?!nE3Z;*}(YR_HEPKhI@M!QqbE|kGS?JCHiP?ZX7?t$TYTWsk>AqrMJfq#}A55 z6~C3+Dt|tXVGq0l)R|1~?KvI;39Q>nc3_Enj${1eM@-q>ukBTK)>ts&9*DaPM5;yI zn9=jr*pfX}W6($NnoDc18FG)t?Fo}8tljoi+_tZF+cp>aeaW}0xxjbTekmH7ffrdp zzpAMdx>2xdul#qs@{-yshukAE>bh2YU)QUgsNJ%Bt7F3>qvo(_4v$)++bv_n+OfkL z$P5h(W^?+E0W)K68_8}T8QqR)?o22@gLYzLK}ooUFybNS2C&b^65c=lJms@^ zr2!)fmV};|ZITxAOFGs1`=kZcgt|_L^PyNmR3;@ga|I@=*|b-39QBSn)Un>4ze86~ z{j|a&P>5N#2t->;5cp}x{*#;@v^~QqnO4_`EVs7=q1LpbYz3i2#(PmZibk|b*Hm4lDZ_`fI^wkr+J?D!- zr>lMIZ+G-N`^rC4IeX4B`_v5^-BtY`q@CiH*nm$JLuoY!bwdoj5Vr@QD1f0=oXO zhPzs3N$Z4EFvN_j<7mshQF&9`^Jnz9P+Ax0itH? z;0;S3j)QN&+%*1*g!$6Nztes#bmSF#yYIa_A zvGx=fJQZ?WvDRa`e9!B9lsoW}R5~mbi+&KLLj!)AC`{vFV@4}^_HCN*T7{|>Re-cQ z%3~*Iy1YyX<@>PkjBUCY$LAinP;pkkW2OflNFJ*+B^_pcsk9XtQcZ<@svVw{wlVd1 ze>j8nVB~umyc3b|JGs8szZJ`bTf_1%!UZbbUj10*EY~m=qo#kd+bxS>g1@B+{A0i! zH;@_{Ooe{aFyb}+G9(Kj`cLrv>*)Wb$d@2YjR#_>hRbf5G&Cp{cDZD!zTiC*5bTT|@51P%MkG%TD>X~z^4+n5@YY`PCkzjB$T%i@N`oNF79vy||-3^a{F zn3_gGx4oKg=`5m`0-%?j9T1#0)1kye#IgfeUb74q=@yK~W9)hnfZ$C{Wk!gorhv*@ z29*$&Y$=@2`g2XADBpjUzPTSQe`T4Lg*p~`6@It`TV75Vl*Kcbvjyu%A)U?3CZ5G} zXCe6mAo-SMW}u1)#BTGU)TmI-nmO+|zHX+cF=QiaE}GSYFlEH|XhWl}Ce{az^s!dG zt016hrj=V;2K(8VwiI6BGYzLB;aTY_UNP%D4qpGkGU9a>UL%xLGR^_)F95bM;@e}n zt4D?Iv--=x{EoIU>p`H;cOUfkJClz3Wc{FEN*`kPKzZ=_d!nr^at8j9dc^15$z8m7g1BY=$r$- z{{l#OPiG`#OSzmCbf5bE^ z`Z<`>ukDD_ML7M=#S*~=>OX8>Wf%R>o(oG^n5>2scG+zyR>dXYZ(pGxG%1V{Eb8^{ z3;D}B67p#yob5j5H*|*CHAlLS`7OZQ!73P$+sw$e?!$hlBiMS$w0-{^sKJi_cKb`4 zX>fb6`@H@KDru&ld-Hu=*joh{U zb1*Hgd8pG-IMjV!zW|`yUp^v|t%rtv4jfP$fxCkVChO=k);SRE5x{QW;Wszu*e*6M zor9(CE&%VqW{rKrvB8QwvF^+HLE!Jezb)}+=Oas)u15FaPXoTlk8E=Sg6Bc()QJMC z%M+$pE;zv6!B911#zXg6ej2c&v#?xb@>CNw5=;&eYlw zsq(;;8DA~r_?$gaM)2Y@4_~O5%Rs55nTkCMO><$1j8f6wSJB?%XK4=`4NDz2cDC^h z{+^0iDmI%ZLD~;Mn!OBZl^mXG%Skl4_75*q^36AzM3XN-lead}q#tTQyaP3fR$q)( zbIY_U1U1DFr^3CM4ozlAw1lT0dJxZdpg<+(@)Nk{W73J>VgkL)Vb= zEk@|2AB)psn@fPNY#mH210H1&$|t)-pobv@ipxM5}So75{kdK9( z0@xcMcyTj$@l5^jScDhYs+z{%?de=-%%rxr#uCAUI8(F=z{=!AK0!Wg*r3qZu&^9N zbICR)D1HYhZg2)QG%N-q7@uxt|J!ykR3Rzx7D^ZOB2Wv&OBGtfynHv8yXgY}-4HNN z2sE<3%bD>E)PF`|H9BY7aFIvD0R7hh{m_ylqJ8-&c_*+mz+dn9EwUGi9;3I<6ptwhQyvkVN)Ql{+ktzfy?9|XEF0oF#j|# zGnBLt<6LoY8wK>w0W?E4Fkf#Q=0F}KLB_m-vO*Lt?*inv6ZCTq8(ty`;;VtUA#)(1 z0fT;aM@vi~? zvg<=@&N5o|A=HzAaSEqGDolF55eo4;K)>t|O$fb1kagv6*_?N0u3S;9TV2umHiccTLrzFQ3 zkfS1X!m#70*k2^iWI*Kz#HWGveNe1E`$El193C{G?5Eat%dc=FfqdyOL$5kvPy~d1;nhj$jUf zm)~!01dSqyp3`zAPn_P68co>bYl2^+>3q&~5^q_|Cs%?E^Ubm$U*v!|2oQ5;0U>iq zgq9M&B-{mp5!1l%i%nucY}5*nKN7OQ6anVhX28HsE+3D;fU=xu%Ki{$I;lVI1Pg9& zngtOH#;XBi*+5x4OW(-XP6m1rCxZ|K`CcG?%aV)}DM3x7<;az)OwCDUgK3oRXSkx? z1*E^71X3c#4jhfFuZr(8b3_$-z5}l7^Ai^m6 z65uWCXl&UDQ}3M4bHgzI4Dib)y0xLSDnem-QZ5KA|2|MR?D!VK6rYNQBG2t)UDdPP z)s4WP7KNn=(9iq3vjhY>l9o7>!NUF`U>{s^QPIkL;WfWGq&YpYxcvc1XhVJtBk4t> zuo}03dGA|Ni*+iqm8@7|#P&)M@LNj~&`R&4uqNmw46dsI@%>9eY)=}>Msqpb>CTit zBUhafwR$NiSk`IRhCCx=#Smy6P~Vm?vkl)7MTwf<3(}l+5aTZdTwWNw8p%wxRA#<; z_`eAFuV0ee&5u5RmN4$#0B}i~KxGS}qSSQLM16(O;$+dh72w~L2xp~^Ah7ojfNne4^!!W`DVFFDoJM>JhhkEi^noC;u9ga>^AiyE06gFS* z1@4rHZHMtTOGeh(B>>-0U8BSG^_emvz>5mUI1q}${663(YL+aHd=;T^2J5c^bc;7U zvwCP7S{Ad?OyclKqcoevj(9&nnqcCH#k%07VE6+|ntvVZ!>oCc$yC7&VVgs#sTMvR-@QgPhz@2KL_;7<|KDEt5(r7)Z?px zz2Pv4WM`%_b}g>)lf29e_TNorfB6h|ipqHhuoG9J2KE(j%(3?Yc#<2c&ah|<94bp; z_+!9LoSlq#ea9H7p9Jy`@#a-S%jvG|%%_d=p`3&nN{rSofQ%1zlMF^*d<8@hwPsyk z_}N=Yg#fzN55+*wyPUQ6s{gY>`AAoUsfbOU(L5GeNI;?}rk@5W#3h!I%j-y+qCo#S zKquNifG!IoQLt|WcB178>?k^-dnL|nHVpK{I04XGb48rmM`8UwfWMiy+yZzl=jf;} zki6MRT516@h10jt2WY|fXE=tY3+!CI=!lx`3@c$C(1~6@NQ;1uy#_W1|0{r>X)EXQ z0Zvq6aQ<~<7ND1naT#0NbNkWO4Z6IxihRpPvQFufShTT`Pk<($60A#PKOSUF$ek} zpflHdqLdYO9&m>0PJpM*Oklg7=LEp_0XtL86pQ6Z31zTO(b2;e({Y+O1^vxH&s>J! z+)g`7L4F&M6YUvs#2yNjV~dzeisjz{0*FJ_M6nULQ#pqGtGQxR#?G*5eus^G&M$F> z>is~zY_+1!BH<>^gJUrKVKQu!|OJN{?F_06Ne5Q|MKXi{Yv2Fo)qL%>RPwGzciMPTJd?i`l{ZiJk zP?3;hh`j{pnT9*0otA9=QnJLK)Pr0`4_(S|)w=vU~%u6K5zZ2z;b(GiIo_a7EsVv>g1BH~@_S{+(pD&ly&cgZvR7Kf#MNA@RrY zPbSWDQj`g3T^yUtkdVIupNW~yK+ah+eGa&nt=-VsB0FbiacCoIpiQIXILGw;CMY19 zzQTaPnG&Szw(kKvamgydBPkUHY7h|S@c*JOCR^d*jBva>&O@8kof2ooy#erv?y)$x zkfCw512{3*B!HJUQB^Xn>w!_gz;IpP6MMlU zpJVO+3Me8D?|O<@%iOnsgh#s5DJYr2nkr{E{}XR1Bqcc zGlAoJyb5ISZNR)&(n=vIv+XcQ;7{4MXGicb*(j79=<}56?gR+o>)2SoVkc0}5@*Yc4NKHf-JY<%0WaKkoHZe1(pofJ> z=VbLi1L(xC6pS}i*$*O)Ui>%i*mTVi%GmrNS6uuo&Z{6)a1@DT7ybh^niB`rG`-02 zru+;SeW>Rw&5)mGWw#U&+{sN4Ff$fB?u=Yu{J*K26CeH0xQ^}MZFJkxgO5D ztcmGHASZfnMJckh_=jotTA+a#`xe2!SYuMAsUpx5i`xnGfsHU9$_?wZ80;PVE+7tq zR|7pUC??LpMU=H90?4GD7H{!dj3aZVLPd0H2uZ zC*V_Xe+amVe*L`VSx`HeaU+9M_2`oz;AY;^8wA8BDkg1Xl9t}U%Sto<0yxc_Uo9^z z6^lNp{>8U|p6OZ2b39AR(^TJfK3~pgViox80eseQq;Sv0pn$j_$x8}I z_P|D9XHKdy_i1_PBVB=?Lrx`SZru&|#6@^na+02ygyZRIASXs?W8|6*Ls*YU`@Tcn6|-5R5%R^h(XzM5729azXoIw%bb_V z2t!@7W`m+83Wd*~;w)9(1XB1T8l+GrgZqH~Pk4!*bsd3C${vnsLUkwB*myT+;ZG0L z@>CxL34F_lR$|~|fX_Bc?HnhL_`kcrdSKUFjv9Iz@R>d~;<4f1B10FYtxZnQ|9gN= z+>ytt%6-8fojWkAmq8N~fLSt1!W@OhUrNXOao zG9MDP<9?uLu2~|NT|WOtGXF)gg=ShI$JJ>8J#o!j&;t`@ab628&Wf=J{6w2f4+1l>d{Oi2}i-v(|nd;F)Uk zBx^5aiVNJ%8MB<>x)Z>OE;QRSgv~(FH2dh#i+aR?K1CK6uShx?;1&QUY8TrJJxw=F zPAxqb;EATa1TW6C<9KxDfSx$9meHdkm+q04g)i>{|9N$Keyt1WU7GaV3-rXCb}2m) zJ*skvjU5z?|85XLbW2GhJU_w!=D5Kh1%Bei9t&V8YD!Sg@?bEOhfK!JWKpfe3m0i8GNZUFj6iP{I~i+Z5D zh^XKU^peBd6Sp0dkVkQx2dR^?046{HS%so14M&9@<})9Kw5`Bm9fNZV2p}sU5I|8t zE}%1)?HIzmcxK#*u*&%#W_T+b&gN)Yrsz2)+95$<|xAQoh~5ftfZ7@ zs6G%8ThmHj;FC^8=mmVD4-LDptUwD(S)_MS1m`l~zmd1e+#y&4r2XZ9O0xjAk)2#*;K(9n3*^{(M}0(E204Zu%yd$_t$5FrPWuX_gQiFQF1 zJ;TvGOU7>Dd=k^*IJ;lYm3r55{a{|pqWBW$$l2EdKhcH+10iIZVtO}l) zeSAM?AO^~X- zL7xPC;>;!C2c!b>&j35o$ttk33Pt=IUuyhZ&hd4Q(69OmRc#8+hqjAT{~Vu`9&!;V zV9I?F`!-mqAuj@Uq9+H3W(n*JTXQpz6LZ#MD4HlQ_1Lkwi`M z1Qn7djr@{PuuL^OufktqsZl}qR2Xh*5hpC@d238P-Y@pTY4Jh4c4X^L|5mm39S+RG zH#f!L-`5oh65uH&&YuE4(W6iv0ML}QdFro00ns!rGQA<62X>-QN?=DEMeKVpXday} zg9f67DQK8R`Wyx(XY0(rkmbiI@M86q`;6w*M1l&ZEOyG8l zInFZV&w-s-A0)60pOdxtH*BWo4cf+?p0BM?OkT#Nr~}B_bWPKZd2BPnsk(_PbK&W` z1pFpikKi|}cHSl+r>ev}XPxv0;QsSfib4|?O3g^PtjdW4)a`XGaciBOH(2@|dH<#Y4>54};&t3LQZ-*NqAtkAezf zoGU2dFcfI(aQG7~KksmgB%+AnoeA1L%oa?ltth0NtxW0?~OM z(jpeW1K`BMBCKO3?+0vRKvW#`Svj_s;}-ox5WrNF;?OQm?#M@goT+QD{}#EXHmR!1 zCxD)57ep>c!+#dInRbCFQ0nOO$jqnM1z!bxrZpcyLAof8!aKa>U)f?0!z^F)eNJHd zhd|FTGp(Y%}Wu`VRmioFCBFm0WA&tUIA?*j?UscSxr zEY5C~VIU{^b0R&+!@%cEyH@}^aoUZs(@u^$0`x@vUq+vI{H*S9RL=>n)R$$4;kTaw za-!}p^FEGQq4G}Pb2^~Z6%i8W6tMRC{R$``x)?-9@a&&AkipxoHLC|C<@r{CC+53H zW$=vA`%XZAC$BReGR%p@zy{6t@2W;E6s3tjR4+&tbDNCscCLH&-ZmUOs|^Z{+fZ zW9eQgd38g|NvOc4NX(1Ca^@mLNDME|uo>v7gH@s@osu)&71kq5pCUMiyTN+YQlNl8 z0r13NgB-D@9_bqEhzc77Ff9WNTaw{k0&=E3CKQgD1kigcM zwEUa90iL<&6S8A*&aizupfi_GV!$#Ms}BJ;+oBYC-6U)NqkvDWh9XC-fX}SZ`$^D1 z++{9luyfcd>~YqDPjx|rhzGiT6Y$x#0`|$HM1IJbwZ7X80wOEW5pkyIpw<7x*FheV zk1fvr?TY}Pt%LmRtvFx-C1X!#g1Twa4%#^d8kj+I*%^Wc$JRN6`jw!7ZH$UuFpT8=vmzV+^}x>_(-Ob0 zJ61^87cPjnuS=a^lJLK$TljrWnB_yj&-P)lRs$agcJ{0+27qJFa!k=DxSxA-1Owu7wJEwHVv)v>E8=^^`uJgaum2u5GzwcrY z(2bedFTz#fkuo;cfe2z{1G!`n+EtXV((`)6QL)=VMMz%l3o1gxm`#4Mz+COes3Afo zw&TFSqiCcFu%8`fl7vKoVz0 z$T1nEB4XYgLhb?~>@ZXqnaH=LjObqle7ez%$wBOxq7ZO52q2GVY&R+yti2ZR0Dks( zo`nY0C{z+OAg2Aq}KUjsWch>wCvl+pY5z|G8? z2zeX4z6t2e2nbFSkf+m9`2JmhXS%Eb-qgY(cKPz^AgualY8?b@GbIWAMF37zG_$%B zAq$;zD)x(kotTvi>?KRAA#)V5-vso;J1KBtu`5c&s4duwA)D6unXEk*a$cZ+=Y@kU6$&vF{06cLi zI4k{9;*=^oH%}R;uLA)@WpmOtEm6f%la)9_&ir~GXdv1K6&fh~e*oBtIRq8##AAmZ z0|htnRQ;TRgWnTpJxRk$u&f$AkAu-fuUS?r20*Y?{#U0C{&|w-mwpW^yxkDNJY7uaJ7dT4I;$Sf1IseiE0ERp~7XX%* zhgwe%@C*|$d;=JowO}2S0N~#NpjlPnn5k@z0b=F1o96;WOj zs5KO%;kgAUnw1Eex*TnR6*67OVT{fRplDWUi+zR!nYg9}M#R-=8OzKYfTCGdDNrz` zjZggF70SLPU1VaJdlpkPjhMVxex^%dkj5-8{+>#Oerhn4NevFR)_JBM=0Y(sh5cLA z{(_Hldcc6SCXL09P2QU-HCsGo>2$mk?ury(`$#JtdlNY^Y=hLUqVX0z^ ztH`tVyWr~&)~r;1AC`rbG~tvBEmPHORkPIo^g4Cl(k-sn^T+D zod&GXcdW57?6oWEC%v&Wj^6UpsJ0u;tJ*kewD3z z={?r0<@iO{@}hL!jtZr0x;iG(@Te9`Q97<6GsA{*V6NeA&J+NT1LTF`zo*PQ?Iz9BX-9x z-l^v7nB#qStW^GSQCjz3+Z?fl5{Fvx-o(j${Ov21mw;S%#o3W zF%uttc%|~?m5L%qn5FiGm+v~Z`{=&OW788y4^K_)y1eB9B3qH7boMDlyFA|~Ms;1Y zyN^!n-*q|k{K88UN3Pvn$Hd-)yZ3>r zTZ$+|ALZ2kzRSZtOhBr(XZoO^d+&jRlhad&uRS_3+3?-A;ks|-O^5gHodTP#I&f@i zeA}?9YKKEry=B*ttM^S;I9P6M0gVUul&>^(_r&$rpIg-X4^JJN-gDq+o5CP^p@_65 zJ#VF@-5B#rarftyFPdRToef zGw|7=Rm!WNs8Q3jZBnZ?b`7;A_Q|RJo6$7XmDFDY>K*DFHW-AeHlS*n=WF7GR}@~d z+#+nAz*V(ejOn7It7QHh3lnyPYJ)&#)S$uMsX`W)GmV#^X|HCn#k~0J zovV}^@W$9YsTz2guv?Ifh1Q@DG|@$IBRBo}D(TW*%p6>=t0x9Cqp1O`oCZ%sRRrLj zFmP|KUQ3&unPLJ`7~^^4?vu~6)kqjngU%Itjp zgR2w|jV;2?aO=&Yv9aSfkKMF+Y^(fzY->kd85VTYKN&Obqkp?f=FOJP>6)d?F&z^# z9AotV^qp18A@EJAg4TH=MKdjq>k%6hajIeohnK`}{`7ZO$;d#?4^&&l%sru6-t@Io zYJ9h*2Sx$=^>?bKA1?&f+ifiX7KI?*>Xm`qdERQ}uRx*zA}nJ-k&TMaj_&2l->t{b z^k#Vli=*Sx>Rf+&`G!0D)SDVtM009i_3FBHo71?X&vZ+C5YtAy#QV36MtT90c1L`b22cJ)D zTFgGJ<4N{+S1U(^%7%qJrat|$-|kSVC9LFhZOGW|8)v?rg za**38=VRgU-nP0rH9{G80wGo{d9&;aeAgeWR&Fd$x{16wE6Tx&m4{=AT4*u;2Omlp z|EaJLzxnnLtX6(K8T_cRk^pD%mKfP>f4o{I$|a(nbAAHQY%k}>*zWysVq7zQBLQf5 zON?yopR87nCexo~Nsnf<>f7J+*lOh_`F3Gxbv%sJ%oSt$<{w_&hEs0|F~OxwdnxCxO? zg5awN=LpA`Fu`swhg>F)9zA??Og(9-VZkpsrq>^-1%1|1byfQR>z)*oBTQ^-&W_Z< zo$8&9L+opqO9I(c;Jz~MvVnSsF_se$bpqKVqT!1m0bmbbQT8?Z(P4dma}KXG8s zxLhwv$4UK#@~ftCL*3gNo;`AO^4PH(rX`*eeN{wi-Tf!}`UJd9SVXlgbQOQ6A40X@ zz@xCNn4hrMNPEZeR4vS@sZ`Z_S-Z3CMj<-!EcW#~*C_oMI#(c!sH#&sg0J=|oF=Ru z6+UXQf-QTAMMbOl5%sP$%0WERyt+Np;hVGPw4kU*h4RaLd!B}kdD(BTQT9}!Ou{Zk zjancniZlkDo;xVQ`7}-To(QlnJ2~d||IPkG9bX ziSCJCcjK0|%3u}VKFbq@)CE2vThbhkt1EoY6T@y=^UkjUS zx$=8|Wnir|x7!b2F7@X353N-kkXs4qK{`%&{T(=)WJ7{i0H4mm4w*(yN)S#d0%|)4* z=a)RZR=Em~wl78U#bufNkN2%regSVwPS(>ks89aUT4kyusEhP&?ez~lvR3(1fjz`& z-m0dT_QS5T=A_SQJbi5cfvIWyf9UYB=^GHuo<4dQzlpf@)D2U|Ca-B-)XJW%)*oDg zigF@N+^sveKTpYl7&))@ue(eRqp*NMoLqZ3xR=DB?(O+UsNC7}6veEx*cV!`#*lv4 zPKL@-^fk8k)r%EbHZ8UskQj3klVw5Gj;aG=1IZB?_Y#wkjVXkNpM$^c1%@lO_*l!c zoP1Jbbd8-(r}CDY4ocbibSAYeH6X-gER7%|0<B6%1&c#?2J|8ZL^kV`oS4rA{QsVua)4)nI@JyBWKq{#=v5ebs{eodbg~x zh)Ux1*aUhAi;P%Fv^PS~<7weZ$J~pwfHszFi|8}S)&-M!(u`$lt+(9^u0q{&Y(yy? zjr#u2P-|%m^6KguJYSd@Z7lg?izO}QuCgt3!fQPaR8^m8cP4(#a8lw?KRDo@fivxp zux?#-M5Ntf;i(-~Z{9YH>Km<#%tGSTzQN4EHGRTSaXT_iVc~vcVs=CRZ0T&NDFhDTBvbz^2! zgHqFkGjCIT;~Z{0j@fJidM$SBSoso;ONv9CE#q9MW8-H2Vb2B18_~?RVNp4$L3PG? zk*Xc4B1U3)!hvL_RP`8CEP&)KfyHvnP{rBqet>e+YIYt97!TxtxfEFChg884;XAjy zJiKi3T<@^t!u-zTbw_ZJn3z4{$pgAvcz#6{su zgEMLtDHJn6gOtpnfziwWW(9G`S8vbW+JtcJwFmZ$skv-!)EF4Fv|$}Z>V~)P7}d6K zGk0j)h7Em3ZrB(a$PLBK>u4UUA!VurTUj=sW|8MyDuybyHU*#=zO}gFF%|Cl?Sngp zwyI+Fc^jU5KAy}BkBp9PRfh+5Y#ZFFj*JcskBG}J$L007yj2|?8qMtJ?dk2=?T8!@ z+1dHPFBQu^yD|B?*W&)wxL+Me56TzZUH)RN_#@uc4=R>eCTYxY+c8lE=C^Z+USm5q8w~sT)yO9q#l^V=)OYeBQz)%Pze{ z8cc6q&}8bx3!5ZU`Tlf|3?0@p*1!%g9b2s0+r-w_#*+*CLoQ4fcFMYEFI2W*En5#) z=0LSOkJih8Y!d-^(?UeP9MQ)P!OCLm@*^h(`WtfN52&}_iM4)F_x=8P%Kg<*I-Ap@jaisaDe)Ur zYCLRBQ?+yBG8^L*T&Jp^Yhx!!j38Zod!HIw*39_O(8$Q}@K6RJC}`600W}-K&aBJ* zSiqTQo;pt!qKY}Q1Z1#EY%EsW=%q7(F6^7XS-D2JZfU0Bl*h_MqxNSFH#0gofZ(C6 z4Qbhw8D;xbJzU~KDg}#1^vn0q#M4VR5%GW6j?YvdM!CAxGuhH7x`hD&m_?rN2_pGIR}`N?8!9hr;r z*9hAaSi>D!oVC>pRj$4YP5dMYY?Z=A8T#HguTie9PHGEuP=mmVk)N{z_oT?Z7wXTz zf+Gd@Y^(>Cxh$Ex#F+T8&;ZNOwkTU)_rW#F{&v_3Ziv#DA|}5GR~xSWWHGgYv_*Nk z`H3~kWLrFy)g6{%Y2C%2FpkzywkShC^G|D(tJ+~Ga)?UB6wa|)L`3VZ{baGTj<7|! zx%c9=($T$ynp;|vhA_pW6sl`3!p*vClAFS!I*x|E{9``tH|WzkA{XWClRMVRY~7YQ zi(KIV=e~rCFt&E-Cre6ebS=ut+w`@{MNJO*QwK!GQp~%`??3j;st~d$cP@DITDh$t z7PNvX7f>5R(?H5&%69WuN0x_i5knUKLwG~`g(1|hZbY``HCG+oq~-$OjlYyj&weD2 zmRCYAd*%7cORM9y$+yQIvIXz2InIXbT6p5Ey~>8=TR2&EdjhM_C9Ci0RS+{%dV8M1 zr_ZC{d}h1N=wAJu zcwDxV86H^fJ;MX;>H5cpN6vWc!TPJ!=J8k^?e(`b|AM&oQVY*!YS0E<>248S-tYpj WXGcA`uIPl|vJ0i#Sfs!A_WT!C$ifBy literal 0 HcmV?d00001 diff --git a/features/buildroot/configs/aarch64_efi_defconfig b/features/buildroot/configs/aarch64_efi_defconfig new file mode 100644 index 00000000..e8719321 --- /dev/null +++ b/features/buildroot/configs/aarch64_efi_defconfig @@ -0,0 +1,38 @@ +# Architecture +BR2_aarch64=y + +# Toolchain, required for eudev and grub +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +## Required tools to create bootable media +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_AARCH64_EFI=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="200M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aarch64-efi/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/aarch64-efi/genimage-efi.cfg" + +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Host tools for genimage +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/acmesystems_aria_g25_128mb_defconfig b/features/buildroot/configs/acmesystems_aria_g25_128mb_defconfig new file mode 100644 index 00000000..0ec210f3 --- /dev/null +++ b/features/buildroot/configs/acmesystems_aria_g25_128mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Aria-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/aria-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="aria-128m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/acmesystems_aria_g25_256mb_defconfig b/features/buildroot/configs/acmesystems_aria_g25_256mb_defconfig new file mode 100644 index 00000000..a480287c --- /dev/null +++ b/features/buildroot/configs/acmesystems_aria_g25_256mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Aria-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/aria-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="aria-256m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig b/features/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig new file mode 100644 index 00000000..a68ac57f --- /dev/null +++ b/features/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Arietta-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/arietta-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-128m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig b/features/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig new file mode 100644 index 00000000..ce9ebacb --- /dev/null +++ b/features/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Arietta-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/arietta-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-256m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/amarula_a64_relic_defconfig b/features/buildroot/configs/amarula_a64_relic_defconfig new file mode 100644 index 00000000..f2e7e7f9 --- /dev/null +++ b/features/buildroot/configs/amarula_a64_relic_defconfig @@ -0,0 +1,62 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.17 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="amarula_a64_relic" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,amarula,linux-amarula,v1.0a)/linux-amarula_v1.0a.tar.gz" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-amarula-relic" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Amarula A64-Relic" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/amarula/a64-relic/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/amarula/a64-relic/post-build.sh" +BR2_ROOTFS_OVERLAY="board/amarula/a64-relic/rootfs_overlay" + +# wireless firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y diff --git a/features/buildroot/configs/amarula_vyasa_rk3288_defconfig b/features/buildroot/configs/amarula_vyasa_rk3288_defconfig new file mode 100644 index 00000000..760ad3f9 --- /dev/null +++ b/features/buildroot/configs/amarula_vyasa_rk3288_defconfig @@ -0,0 +1,47 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="vyasa-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin tpl/u-boot-tpl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x02000000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-vyasa" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/amarula/vyasa/linux_gmac.fragment" + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="vyasa-rk3288" +BR2_TARGET_GENERIC_ISSUE="Welcome to VYASA RK3288!" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/amarula/vyasa/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/amarula/vyasa/post-build.sh" +BR2_GLOBAL_PATCH_DIR="board/amarula/vyasa/patches/" diff --git a/features/buildroot/configs/andes_ae3xx_defconfig b/features/buildroot/configs/andes_ae3xx_defconfig new file mode 100644 index 00000000..52634caa --- /dev/null +++ b/features/buildroot/configs/andes_ae3xx_defconfig @@ -0,0 +1,10 @@ +BR2_nds32=y +BR2_GLOBAL_PATCH_DIR="board/andes/patches/" +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_ANDES_NDS32=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/andes/ae3xx/ae3xx.fragment" +BR2_TARGET_ROOTFS_INITRAMFS=y diff --git a/features/buildroot/configs/arcturus_ucls1012a_defconfig b/features/buildroot/configs/arcturus_ucls1012a_defconfig new file mode 100644 index 00000000..7fb98047 --- /dev/null +++ b/features/buildroot/configs/arcturus_ucls1012a_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_aarch64=y + +# Linux headers same as kernel, a 4.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="ucls1012a" +BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/arcturus/aarch64-ucls1012a/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-kernel,v0.2.1811)/linux-v0.2.1811.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y + +# U-boot +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/ArcturusNetworks/uCLS1012A-uboot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v0.2.1823" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="UCLS1012A_QSPI128" + +# Tools +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/arcturus_ucp1020_defconfig b/features/buildroot/configs/arcturus_ucp1020_defconfig new file mode 100644 index 00000000..8b90f447 --- /dev/null +++ b/features/buildroot/configs/arcturus_ucp1020_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="UCP1020" +BR2_TARGET_GENERIC_ISSUE="Welcome to Arcturus uCP1020 System on Module" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCP1020-kernel,v20190618)/linux-v20190618.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ucp1020" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ucp1020" + +# Filesystem +BR2_TARGET_ROOTFS_JFFS2=y + +# U-boot +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,ArcturusNetworks,uCP1020-uboot,v20190618)/uboot-v20190618.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="UCP1020" diff --git a/features/buildroot/configs/arm_foundationv8_defconfig b/features/buildroot/configs/arm_foundationv8_defconfig new file mode 100644 index 00000000..d31f69d3 --- /dev/null +++ b/features/buildroot/configs/arm_foundationv8_defconfig @@ -0,0 +1,16 @@ +BR2_aarch64=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(LINUX_DIR)/arch/arm64/configs/defconfig" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/foundation-v8" +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_BOOT_WRAPPER_AARCH64=y +BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS="arm/foundation-v8" +BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS="root=/dev/vda consolelog=9 console=ttyAMA0 rw" diff --git a/features/buildroot/configs/arm_juno_defconfig b/features/buildroot/configs/arm_juno_defconfig new file mode 100644 index 00000000..58329867 --- /dev/null +++ b/features/buildroot/configs/arm_juno_defconfig @@ -0,0 +1,23 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_HOSTNAME="juno-buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to SNPS Juno by Buildroot" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/arm/juno/linux-juno-defconfig" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/juno arm/juno-r1 arm/juno-r2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v1.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.03" +BR2_TARGET_VEXPRESS_FIRMWARE=y diff --git a/features/buildroot/configs/armadeus_apf27_defconfig b/features/buildroot/configs/armadeus_apf27_defconfig new file mode 100644 index 00000000..457a14b0 --- /dev/null +++ b/features/buildroot/configs/armadeus_apf27_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf27" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12.4" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf27/linux-4.12.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xA0008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx27-apf27dev" + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.09" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="apf27" diff --git a/features/buildroot/configs/armadeus_apf28_defconfig b/features/buildroot/configs/armadeus_apf28_defconfig new file mode 100644 index 00000000..56351ebd --- /dev/null +++ b/features/buildroot/configs/armadeus_apf28_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf28" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.172" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-apf28dev" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=4227 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 diff --git a/features/buildroot/configs/armadeus_apf51_defconfig b/features/buildroot/configs/armadeus_apf51_defconfig new file mode 100644 index 00000000..26b6a447 --- /dev/null +++ b/features/buildroot/configs/armadeus_apf51_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 3.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf51" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.186" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf51/linux-4.4.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x90008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-apf51dev" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=135301 +BR2_TARGET_ROOTFS_UBI=y diff --git a/features/buildroot/configs/asus_tinker_rk3288_defconfig b/features/buildroot/configs/asus_tinker_rk3288_defconfig new file mode 100644 index 00000000..e95a19a7 --- /dev/null +++ b/features/buildroot/configs/asus_tinker_rk3288_defconfig @@ -0,0 +1,46 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="tinker-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x02000000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="tinker-rk3288" +BR2_TARGET_GENERIC_ISSUE="Welcome to TINKER RK3288!" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/asus/tinker/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/asus/tinker/post-build.sh" +BR2_GLOBAL_PATCH_DIR="board/asus/tinker/patches/" diff --git a/features/buildroot/configs/at91sam9260eknf_defconfig b/features/buildroot/configs/at91sam9260eknf_defconfig new file mode 100644 index 00000000..807d0294 --- /dev/null +++ b/features/buildroot/configs/at91sam9260eknf_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9260ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9260eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9260ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/at91sam9g20dfc_defconfig b/features/buildroot/configs/at91sam9g20dfc_defconfig new file mode 100644 index 00000000..7511c96f --- /dev/null +++ b/features/buildroot/configs/at91sam9g20dfc_defconfig @@ -0,0 +1,39 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g20ek" + +# Filesystem +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x20000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=512 +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f800 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x800 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9g20eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9g20ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/at91sam9g45m10ek_defconfig b/features/buildroot/configs/at91sam9g45m10ek_defconfig new file mode 100644 index 00000000..c598527f --- /dev/null +++ b/features/buildroot/configs/at91sam9g45m10ek_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9m10g45ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9m10g45eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9m10g45ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/at91sam9rlek_defconfig b/features/buildroot/configs/at91sam9rlek_defconfig new file mode 100644 index 00000000..ba3a94c0 --- /dev/null +++ b/features/buildroot/configs/at91sam9rlek_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9rlek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9rleknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9rlek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/at91sam9x5ek_defconfig b/features/buildroot/configs/at91sam9x5ek_defconfig new file mode 100644 index 00000000..9dd8fbb3 --- /dev/null +++ b/features/buildroot/configs/at91sam9x5ek_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_arm926t=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/at91sam9x5ek_dev_defconfig b/features/buildroot/configs/at91sam9x5ek_dev_defconfig new file mode 100644 index 00000000..505be8d0 --- /dev/null +++ b/features/buildroot/configs/at91sam9x5ek_dev_defconfig @@ -0,0 +1,98 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/at91sam9x5ek_mmc_defconfig b/features/buildroot/configs/at91sam9x5ek_mmc_defconfig new file mode 100644 index 00000000..8777606f --- /dev/null +++ b/features/buildroot/configs/at91sam9x5ek_mmc_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/atmel/at91sam9x5ek_mmc/uboot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000" + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig b/features/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig new file mode 100644 index 00000000..cd659128 --- /dev/null +++ b/features/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig @@ -0,0 +1,106 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/atmel/at91sam9x5ek_mmc/uboot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000" + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig b/features/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig new file mode 100644 index 00000000..da4a0fa1 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig @@ -0,0 +1,87 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_PTHREAD_DEBUG=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d27_som1_ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_6.1)/linux-linux4sam_6.1.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d27_som1_ek" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_RNG_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.13" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d27_som1_eksd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_6.1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d27_som1_ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig b/features/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig new file mode 100644 index 00000000..57ced694 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained at91-sama5d2_xplained_pda4 at91-sama5d2_xplained_pda7 at91-sama5d2_xplained_pda7b" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig b/features/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig new file mode 100644 index 00000000..e140a44e --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig @@ -0,0 +1,106 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained at91-sama5d2_xplained_pda4 at91-sama5d2_xplained_pda7 at91-sama5d2_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d3_xplained_defconfig b/features/buildroot/configs/atmel_sama5d3_xplained_defconfig new file mode 100644 index 00000000..b8b33c5e --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d3_xplained_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig b/features/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig new file mode 100644 index 00000000..520cbc83 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig @@ -0,0 +1,100 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig b/features/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig new file mode 100644 index 00000000..8fd9a7c2 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig b/features/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig new file mode 100644 index 00000000..da1c4eb7 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig @@ -0,0 +1,105 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d3xek_defconfig b/features/buildroot/configs/atmel_sama5d3xek_defconfig new file mode 100644 index 00000000..95deb6f2 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d3xek_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sama5d31ek sama5d33ek sama5d34ek sama5d35ek sama5d36ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3xeknf_uboot" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3xek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/atmel_sama5d4_xplained_defconfig b/features/buildroot/configs/atmel_sama5d4_xplained_defconfig new file mode 100644 index 00000000..522f7fc9 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d4_xplained_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3e000 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2082 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig b/features/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig new file mode 100644 index 00000000..9197564c --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig @@ -0,0 +1,104 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3e000 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2082 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/features/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig b/features/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig new file mode 100644 index 00000000..f69acb28 --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig b/features/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig new file mode 100644 index 00000000..cfac503f --- /dev/null +++ b/features/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig @@ -0,0 +1,106 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" +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/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/bananapi_m1_defconfig b/features/buildroot/configs/bananapi_m1_defconfig new file mode 100644 index 00000000..558ef3d4 --- /dev/null +++ b/features/buildroot/configs/bananapi_m1_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m1/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.12" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-bananapi" +BR2_TARGET_ROOTFS_EXT2=y +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="2018.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Bananapi" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m1/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/bananapi_m2_plus_defconfig b/features/buildroot/configs/bananapi_m2_plus_defconfig new file mode 100644 index 00000000..0e2d91d2 --- /dev/null +++ b/features/buildroot/configs/bananapi_m2_plus_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M2 Plus" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sinovoip/m2-plus/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-bananapi-m2-plus" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Sinovoip_BPI_M2_Plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/sinovoip/m2-plus/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/bananapi_m2_ultra_defconfig b/features/buildroot/configs/bananapi_m2_ultra_defconfig new file mode 100644 index 00000000..bc1d31a6 --- /dev/null +++ b/features/buildroot/configs/bananapi_m2_ultra_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M2 Ultra" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m2-ultra/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.12" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-r40-bananapi-m2-ultra" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m2_berry" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m2-ultra/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/bananapi_m64_defconfig b/features/buildroot/configs/bananapi_m64_defconfig new file mode 100644 index 00000000..ea015589 --- /dev/null +++ b/features/buildroot/configs/bananapi_m64_defconfig @@ -0,0 +1,48 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m64" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-bananapi-m64" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m64/genimage.cfg" diff --git a/features/buildroot/configs/bananapro_defconfig b/features/buildroot/configs/bananapro_defconfig new file mode 100644 index 00000000..56166c94 --- /dev/null +++ b/features/buildroot/configs/bananapro_defconfig @@ -0,0 +1,74 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_GLOBAL_PATCH_DIR="board/lemaker/bananapro/patches" +BR2_ARM_EABIHF=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y + +# Toolchain +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="bananapro" +BR2_TARGET_GENERIC_ISSUE="Welcome to Banana Pro!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_OVERLAY="board/lemaker/bananapro/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/lemaker/bananapro/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lemaker/bananapro/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.1" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lemaker/bananapro/linux-wifi.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-bananapro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Bananapro" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Wifi firmware for brcm43362 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# Audio +BR2_PACKAGE_ALSA_UTILS=y +# BR2_PACKAGE_ALSA_UTILS_ALSAMIXER is not set +BR2_PACKAGE_ALSA_UTILS_AMIXER=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Wireless packages +BR2_PACKAGE_IW=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# Host tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/beagleboardx15_defconfig b/features/buildroot/configs/beagleboardx15_defconfig new file mode 100644 index 00000000..393b29ee --- /dev/null +++ b/features/buildroot/configs/beagleboardx15_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beagleboardx15/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am57xx-beagle-x15 am57xx-beagle-x15-revb1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +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="2016.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am57xx_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/beaglebone_defconfig b/features/buildroot/configs/beaglebone_defconfig new file mode 100644 index 00000000..b4f152fd --- /dev/null +++ b/features/buildroot/configs/beaglebone_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_GLOBAL_PATCH_DIR="board/beaglebone/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beaglebone/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.ti.com/processor-sdk/processor-sdk-linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="4796173fc58688055a99a1cef19a839174067220" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-bonegreen am335x-evmsk" +BR2_TARGET_ROOTFS_EXT2=y +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="2018.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/beaglebone_qt5_defconfig b/features/buildroot/configs/beaglebone_qt5_defconfig new file mode 100644 index 00000000..fb61bf54 --- /dev/null +++ b/features/buildroot/configs/beaglebone_qt5_defconfig @@ -0,0 +1,44 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_GLOBAL_PATCH_DIR="board/beaglebone/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_GCC_VERSION_5_X=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beaglebone/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.ti.com/processor-sdk/processor-sdk-linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="52c4aa7cdb93d61f8008f380135beaf7b8fa6593" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/beaglebone/linux-4.1-sgx.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-evmsk" +BR2_PACKAGE_FBV=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_EXAMPLES=y +BR2_PACKAGE_QT5BASE_EGLFS=y +BR2_PACKAGE_QT5QUICKCONTROLS=y +BR2_PACKAGE_TI_SGX_DEMOS=y +BR2_PACKAGE_TI_SGX_KM=y +BR2_PACKAGE_TI_SGX_UM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="124M" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/chromebook_snow_defconfig b/features/buildroot/configs/chromebook_snow_defconfig new file mode 100644 index 00000000..5558c101 --- /dev/null +++ b/features/buildroot/configs/chromebook_snow_defconfig @@ -0,0 +1,23 @@ +BR2_arm=y +BR2_cortex_a15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_TARGET_GENERIC_GETTY_TERM="linux" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/chromebook/snow/sign.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/chromebook/snow/mksd.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_PATCH="board/chromebook/snow/linux-4.15-dts-tpm.patch" +BR2_LINUX_KERNEL_DEFCONFIG="exynos" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/chromebook/snow/linux-4.15.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="exynos5250-snow" +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_PARTED=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_VBOOT_UTILS=y diff --git a/features/buildroot/configs/ci20_defconfig b/features/buildroot/configs/ci20_defconfig new file mode 100644 index 00000000..8f2604b0 --- /dev/null +++ b/features/buildroot/configs/ci20_defconfig @@ -0,0 +1,39 @@ +# architecture +BR2_mipsel=y +BR2_mips_xburst=y +# BR2_MIPS_SOFT_FLOAT is not set + +# Linux headers same as kernel, a 3.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyS4" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci20/genimage.cfg" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,MIPS,CI20_linux,7dff33297116643485ca37141d804eddd793e834)/linux-7dff33297116643485ca37141d804eddd793e834.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ci20" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# u-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY=y +BR2_TARGET_UBOOT_BOARDNAME="ci20_mmc" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/MIPS/CI20_u-boot" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="dd3c1b95dac7d10b2ca5806f65e5c1050d7dd0fa" +BR2_TARGET_UBOOT_PATCH="board/ci20/patches/uboot" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/ci20/uboot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="32768" + +# host +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/csky_gx6605s_defconfig b/features/buildroot/configs/csky_gx6605s_defconfig new file mode 100644 index 00000000..d0a2aadc --- /dev/null +++ b/features/buildroot/configs/csky_gx6605s_defconfig @@ -0,0 +1,18 @@ +BR2_csky=y +BR2_GLOBAL_PATCH_DIR="board/csky/gx6605s/patches" +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/c-sky/tools/raw/master/csky-linux-tools-x86_64-glibc-linux-4.9.56-20180128.tar.gz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="csky-linux" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/c-sky/linux-4.9.y/archive/6064a9bdf48cefbccc4f6472dd04251f0dec1931.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="gx66xx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="gx6605s" +BR2_TARGET_ROOTFS_EXT2=y diff --git a/features/buildroot/configs/cubieboard2_defconfig b/features/buildroot/configs/cubieboard2_defconfig new file mode 100644 index 00000000..fd50742d --- /dev/null +++ b/features/buildroot/configs/cubieboard2_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y +BR2_TARGET_GENERIC_HOSTNAME="Cubieboard2" +BR2_TARGET_GENERIC_ISSUE="Welcome to Cubieboard2!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubietech/cubieboard2/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.14" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-cubieboard2" +BR2_TARGET_ROOTFS_EXT2=y +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="2018.09" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Cubieboard2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/cubietech/cubieboard2/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/engicam_imx6qdl_icore_defconfig b/features/buildroot/configs/engicam_imx6qdl_icore_defconfig new file mode 100644 index 00000000..d8a51c7a --- /dev/null +++ b/features/buildroot/configs/engicam_imx6qdl_icore_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore imx6q-icore imx6q-icore-ofcap10 imx6q-icore-ofcap12" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6/genimage.cfg" diff --git a/features/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig b/features/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig new file mode 100644 index 00000000..2da0a65c --- /dev/null +++ b/features/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig @@ -0,0 +1,81 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore imx6q-icore imx6q-icore-ofcap10 imx6q-icore-ofcap12" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/engicam/icorem6/linux_qt5.fragment" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6/genimage.cfg" +BR2_ROOTFS_OVERLAY="board/engicam/icorem6/rootfs_overlay" + +# qt5 dependencies +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# qt5 +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +BR2_PACKAGE_QT5BASE_LINUXFB=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y + +# mesa3d +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_OPENGL_ES=y + +# qt5 demo packages +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_MESA3D_DEMOS=y +BR2_PACKAGE_KMSCUBE=y +BR2_PACKAGE_QT5CINEX=y +BR2_PACKAGE_QT5CINEX_HD=y + +# fonts +BR2_PACKAGE_BITSTREAM_VERA=y +BR2_PACKAGE_CANTARELL=y +BR2_PACKAGE_DEJAVU=y +BR2_PACKAGE_FONT_AWESOME=y +BR2_PACKAGE_GHOSTSCRIPT_FONTS=y +BR2_PACKAGE_INCONSOLATA=y +BR2_PACKAGE_LIBERATION=y diff --git a/features/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig b/features/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig new file mode 100644 index 00000000..45ed67be --- /dev/null +++ b/features/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_rqs" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore-rqs imx6q-icore-rqs" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo RQS Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6_rqs/genimage.cfg" diff --git a/features/buildroot/configs/engicam_imx6ul_geam_defconfig b/features/buildroot/configs/engicam_imx6ul_geam_defconfig new file mode 100644 index 00000000..aac8432e --- /dev/null +++ b/features/buildroot/configs/engicam_imx6ul_geam_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07-rc1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ul_geam_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-geam-kit" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam GEAM6UL Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/geam6ul/genimage.cfg" diff --git a/features/buildroot/configs/engicam_imx6ul_isiot_defconfig b/features/buildroot/configs/engicam_imx6ul_isiot_defconfig new file mode 100644 index 00000000..57a66dea --- /dev/null +++ b/features/buildroot/configs/engicam_imx6ul_isiot_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ul_isiot_emmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-isiot-emmc" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam Is.IoT eMMC Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/isiot/genimage.cfg" diff --git a/features/buildroot/configs/freescale_imx28evk_defconfig b/features/buildroot/configs/freescale_imx28evk_defconfig new file mode 100644 index 00000000..ba17ed21 --- /dev/null +++ b/features/buildroot/configs/freescale_imx28evk_defconfig @@ -0,0 +1,34 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.17 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17.8" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx28evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT4=y + +# To generate SD Image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" diff --git a/features/buildroot/configs/freescale_imx6dlsabreauto_defconfig b/features/buildroot/configs/freescale_imx6dlsabreauto_defconfig new file mode 100644 index 00000000..55db461f --- /dev/null +++ b/features/buildroot/configs/freescale_imx6dlsabreauto_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-sabreauto" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6dlsabreauto" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/freescale_imx6dlsabresd_defconfig b/features/buildroot/configs/freescale_imx6dlsabresd_defconfig new file mode 100644 index 00000000..dc9b498a --- /dev/null +++ b/features/buildroot/configs/freescale_imx6dlsabresd_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-sabresd" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6dlsabresd" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/freescale_imx6qsabreauto_defconfig b/features/buildroot/configs/freescale_imx6qsabreauto_defconfig new file mode 100644 index 00000000..bc333e1a --- /dev/null +++ b/features/buildroot/configs/freescale_imx6qsabreauto_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6qsabreauto" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/freescale_imx6qsabresd_defconfig b/features/buildroot/configs/freescale_imx6qsabresd_defconfig new file mode 100644 index 00000000..e0ef20c5 --- /dev/null +++ b/features/buildroot/configs/freescale_imx6qsabresd_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +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_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/freescale_imx6sxsabresd_defconfig b/features/buildroot/configs/freescale_imx6sxsabresd_defconfig new file mode 100644 index 00000000..eb11fb8a --- /dev/null +++ b/features/buildroot/configs/freescale_imx6sxsabresd_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-sdb" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sxsabresd" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/freescale_imx7dsabresd_defconfig b/features/buildroot/configs/freescale_imx7dsabresd_defconfig new file mode 100644 index 00000000..9d00a53e --- /dev/null +++ b/features/buildroot/configs/freescale_imx7dsabresd_defconfig @@ -0,0 +1,40 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx7dsdb/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-sdb" + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" diff --git a/features/buildroot/configs/freescale_imx8mmevk_defconfig b/features/buildroot/configs/freescale_imx8mmevk_defconfig new file mode 100644 index 00000000..5472ed36 --- /dev/null +++ b/features/buildroot/configs/freescale_imx8mmevk_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +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/fsl-imx8mm-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.14.98_2.0.0_ga" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-imx8mm-evk" +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.14.98_2.0.0_ga" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.14.98_2.0.0_ga" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mm_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/freescale_imx8mqevk_defconfig b/features/buildroot/configs/freescale_imx8mqevk_defconfig new file mode 100644 index 00000000..7e96ee7f --- /dev/null +++ b/features/buildroot/configs/freescale_imx8mqevk_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +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/fsl-imx8mq-evk.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-imx8mq-evk" +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mq_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/freescale_imx8qxpmek_defconfig b/features/buildroot/configs/freescale_imx8qxpmek_defconfig new file mode 100644 index 00000000..33e2a50d --- /dev/null +++ b/features/buildroot/configs/freescale_imx8qxpmek_defconfig @@ -0,0 +1,40 @@ +BR2_aarch64=y +BR2_cortex_a35=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +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" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-imx8qxp-mek" +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_PACKAGE_IMX_SC_FIRMWARE=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8qxp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8qxp_mek" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/freescale_p1025twr_defconfig b/features/buildroot/configs/freescale_p1025twr_defconfig new file mode 100644 index 00000000..f476d927 --- /dev/null +++ b/features/buildroot/configs/freescale_p1025twr_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="mpc85xx_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/p1025twr" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/freescale_t1040d4rdb_defconfig b/features/buildroot/configs/freescale_t1040d4rdb_defconfig new file mode 100644 index 00000000..df44046e --- /dev/null +++ b/features/buildroot/configs/freescale_t1040d4rdb_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e5500=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/t1040d4rdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/freescale_t2080_qds_rdb_defconfig b/features/buildroot/configs/freescale_t2080_qds_rdb_defconfig new file mode 100644 index 00000000..3d03c32f --- /dev/null +++ b/features/buildroot/configs/freescale_t2080_qds_rdb_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e6500=y + +# Linux headers same as kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17.14" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/t2080qds fsl/t2080rdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set + diff --git a/features/buildroot/configs/friendlyarm_nanopi_a64_defconfig b/features/buildroot/configs/friendlyarm_nanopi_a64_defconfig new file mode 100644 index 00000000..7d9535e6 --- /dev/null +++ b/features/buildroot/configs/friendlyarm_nanopi_a64_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_a64" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-a64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-nanopi-a64" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to FriendlyARM Nanopi A64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-a64/genimage.cfg" diff --git a/features/buildroot/configs/friendlyarm_nanopi_neo2_defconfig b/features/buildroot/configs/friendlyarm_nanopi_neo2_defconfig new file mode 100644 index 00000000..e932ae3b --- /dev/null +++ b/features/buildroot/configs/friendlyarm_nanopi_neo2_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +R2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_neo2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-neo2/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-nanopi-neo2" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to FriendlyARM Nanopi NEO2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-neo2/genimage.cfg" diff --git a/features/buildroot/configs/galileo_defconfig b/features/buildroot/configs/galileo_defconfig new file mode 100644 index 00000000..03ca23f4 --- /dev/null +++ b/features/buildroot/configs/galileo_defconfig @@ -0,0 +1,24 @@ +BR2_x86_x1000=y +# Needed for TARGET_GRUB2 +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Linux headers same as kernel, a 3.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_OVERLAY="board/intel/galileo/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/intel/galileo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/intel/galileo/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,mdr78,Linux-x1000,8b3c9d8ce1656a26b1097d9091d53bfb39fef640)/linux-8b3c9d8ce1656a26b1097d9091d53bfb39fef640.tar.gz" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/intel/galileo/linux-3.14.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_I386_EFI=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/grinn_chiliboard_defconfig b/features/buildroot/configs/grinn_chiliboard_defconfig new file mode 100644 index 00000000..ab89bbf8 --- /dev/null +++ b/features/buildroot/configs/grinn_chiliboard_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/grinn/chiliboard/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.1" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-chiliboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +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="2019.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="chiliboard" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/grinn_liteboard_defconfig b/features/buildroot/configs/grinn_liteboard_defconfig new file mode 100644 index 00000000..f2c1da33 --- /dev/null +++ b/features/buildroot/configs/grinn_liteboard_defconfig @@ -0,0 +1,25 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/grinn/liteboard/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.1" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-liteboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +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="2019.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="liteboard" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/imx23evk_defconfig b/features/buildroot/configs/imx23evk_defconfig new file mode 100644 index 00000000..87610d1b --- /dev/null +++ b/features/buildroot/configs/imx23evk_defconfig @@ -0,0 +1,34 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx23evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT4=y + +# To generate SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" diff --git a/features/buildroot/configs/imx6-sabreauto_defconfig b/features/buildroot/configs/imx6-sabreauto_defconfig new file mode 100644 index 00000000..d9a08bbe --- /dev/null +++ b/features/buildroot/configs/imx6-sabreauto_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabreauto" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto imx6dl-sabreauto imx6qp-sabreauto" diff --git a/features/buildroot/configs/imx6-sabresd_defconfig b/features/buildroot/configs/imx6-sabresd_defconfig new file mode 100644 index 00000000..c2924b2e --- /dev/null +++ b/features/buildroot/configs/imx6-sabresd_defconfig @@ -0,0 +1,39 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd imx6dl-sabresd imx6qp-sabresd" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/features/buildroot/configs/imx6-sabresd_qt5_defconfig b/features/buildroot/configs/imx6-sabresd_qt5_defconfig new file mode 100644 index 00000000..4616f57e --- /dev/null +++ b/features/buildroot/configs/imx6-sabresd_qt5_defconfig @@ -0,0 +1,98 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Additional features needed for packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="320M" +BR2_ROOTFS_OVERLAY="board/freescale/imx6-sabresd/rootfs_overlay" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd imx6dl-sabresd imx6qp-sabresd" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/imx6-sabresd/linux_qt5.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# GL driver +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_OPENGL_ES=y + +# Fonts +BR2_PACKAGE_BITSTREAM_VERA=y +BR2_PACKAGE_CANTARELL=y +BR2_PACKAGE_DEJAVU=y +BR2_PACKAGE_FONT_AWESOME=y +BR2_PACKAGE_GHOSTSCRIPT_FONTS=y +BR2_PACKAGE_INCONSOLATA=y +BR2_PACKAGE_LIBERATION=y + +# GL demos +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_KMSCUBE=y +BR2_PACKAGE_LIBV4L=y +BR2_PACKAGE_MESA3D_DEMOS=y + +# Qt5 +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +BR2_PACKAGE_QT5BASE_LINUXFB=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y +BR2_PACKAGE_QT5CINEX=y +BR2_PACKAGE_QT5CINEX_HD=y + +# NXP firmware package +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# libdrm tests +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y + +# gstreamer-1.0 +BR2_PACKAGE_GSTREAMER1=y +BR2_PACKAGE_GST1_PLUGINS_GOOD=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y +BR2_PACKAGE_GST1_PLUGINS_BAD=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS=y + +# For automatic kernel module loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y diff --git a/features/buildroot/configs/imx6slevk_defconfig b/features/buildroot/configs/imx6slevk_defconfig new file mode 100644 index 00000000..90a02964 --- /dev/null +++ b/features/buildroot/configs/imx6slevk_defconfig @@ -0,0 +1,26 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6slevk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-evk" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/imx6sx-sdb_defconfig b/features/buildroot/configs/imx6sx-sdb_defconfig new file mode 100644 index 00000000..a87bdf84 --- /dev/null +++ b/features/buildroot/configs/imx6sx-sdb_defconfig @@ -0,0 +1,26 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sxsabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-sdb imx6sx-sdb-reva" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/imx6ulevk_defconfig b/features/buildroot/configs/imx6ulevk_defconfig new file mode 100644 index 00000000..9e30d2c3 --- /dev/null +++ b/features/buildroot/configs/imx6ulevk_defconfig @@ -0,0 +1,39 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.11" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/features/buildroot/configs/imx6ulpico_defconfig b/features/buildroot/configs/imx6ulpico_defconfig new file mode 100644 index 00000000..56ae5887 --- /dev/null +++ b/features/buildroot/configs/imx6ulpico_defconfig @@ -0,0 +1,51 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.17 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc5" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/technexion/imx6ulpico/rootfs_overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-pico-hobbit" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# wifi firmware for brcm4339 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="pico-imx6ul" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/features/buildroot/configs/imx7d-sdb_defconfig b/features/buildroot/configs/imx7d-sdb_defconfig new file mode 100644 index 00000000..b9983e34 --- /dev/null +++ b/features/buildroot/configs/imx7d-sdb_defconfig @@ -0,0 +1,36 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.2 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_2=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.2.4" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-sdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.07" +BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/imx7dpico_defconfig b/features/buildroot/configs/imx7dpico_defconfig new file mode 100644 index 00000000..7e148453 --- /dev/null +++ b/features/buildroot/configs/imx7dpico_defconfig @@ -0,0 +1,50 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.2 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_2=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc4" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.2.4" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-pico-pi" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_BOARDNAME="pico-pi-imx7d" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.07" +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y + +# wifi firmware for brcm43439 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_GENIMAGE=y + +# filesystem / image +BR2_ROOTFS_OVERLAY="board/technexion/imx7dpico/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/features/buildroot/configs/imx8mmpico_defconfig b/features/buildroot/configs/imx8mmpico_defconfig new file mode 100644 index 00000000..d30dc067 --- /dev/null +++ b/features/buildroot/configs/imx8mmpico_defconfig @@ -0,0 +1,39 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +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-pico-pi.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,TechNexion,linux,7ff5de3f5d79c77ab7ecaa6e346ad0e7fb7f0570)/linux-7ff5de3f5d79c77ab7ecaa6e346ad0e7fb7f0570.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="tn_imx8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-pico-pi freescale/imx8mm-pico-pi-ili9881c freescale/imx8mm-pico-pi-sn65dsi84-hj070na" +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +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_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.14.78_1.0.0_ga" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mm" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=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,TechNexion,u-boot-edm,d3391226ba25b1cc6cba7e6c15a2a7e09319b969)/u-boot-edm-d3391226ba25b1cc6cba7e6c15a2a7e09319b969.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pico-imx8mm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/imx8mpico_defconfig b/features/buildroot/configs/imx8mpico_defconfig new file mode 100644 index 00000000..f22fad07 --- /dev/null +++ b/features/buildroot/configs/imx8mpico_defconfig @@ -0,0 +1,39 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +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/pico-8m.dtb" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,TechNexion,linux,d69606b85de50b01e7c028ea2188308ab6612c80)/linux-d69606b85de50b01e7c028ea2188308ab6612c80.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="tn_imx8" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/pico-8m freescale/pico-8m-dcss-ili9881c" +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +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_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.9.88_2.2.0_8qxp_beta2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=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,TechNexion,u-boot-edm,2fb0ee63229919807737b83d49f5813f594939ac)/u-boot-edm-2fb0ee63229919807737b83d49f5813f594939ac.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pico-8m" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/features/buildroot/configs/lego_ev3_defconfig b/features/buildroot/configs/lego_ev3_defconfig new file mode 100644 index 00000000..b4a10000 --- /dev/null +++ b/features/buildroot/configs/lego_ev3_defconfig @@ -0,0 +1,52 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh" +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19" +BR2_LINUX_KERNEL_DEFCONFIG="davinci_all" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lego/ev3/linux.fragment" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xc0008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="da850-lego-ev3" + +# Target packages +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/lego/ev3/busybox.fragment" +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y +BR2_PACKAGE_BRICKD=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y +# BR2_TARGET_ROOTFS_TAR is not set + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="legoev3" + +# host +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/licheepi_zero_defconfig b/features/buildroot/configs/licheepi_zero_defconfig new file mode 100644 index 00000000..826e98c5 --- /dev/null +++ b/features/buildroot/configs/licheepi_zero_defconfig @@ -0,0 +1,53 @@ +# Target options +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="licheepi-zero" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the LicheePi Zero" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/licheepi/genimage.cfg" + +# Kernel +# Custom 4.14.14 kernel based on stable linux.4.14.y from Lichee-Pi Github repository +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Lichee-Pi/linux" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="cda44c146b9b87290bc7c636ffa7d88cbfb03ace" +BR2_LINUX_KERNEL_DEFCONFIG="licheepi_zero" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v3s-licheepi-zero sun8i-v3s-licheepi-zero-dock" + +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y + +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y + +# Filesystem images +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +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/Lichee-Pi/u-boot" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="32ab1804cd7c5858be8009e35ca07502dc8765c7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="LicheePi_Zero" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/licheepi/boot.cmd" + +# Required host utilities for building an SDCard image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/linksprite_pcduino_defconfig b/features/buildroot/configs/linksprite_pcduino_defconfig new file mode 100644 index 00000000..dd9bcdc1 --- /dev/null +++ b/features/buildroot/configs/linksprite_pcduino_defconfig @@ -0,0 +1,63 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="pcduino" +BR2_TARGET_GENERIC_ISSUE="pcDuino buildroot is ready" + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# SD image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/linksprite/pcduino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/linksprite/pcduino/post-image.sh" + +# For kernel modules autoloading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun4i-a10-pcduino" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/linksprite/pcduino/linux-extras.config" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_USE_DEFCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Linksprite_pcDuino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Host packages +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# Target packages: wireless support for pcduino-lite-wifi +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y diff --git a/features/buildroot/configs/minnowboard_max-graphical_defconfig b/features/buildroot/configs/minnowboard_max-graphical_defconfig new file mode 100644 index 00000000..921dae31 --- /dev/null +++ b/features/buildroot/configs/minnowboard_max-graphical_defconfig @@ -0,0 +1,74 @@ +# Architecture +BR2_x86_64=y +BR2_x86_silvermont=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +# needed for TARGET_GRUB2 +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System configuration +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_OVERLAY="board/minnowboard/fs-overlay-graphical" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/minnowboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/minnowboard/post-image.sh" + +# Host packages +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Linux +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.8" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux.config" + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# ALSA +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y + +# OpenGL +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_MESA3D_DEMOS=y +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_I965=y + +# Framebuffer (just for testing purposes) +BR2_PACKAGE_FB_TEST_APP=y + +# X +BR2_PACKAGE_XORG7=y +BR2_PACKAGE_XSERVER_XORG_SERVER=y +BR2_PACKAGE_XAPP_XRANDR=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL=y +BR2_PACKAGE_NODM=y +BR2_PACKAGE_XTERM=y +BR2_PACKAGE_OPENBOX=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y + +# Libraries +BR2_PACKAGE_IMLIB2=y +BR2_PACKAGE_IMLIB2_JPEG=y +BR2_PACKAGE_IMLIB2_PNG=y +BR2_PACKAGE_STARTUP_NOTIFICATION=y + +# Filesystem image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/minnowboard_max_defconfig b/features/buildroot/configs/minnowboard_max_defconfig new file mode 100644 index 00000000..523ddffd --- /dev/null +++ b/features/buildroot/configs/minnowboard_max_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_x86_64=y +BR2_x86_silvermont=y + +# Misc +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/minnowboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/minnowboard/post-image.sh" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +# Needed for grub2 +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Needed for ethernet +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.8" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux.config" + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# Filesystem image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/mx25pdk_defconfig b/features/buildroot/configs/mx25pdk_defconfig new file mode 100644 index 00000000..ec4f8b82 --- /dev/null +++ b/features/buildroot/configs/mx25pdk_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx25pdk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v4_v5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx25-pdk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/features/buildroot/configs/mx51evk_defconfig b/features/buildroot/configs/mx51evk_defconfig new file mode 100644 index 00000000..0cb8f476 --- /dev/null +++ b/features/buildroot/configs/mx51evk_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 5.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx51evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.10" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-babbage" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/features/buildroot/configs/mx53loco_defconfig b/features/buildroot/configs/mx53loco_defconfig new file mode 100644 index 00000000..ca6ec446 --- /dev/null +++ b/features/buildroot/configs/mx53loco_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 4.17 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx53loco" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17.4" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx53-qsb imx53-qsrb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/features/buildroot/configs/mx6cubox_defconfig b/features/buildroot/configs/mx6cubox_defconfig new file mode 100644 index 00000000..2996c375 --- /dev/null +++ b/features/buildroot/configs/mx6cubox_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/mx6cubox/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/solidrun/mx6cubox/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6cuboxi" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.1" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-cubox-i imx6dl-cubox-i imx6q-hummingboard imx6dl-hummingboard" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/mx6sx_udoo_neo_defconfig b/features/buildroot/configs/mx6sx_udoo_neo_defconfig new file mode 100644 index 00000000..e2e36b90 --- /dev/null +++ b/features/buildroot/configs/mx6sx_udoo_neo_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/udoo/neo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/udoo/neo/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="udoo_neo" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-udoo-neo-basic imx6sx-udoo-neo-full imx6sx-udoo-neo-extended" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/mx6udoo_defconfig b/features/buildroot/configs/mx6udoo_defconfig new file mode 100644 index 00000000..86ad13bb --- /dev/null +++ b/features/buildroot/configs/mx6udoo_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="udoo" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/udoo/mx6qdl/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-udoo imx6dl-udoo" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/nanopi_m1_defconfig b/features/buildroot/configs/nanopi_m1_defconfig new file mode 100644 index 00000000..cf9521a3 --- /dev/null +++ b/features/buildroot/configs/nanopi_m1_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="nanopi-m1" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi M1" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_m1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-nanopi-m1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-m1/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-m1/genimage.cfg" +# BR2_TARGET_ROOTFS_TAR is not set + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/nanopi_m1_plus_defconfig b/features/buildroot/configs/nanopi_m1_plus_defconfig new file mode 100644 index 00000000..2f9d14f1 --- /dev/null +++ b/features/buildroot/configs/nanopi_m1_plus_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="nanopi-m1-plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi M1 Plus" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_m1_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-nanopi-m1-plus" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-m1-plus/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-m1-plus/genimage.cfg" +# BR2_TARGET_ROOTFS_TAR is not set + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/nanopi_neo_defconfig b/features/buildroot/configs/nanopi_neo_defconfig new file mode 100644 index 00000000..aa464917 --- /dev/null +++ b/features/buildroot/configs/nanopi_neo_defconfig @@ -0,0 +1,40 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +BR2_TARGET_GENERIC_HOSTNAME="nanopi-neo" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi NEO" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/friendlyarm/nanopi-neo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/friendlyarm/nanopi-neo/post-image.sh" + +# Linux headers same as kernel, a 4.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10=y + +# Use a -rc kernel to get the DTS +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.1" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-nanopi-neo" + +# Use an -rc tag because the defconfig is very recent +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_neo" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Build an sdcard image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +BR2_TARGET_ROOTFS_EXT2_INODES=8192 +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/nexbox_a95x_defconfig b/features/buildroot/configs/nexbox_a95x_defconfig new file mode 100644 index 00000000..4820d47d --- /dev/null +++ b/features/buildroot/configs/nexbox_a95x_defconfig @@ -0,0 +1,21 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/nexbox/a95x/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/nexbox/a95x/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.8" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-gxbb-nexbox-a95x amlogic/meson-gxl-s905x-nexbox-a95x" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/nitrogen6sx_defconfig b/features/buildroot/configs/nitrogen6sx_defconfig new file mode 100644 index 00000000..b29adf29 --- /dev/null +++ b/features/buildroot/configs/nitrogen6sx_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Last version of branch boundary-v2017.07 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6sx" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Last version of branch boundary-imx_4.9.x_1.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-nitrogen6sx imx6sx-nitrogen6sx-m4" diff --git a/features/buildroot/configs/nitrogen6x_defconfig b/features/buildroot/configs/nitrogen6x_defconfig new file mode 100644 index 00000000..5905a40e --- /dev/null +++ b/features/buildroot/configs/nitrogen6x_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Last version of branch boundary-v2017.07 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Last version of branch boundary-imx_4.9.x_1.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite" diff --git a/features/buildroot/configs/nitrogen7_defconfig b/features/buildroot/configs/nitrogen7_defconfig new file mode 100644 index 00000000..fa8f36c6 --- /dev/null +++ b/features/buildroot/configs/nitrogen7_defconfig @@ -0,0 +1,41 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Last version of branch boundary-v2017.07 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen7" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Last version of branch boundary-imx_4.9.x_1.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-nitrogen7 imx7d-nitrogen7-m4" diff --git a/features/buildroot/configs/nitrogen8m_defconfig b/features/buildroot/configs/nitrogen8m_defconfig new file mode 100644 index 00000000..9b758f0b --- /dev/null +++ b/features/buildroot/configs/nitrogen8m_defconfig @@ -0,0 +1,54 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# System +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/imx8mq-nitrogen8m.dtb" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# DDR training binaries +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +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-imx_4.9.51_imx8m_ga +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/imx-atf/archive/67c68675.tar.gz" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen8m" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_v2017.03_4.9.51_imx8m_ga +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/b661d854.tar.gz" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Latest revision of branch boundary-imx_4.9.x_2.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/7777e14d.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/imx8mq-nitrogen8m freescale/imx8mq-nitrogen8m-m4" diff --git a/features/buildroot/configs/odroidc2_defconfig b/features/buildroot/configs/odroidc2_defconfig new file mode 100644 index 00000000..63c5d2ed --- /dev/null +++ b/features/buildroot/configs/odroidc2_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_aarch64=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="odroidc2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/hardkernel/odroidc2/post-image.sh" +BR2_PACKAGE_ODROID_SCRIPTS=y +BR2_GCC_VERSION_4_9_X=y + +# Kernel +BR2_KERNEL_HEADERS_VERSION=y +BR2_DEFAULT_KERNEL_VERSION="3.14.79" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,hardkernel,linux,f966ebfc0e8dc88c7931b4640b8a1b4bc2e13faa)/linux-f966ebfc0e8dc88c7931b4640b8a1b4bc2e13faa.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="odroidc2" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_BUILD_DEFAULT_DTS=y +BR2_LINUX_KERNEL_USE_INTREE_DTS=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="meson64_odroidc2" +BR2_LINUX_KERNEL_IMAGE=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/hardkernel/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="cff3edb675933ea2e2ecd659eab127a42f3777df" +BR2_TARGET_UBOOT_BOARDNAME="odroidc2" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/odroidxu4_defconfig b/features/buildroot/configs/odroidxu4_defconfig new file mode 100644 index 00000000..69958e13 --- /dev/null +++ b/features/buildroot/configs/odroidxu4_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/hardkernel/odroidxu4/post-image.sh" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/hardkernel/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="4.14.16-104" +BR2_LINUX_KERNEL_DEFCONFIG="odroidxu4" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="exynos5422-odroidxu4" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +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/hardkernel/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="88af53fbcef8386cb4d5f04c19f4b2bcb69e90ca" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="odroid-xu4" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="sd_fuse/bl1.bin.hardkernel sd_fuse/bl2.bin.hardkernel.720k_uboot sd_fuse/tzsw.bin.hardkernel " +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/olimex_a10_olinuxino_lime_defconfig b/features/buildroot/configs/olimex_a10_olinuxino_lime_defconfig new file mode 100644 index 00000000..8248daf9 --- /dev/null +++ b/features/buildroot/configs/olimex_a10_olinuxino_lime_defconfig @@ -0,0 +1,47 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a10-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a10_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a10_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.26" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun4i-a10-olinuxino-lime" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A10-OLinuXino-Lime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a10_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/olimex_a13_olinuxino_defconfig b/features/buildroot/configs/olimex_a13_olinuxino_defconfig new file mode 100644 index 00000000..df2a7223 --- /dev/null +++ b/features/buildroot/configs/olimex_a13_olinuxino_defconfig @@ -0,0 +1,46 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a13-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A13-OLinuXino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun5i-a13-olinuxino" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a13_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a13_olinuxino/genimage.cfg" + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig b/features/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig new file mode 100644 index 00000000..a36a73fe --- /dev/null +++ b/features/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig @@ -0,0 +1,53 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +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="4.19.57" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-lime2" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# sunxi packages +BR2_PACKAGE_SUNXI_TOOLS=y +BR2_PACKAGE_SUNXI_MALI_MAINLINE=y +BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/olimex_a20_olinuxino_lime_defconfig b/features/buildroot/configs/olimex_a20_olinuxino_lime_defconfig new file mode 100644 index 00000000..709dc77a --- /dev/null +++ b/features/buildroot/configs/olimex_a20_olinuxino_lime_defconfig @@ -0,0 +1,53 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +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="4.19.57" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-lime" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# sunxi packages +BR2_PACKAGE_SUNXI_TOOLS=y +BR2_PACKAGE_SUNXI_MALI_MAINLINE=y +BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/olimex_a20_olinuxino_micro_defconfig b/features/buildroot/configs/olimex_a20_olinuxino_micro_defconfig new file mode 100644 index 00000000..a2aff0ca --- /dev/null +++ b/features/buildroot/configs/olimex_a20_olinuxino_micro_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +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="4.12" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-micro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino_MICRO" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/olimex_a64_olinuxino_defconfig b/features/buildroot/configs/olimex_a64_olinuxino_defconfig new file mode 100644 index 00000000..d5b2d353 --- /dev/null +++ b/features/buildroot/configs/olimex_a64_olinuxino_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="a64-olinuxino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a64-olinuxino/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-olinuxino" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Olimex A64-OLinuXino" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a64-olinuxino/genimage.cfg" diff --git a/features/buildroot/configs/olimex_imx233_olinuxino_defconfig b/features/buildroot/configs/olimex_imx233_olinuxino_defconfig new file mode 100644 index 00000000..232d9d0d --- /dev/null +++ b/features/buildroot/configs/olimex_imx233_olinuxino_defconfig @@ -0,0 +1,52 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.2" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-olinuxino" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x42000000" + +# Firmware for WiFi +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_ZD1211_FIRMWARE=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# To generate SD Image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" + diff --git a/features/buildroot/configs/openblocks_a6_defconfig b/features/buildroot/configs/openblocks_a6_defconfig new file mode 100644 index 00000000..c805ae9c --- /dev/null +++ b/features/buildroot/configs/openblocks_a6_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# filesystem +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="kirkwood-openblocks_a6" diff --git a/features/buildroot/configs/orangepi_lite2_defconfig b/features/buildroot/configs/orangepi_lite2_defconfig new file mode 100644 index 00000000..c6be1c46 --- /dev/null +++ b/features/buildroot/configs/orangepi_lite2_defconfig @@ -0,0 +1,60 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.0" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +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/amarula/u-boot-amarula" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="h6-v1.0a" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,amarula,linux-amarula,h6-v1.0b)/linux-amarula_h6-v1.0b.tar.gz" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h6-orangepi-lite2" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Lite2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-lite2/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-lite2/post-build.sh" +BR2_ROOTFS_OVERLAY="board/orangepi/orangepi-lite2/rootfs_overlay" + +# wireless firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y diff --git a/features/buildroot/configs/orangepi_lite_defconfig b/features/buildroot/configs/orangepi_lite_defconfig new file mode 100644 index 00000000..1c3b99cf --- /dev/null +++ b/features/buildroot/configs/orangepi_lite_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Lite" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Lite" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.17" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-lite/linux-extras.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-lite" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_RTL8189FS=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-lite/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-lite/genimage.cfg" diff --git a/features/buildroot/configs/orangepi_one_defconfig b/features/buildroot/configs/orangepi_one_defconfig new file mode 100644 index 00000000..3715f1dd --- /dev/null +++ b/features/buildroot/configs/orangepi_one_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_One" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi One" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-one" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_one" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-one/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-one/genimage.cfg" diff --git a/features/buildroot/configs/orangepi_one_plus_defconfig b/features/buildroot/configs/orangepi_one_plus_defconfig new file mode 100644 index 00000000..1084d422 --- /dev/null +++ b/features/buildroot/configs/orangepi_one_plus_defconfig @@ -0,0 +1,46 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.0" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_h6" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.09" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_one_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,amarula,linux-amarula,h6-v1.0b)/linux-amarula_h6-v1.0b.tar.gz" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h6-orangepi-one-plus" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi One+" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-one-plus/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-one-plus/post-build.sh" diff --git a/features/buildroot/configs/orangepi_pc2_defconfig b/features/buildroot/configs/orangepi_pc2_defconfig new file mode 100644 index 00000000..864f8bb8 --- /dev/null +++ b/features/buildroot/configs/orangepi_pc2_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-pc2/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-pc2" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi PC2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-pc2/genimage.cfg" diff --git a/features/buildroot/configs/orangepi_pc_defconfig b/features/buildroot/configs/orangepi_pc_defconfig new file mode 100644 index 00000000..130a4e70 --- /dev/null +++ b/features/buildroot/configs/orangepi_pc_defconfig @@ -0,0 +1,34 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-pc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.3" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-pc/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/orangepi_pc_plus_defconfig b/features/buildroot/configs/orangepi_pc_plus_defconfig new file mode 100644 index 00000000..edc3909a --- /dev/null +++ b/features/buildroot/configs/orangepi_pc_plus_defconfig @@ -0,0 +1,49 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC_Plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC Plus" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc-plus" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc-plus/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-pc-plus/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-pc-plus/genimage.cfg" + +# wireless driver and firmware +BR2_PACKAGE_RTL8189FS=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y diff --git a/features/buildroot/configs/orangepi_plus_defconfig b/features/buildroot/configs/orangepi_plus_defconfig new file mode 100644 index 00000000..be3eba51 --- /dev/null +++ b/features/buildroot/configs/orangepi_plus_defconfig @@ -0,0 +1,43 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Plus" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-plus" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-plus/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-plus/genimage.cfg" + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/orangepi_prime_defconfig b/features/buildroot/configs/orangepi_prime_defconfig new file mode 100644 index 00000000..f78711ce --- /dev/null +++ b/features/buildroot/configs/orangepi_prime_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_prime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-prime/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-prime" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Prime" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-prime/genimage.cfg" diff --git a/features/buildroot/configs/orangepi_r1_defconfig b/features/buildroot/configs/orangepi_r1_defconfig new file mode 100644 index 00000000..34a400e7 --- /dev/null +++ b/features/buildroot/configs/orangepi_r1_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_R1" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi R1" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.38" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-r1" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-r1/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_r1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-r1/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-r1/genimage.cfg" + +# spi flash support +BR2_PACKAGE_MTD=y diff --git a/features/buildroot/configs/orangepi_win_defconfig b/features/buildroot/configs/orangepi_win_defconfig new file mode 100644 index 00000000..8aae6024 --- /dev/null +++ b/features/buildroot/configs/orangepi_win_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_win" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-win/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-orangepi-win" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Win/Win Plus" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-win/genimage.cfg" diff --git a/features/buildroot/configs/orangepi_zero_defconfig b/features/buildroot/configs/orangepi_zero_defconfig new file mode 100644 index 00000000..d1c6c8f7 --- /dev/null +++ b/features/buildroot/configs/orangepi_zero_defconfig @@ -0,0 +1,53 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.38" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.04" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero/genimage.cfg" + +# wireless driver and firmware +BR2_PACKAGE_XR819_XRADIO=y +BR2_PACKAGE_ARMBIAN_FIRMWARE=y +BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819=y + +# wireless support +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y + +# spi flash support +BR2_PACKAGE_MTD=y diff --git a/features/buildroot/configs/orangepi_zero_plus2_defconfig b/features/buildroot/configs/orangepi_zero_plus2_defconfig new file mode 100644 index 00000000..4ae7ef93 --- /dev/null +++ b/features/buildroot/configs/orangepi_zero_plus2_defconfig @@ -0,0 +1,63 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_OVERLAY="board/orangepi/orangepi-zero-plus2/rootfs_overlay" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero-plus2/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-zero-plus2" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero-plus2/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# wireless firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero Plus2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero-plus2/genimage.cfg" diff --git a/features/buildroot/configs/pandaboard_defconfig b/features/buildroot/configs/pandaboard_defconfig new file mode 100644 index 00000000..188eb1bc --- /dev/null +++ b/features/buildroot/configs/pandaboard_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS2" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pandaboard/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.62" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="omap4-panda-es omap4-panda omap4-panda-a4" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="omap4_panda" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/pc_x86_64_bios_defconfig b/features/buildroot/configs/pc_x86_64_bios_defconfig new file mode 100644 index 00000000..1c1f7a36 --- /dev/null +++ b/features/buildroot/configs/pc_x86_64_bios_defconfig @@ -0,0 +1,65 @@ +# Architecture +BR2_x86_64=y + +# Toolchain, required for eudev (to autoload drivers) +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_GRUB2=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg" + +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10" +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 + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y diff --git a/features/buildroot/configs/pc_x86_64_efi_defconfig b/features/buildroot/configs/pc_x86_64_efi_defconfig new file mode 100644 index 00000000..324de35d --- /dev/null +++ b/features/buildroot/configs/pc_x86_64_efi_defconfig @@ -0,0 +1,65 @@ +# Architecture +BR2_x86_64=y + +# Toolchain, required for eudev (to autoload drivers) +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi-gpt.sh" + +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10" +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 + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y diff --git a/features/buildroot/configs/pine64_defconfig b/features/buildroot/configs/pine64_defconfig new file mode 100644 index 00000000..d2e3a360 --- /dev/null +++ b/features/buildroot/configs/pine64_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pine64_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/pine64/pine64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-pine64" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to PINE64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/pine64/genimage.cfg" diff --git a/features/buildroot/configs/pine64_sopine_defconfig b/features/buildroot/configs/pine64_sopine_defconfig new file mode 100644 index 00000000..3007d5a6 --- /dev/null +++ b/features/buildroot/configs/pine64_sopine_defconfig @@ -0,0 +1,49 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 5.0 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sopine_baseboard" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/pine64/sopine/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.0" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-sopine-baseboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to PINE64 SOPINE" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/sopine/genimage.cfg" diff --git a/features/buildroot/configs/qemu_aarch64_virt_defconfig b/features/buildroot/configs/qemu_aarch64_virt_defconfig new file mode 100644 index 00000000..638e18be --- /dev/null +++ b/features/buildroot/configs/qemu_aarch64_virt_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_aarch64=y +BR2_cortex_a53=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/features/buildroot/configs/qemu_arm_versatile_defconfig b/features/buildroot/configs/qemu_arm_versatile_defconfig new file mode 100644 index 00000000..ce7cb5ef --- /dev/null +++ b/features/buildroot/configs/qemu_arm_versatile_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="versatile-pb" diff --git a/features/buildroot/configs/qemu_arm_versatile_nommu_defconfig b/features/buildroot/configs/qemu_arm_versatile_nommu_defconfig new file mode 100644 index 00000000..81fb5b6c --- /dev/null +++ b/features/buildroot/configs/qemu_arm_versatile_nommu_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_ELF2FLT=y +# BR2_USE_MMU is not set + +# Patches +BR2_GLOBAL_PATCH_DIR="board/qemu/arm-versatile/patches" + +# Busybox with hush +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +# BR2_TARGET_ROOTFS_EXT2 is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-nommu.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="versatile-pb" diff --git a/features/buildroot/configs/qemu_arm_vexpress_defconfig b/features/buildroot/configs/qemu_arm_vexpress_defconfig new file mode 100644 index 00000000..66f198ac --- /dev/null +++ b/features/buildroot/configs/qemu_arm_vexpress_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3D16=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="vexpress" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" diff --git a/features/buildroot/configs/qemu_m68k_mcf5208_defconfig b/features/buildroot/configs/qemu_m68k_mcf5208_defconfig new file mode 100644 index 00000000..44fd918e --- /dev/null +++ b/features/buildroot/configs/qemu_m68k_mcf5208_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_m68k=y +BR2_m68k_cf5208=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# use minimal busybox with hush and networking tools +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" diff --git a/features/buildroot/configs/qemu_m68k_q800_defconfig b/features/buildroot/configs/qemu_m68k_q800_defconfig new file mode 100644 index 00000000..0dd90a97 --- /dev/null +++ b/features/buildroot/configs/qemu_m68k_q800_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_m68k=y +BR2_m68k_68040=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_microblazebe_mmu_defconfig b/features/buildroot/configs/qemu_microblazebe_mmu_defconfig new file mode 100644 index 00000000..95fdfeda --- /dev/null +++ b/features/buildroot/configs/qemu_microblazebe_mmu_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_microblaze=y +BR2_microblazebe=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux.config" +BR2_LINUX_KERNEL_LINUX_BIN=y +BR2_LINUX_KERNEL_PATCH="board/qemu/microblazebe-mmu/xilinx-xemaclite.patch" diff --git a/features/buildroot/configs/qemu_microblazeel_mmu_defconfig b/features/buildroot/configs/qemu_microblazeel_mmu_defconfig new file mode 100644 index 00000000..7400dafa --- /dev/null +++ b/features/buildroot/configs/qemu_microblazeel_mmu_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_microblaze=y +BR2_microblazeel=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux.config" +BR2_LINUX_KERNEL_LINUX_BIN=y +BR2_LINUX_KERNEL_PATCH="board/qemu/microblazeel-mmu/xilinx-xemaclite.patch" diff --git a/features/buildroot/configs/qemu_mips32r2_malta_defconfig b/features/buildroot/configs/qemu_mips32r2_malta_defconfig new file mode 100644 index 00000000..0ee7a588 --- /dev/null +++ b/features/buildroot/configs/qemu_mips32r2_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mips=y +BR2_mips_32r2=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips32r2el_malta_defconfig b/features/buildroot/configs/qemu_mips32r2el_malta_defconfig new file mode 100644 index 00000000..075088df --- /dev/null +++ b/features/buildroot/configs/qemu_mips32r2el_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mipsel=y +BR2_mips_32r2=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips32r6_malta_defconfig b/features/buildroot/configs/qemu_mips32r6_malta_defconfig new file mode 100644 index 00000000..b0bf94ce --- /dev/null +++ b/features/buildroot/configs/qemu_mips32r6_malta_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_mips=y +BR2_mips_32r6=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since gcc-6 +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips32r6el_malta_defconfig b/features/buildroot/configs/qemu_mips32r6el_malta_defconfig new file mode 100644 index 00000000..077d836d --- /dev/null +++ b/features/buildroot/configs/qemu_mips32r6el_malta_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_mipsel=y +BR2_mips_32r6=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since GCC 6.x +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips64_malta_defconfig b/features/buildroot/configs/qemu_mips64_malta_defconfig new file mode 100644 index 00000000..12502eac --- /dev/null +++ b/features/buildroot/configs/qemu_mips64_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mips64=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips64el_malta_defconfig b/features/buildroot/configs/qemu_mips64el_malta_defconfig new file mode 100644 index 00000000..5ddb759b --- /dev/null +++ b/features/buildroot/configs/qemu_mips64el_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mips64el=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips64r6_malta_defconfig b/features/buildroot/configs/qemu_mips64r6_malta_defconfig new file mode 100644 index 00000000..bfa32f65 --- /dev/null +++ b/features/buildroot/configs/qemu_mips64r6_malta_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_mips64=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since gcc-6 +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_mips64r6el_malta_defconfig b/features/buildroot/configs/qemu_mips64r6el_malta_defconfig new file mode 100644 index 00000000..2fd855d7 --- /dev/null +++ b/features/buildroot/configs/qemu_mips64r6el_malta_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_mips64el=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since gcc-6 +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_nios2_10m50_defconfig b/features/buildroot/configs/qemu_nios2_10m50_defconfig new file mode 100644 index 00000000..c07abc37 --- /dev/null +++ b/features/buildroot/configs/qemu_nios2_10m50_defconfig @@ -0,0 +1,13 @@ +BR2_nios2=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="10m50" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/nios2-10m50/linux.fragment" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/qemu_or1k_defconfig b/features/buildroot/configs/qemu_or1k_defconfig new file mode 100644 index 00000000..3fc53f41 --- /dev/null +++ b/features/buildroot/configs/qemu_or1k_defconfig @@ -0,0 +1,16 @@ +# Architecture +BR2_or1k=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4,19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/or1k/linux.config" diff --git a/features/buildroot/configs/qemu_ppc64_e5500_defconfig b/features/buildroot/configs/qemu_ppc64_e5500_defconfig new file mode 100644 index 00000000..59b86369 --- /dev/null +++ b/features/buildroot/configs/qemu_ppc64_e5500_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e5500=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Linux headers same as the kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc64-e5500/linux.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/qemu_ppc64_pseries_defconfig b/features/buildroot/configs/qemu_ppc64_pseries_defconfig new file mode 100644 index 00000000..5f55b246 --- /dev/null +++ b/features/buildroot/configs/qemu_ppc64_pseries_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_power7=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="pseries" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/features/buildroot/configs/qemu_ppc64le_pseries_defconfig b/features/buildroot/configs/qemu_ppc64le_pseries_defconfig new file mode 100644 index 00000000..8356e4e2 --- /dev/null +++ b/features/buildroot/configs/qemu_ppc64le_pseries_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_powerpc64le=y +BR2_powerpc_power8=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_DEFCONFIG="pseries_le" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/features/buildroot/configs/qemu_ppc_g3beige_defconfig b/features/buildroot/configs/qemu_ppc_g3beige_defconfig new file mode 100644 index 00000000..4b2f3ed2 --- /dev/null +++ b/features/buildroot/configs/qemu_ppc_g3beige_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_750=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/features/buildroot/configs/qemu_ppc_mac99_defconfig b/features/buildroot/configs/qemu_ppc_mac99_defconfig new file mode 100644 index 00000000..377fc946 --- /dev/null +++ b/features/buildroot/configs/qemu_ppc_mac99_defconfig @@ -0,0 +1,14 @@ +BR2_powerpc=y +BR2_powerpc_7400=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_2=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.2.4" +BR2_LINUX_KERNEL_DEFCONFIG="pmac32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc-mac99/linux.fragment" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/qemu_ppc_mpc8544ds_defconfig b/features/buildroot/configs/qemu_ppc_mpc8544ds_defconfig new file mode 100644 index 00000000..98985b7b --- /dev/null +++ b/features/buildroot/configs/qemu_ppc_mpc8544ds_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/qemu_ppc_virtex_ml507_defconfig b/features/buildroot/configs/qemu_ppc_virtex_ml507_defconfig new file mode 100644 index 00000000..eddaf355 --- /dev/null +++ b/features/buildroot/configs/qemu_ppc_virtex_ml507_defconfig @@ -0,0 +1,26 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_440=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Use soft float +BR2_SOFT_FLOAT=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-virtex-ml507/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="virtex440-ml507" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/qemu_riscv32_virt_defconfig b/features/buildroot/configs/qemu_riscv32_virt_defconfig new file mode 100644 index 00000000..a1a8c5fd --- /dev/null +++ b/features/buildroot/configs/qemu_riscv32_virt_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_32=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_GLOBAL_PATCH_DIR="board/qemu/riscv32-virt/patches/" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y + +# Linux headers same as kernel, a 5.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.12" +BR2_LINUX_KERNEL_DEFCONFIG="rv32" +BR2_LINUX_KERNEL_IMAGE=y + +# Bootloader +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_USE_PLAT=y +BR2_TARGET_OPENSBI_PLAT="qemu/virt" diff --git a/features/buildroot/configs/qemu_riscv64_virt_defconfig b/features/buildroot/configs/qemu_riscv64_virt_defconfig new file mode 100644 index 00000000..c0b1a439 --- /dev/null +++ b/features/buildroot/configs/qemu_riscv64_virt_defconfig @@ -0,0 +1,26 @@ +# Architecture +BR2_riscv=y +BR2_RISCV_64=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y + +# Linux headers same as kernel, a 5.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.12" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_IMAGE=y + +# Bootloader +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_USE_PLAT=y +BR2_TARGET_OPENSBI_PLAT="qemu/virt" diff --git a/features/buildroot/configs/qemu_sh4_r2d_defconfig b/features/buildroot/configs/qemu_sh4_r2d_defconfig new file mode 100644 index 00000000..e194d7ec --- /dev/null +++ b/features/buildroot/configs/qemu_sh4_r2d_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_sh=y +BR2_sh4=y + +# System +BR2_GLOBAL_PATCH_DIR="board/qemu/sh4-r2d/patches" +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux.config" +BR2_LINUX_KERNEL_ZIMAGE=y diff --git a/features/buildroot/configs/qemu_sh4eb_r2d_defconfig b/features/buildroot/configs/qemu_sh4eb_r2d_defconfig new file mode 100644 index 00000000..f1aad8b6 --- /dev/null +++ b/features/buildroot/configs/qemu_sh4eb_r2d_defconfig @@ -0,0 +1,22 @@ +# Architecture +BR2_sh=y +BR2_sh4eb=y + +# System +BR2_GLOBAL_PATCH_DIR="board/qemu/sh4eb-r2d/patches" +BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux.config" +BR2_LINUX_KERNEL_ZIMAGE=y diff --git a/features/buildroot/configs/qemu_sparc64_sun4u_defconfig b/features/buildroot/configs/qemu_sparc64_sun4u_defconfig new file mode 100644 index 00000000..f4da2bc0 --- /dev/null +++ b/features/buildroot/configs/qemu_sparc64_sun4u_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_sparc64=y +BR2_sparc_v9=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux.config" diff --git a/features/buildroot/configs/qemu_sparc_ss10_defconfig b/features/buildroot/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 00000000..e027b73e --- /dev/null +++ b/features/buildroot/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config" diff --git a/features/buildroot/configs/qemu_x86_64_defconfig b/features/buildroot/configs/qemu_x86_64_defconfig new file mode 100644 index 00000000..afa23969 --- /dev/null +++ b/features/buildroot/configs/qemu_x86_64_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_x86_64=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="tty1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" diff --git a/features/buildroot/configs/qemu_x86_defconfig b/features/buildroot/configs/qemu_x86_defconfig new file mode 100644 index 00000000..3441ad5c --- /dev/null +++ b/features/buildroot/configs/qemu_x86_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_i386=y +BR2_x86_pentiumpro=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="tty1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux.config" diff --git a/features/buildroot/configs/qemu_xtensa_lx60_defconfig b/features/buildroot/configs/qemu_xtensa_lx60_defconfig new file mode 100644 index 00000000..4287e6ab --- /dev/null +++ b/features/buildroot/configs/qemu_xtensa_lx60_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz" + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig b/features/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig new file mode 100644 index 00000000..37b67435 --- /dev/null +++ b/features/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz" + +# Toolchain +BR2_PACKAGE_HOST_ELF2FLT=y +# BR2_USE_MMU is not set + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-nommu.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image" + +# Kernel needs mkimage +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/raspberrypi0_defconfig b/features/buildroot/configs/raspberrypi0_defconfig new file mode 100644 index 00000000..e85e549f --- /dev/null +++ b/features/buildroot/configs/raspberrypi0_defconfig @@ -0,0 +1,36 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" + +# Build the DTBs for A/B from the kernel sources: the zero is the same +# as the A+ model, just in a different form-factor +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b-plus" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0/post-image.sh" diff --git a/features/buildroot/configs/raspberrypi0w_defconfig b/features/buildroot/configs/raspberrypi0w_defconfig new file mode 100644 index 00000000..d723e939 --- /dev/null +++ b/features/buildroot/configs/raspberrypi0w_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-0-w" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0w/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0w/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay" diff --git a/features/buildroot/configs/raspberrypi2_defconfig b/features/buildroot/configs/raspberrypi2_defconfig new file mode 100644 index 00000000..86d34ef8 --- /dev/null +++ b/features/buildroot/configs/raspberrypi2_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y +BR2_ARM_FPU_NEON_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi2/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi2/post-image.sh" diff --git a/features/buildroot/configs/raspberrypi3_64_defconfig b/features/buildroot/configs/raspberrypi3_64_defconfig new file mode 100644 index 00000000..66cf7ed7 --- /dev/null +++ b/features/buildroot/configs/raspberrypi3_64_defconfig @@ -0,0 +1,38 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2837-rpi-3-b" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--aarch64" diff --git a/features/buildroot/configs/raspberrypi3_defconfig b/features/buildroot/configs/raspberrypi3_defconfig new file mode 100644 index 00000000..fcd7e2b4 --- /dev/null +++ b/features/buildroot/configs/raspberrypi3_defconfig @@ -0,0 +1,37 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay" diff --git a/features/buildroot/configs/raspberrypi3_qt5we_defconfig b/features/buildroot/configs/raspberrypi3_qt5we_defconfig new file mode 100644 index 00000000..667e980d --- /dev/null +++ b/features/buildroot/configs/raspberrypi3_qt5we_defconfig @@ -0,0 +1,51 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Build Qt5 WebEngine +BR2_PACKAGE_LIBERATION=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_EXAMPLES=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y +BR2_PACKAGE_QT5BASE_PNG=y +BR2_PACKAGE_QT5WEBENGINE=y +BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS=y +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_USERLAND=y +BR2_PACKAGE_CA_CERTIFICATES=y +BR2_PACKAGE_NTP=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="360M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay --gpu_mem_1024=200" diff --git a/features/buildroot/configs/raspberrypi_defconfig b/features/buildroot/configs/raspberrypi_defconfig new file mode 100644 index 00000000..e6c42a83 --- /dev/null +++ b/features/buildroot/configs/raspberrypi_defconfig @@ -0,0 +1,37 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,5eeff139ea9135db6e01a58ef613338f1d0899d8)/linux-5eeff139ea9135db6e01a58ef613338f1d0899d8.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" + +# Build the DTBs for A/B, A+/B+ and compute module from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm" + +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/post-image.sh" diff --git a/features/buildroot/configs/riotboard_defconfig b/features/buildroot/configs/riotboard_defconfig new file mode 100644 index 00000000..3efcd885 --- /dev/null +++ b/features/buildroot/configs/riotboard_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_BOARDNAME="riotboard" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-riotboard" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_OVERLAY="board/embest/riotboard/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/embest/riotboard/genimage.cfg" diff --git a/features/buildroot/configs/rock64_defconfig b/features/buildroot/configs/rock64_defconfig new file mode 100644 index 00000000..30bf12c0 --- /dev/null +++ b/features/buildroot/configs/rock64_defconfig @@ -0,0 +1,38 @@ +BR2_aarch64=y +BR2_GLOBAL_PATCH_DIR="board/pine64/rock64/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS2" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/pine64/rock64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/rock64/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.19" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3328-rock64" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v1.4" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="rk3328" +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/ayufan-rock64/linux-u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="2017.09-rockchip-ayufan-1035-gd646df03ac" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock64-rk3328" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin tpl/u-boot-tpl.bin" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/roseapplepi_defconfig b/features/buildroot/configs/roseapplepi_defconfig new file mode 100644 index 00000000..32717625 --- /dev/null +++ b/features/buildroot/configs/roseapplepi_defconfig @@ -0,0 +1,39 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y + +BR2_GLOBAL_PATCH_DIR="board/roseapplepi/patches" +# Linux headers same as kernel, a 3.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/roseapplepi/post-image.sh" + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,xapp-le,kernel,59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b)/linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="actduino_bubble_gum_linux" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="actduino_bubble_gum_sdboot_linux" + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_S500_BOOTLOADER=y +BR2_TARGET_S500_BOOTLOADER_BOARD="linux/bubble_gum_sd" +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/xapp-le/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="a035d2673a90143a1a74557503b2e137b1447ae6" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="actduino_bubble_gum_v10" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/s6lx9_microboard_defconfig b/features/buildroot/configs/s6lx9_microboard_defconfig new file mode 100644 index 00000000..97b2d3fe --- /dev/null +++ b/features/buildroot/configs/s6lx9_microboard_defconfig @@ -0,0 +1,13 @@ +BR2_microblaze=y +BR2_microblazeel=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.7" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/avnet/s6lx9_microboard/lx9_mmu_defconfig" +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/avnet/s6lx9_microboard/lx9_mmu.dts" diff --git a/features/buildroot/configs/sheevaplug_defconfig b/features/buildroot/configs/sheevaplug_defconfig new file mode 100644 index 00000000..052e3939 --- /dev/null +++ b/features/buildroot/configs/sheevaplug_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# filesystem +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sheevaplug" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.07" +BR2_TARGET_UBOOT_FORMAT_KWB=y +# BR2_TARGET_UBOOT_NETWORK is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.63" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="kirkwood-sheevaplug" diff --git a/features/buildroot/configs/snps_aarch64_vdk_defconfig b/features/buildroot/configs/snps_aarch64_vdk_defconfig new file mode 100644 index 00000000..b55dce1a --- /dev/null +++ b/features/buildroot/configs/snps_aarch64_vdk_defconfig @@ -0,0 +1,12 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_HOSTNAME="vdk-buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to SNPS VDK by Buildroot" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/synopsys/vdk/linux-vdk-aarch64-defconfig" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/features/buildroot/configs/snps_arc700_axs101_defconfig b/features/buildroot/configs/snps_arc700_axs101_defconfig new file mode 100644 index 00000000..5d9b5a51 --- /dev/null +++ b/features/buildroot/configs/snps_arc700_axs101_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_arcle=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="axs101" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC Software Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/synopsys/axs10x/post-build.sh" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.31" +BR2_LINUX_KERNEL_DEFCONFIG="axs101" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs101" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/snps_archs38_axs103_defconfig b/features/buildroot/configs/snps_archs38_axs103_defconfig new file mode 100644 index 00000000..c6e2b10f --- /dev/null +++ b/features/buildroot/configs/snps_archs38_axs103_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="axs103" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC Software Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/synopsys/axs10x/post-build.sh" + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.31" +BR2_LINUX_KERNEL_DEFCONFIG="axs103_smp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs103" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/features/buildroot/configs/snps_archs38_haps_defconfig b/features/buildroot/configs/snps_archs38_haps_defconfig new file mode 100644 index 00000000..cb5edea2 --- /dev/null +++ b/features/buildroot/configs/snps_archs38_haps_defconfig @@ -0,0 +1,18 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="zebu_hs" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HAPS Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.31" +BR2_LINUX_KERNEL_DEFCONFIG="haps_hs_smp" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/features/buildroot/configs/snps_archs38_hsdk_defconfig b/features/buildroot/configs/snps_archs38_hsdk_defconfig new file mode 100644 index 00000000..0fc708ee --- /dev/null +++ b/features/buildroot/configs/snps_archs38_hsdk_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="hsdk" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform" +BR2_SYSTEM_DHCP="eth0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.31" +BR2_LINUX_KERNEL_DEFCONFIG="hsdk" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment" + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/synopsys/hsdk/genimage.cfg" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_ELF=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000" diff --git a/features/buildroot/configs/snps_archs38_vdk_defconfig b/features/buildroot/configs/snps_archs38_vdk_defconfig new file mode 100644 index 00000000..7c7834f9 --- /dev/null +++ b/features/buildroot/configs/snps_archs38_vdk_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="archs38_vdk" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HS38 VDK Software Development Platform" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/synopsys/axs10x/post-build.sh" +BR2_TARGET_ROOTFS_EXT2=y + +# Linux headers same as kernel, a 4.19 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.31" +BR2_LINUX_KERNEL_DEFCONFIG="vdk_hs38_smp" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/features/buildroot/configs/socrates_cyclone5_defconfig b/features/buildroot/configs/socrates_cyclone5_defconfig new file mode 100644 index 00000000..4c659263 --- /dev/null +++ b/features/buildroot/configs/socrates_cyclone5_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_NEON=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/altera/socrates_cyclone5/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7" +BR2_LINUX_KERNEL_DEFCONFIG="socfpga" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="socfpga_cyclone5_socrates" +BR2_TARGET_ROOTFS_EXT2=y +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="2018.03" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="socfpga_socrates" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/altera/socrates_cyclone5/boot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="8192" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/solidrun_clearfog_defconfig b/features/buildroot/configs/solidrun_clearfog_defconfig new file mode 100644 index 00000000..fd6f278a --- /dev/null +++ b/features/buildroot/configs/solidrun_clearfog_defconfig @@ -0,0 +1,42 @@ +# Architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_NEON=y + +# Linux headers same as kernel, a 4.20 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_20=y + +# System configuration +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/clearfog/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/clearfog/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.20" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="armada-388-clearfog-base" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="clearfog" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-spl.kwb" diff --git a/features/buildroot/configs/solidrun_clearfog_gt_8k_defconfig b/features/buildroot/configs/solidrun_clearfog_gt_8k_defconfig new file mode 100644 index 00000000..a44038e6 --- /dev/null +++ b/features/buildroot/configs/solidrun_clearfog_gt_8k_defconfig @@ -0,0 +1,46 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y +BR2_TARGET_GENERIC_HOSTNAME="clearfog-gt-8k" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for SolidRun Clearfog GT-8K" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" +# This commit corresponds to release armada-18.09.4 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="711ecd32afe465b38052b5ba374c825b158eea18" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_BINARIES_MARVELL_8040=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.04" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="clearfog_gt_8k" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog_gt_8k/uboot-fragment.config" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.1.9" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog_gt_8k/linux-extras.config" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-clearfog-gt-8k" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/clearfog_gt_8k/post-build-mainline.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/clearfog_gt_8k/genimage.cfg" diff --git a/features/buildroot/configs/solidrun_macchiatobin_mainline_defconfig b/features/buildroot/configs/solidrun_macchiatobin_mainline_defconfig new file mode 100644 index 00000000..8e5fbfa4 --- /dev/null +++ b/features/buildroot/configs/solidrun_macchiatobin_mainline_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y +BR2_TARGET_GENERIC_HOSTNAME="mcbin" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" +# This commit corresponds to release armada-18.09.4 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="711ecd32afe465b38052b5ba374c825b158eea18" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_BINARIES_MARVELL_8040=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.11" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_USE_DEFCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mvebu_mcbin-88f8040" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/solidrun/macchiatobin/uboot-fragment.config" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.2" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-mcbin" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/macchiatobin/linux-extras.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# rootfs +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/macchiatobin/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/macchiatobin/post-build-mainline.sh" diff --git a/features/buildroot/configs/solidrun_macchiatobin_marvell_defconfig b/features/buildroot/configs/solidrun_macchiatobin_marvell_defconfig new file mode 100644 index 00000000..4b52e479 --- /dev/null +++ b/features/buildroot/configs/solidrun_macchiatobin_marvell_defconfig @@ -0,0 +1,45 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_HOSTNAME="mcbin" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" +# This commit corresponds to release armada-18.09.4 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="711ecd32afe465b38052b5ba374c825b158eea18" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_BINARIES_MARVELL_8040=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/u-boot-marvell" +# This commit corresponds to armada-18.09.1, based on u-boot 2018.03 +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="8fe403172c58440bcfbb3724242301c0108eff5b" +BR2_TARGET_UBOOT_BOARDNAME="mvebu_mcbin-88f8040" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,MarvellEmbeddedProcessors,linux-marvell,linux-4.4.52-armada-17.10)/linux-linux-4.4.120-armada-18.09.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v8_lsp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-mcbin" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# rootfs +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/macchiatobin/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/macchiatobin/post-build.sh" diff --git a/features/buildroot/configs/stm32f429_disco_defconfig b/features/buildroot/configs/stm32f429_disco_defconfig new file mode 100644 index 00000000..5237e9ad --- /dev/null +++ b/features/buildroot/configs/stm32f429_disco_defconfig @@ -0,0 +1,18 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f429-disco/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +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_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_AFBOOT_STM32=y +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/features/buildroot/configs/stm32f469_disco_defconfig b/features/buildroot/configs/stm32f469_disco_defconfig new file mode 100644 index 00000000..8b77d8c1 --- /dev/null +++ b/features/buildroot/configs/stm32f469_disco_defconfig @@ -0,0 +1,19 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/dram_0x00000000.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +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_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_AFBOOT_STM32=y +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/features/buildroot/configs/toradex_apalis_imx6_defconfig b/features/buildroot/configs/toradex_apalis_imx6_defconfig new file mode 100644 index 00000000..b7ef9804 --- /dev/null +++ b/features/buildroot/configs/toradex_apalis_imx6_defconfig @@ -0,0 +1,25 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/toradex/apalis-imx6/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.toradex.com/linux-toradex.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="18717e2b1ca9b0fbf8bafa2717719e1f2c8f1114" +BR2_LINUX_KERNEL_DEFCONFIG="apalis_imx6" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-apalis-eval imx6q-apalis-ixora imx6q-apalis_v1_0-eval imx6q-apalis_v1_0-ixora" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.toradex.com/u-boot-toradex.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="30a1208727729dae22cb42f9ba9ba17efe5e6f77" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="apalis_imx6" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/ts4800_defconfig b/features/buildroot/configs/ts4800_defconfig new file mode 100644 index 00000000..0999ebca --- /dev/null +++ b/features/buildroot/configs/ts4800_defconfig @@ -0,0 +1,22 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technologic/ts4800/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/technologic/ts4800/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-ts4800" +BR2_PACKAGE_BUSYBOX_WATCHDOG=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_TS4800_MBRBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="ts4800" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/ts4900_defconfig b/features/buildroot/configs/ts4900_defconfig new file mode 100644 index 00000000..e7950cea --- /dev/null +++ b/features/buildroot/configs/ts4900_defconfig @@ -0,0 +1,16 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technologic/ts4900/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-ts4900" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_PACKAGE_TS4900_FPGA=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/ts5500_defconfig b/features/buildroot/configs/ts5500_defconfig new file mode 100644 index 00000000..871c02e9 --- /dev/null +++ b/features/buildroot/configs/ts5500_defconfig @@ -0,0 +1,26 @@ +# architecture +BR2_i386=y +BR2_x86_i586=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_ROOTFS_OVERLAY="board/technologic/ts5500/fs-overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/technologic/ts5500/linux-4.14.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# bootloader +BR2_TARGET_SYSLINUX=y +BR2_TARGET_SYSLINUX_MBR=y diff --git a/features/buildroot/configs/ts7680_defconfig b/features/buildroot/configs/ts7680_defconfig new file mode 100644 index 00000000..829af057 --- /dev/null +++ b/features/buildroot/configs/ts7680_defconfig @@ -0,0 +1,16 @@ +BR2_arm=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/technologic/ts7680/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,embeddedarm,linux-3.14.28-imx28,ff01621df09b97d9fd546d1b49f4013060142892)/linux-ff01621df09b97d9fd546d1b49f4013060142892.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ts76xx" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-ts7680" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/features/buildroot/configs/wandboard_defconfig b/features/buildroot/configs/wandboard_defconfig new file mode 100644 index 00000000..d2f72f73 --- /dev/null +++ b/features/buildroot/configs/wandboard_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/wandboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/wandboard/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="wandboard" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.09" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-wandboard imx6dl-wandboard imx6q-wandboard-revb1 imx6dl-wandboard-revb1 imx6q-wandboard-revd1 imx6dl-wandboard-revd1 imx6qp-wandboard-revd1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/features/buildroot/configs/warp7_defconfig b/features/buildroot/configs/warp7_defconfig new file mode 100644 index 00000000..1910478b --- /dev/null +++ b/features/buildroot/configs/warp7_defconfig @@ -0,0 +1,51 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 5.2 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_2=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/warp7/rootfs_overlay" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.2.4" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7s-warp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="warp7" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.07" +BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y + +# wifi firmware for brcm43430 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/warpboard_defconfig b/features/buildroot/configs/warpboard_defconfig new file mode 100644 index 00000000..1655381a --- /dev/null +++ b/features/buildroot/configs/warpboard_defconfig @@ -0,0 +1,58 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_HOSTNAME="warpboard" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/freescale/warpboard/rootfs_overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/warpboard/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-warp" + +# wifi firmware for brcm4330 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# uboot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="warp" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# host utility +BR2_PACKAGE_HOST_DFU_UTIL=y +BR2_PACKAGE_HOST_IMX_USB_LOADER=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/zynq_microzed_defconfig b/features/buildroot/configs/zynq_microzed_defconfig new file mode 100644 index 00000000..1bb11fee --- /dev/null +++ b/features/buildroot/configs/zynq_microzed_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +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,xilinx-v2017.3)/linux-xilinx-v2017.3.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zed" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +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/Xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2018.2" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_microzed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/zynq_zc706_defconfig b/features/buildroot/configs/zynq_zc706_defconfig new file mode 100644 index 00000000..e8019177 --- /dev/null +++ b/features/buildroot/configs/zynq_zc706_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +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,xilinx-v2017.3)/linux-xilinx-v2017.3.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zc706" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +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/Xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2018.2" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zc706" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/zynq_zed_defconfig b/features/buildroot/configs/zynq_zed_defconfig new file mode 100644 index 00000000..a215695b --- /dev/null +++ b/features/buildroot/configs/zynq_zed_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zed" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +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/Xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2018.2" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/configs/zynqmp_zcu106_defconfig b/features/buildroot/configs/zynqmp_zcu106_defconfig new file mode 100644 index 00000000..bee7c1da --- /dev/null +++ b/features/buildroot/configs/zynqmp_zcu106_defconfig @@ -0,0 +1,34 @@ +BR2_aarch64=y +BR2_GLOBAL_PATCH_DIR="board/zynqmp/patches/" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/Xilinx/linux-xlnx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.4" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynqmp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-zcu106-revA" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v1.5" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://github.com/xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="228801a215909365ae1dcdd799034195ad7264f7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_zcu106_revA" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_TARGET_UBOOT_ZYNQMP=y +BR2_TARGET_UBOOT_ZYNQMP_PMUFW="https://github.com/lucaceresoli/zynqmp-pmufw-binaries/raw/53fdb7b6c92860ceb0ec5fd14deee302f4a84269/bin/pmufw-zcu106-default-v2017.4.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/features/buildroot/docs/conf/asciidoc-text.conf b/features/buildroot/docs/conf/asciidoc-text.conf new file mode 100644 index 00000000..470bdecf --- /dev/null +++ b/features/buildroot/docs/conf/asciidoc-text.conf @@ -0,0 +1,23 @@ +# Refer to following asciidoc documentation: +# http://www.methods.co.nz/asciidoc/userguide.html +# In particular sections "Macros" and "Attribute References" +# +# For hyperlinks, show 'link text [URL]' (if link text provided) or 'URL' +[http-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[https-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[ftp-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[file-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[irc-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[mailto-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} + +# Hide image representation from text manual +[image-inlinemacro] +{empty} +[image-blockmacro] +{empty} diff --git a/features/buildroot/docs/images b/features/buildroot/docs/images new file mode 120000 index 00000000..7356350c --- /dev/null +++ b/features/buildroot/docs/images @@ -0,0 +1 @@ +website/images \ No newline at end of file diff --git a/features/buildroot/docs/manual/adding-board-support.txt b/features/buildroot/docs/manual/adding-board-support.txt new file mode 100644 index 00000000..f6d74ae1 --- /dev/null +++ b/features/buildroot/docs/manual/adding-board-support.txt @@ -0,0 +1,38 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[adding-board-support]] +== 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: 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+. + +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 xref:customize[] for more details. diff --git a/features/buildroot/docs/manual/adding-packages-asciidoc.txt b/features/buildroot/docs/manual/adding-packages-asciidoc.txt new file mode 100644 index 00000000..d870c510 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-asciidoc.txt @@ -0,0 +1,124 @@ +// -*- mode:doc; -*- +// vim: syntax=asciidoc + +=== Infrastructure for asciidoc documents + +[[asciidoc-documents-tutorial]] + +The Buildroot manual, which you are currently reading, is entirely written +using the http://asciidoc.org/[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 +xref:outside-br-custom[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. + +==== +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 $(pkgdir)/*)) +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. + +==== +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. + If a hook of your document needs to access the _Kconfig_ structure, + you may add +prepare-kconfig+ to the list of dependencies. + +There are also additional hooks (see xref:hooks[] 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. http://ditaa.sourceforge.net/[ditaa] or + https://pythonhosted.org/aafigure/[aafigure]). + +* +FOO_CHECK_DEPENDENCIES__HOOKS+, to run additional tests for + the specified format ++ (see the list of rendered formats, above). + +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 $(pkgdir)/*)) +08: FOO_RESOURCES = $(sort $(wildcard $(pkgdir)/ressources)) +09: +10: define FOO_GEN_EXTRA_DOC +11: /path/to/generate-script --outdir=$(@D) +12: endef +13: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC +14: +15: define FOO_CHECK_MY_PROG +16: if ! which my-prog >/dev/null 2>&1; then \ +17: echo "You need my-prog to generate the foo document"; \ +18: exit 1; \ +19: fi +20: endef +21: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG +22: +23: define FOO_CHECK_MY_OTHER_PROG +24: if ! which my-other-prog >/dev/null 2>&1; then \ +25: echo "You need my-other-prog to generate the foo document as PDF"; \ +26: exit 1; \ +27: fi +28: endef +29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG +30: +31: $(eval $(call asciidoc-document)) +---- diff --git a/features/buildroot/docs/manual/adding-packages-autotools.txt b/features/buildroot/docs/manual/adding-packages-autotools.txt new file mode 100644 index 00000000..a041d91e --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-autotools.txt @@ -0,0 +1,175 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for autotools-based packages + +[[autotools-package-tutorial]] + +==== +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. + +[[autotools-package-reference]] + +==== +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_GETTEXTIZE+, tells whether the package should be + gettextized or not (i.e. if the package uses a different gettext + version than Buildroot provides, and it is needed to run + 'gettextize'.) Only valid when +LIBFOO_AUTORECONF=YES+. Valid + values are +YES+ and +NO+. The default is +NO+. + +* +LIBFOO_GETTEXTIZE_OPTS+, to specify additional options passed to + the 'gettextize' program, if +LIBFOO_GETTEXTIZE=YES+. You may + use that if, for example, the +.po+ files are not located in the + standard place (i.e. in +po/+ at the root of the package.) By + default, '-f'. + +* +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 xref:hooks[] 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. diff --git a/features/buildroot/docs/manual/adding-packages-cargo.txt b/features/buildroot/docs/manual/adding-packages-cargo.txt new file mode 100644 index 00000000..b7fc09ac --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-cargo.txt @@ -0,0 +1,110 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Integration of 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". + +[[cargo-package-tutorial]] + +==== Cargo-based package's +Config.in+ file + +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_ARCH_SUPPORTS +04: select BR2_PACKAGE_HOST_CARGO +05: help +06: This is a comment that explains what foo is. +07: +08: http://foosoftware.org/foo/ +--------------------------- + +==== Cargo-based package's +.mk+ file + +Buildroot does not (yet) provide a dedicated package infrastructure for +Cargo-based packages. So, we will explain how to write a +.mk+ file for such a +package. Let's start 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: +13: FOO_DEPENDENCIES = host-cargo +14: +15: FOO_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo +16: FOO_CARGO_MODE = $(if $(BR2_ENABLE_DEBUG),debug,release) +17: +18: FOO_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(FOO_CARGO_MODE) +19: +20: FOO_CARGO_OPTS = \ +21: --$(FOO_CARGO_MODE) \ +22: --target=$(RUSTC_TARGET_NAME) \ +23: --manifest-path=$(@D)/Cargo.toml +24: +25: define FOO_BUILD_CMDS +26: $(TARGET_MAKE_ENV) $(FOO_CARGO_ENV) \ +27: cargo build $(FOO_CARGO_OPTS) +28: endef +29: +30: define FOO_INSTALL_TARGET_CMDS +31: $(INSTALL) -D -m 0755 $(@D)/$(FOO_BIN_DIR)/foo \ +32: $(TARGET_DIR)/usr/bin/foo +33: endef +34: +35: $(eval $(generic-package)) +-------------------------------- + +The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11). + +As seen in line 35, it is based on the +xref:generic-package-tutorial[+generic-package+ infrastructure]. So, it defines +the variables required by this particular infrastructure, where Cargo is +invoked: + +* +FOO_BUILD_CMDS+: Cargo is invoked to perform the build. The options required + to configure the cross-compilation of the package are passed via + +FOO_CONF_OPTS+. + +* +FOO_INSTALL_TARGET_CMDS+: The binary executable generated is installed on + the target. + +In order to have Cargo available for the build, +FOO_DEPENDENCIES+ needs to +contain +host-cargo+. + +To sum it up, to add a new Cargo-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. + +==== About Dependencies Management + +A crate can depend on other libraries from crates.io or git repositories, listed +in its Cargo.toml file. Before starting a build, Cargo usually downloads +automatically them. This step can also be performed independently, via the ++cargo fetch+ command. + +Cargo maintains a local cache of the registry index and of git checkouts of the +crates, whose location is given by +$CARGO_HOME+. As seen in the package +Makefile example at line 15, this environment variable is set to ++$(HOST_DIR)/share/cargo+. + +This dependency download mechanism is not convenient when performing an offline +build, as Cargo will fail to fetch the dependencies. In that case, it is advised +to generate a tarball of the dependencies using the +cargo vendor+ and add it to ++FOO_EXTRA_DOWNLOADS+. diff --git a/features/buildroot/docs/manual/adding-packages-cmake.txt b/features/buildroot/docs/manual/adding-packages-cmake.txt new file mode 100644 index 00000000..6ccf3902 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-cmake.txt @@ -0,0 +1,152 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for CMake-based packages + +[[cmake-package-tutorial]] + +==== +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. + +[[cmake-package-reference]] + +==== +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_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_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 + 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+. 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 xref:hooks[] 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. diff --git a/features/buildroot/docs/manual/adding-packages-conclusion.txt b/features/buildroot/docs/manual/adding-packages-conclusion.txt new file mode 100644 index 00000000..93f90a41 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-conclusion.txt @@ -0,0 +1,13 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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 +xref:submitting-patches[])! + diff --git a/features/buildroot/docs/manual/adding-packages-directory.txt b/features/buildroot/docs/manual/adding-packages-directory.txt new file mode 100644 index 00000000..e6201bb8 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-directory.txt @@ -0,0 +1,556 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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. + +=== 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+. + +==== +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" +-------------------------- + + +==== +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. + +[[depends-on-vs-select]] +==== 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 xref:dependencies-target-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" + select BR2_PACKAGE_B + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D + depends on BR2_PACKAGE_A +-------------------------- + +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 xref:writing-rules-config-in[the +coding style]. + +[[dependencies-target-toolchain-options]] +==== 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++` + +* 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+ + +==== 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 +-------------------------- + +==== 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 +-------------------------- + +==== Dependencies on features provided by virtual packages + +Some features can be provided by more than one package, such as the +openGL libraries. + +See xref:virtual-package-tutorial[] for more on the virtual packages. + +=== The +.mk+ file + +[[adding-packages-mk]] + +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 xref:generic-package-tutorial[tutorial] and a + xref:generic-package-reference[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 xref:autotools-package-tutorial[tutorial] + and xref:autotools-package-reference[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 xref:cmake-package-tutorial[tutorial] + and xref:cmake-package-reference[reference]. + +* *Makefiles for Python modules*: We have a dedicated infrastructure + for Python modules that use either the +distutils+ or the + +setuptools+ mechanism. We cover them through a + xref:python-package-tutorial[tutorial] and a + xref:python-package-reference[reference]. + +* *Makefiles for Lua modules*: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover them + through a xref:luarocks-package-tutorial[tutorial] and a + xref:luarocks-package-reference[reference]. + +Further formatting details: see xref:writing-rules-mk[the writing +rules]. + +[[adding-packages-hash]] +=== 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 being space-separated, with these three fields: + +* the type of hash, one of: +** +md5+, +sha1+, +sha224+, +sha256+, +sha384+, +sha512+, +none+ +* the hash of the file: +** for +none+, one or more non-space chars, usually just the string +xxx+ +** 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 xref:patch-apply-order[]). + +.Note +The number of spaces does not matter, so one can use spaces (or tabs) to +properly align the different fields. + +The +none+ hash type is reserved to those archives downloaded from a +repository, like a 'git clone', a 'subversion checkout'... + +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 + +# No hash for 1234: +none xxx libfoo-1234.tar.gz + +# 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. diff --git a/features/buildroot/docs/manual/adding-packages-generic.txt b/features/buildroot/docs/manual/adding-packages-generic.txt new file mode 100644 index 00000000..5ac07a81 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-generic.txt @@ -0,0 +1,584 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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. + +[[generic-package-tutorial]] + +==== +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. + +.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 +-------------------------------- +================================ + +.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..43, 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. + +[[generic-package-reference]] + +==== +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 + xref:patch-policy[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 + xref:github-download-url[] 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+. + + 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://+. + ** +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 + xref:hooks-rsync[]. + +* +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_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. 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 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 xref:virtual-package-tutorial[]. + +* +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 + xref:makedev-syntax[]. 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 xref:makedev-syntax[]. + 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 xref:makeuser-syntax[]. 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 https://spdx.org/licenses/[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 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 xref:legal-info[] 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+ / +LIBTOO_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. + +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). + +* +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. + +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. + +Finally, you can also use hooks. See xref:hooks[] for more information. diff --git a/features/buildroot/docs/manual/adding-packages-gettext.txt b/features/buildroot/docs/manual/adding-packages-gettext.txt new file mode 100644 index 00000000..e9c6968e --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-gettext.txt @@ -0,0 +1,62 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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. + +1. 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. + +1. 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. diff --git a/features/buildroot/docs/manual/adding-packages-golang.txt b/features/buildroot/docs/manual/adding-packages-golang.txt new file mode 100644 index 00000000..8c467689 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-golang.txt @@ -0,0 +1,124 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +[[golang-package-tutorial]] + +==== +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. + +[[golang-package-reference]] + +==== +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 +xref:generic-package-reference[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. + +* If your package need a custom +GOPATH+ to be compiled in, you can + use the +FOO_WORKSPACE+ variable. The +GOPATH+ being used will be + +/+. If +FOO_WORKSPACE+ is not + specified, it defaults to +_gopath+. + +* +FOO_SRC_SUBDIR+ is the sub-directory where your source will be + compiled relatively to the +GOPATH+. An example value is + +github.com/bar/foo+. If +FOO_SRC_SUBDIR+ is not specified, it + defaults to a value infered from the +FOO_SITE+ variable. + +* +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 xref:hooks[] 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. diff --git a/features/buildroot/docs/manual/adding-packages-hooks.txt b/features/buildroot/docs/manual/adding-packages-hooks.txt new file mode 100644 index 00000000..0ce79f89 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-hooks.txt @@ -0,0 +1,87 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[hooks]] +=== 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+ + +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 +---------------------- + +[[hooks-rsync]] +==== 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 + +==== 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. diff --git a/features/buildroot/docs/manual/adding-packages-kconfig.txt b/features/buildroot/docs/manual/adding-packages-kconfig.txt new file mode 100644 index 00000000..982c1229 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-kconfig.txt @@ -0,0 +1,87 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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 +xref: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. + +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. diff --git a/features/buildroot/docs/manual/adding-packages-kernel-module.txt b/features/buildroot/docs/manual/adding-packages-kernel-module.txt new file mode 100644 index 00000000..b609ecc9 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-kernel-module.txt @@ -0,0 +1,143 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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. + +[[kernel-module-tutorial]] +==== +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 +xref:generic-package-tutorial[+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). + + +[[kernel-module-reference]] +==== +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. + +[[kernel-variables]] +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`... diff --git a/features/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt b/features/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt new file mode 100644 index 00000000..b948e208 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt @@ -0,0 +1,152 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[linux-kernel-specific-infra]] +=== 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. + +[[linux-kernel-tools]] +==== 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 +xref:generic-package-tutorial[+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. + +[[linux-kernel-ext]] +==== 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 xref:kernel-variables[definition of those kernel variables]. diff --git a/features/buildroot/docs/manual/adding-packages-luarocks.txt b/features/buildroot/docs/manual/adding-packages-luarocks.txt new file mode 100644 index 00000000..df97cdd5 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-luarocks.txt @@ -0,0 +1,111 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for LuaRocks-based packages + +[[luarocks-package-tutorial]] + +==== +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. + +[[luarocks-package-reference]] + +==== +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+. It +is worth mentioning that building LuaRocks packages for the host is not +supported, so the macro +host-luarocks-package+ is not implemented. + +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. diff --git a/features/buildroot/docs/manual/adding-packages-meson.txt b/features/buildroot/docs/manual/adding-packages-meson.txt new file mode 100644 index 00000000..8e2d4487 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-meson.txt @@ -0,0 +1,117 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Meson-based packages + +[[meson-package-tutorial]] + +==== +meson-package+ tutorial + +http://mesonbuild.com[Meson] is an open source build system meant to be both +extremely fast, and, even more importantly, as user friendly as possible. It +uses https://ninja-build.org[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. + +[[meson-package-reference]] + +==== +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_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). diff --git a/features/buildroot/docs/manual/adding-packages-perl.txt b/features/buildroot/docs/manual/adding-packages-perl.txt new file mode 100644 index 00000000..6ce693fd --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-perl.txt @@ -0,0 +1,129 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Perl/CPAN packages + +[[perl-package-tutorial]] + +==== +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. + +[[perl-package-reference]] + +==== +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. diff --git a/features/buildroot/docs/manual/adding-packages-python.txt b/features/buildroot/docs/manual/adding-packages-python.txt new file mode 100644 index 00000000..15137cfd --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-python.txt @@ -0,0 +1,257 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Python packages + +This infrastructure applies to Python packages that use the standard +Python setuptools mechanism as their build system, generally +recognizable by the usage of a +setup.py+ script. + +[[python-package-tutorial]] + +==== +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 two +supported ones are +distutils+ 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. + +[[python-package-reference]] + +==== +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+). + +In their +Config.in+ file, they should depend on +BR2_PACKAGE_PYTHON+ +so that when Buildroot will enable Python 3 usage for modules, we will +be able to enable Python modules progressively on Python 3. + +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 +xref:generic-package-reference[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+ and/or + +host-distutilscross+ dependencies to +PYTHON_FOO_DEPENDENCIES+ for + setuptools-based packages, since these are 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 two supported values are +distutils+ and + +setuptools+. If you don't know which one is used in your package, + look at the +setup.py+ file in your package source code, and see + whether it imports things from the +distutils+ module or the + +setuptools+ module. + +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+ file. This is useful, + if for example, the main +setup.py+ 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 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) and +HOST_PKG_PYTHON_SETUPTOOLS_ENV+ + (for setuptools host packages). + +* +PYTHON_FOO_BUILD_OPTS+, to specify additional options to pass to the + Python +setup.py+ script during the build step. 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 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) and +HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS+ (for host + setuptools packages). + +* +HOST_PYTHON_FOO_NEEDS_HOST_PYTHON+, to define the host python + interpreter. The usage of this variable is limited to host + packages. The two supported value are +python2+ and +python3+. It + will ensure the right host python package is available and will + invoke it for the build. If some build steps are overloaded, the + right python interpreter must be explicitly called in the commands. + +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 xref:hooks[] 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. + +[[scanpypi]] + +==== 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 +https://pypi.python.org[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 +----------------------- + +[[python-package-cffi-backend]] + +==== +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)) +------------------------ diff --git a/features/buildroot/docs/manual/adding-packages-rebar.txt b/features/buildroot/docs/manual/adding-packages-rebar.txt new file mode 100644 index 00000000..d78b3171 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-rebar.txt @@ -0,0 +1,108 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for rebar-based packages + +[[rebar-package-tutorial]] + +==== +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. + +[[rebar-package-reference]] + +==== +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 xref:hooks[] 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. diff --git a/features/buildroot/docs/manual/adding-packages-tips.txt b/features/buildroot/docs/manual/adding-packages-tips.txt new file mode 100644 index 00000000..d10f276e --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-tips.txt @@ -0,0 +1,206 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Tips and tricks + +[[package-name-variable-relation]] +==== 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+). + +[[check-package]] +==== 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/* +---- + +[[testing-package]] +==== 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 http://autobuild.buildroot.org/[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_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 +---- + +[[github-download-url]] +==== 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 = v1.0 +FOO_SITE = $(call github,,,$(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. + +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: + +image::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. diff --git a/features/buildroot/docs/manual/adding-packages-virtual.txt b/features/buildroot/docs/manual/adding-packages-virtual.txt new file mode 100644 index 00000000..6326bb54 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-virtual.txt @@ -0,0 +1,144 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for virtual packages + +[[virtual-package-tutorial]] + +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+ and +ti-gfx+ will be the providers. + +==== +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. + +==== 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. + +==== 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. + +==== 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. + +==== 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! + +==== 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 +--------------------------- + +==== 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. diff --git a/features/buildroot/docs/manual/adding-packages-waf.txt b/features/buildroot/docs/manual/adding-packages-waf.txt new file mode 100644 index 00000000..ffc004c2 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages-waf.txt @@ -0,0 +1,91 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Waf-based packages + +[[waf-package-tutorial]] + +==== +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 depednencies 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. + +[[waf-package-reference]] + +==== +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. diff --git a/features/buildroot/docs/manual/adding-packages.txt b/features/buildroot/docs/manual/adding-packages.txt new file mode 100644 index 00000000..4a4a17e8 --- /dev/null +++ b/features/buildroot/docs/manual/adding-packages.txt @@ -0,0 +1,56 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[adding-packages]] +== 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 xref:testing-package[]) and also check it for coding style (see +xref:check-package[]). + +include::adding-packages-directory.txt[] + +include::adding-packages-generic.txt[] + +include::adding-packages-autotools.txt[] + +include::adding-packages-cmake.txt[] + +include::adding-packages-python.txt[] + +include::adding-packages-luarocks.txt[] + +include::adding-packages-perl.txt[] + +include::adding-packages-virtual.txt[] + +include::adding-packages-kconfig.txt[] + +include::adding-packages-rebar.txt[] + +include::adding-packages-waf.txt[] + +include::adding-packages-meson.txt[] + +include::adding-packages-cargo.txt[] + +include::adding-packages-golang.txt[] + +include::adding-packages-kernel-module.txt[] + +include::adding-packages-asciidoc.txt[] + +include::adding-packages-linux-kernel-spec-infra.txt[] + +include::adding-packages-hooks.txt[] + +include::adding-packages-gettext.txt[] + +include::adding-packages-tips.txt[] + +include::adding-packages-conclusion.txt[] diff --git a/features/buildroot/docs/manual/advanced.txt b/features/buildroot/docs/manual/advanced.txt new file mode 100644 index 00000000..b7bfc492 --- /dev/null +++ b/features/buildroot/docs/manual/advanced.txt @@ -0,0 +1,16 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Advanced usage + +include::using-buildroot-toolchain.txt[] + +include::using-buildroot-debugger.txt[] + +include::ccache-support.txt[] + +include::download-location.txt[] + +include::package-make-target.txt[] + +include::using-buildroot-development.txt[] diff --git a/features/buildroot/docs/manual/appendix.txt b/features/buildroot/docs/manual/appendix.txt new file mode 100644 index 00000000..86afa4bd --- /dev/null +++ b/features/buildroot/docs/manual/appendix.txt @@ -0,0 +1,6 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +include::makedev-syntax.txt[] +include::makeusers-syntax.txt[] +include::migrating.txt[] diff --git a/features/buildroot/docs/manual/beyond-buildroot.txt b/features/buildroot/docs/manual/beyond-buildroot.txt new file mode 100644 index 00000000..eefea1fe --- /dev/null +++ b/features/buildroot/docs/manual/beyond-buildroot.txt @@ -0,0 +1,66 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Beyond Buildroot + +=== Boot the generated images + +==== 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. + +==== 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 +------------------- + +=== 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. diff --git a/features/buildroot/docs/manual/ccache-support.txt b/features/buildroot/docs/manual/ccache-support.txt new file mode 100644 index 00000000..f6746ad7 --- /dev/null +++ b/features/buildroot/docs/manual/ccache-support.txt @@ -0,0 +1,55 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[ccache]] +==== Using +ccache+ in Buildroot + +http://ccache.samba.org[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 +$HOME/.buildroot-ccache+. It is stored +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 https://ccache.samba.org/manual.html#_compiling_in_different_directories[the +ccache manual's section on "Compiling in different directories"] for +more details about this rewriting of absolute paths. diff --git a/features/buildroot/docs/manual/common-usage.txt b/features/buildroot/docs/manual/common-usage.txt new file mode 100644 index 00000000..e3d7578c --- /dev/null +++ b/features/buildroot/docs/manual/common-usage.txt @@ -0,0 +1,334 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== General Buildroot usage + +include::make-tips.txt[] + +include::rebuilding-packages.txt[] + +=== 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. + +=== 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 +-------------------- + +Or: + +-------------------- + $ cd /tmp/build; make O=$PWD -C path/to/buildroot +-------------------- + +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 +-------------------- + +[[env-vars]] + +=== 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 + xref:download-location[] 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 + xref:graph-depends[] for the accepted options +* +BR2_GRAPH_DOT_OPTS+ is passed verbatim as options to the +dot+ utility to + draw the dependency graph. + +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 +-------------------- + +=== 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. + +=== Graphing the dependencies between packages + +[[graph-depends]] + +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 +-------------------------------- + +=== Graphing the build duration + +[[graph-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 +---------------- + +=== 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 is +supported to adjust the output file format. See xref:graph-depends[] +for details about this environment variable. + +.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 +---------------- + +include::eclipse-integration.txt[] + +include::advanced.txt[] diff --git a/features/buildroot/docs/manual/configure-other-components.txt b/features/buildroot/docs/manual/configure-other-components.txt new file mode 100644 index 00000000..60a80f0a --- /dev/null +++ b/features/buildroot/docs/manual/configure-other-components.txt @@ -0,0 +1,60 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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 +xref:env-vars[] 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+. diff --git a/features/buildroot/docs/manual/configure.txt b/features/buildroot/docs/manual/configure.txt new file mode 100644 index 00000000..008813c9 --- /dev/null +++ b/features/buildroot/docs/manual/configure.txt @@ -0,0 +1,384 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[configure]] +== 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. + +=== 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 +http://www.gnu.org/software/libc/libc.html[GNU Libc], +http://www.uclibc-ng.org/[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" footnote:[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)]. + +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. + +[[internal-toolchain-backend]] +==== 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: +http://www.uclibc-ng.org[uClibc-ng], +http://www.gnu.org/software/libc/libc.html[glibc] and +http://www.musl-libc.org[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 +xref:full-rebuild[]. + +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_. + +[[external-toolchain-backend]] +==== 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 +http://www.linaro.org[Linaro] for ARM, +http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/[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 +http://crosstool-ng.org[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 +definitely to build it with http://crosstool-ng.org[crosstool-NG]. We +recommend to build the toolchain separately from Buildroot, and then +_import_ it in Buildroot using the external toolchain backend. + +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 Crosstool-NG. + +===== 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 + +=== /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 + xref:makedev-syntax[]. + + * 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+. + +=== 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. diff --git a/features/buildroot/docs/manual/contribute.txt b/features/buildroot/docs/manual/contribute.txt new file mode 100644 index 00000000..f339ca50 --- /dev/null +++ b/features/buildroot/docs/manual/contribute.txt @@ -0,0 +1,489 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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 +xref: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 xref:getting-buildroot[] +for more information on obtaining a Buildroot git tree. + +=== Reproducing, analyzing and fixing bugs + +A first way of contributing is to have a look at the open bug reports in +the https://bugs.buildroot.org/buglist.cgi?product=buildroot[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. + +=== 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: + . Check if you can reproduce the problem by building with the same + configuration. You can do this manually, or use the + http://git.buildroot.org/buildroot-test/tree/utils/br-reproduce-build[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. + . Analyze the problem and create a fix. + . Verify that the problem is really fixed by starting from a clean + Buildroot tree and only applying your fix. + . Send the fix to the Buildroot mailing list (see + xref: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 +--------------------- + +=== 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 +xref:apply-patches-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 xref:apply-patches-patchwork[] for more +information on using Buildroot's Patchwork website to apply patches. + +[[apply-patches-patchwork]] +==== 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. + + +=== 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 http://elinux.org/Buildroot#Todo_list[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. + +[[submitting-patches]] +=== 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. + +==== 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 +https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History[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 + 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 http://developercertificate.org/[the Developer Certificate of +Origin] for details. + +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 xref:DEVELOPERS[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 +xref:check-package[] for more information). + +==== 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, 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 xref: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+. + +==== 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 footnote:[RFC: (Request for comments) change proposal]; + +* whenever you feel it will help presenting your work, your choices, + the review process, etc. + +==== 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 http://patchwork.buildroot.org[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 + +--- +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 http://patchwork.buildroot.org[patchwork]. You need to +create an account on http://patchwork.buildroot.org[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 http://patchwork.buildroot.org[patchwork] 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 +http://patchwork.buildroot.org[patchwork]. The advantage of +*in-reply-to* is that patchwork will automatically mark the previous +version of the patch as superseded. + +[[reporting-bugs]] +=== Reporting issues/bugs or getting help + +Before reporting any issue, please check in +xref:community-resources[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 xref:community-resources[bug tracker] or by +xref:community-resources[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 xref:customize-store-buildroot-config[]). + +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/ diff --git a/features/buildroot/docs/manual/customize-configuration.txt b/features/buildroot/docs/manual/customize-configuration.txt new file mode 100644 index 00000000..ae6cebe6 --- /dev/null +++ b/features/buildroot/docs/manual/customize-configuration.txt @@ -0,0 +1,64 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-store-buildroot-config]] +=== 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 help+ 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=+. + +[[customize-store-package-config]] +=== 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 xref:customize-dir-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+. + + diff --git a/features/buildroot/docs/manual/customize-device-permission-tables.txt b/features/buildroot/docs/manual/customize-device-permission-tables.txt new file mode 100644 index 00000000..02dd8ad9 --- /dev/null +++ b/features/buildroot/docs/manual/customize-device-permission-tables.txt @@ -0,0 +1,30 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-device-permission]] +==== 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 xref:makedev-syntax[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 xref:customize-dir-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 xref:generic-package-reference[]). diff --git a/features/buildroot/docs/manual/customize-directory-structure.txt b/features/buildroot/docs/manual/customize-directory-structure.txt new file mode 100644 index 00000000..a3a7ad4c --- /dev/null +++ b/features/buildroot/docs/manual/customize-directory-structure.txt @@ -0,0 +1,111 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-dir-structure]] +=== 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. + +==== 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. diff --git a/features/buildroot/docs/manual/customize-outside-br.txt b/features/buildroot/docs/manual/customize-outside-br.txt new file mode 100644 index 00000000..b1eed326 --- /dev/null +++ b/features/buildroot/docs/manual/customize-outside-br.txt @@ -0,0 +1,313 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[outside-br-custom]] +=== Keeping customizations outside of Buildroot + +As already briefly mentioned in xref:customize-dir-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 +.br-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 +xref:br2-external-converting[] 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 +----- + +==== 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/+ +directory. 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: + + * +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. + +===== 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 xref:adding-packages[]. +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+. + +===== 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. + +===== 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 +---- + +===== 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/package/pkg-1/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/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)) + | | + | |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 + | + |- 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 +---- diff --git a/features/buildroot/docs/manual/customize-packages.txt b/features/buildroot/docs/manual/customize-packages.txt new file mode 100644 index 00000000..b57280ea --- /dev/null +++ b/features/buildroot/docs/manual/customize-packages.txt @@ -0,0 +1,56 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-packages]] +=== 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 +xref:adding-packages[] 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 xref:customize-dir-structure[], the recommended location for +project-specific packages is +package//+. If you are using the +br2-external tree feature (see xref:outside-br-custom[]) 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 +xref:adding-packages[], 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 xref:outside-br-custom[] for how +to fill in those files. diff --git a/features/buildroot/docs/manual/customize-patches.txt b/features/buildroot/docs/manual/customize-patches.txt new file mode 100644 index 00000000..fa635411 --- /dev/null +++ b/features/buildroot/docs/manual/customize-patches.txt @@ -0,0 +1,59 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[customize-patches]] +=== 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: + +. 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. + +. 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 +xref:patch-apply-order[] + +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 an 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. + diff --git a/features/buildroot/docs/manual/customize-post-image.txt b/features/buildroot/docs/manual/customize-post-image.txt new file mode 100644 index 00000000..90ea2b93 --- /dev/null +++ b/features/buildroot/docs/manual/customize-post-image.txt @@ -0,0 +1,37 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Customization _after_ the images have been created + +While post-build scripts (xref:rootfs-custom[]) 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+ 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. diff --git a/features/buildroot/docs/manual/customize-quick-guide.txt b/features/buildroot/docs/manual/customize-quick-guide.txt new file mode 100644 index 00000000..627ecbac --- /dev/null +++ b/features/buildroot/docs/manual/customize-quick-guide.txt @@ -0,0 +1,66 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== 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. +1. +make linux-menuconfig+ to update the kernel config, similar for + other configuration like busybox, uclibc, ... +1. +mkdir -p board//+ +1. 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+ +1. 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+ +1. 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+. +1. Create a post-build script + +board///post_build.sh+. Set + +BR2_ROOTFS_POST_BUILD_SCRIPT+ to + +board///post_build.sh+ +1. 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+. +1. If additional user accounts have to be created, create + +board///users_table.txt+ and add that path + to +BR2_ROOTFS_USERS_TABLES+. +1. 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+. +1. 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. +1. 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. +1. +make savedefconfig+ to save the buildroot configuration. +1. +cp defconfig configs/_defconfig+ diff --git a/features/buildroot/docs/manual/customize-rootfs.txt b/features/buildroot/docs/manual/customize-rootfs.txt new file mode 100644 index 00000000..6b72a37b --- /dev/null +++ b/features/buildroot/docs/manual/customize-rootfs.txt @@ -0,0 +1,153 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[rootfs-custom]] +=== 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 xref:customize-dir-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 xref:customize-dir-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 + - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see + xref: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 xref:full-rebuild[] 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 xref:customize-device-permission[]) or + to create users (see xref:customize-users[]) ++ +.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. + +include::customize-device-permission-tables.txt[] diff --git a/features/buildroot/docs/manual/customize-users-tables.txt b/features/buildroot/docs/manual/customize-users-tables.txt new file mode 100644 index 00000000..e2d32e23 --- /dev/null +++ b/features/buildroot/docs/manual/customize-users-tables.txt @@ -0,0 +1,18 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-users]] +=== 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 xref:makeuser-syntax[makeusers syntax]. + +As shown in xref:customize-dir-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 xref:generic-package-reference[]). diff --git a/features/buildroot/docs/manual/customize.txt b/features/buildroot/docs/manual/customize.txt new file mode 100644 index 00000000..484413e4 --- /dev/null +++ b/features/buildroot/docs/manual/customize.txt @@ -0,0 +1,60 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize]] +== 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! + +include::customize-directory-structure.txt[] + +include::customize-outside-br.txt[] + +include::customize-configuration.txt[] + +include::customize-rootfs.txt[] + +include::customize-users-tables.txt[] + +include::customize-post-image.txt[] + +include::customize-patches.txt[] + +include::customize-packages.txt[] + +include::customize-quick-guide.txt[] diff --git a/features/buildroot/docs/manual/debugging-buildroot.txt b/features/buildroot/docs/manual/debugging-buildroot.txt new file mode 100644 index 00000000..f575fc48 --- /dev/null +++ b/features/buildroot/docs/manual/debugging-buildroot.txt @@ -0,0 +1,43 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[debugging-buildroot]] + +== 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 + xref: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 diff --git a/features/buildroot/docs/manual/developers.txt b/features/buildroot/docs/manual/developers.txt new file mode 100644 index 00000000..7058d57b --- /dev/null +++ b/features/buildroot/docs/manual/developers.txt @@ -0,0 +1,49 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[DEVELOPERS]] +== 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 xref: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 without any arguments, it validates the integrity of the + DEVELOPERS file and will note WARNINGS for items that don't match. diff --git a/features/buildroot/docs/manual/download-infra.txt b/features/buildroot/docs/manual/download-infra.txt new file mode 100644 index 00000000..f2ccd149 --- /dev/null +++ b/features/buildroot/docs/manual/download-infra.txt @@ -0,0 +1,8 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[download-infra]] + +== Download infrastructure + +TODO diff --git a/features/buildroot/docs/manual/download-location.txt b/features/buildroot/docs/manual/download-location.txt new file mode 100644 index 00000000..d485df94 --- /dev/null +++ b/features/buildroot/docs/manual/download-location.txt @@ -0,0 +1,27 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[download-location]] + +==== 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. diff --git a/features/buildroot/docs/manual/eclipse-integration.txt b/features/buildroot/docs/manual/eclipse-integration.txt new file mode 100644 index 00000000..1f726d82 --- /dev/null +++ b/features/buildroot/docs/manual/eclipse-integration.txt @@ -0,0 +1,30 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Integration with Eclipse + +While a part of the embedded Linux developers like classical text +editors like Vim or Emacs, and command-line based interfaces, a number +of other embedded Linux developers like richer graphical interfaces to +do their development work. Eclipse being one of the most popular +Integrated Development Environment, Buildroot integrates with Eclipse +in order to ease the development work of Eclipse users. + +Our integration with Eclipse simplifies the compilation, remote +execution and remote debugging of applications and libraries that are +built on top of a Buildroot system. It does not integrate the +Buildroot configuration and build processes themselves with +Eclipse. Therefore, the typical usage model of our Eclipse integration +would be: + +* Configure your Buildroot system with +make menuconfig+, +make + xconfig+ or any other configuration interface provided with + Buildroot. +* Build your Buildroot system by running +make+. +* Start Eclipse to develop, execute and debug your own custom + applications and libraries, that will rely on the libraries built + and installed by Buildroot. + +The Buildroot Eclipse integration installation process and usage is +described in detail at +https://github.com/mbats/eclipse-buildroot-bundle/wiki. diff --git a/features/buildroot/docs/manual/faq-troubleshooting.txt b/features/buildroot/docs/manual/faq-troubleshooting.txt new file mode 100644 index 00000000..b144c9e7 --- /dev/null +++ b/features/buildroot/docs/manual/faq-troubleshooting.txt @@ -0,0 +1,241 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Frequently Asked Questions & Troubleshooting + +[[faq-boot-hang-after-starting]] +=== 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. + +[[faq-no-compiler-on-target]] +=== 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: + +* http://www.openembedded.org[openembedded] +* https://www.yoctoproject.org[yocto] +* http://www.emdebian.org[emdebian] +* https://fedoraproject.org/wiki/Architectures[Fedora] +* http://en.opensuse.org/Portal:ARM[openSUSE ARM] +* http://archlinuxarm.org[Arch Linux ARM] +* ... + +[[faq-no-dev-files-on-target]] +=== Why are there no development files on the target? + +Since there is no compiler available on the target (see +xref:faq-no-compiler-on-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. + +[[faq-no-doc-on-target]] +=== 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: xref:faq-no-compiler-on-target[]). + +[[faq-why-not-visible-package]] +=== 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 xref: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 xref:make-tips[] for +more explanations). + +[[faq-why-not-use-target-as-chroot]] +=== 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. + +[[faq-no-binary-packages]] +=== 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, + http://openembedded.org/[Open Embedded], or https://openwrt.org/[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. + +[[faq-speeding-up-build]] +=== 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: xref:ccache[]); + + * Learn about rebuilding only the few packages you actually care + about (see xref:rebuild-pkg[]), but beware that sometimes full + rebuilds are anyway necessary (see xref:full-rebuild[]); + + * 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. diff --git a/features/buildroot/docs/manual/getting.txt b/features/buildroot/docs/manual/getting.txt new file mode 100644 index 00000000..549938a2 --- /dev/null +++ b/features/buildroot/docs/manual/getting.txt @@ -0,0 +1,36 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[getting-buildroot]] +== 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 https://www.vagrantup.com/[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 +http://buildroot.org/download[Download page] of the Buildroot website +for more details. diff --git a/features/buildroot/docs/manual/how-buildroot-works.txt b/features/buildroot/docs/manual/how-buildroot-works.txt new file mode 100644 index 00000000..1204d1ec --- /dev/null +++ b/features/buildroot/docs/manual/how-buildroot-works.txt @@ -0,0 +1,69 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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. + diff --git a/features/buildroot/docs/manual/introduction.txt b/features/buildroot/docs/manual/introduction.txt new file mode 100644 index 00000000..476aa81e --- /dev/null +++ b/features/buildroot/docs/manual/introduction.txt @@ -0,0 +1,26 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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 footnote:[BSP: Board Support Package] or +SDK footnote:[SDK: Software Development Kit] on top of Buildroot. diff --git a/features/buildroot/docs/manual/known-issues.txt b/features/buildroot/docs/manual/known-issues.txt new file mode 100644 index 00000000..ae29a48b --- /dev/null +++ b/features/buildroot/docs/manual/known-issues.txt @@ -0,0 +1,15 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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 ARC + architectures. + +* The +prboom+ package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. + diff --git a/features/buildroot/docs/manual/legal-notice.txt b/features/buildroot/docs/manual/legal-notice.txt new file mode 100644 index 00000000..69753282 --- /dev/null +++ b/features/buildroot/docs/manual/legal-notice.txt @@ -0,0 +1,123 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[legal-info]] + +== Legal notice and licensing + +=== 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 and the +Buildroot source code itself (including patches to packages for which source +distribution is required). +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. + +[[legal-info-buildroot]] +=== Complying with the Buildroot license + +Buildroot itself is an open source software, released under the +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[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 +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[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. + +==== 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 xref:patch-policy[] for the technical details. diff --git a/features/buildroot/docs/manual/make-tips.txt b/features/buildroot/docs/manual/make-tips.txt new file mode 100644 index 00000000..869b6807 --- /dev/null +++ b/features/buildroot/docs/manual/make-tips.txt @@ -0,0 +1,133 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[make-tips]] +=== '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. + +.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: + xref:requirement-optional[]). + +.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 xref:ccache[]. + +.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 +---- diff --git a/features/buildroot/docs/manual/makedev-syntax.txt b/features/buildroot/docs/manual/makedev-syntax.txt new file mode 100644 index 00000000..d6efb31d --- /dev/null +++ b/features/buildroot/docs/manual/makedev-syntax.txt @@ -0,0 +1,103 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[makedev-syntax]] +== 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 +---- diff --git a/features/buildroot/docs/manual/makeusers-syntax.txt b/features/buildroot/docs/manual/makeusers-syntax.txt new file mode 100644 index 00000000..467e5962 --- /dev/null +++ b/features/buildroot/docs/manual/makeusers-syntax.txt @@ -0,0 +1,89 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[makeuser-syntax]] +== 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+, then a unique UID will be computed by Buildroot + in the range [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+, and the group does not already exist, then + a unique GID will be computed by Buildroot in the range [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 https://en.wikipedia.org/wiki/Gecos_field[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+ diff --git a/features/buildroot/docs/manual/manual.mk b/features/buildroot/docs/manual/manual.mk new file mode 100644 index 00000000..1d03b213 --- /dev/null +++ b/features/buildroot/docs/manual/manual.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# The Buildroot manual +# +################################################################################ + +MANUAL_SOURCES = $(sort $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)) +MANUAL_RESOURCES = $(TOPDIR)/docs/images + +$(eval $(call asciidoc-document)) diff --git a/features/buildroot/docs/manual/manual.txt b/features/buildroot/docs/manual/manual.txt new file mode 100644 index 00000000..4eb4ba9b --- /dev/null +++ b/features/buildroot/docs/manual/manual.txt @@ -0,0 +1,71 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + += The Buildroot user manual +:toc: + +Buildroot {sys:echo $\{BR2_VERSION%%-git*\}} manual generated on {localdate} +{localtime} from git revision {sys:git rev-parse --short HEAD} + +The Buildroot manual is written by the Buildroot developers. +It is licensed under the GNU General Public License, version 2. Refer to the +http://git.buildroot.org/buildroot/tree/COPYING?id={sys:git rev-parse HEAD}[COPYING] +file in the Buildroot sources for the full text of this license. + +Copyright (C) 2004-2019 The Buildroot developers + +image::logo.png[] + += Getting started + +include::introduction.txt[] + +include::prerequisite.txt[] + +include::getting.txt[] + +include::quickstart.txt[] + +include::resources.txt[] + += User guide + +include::configure.txt[] + +include::configure-other-components.txt[] + +include::common-usage.txt[] + +include::customize.txt[] + +include::faq-troubleshooting.txt[] + +include::known-issues.txt[] + +include::legal-notice.txt[] + +include::beyond-buildroot.txt[] + += Developer guide + +include::how-buildroot-works.txt[] + +include::writing-rules.txt[] + +include::adding-board-support.txt[] + +include::adding-packages.txt[] + +include::patch-policy.txt[] + +include::download-infra.txt[] + +include::debugging-buildroot.txt[] + +include::contribute.txt[] + +include::developers.txt[] + += Appendix + +include::appendix.txt[] diff --git a/features/buildroot/docs/manual/migrating.txt b/features/buildroot/docs/manual/migrating.txt new file mode 100644 index 00000000..92e487c7 --- /dev/null +++ b/features/buildroot/docs/manual/migrating.txt @@ -0,0 +1,58 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[migrating-from-ol-versions]] +== 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. + +[[br2-external-converting]] +=== 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 xref:outside-br-custom[]). + +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. + +[[migrating-host-usr]] +=== 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/features/buildroot/docs/manual/package-make-target.txt b/features/buildroot/docs/manual/package-make-target.txt new file mode 100644 index 00000000..795c7d46 --- /dev/null +++ b/features/buildroot/docs/manual/package-make-target.txt @@ -0,0 +1,96 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[pkg-build-steps]] + +==== 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): + +[width="90%",cols="^1,4",options="header"] +|=================================================== +| 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: + +[width="90%",cols="^1,4",options="header"] +|=================================================== +| 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 +xref:graph-depends[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 + +|=================================================== diff --git a/features/buildroot/docs/manual/patch-policy.txt b/features/buildroot/docs/manual/patch-policy.txt new file mode 100644 index 00000000..e704a0d3 --- /dev/null +++ b/features/buildroot/docs/manual/patch-policy.txt @@ -0,0 +1,162 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[patch-policy]] + +== 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. + +=== Providing patches + +==== 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. + +==== 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+ +- 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.' + + +==== 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 xref:customize-patches[] for +details. + +[[patch-apply-order]] +=== How patches are applied + +. Run the +_PRE_PATCH_HOOKS+ commands if defined; + +. Cleanup the build directory, removing any existing +*.rej+ files; + +. If +_PATCH+ is defined, then patches from these + tarballs are applied; + +. 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'. + +. 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. + +. Run the +_POST_PATCH_HOOKS+ commands if defined. + +If something goes wrong in the steps _3_ or _4_, then the build fails. + +=== Format and licensing of the package patches + +Patches are released under the same license as the software they apply +to (see xref:legal-info-buildroot[]). + +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"]) +--------------- + +=== Integrating patches found on the Web + +When integrating a patch of which you are not the author, you have to +add a few things in the header of the patch itself. + +Depending on whether the patch has been obtained from the project +repository itself, or from somewhere on the web, add one of the +following tags: + +--------------- +Backported from: +--------------- + +or + +--------------- +Fetch from: +--------------- + +It is also sensible to add a few words about any changes to the patch +that may have been necessary. diff --git a/features/buildroot/docs/manual/prerequisite.txt b/features/buildroot/docs/manual/prerequisite.txt new file mode 100644 index 00000000..dcd3fd25 --- /dev/null +++ b/features/buildroot/docs/manual/prerequisite.txt @@ -0,0 +1,89 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[requirement]] +== 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). + +[[requirement-mandatory]] + +=== Mandatory packages + +* Build tools: + +** +which+ +** +sed+ +** +make+ (version 3.81 or any later) +** +binutils+ +** +build-essential+ (only for Debian based systems) +** +gcc+ (version 4.4 or any later) +** `g++` (version 4.4 or any later) +** +bash+ +** +patch+ +** +gzip+ +** +bzip2+ +** +perl+ (version 5.8.7 or any later) +** +tar+ +** +cpio+ +** +python+ (version 2.7 or any later) +** +unzip+ +** +rsync+ +** +file+ (must be in +/usr/bin/file+) +** +bc+ + +* Source fetching tools: +** +wget+ + +[[requirement-optional]] + +=== Optional packages + +* 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 +** +qt4+ 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 xref:download-infra[] 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+ +** +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' diff --git a/features/buildroot/docs/manual/quickstart.txt b/features/buildroot/docs/manual/quickstart.txt new file mode 100644 index 00000000..74158ae2 --- /dev/null +++ b/features/buildroot/docs/manual/quickstart.txt @@ -0,0 +1,123 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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 http://www.kernel.org/[Linux kernel] or in +http://www.busybox.net/[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 xref:requirement[] for more details, +specifically the xref:requirement-optional[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 xref:configure[] +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 +-------------------- + +You *should never* use +make -jN+ with Buildroot: top-level parallel +make is currently not supported. Instead, use the +BR2_JLEVEL+ option +to tell Buildroot to run the compilation of each individual package +with +make -jN+. + +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. + +* +staging/+ which contains a hierarchy similar to a root filesystem + hierarchy. This directory contains the headers and libraries of the + cross-compilation toolchain and all the userspace packages selected + for the target. 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. + +* +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. + +* +host/+ contains the installation of tools compiled for the host + that are needed for the proper execution of Buildroot, including the + cross-compilation toolchain. + +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 +xref:make-tips[]. diff --git a/features/buildroot/docs/manual/rebuilding-packages.txt b/features/buildroot/docs/manual/rebuilding-packages.txt new file mode 100644 index 00000000..6faa67ad --- /dev/null +++ b/features/buildroot/docs/manual/rebuilding-packages.txt @@ -0,0 +1,122 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[full-rebuild]] +=== 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. + +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 +--------------- + +[[rebuild-pkg]] +=== 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+, followed by +make+ or +make +. 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+, followed +by +make+ or +make +. It will restart the configuration, +compilation and installation of the package. + +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 +xref:pkg-build-steps[]. diff --git a/features/buildroot/docs/manual/resources.txt b/features/buildroot/docs/manual/resources.txt new file mode 100644 index 00000000..69bfff8f --- /dev/null +++ b/features/buildroot/docs/manual/resources.txt @@ -0,0 +1,73 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[community-resources]] +== 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 +http://lists.buildroot.org/mailman/listinfo/buildroot[mailing list info +page]. ++ +Mails that are sent to the mailing list are also available in the +http://lists.buildroot.org/pipermail/buildroot[mailing list archives] and +via http://gmane.org[Gmane], at +http://dir.gmane.org/gmane.comp.lib.uclibc.buildroot[+gmane.comp.lib.uclibc.buildroot+]. +Please search the mailing list archives before asking questions, since +there is a good chance someone else has asked the same question before. + +IRC:: ++ +The Buildroot IRC channel irc://freenode.net/#buildroot[#buildroot] is +hosted on http://webchat.freenode.net[Freenode]. 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 http://code.bulix.org. ++ +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 https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot +bugtracker]. Please refer to xref:reporting-bugs[] before creating a bug +report. + +Wiki:: ++ +http://elinux.org/Buildroot[The Buildroot wiki page] is hosted on +the http://elinux.org[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 xref:apply-patches-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 +http://patchwork.buildroot.org[]. diff --git a/features/buildroot/docs/manual/using-buildroot-debugger.txt b/features/buildroot/docs/manual/using-buildroot-debugger.txt new file mode 100644 index 00000000..d5293beb --- /dev/null +++ b/features/buildroot/docs/manual/using-buildroot-debugger.txt @@ -0,0 +1,53 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== 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 -x /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 +---------------------------- diff --git a/features/buildroot/docs/manual/using-buildroot-development.txt b/features/buildroot/docs/manual/using-buildroot-development.txt new file mode 100644 index 00000000..da6dd822 --- /dev/null +++ b/features/buildroot/docs/manual/using-buildroot-development.txt @@ -0,0 +1,121 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== 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 +------------------ diff --git a/features/buildroot/docs/manual/using-buildroot-toolchain.txt b/features/buildroot/docs/manual/using-buildroot-toolchain.txt new file mode 100644 index 00000000..0c0c35fc --- /dev/null +++ b/features/buildroot/docs/manual/using-buildroot-toolchain.txt @@ -0,0 +1,34 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== 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. diff --git a/features/buildroot/docs/manual/writing-rules.txt b/features/buildroot/docs/manual/writing-rules.txt new file mode 100644 index 00000000..ca432722 --- /dev/null +++ b/features/buildroot/docs/manual/writing-rules.txt @@ -0,0 +1,151 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== 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. + +[[writing-rules-config-in]] + +=== +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[]. + +[[writing-rules-mk]] + +=== 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) -fr $(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_PYTHON),y) +LIBFOO_CONF_OPTS += --with-python-support +LIBFOO_DEPENDENCIES += python +else +LIBFOO_CONF_OPTS += --without-python-support +endif +--------------------- ++ +NO: ++ +--------------------- +LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON),,out)-python-support +LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,) +--------------------- + +** 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) -fr $(TARGET_DIR)/usr/share/libfoo/data +endef +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA +endif +--------------------- ++ +NO: ++ +--------------------- +define LIBFOO_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data +endef + +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA +endif +--------------------- + +=== The documentation + +The documentation uses the +http://www.methods.co.nz/asciidoc/[asciidoc] format. + +For further details about the http://www.methods.co.nz/asciidoc/[asciidoc] +syntax, refer to http://www.methods.co.nz/asciidoc/userguide.html[]. + +=== Support scripts + +Some scripts in the +support/+ and +utils/+ directories are written in +Python and should follow the +https://www.python.org/dev/peps/pep-0008/[PEP8 Style Guide for Python Code]. diff --git a/features/buildroot/docs/website/.htaccess b/features/buildroot/docs/website/.htaccess new file mode 100644 index 00000000..b02beb88 --- /dev/null +++ b/features/buildroot/docs/website/.htaccess @@ -0,0 +1,62 @@ +# BEGIN Compress text files + + + SetOutputFilter DEFLATE + + +# END Compress text files + +# BEGIN Expire headers + + ExpiresActive On + ExpiresDefault "access plus 1 seconds" + ExpiresByType image/x-icon "access plus 2592000 seconds" + ExpiresByType image/jpeg "access plus 2592000 seconds" + ExpiresByType image/png "access plus 2592000 seconds" + ExpiresByType image/gif "access plus 2592000 seconds" + ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" + ExpiresByType text/css "access plus 604800 seconds" + ExpiresByType text/javascript "access plus 216000 seconds" + ExpiresByType application/javascript "access plus 216000 seconds" + ExpiresByType application/x-javascript "access plus 216000 seconds" + ExpiresByType text/html "access plus 600 seconds" + ExpiresByType application/xhtml+xml "access plus 600 seconds" + +# END Expire headers + +# BEGIN Cache-Control Headers + + + Header set Cache-Control "max-age=2592000, public" + + + Header set Cache-Control "max-age=604800, public" + + + Header set Cache-Control "max-age=216000, private" + + + Header set Cache-Control "max-age=600, private, must-revalidate" + + +# END Cache-Control Headers + +# BEGIN Turn ETags Off + + Header unset ETag + +FileETag None +# END Turn ETags Off + +# BEGIN gzip + +mod_gzip_on Yes +mod_gzip_dechunk Yes +mod_gzip_item_include file .(html?|txt|css|js)$ +mod_gzip_item_include handler ^cgi-script$ +mod_gzip_item_include mime ^text/.* +mod_gzip_item_include mime ^application/x-javascript.* +mod_gzip_item_exclude mime ^image/.* +mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + +# END gzip diff --git a/features/buildroot/docs/website/association.html b/features/buildroot/docs/website/association.html new file mode 100644 index 00000000..0215f858 --- /dev/null +++ b/features/buildroot/docs/website/association.html @@ -0,0 +1,122 @@ + + +
+
+
+
+
Association
+
+ +

The Buildroot open-source project is supported by a + non-profit organization called the Buildroot + Association. The goal of this non-profit + organization is to engage actions to promote, help + develop and democratise the Buildroot project.

+ +

This non-profit organization is registered as a legal + entity in France, more precisely as an association loi + 1901.

+ +

This organization can receive funding from members, + donors and sponsors. This funding is then used to pay for:

+ +
    +
  • the meeting rooms used during the Buildroot + Developers Meeting twice per year;
  • +
  • travel expenses for contributors + willing to attend the Buildroot Developers + Meeting, and not covered by their employer to do + so;
  • +
  • renting servers and services used to host the + Buildroot infrastructure.
  • +
+ +

The bylaws of the association are available + in French + (official) and + in English + (unofficial translation). The association was declared on + March 14, 2016 to the Préfecture de Haute-Garonne + (France) and is registered under the n°W313024278. See this + official receipt + from the French authorities.

+ +

Our accounting is fully public, including the bank + account summaries, + see accounting. Numerous + other administrative documents related to the association + are available on + its Github + repository

+
+
+ +
+
Becoming a member
+
+ +

To become a member, an individual or a company simply has + to pay its yearly membership. For an individual, the minimum + membership fee per year is 10 EUR. For a company, the + minimum membership fee per year is 150 EUR. Individuals and + companies are free to give more than the minimum + required.

+ +

The membership is valid for the current civil year, i.e + any membership fee paid in 2019 is valid through December 31, + 2019.

+ +

Once the membership fee is received, it will be listed in + the + association accounting + files, which serve as the official list of + members. Therefore, members accept that their name and the + amount of their membership fee is made public.

+ +

There are two possibilities to pay the membership + fee:

+ +
    + +
  • A direct wire-transfer to the association bank + account. Since the bank account is located in France, this + is completely free of charge for any person or company + located in the European Union. The IBAN number of the + association bank account is FR53 2004 1010 1615 0958 + 0P03 772.
  • + +
  • A Paypal payment to the association Paypal account, + whose address + is buildroot-association@buildroot.org.
  • + +
+ +
+
+ +
+
Sponsoring the project
+
+ +

Companies willing to help the Buildroot project can do so + by making a donation to the Buildroot + Association. In exchange for these donations, companies + will be listed on our Sponsors + page and will be thanked in our release announcements.

+ +

As the Buildroot Association is a legal entity + registered in France, it is able to deliver a bill and/or + receipt.

+ +

Please + contact buildroot-association@buildroot.org + if you are a company interested in making a donation.

+ +
+
+ +
+
+
+ + diff --git a/features/buildroot/docs/website/contribute.html b/features/buildroot/docs/website/contribute.html new file mode 100644 index 00000000..aa1cf93f --- /dev/null +++ b/features/buildroot/docs/website/contribute.html @@ -0,0 +1,44 @@ + + +
+
+
+ +
+
Contribute
+
+

Buildroot is an open source project and you are very welcome to contribute to + it.
+ There are many different ways to contribute:

+ + + +

For more details on these topics, check out the + + Contributing to buildroot chapter in the Buildroot manual. Thanks for your help!

+ +

If you need any support yourself, have a look at + Support.

+
+
+ +
+
+
+ + diff --git a/features/buildroot/docs/website/copyright.txt b/features/buildroot/docs/website/copyright.txt new file mode 100644 index 00000000..600bf7df --- /dev/null +++ b/features/buildroot/docs/website/copyright.txt @@ -0,0 +1,30 @@ + +The code and graphics on this website (and it's mirror sites, if any) are +Copyright (c) 1999-2005 by Erik Andersen, 2006-2019 The Buildroot +developers. All rights reserved. + +Documents on this Web site including their graphical elements, design, and +layout are protected by trade dress and other laws and MAY BE COPIED OR +IMITATED IN WHOLE OR IN PART. THIS WEBSITE IS LICENSED FREE OF CHARGE, THERE +IS NO WARRANTY FOR THE WEBSITE TO THE EXTENT PERMITTED BY APPLICABLE LAW. +SHOULD THIS WEBSITE PROVE DEFECTIVE, YOU MAY ASSUME THAT SOMEONE MIGHT GET +AROUND TO SERVICING, REPAIRING OR CORRECTING IT SOMETIME WHEN THEY HAVE NOTHING +BETTER TO DO. REGARDLESS, YOU GET TO KEEP BOTH PIECES. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THIS +WEBSITE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THIS WEBSITE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +LOSS OF HAIR, LOSS OF LIFE, LOSS OF MEMORY, LOSS OF YOUR CARKEYS, MISPLACEMENT +OF YOUR PAYCHECK, OR COMMANDER DATA BEING RENDERED UNABLE TO ASSIST THE +STARFLEET OFFICERS ABORD THE STARSHIP ENTERPRISE TO RECALIBRATE THE MAIN +DEFLECTOR ARRAY, LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +WEBSITE TO OPERATE WITH YOUR WEBBROWSER), EVEN IF SUCH HOLDER OR OTHER PARTY +HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +You have been warned. + +You can contact the webmaster at if you have some sort +of problem with this. + diff --git a/features/buildroot/docs/website/css/main.css b/features/buildroot/docs/website/css/main.css new file mode 100644 index 00000000..5255531b --- /dev/null +++ b/features/buildroot/docs/website/css/main.css @@ -0,0 +1,260 @@ +/* + * Author: Carlos Alvarez + * URL: http://alvarez.is + * + * Project Name: FLATTY - Free Bootstrap 3 Theme + * Version: 1.0 + * URL: http://blacktie.co + */ + +body { + background-color: #f2f2f2; + font-family: 'Roboto', sans-serif; + font-weight: 300; + font-size: 16px; + color: #555; + + -webkit-font-smoothing: antialiased; + -webkit-overflow-scrolling: touch; +} + +/* Titles */ +h1, h2, h3, h4, h5, h6 { + font-family: 'Roboto', sans-serif; + font-weight: 300; + color: #333; +} + +h1 { + font-size: 40px; +} + +h3 { + color: #95a5a6; + font-weight: 400; +} + +h4 { + color: #95a5a6; + font-weight: 400; + font-size: 20px; +} + +.ellipsis p { + margin-bottom:10px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.centered { + text-align: center; +} + +/* Links */ +a { + color: #3498db; + word-wrap: break-word; + + -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; + -moz-transition: color 0.1s ease-in, background 0.1s ease-in; + -ms-transition: color 0.1s ease-in, background 0.1s ease-in; + -o-transition: color 0.1s ease-in, background 0.1s ease-in; + transition: color 0.1s ease-in, background 0.1s ease-in; +} + +a:hover, +a:focus { + color: #7b7b7b; + text-decoration: none; + outline: 0; +} + +a:before, +a:after { + -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; + -moz-transition: color 0.1s ease-in, background 0.1s ease-in; + -ms-transition: color 0.1s ease-in, background 0.1s ease-in; + -o-transition: color 0.1s ease-in, background 0.1s ease-in; + transition: color 0.1s ease-in, background 0.1s ease-in; +} + + hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +.navbar-default { + background-color: #3498db; + border-color: transparent; +} + +.navbar-default .navbar-brand { + color: white; +} + +.navbar-default .navbar-nav > li > a { + color: white; +} + +/* Helpers */ + +.mt { + margin-top: 40px; + margin-bottom: 40px; +} + +.nh { + margin-top: 80px; + margin-bottom: 40px; +} + +.form-control { + height: 42px; + font-size: 18px; + width: 280px; +} + +i { + margin: 8px; + color: #3498db; +} + + +/* HeaderWrap */ +#headerwrap { + /* background: url(../img/bg01.jpg) no-repeat center top; */ + background-color: #3498db; + margin-top: -20px; + padding-top:120px; + background-attachment: relative; + background-position: center center; + min-height: 400px; + max-height: 800px; + width: 100%; + + -webkit-background-size: 100%; + -moz-background-size: 100%; + -o-background-size: 100%; + background-size: 100%; + + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; +} + +#headerwrap h1 { + color: white; + font-size: 60px; + font-weight: bold; + letter-spacing: 1px; +} + +#menubutton { + max-height: 50px; + margin-top: 6px; + padding-top: 15px; + margin-left: 10px; +} + +.panel-sponsor { + min-height: 350px; + text-align: justify; + text-justify: inter-word; +} + +@media (min-width: 768px) and (max-width: 991px) { + .navbar-collapse.collapse { + display: none !important; + } + .navbar-collapse.collapse.in { + display: block !important; + } + .navbar-header .collapse, .navbar-toggle { + display:block !important; + } + .navbar-header { + float:none; + } + .navbar-collapse { + overflow:hidden; + } + #menubutton { + margin-right: 40px; + width: 45px; + } + .text-shrink { + visibility: hidden; + } +} + +@media (max-width:767px) { + #menubutton { + max-height: 50px; + margin-top: 6px; + padding-top: 15px; + margin-left: 15px; + margin-right: 15px; + } +} + +/* entire container, keeps perspective */ +.flip-container { + perspective: 1000; +} + /* flip the pane when hovered */ + .flip-container:hover .flipper, .flip-container.hover .flipper { + transform: rotateY(180deg); + } + +.flip-container, .front, .back { + width: 180px; + height: 180px; +} + +/* flip speed goes here */ +.flipper { + transition: 0.6s; + transform-style: preserve-3d; + + position: relative; +} + +/* hide back of pane during swap */ +.front, .back { + backface-visibility: hidden; + + position: absolute; + top: 0; + left: 0; +} + +/* front pane, placed above back */ +.front { + z-index: 2; + /* for firefox 31 */ + transform: rotateY(0deg); +} + +/* back, initially hidden pane */ +.back { + transform: rotateY(180deg); +} + +.back img { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + +.panel-box p { + height: 1.5em; +} diff --git a/features/buildroot/docs/website/css/timeline.css b/features/buildroot/docs/website/css/timeline.css new file mode 100644 index 00000000..df58461a --- /dev/null +++ b/features/buildroot/docs/website/css/timeline.css @@ -0,0 +1,184 @@ +.timeline { + list-style: none; + padding: 20px 0 20px; + position: relative; +} + +.timeline:before { + top: 0; + bottom: 0; + position: absolute; + content: " "; + width: 3px; + background-color: #E4E4E4; + left: 50%; + margin-left: -1.5px; + } + +.timeline > li { + margin-bottom: 20px; + position: relative; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li > .timeline-panel { + width: 46%; + float: left; + border: 1px solid #d4d4d4; + border-radius: 2px; + padding: 20px; + position: relative; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + background-color: white; +} + +.timeline > li > .timeline-panel:before { + position: absolute; + top: 26px; + right: -15px; + display: inline-block; + border-top: 15px solid transparent; + border-left: 15px solid #ccc; + border-right: 0 solid #ccc; + border-bottom: 15px solid transparent; + content: " "; +} + +.timeline > li > .timeline-panel:after { + position: absolute; + top: 27px; + right: -14px; + display: inline-block; + border-top: 14px solid transparent; + border-left: 14px solid #fff; + border-right: 0 solid #fff; + border-bottom: 14px solid transparent; + content: " "; +} + +.timeline > li > .timeline-badge { + color: #fff; + width: 50px; + height: 50px; + line-height: 50px; + font-size: 1.4em; + text-align: center; + position: absolute; + top: 16px; + left: 50%; + margin-left: -25px; + background-color: #E6E6E6; + z-index: 100; + border-top-right-radius: 50%; + border-top-left-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} + +.timeline > li.timeline-inverted > .timeline-panel { + float: right; +} + +.timeline > li.timeline-inverted > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; +} + +.timeline > li.timeline-inverted > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; +} + +.timeline-badge.primary { + background-color: #2e6da4 !important; +} + +.timeline-badge.success { + background-color: #3f903f !important; +} + +.timeline-badge.warning { + background-color: #f0ad4e !important; +} + +.timeline-badge.danger { + background-color: #d9534f !important; +} + +.timeline-badge.info { + background-color: #5bc0de !important; +} + +.timeline-title { + margin-top: 0; + color: inherit; +} + +.timeline-body > p, +.timeline-body > ul { + margin-bottom: 0; +} + +.timeline-body > p + p { + margin-top: 5px; +} + +@media (max-width: 767px) { + ul.timeline:before { + left: 40px; + } + + ul.timeline > li > .timeline-panel { + width: calc(100% - 90px); + width: -moz-calc(100% - 90px); + width: -webkit-calc(100% - 90px); + } + + ul.timeline > li > .timeline-badge { + left: 15px; + margin-left: 0; + top: 16px; + } + + ul.timeline > li > .timeline-panel { + float: right; + } + + ul.timeline > li > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; + } + + ul.timeline > li > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; + } +} diff --git a/features/buildroot/docs/website/docs.html b/features/buildroot/docs/website/docs.html new file mode 100644 index 00000000..9ef202ff --- /dev/null +++ b/features/buildroot/docs/website/docs.html @@ -0,0 +1,119 @@ + + +
+
+
+ +
+
Documentation
+
+

The Buildroot user manual is where you want to start reading if you + wish to understand how Buildroot works, or wish to change/extend/fix + things. It is available as:

+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

HTML
+ Stable | + Nightly +

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

PDF
+ Stable | + Nightly +

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

ASCII
+ Stable | + Nightly +

+ +
+
+ +

If you find any errors (factual, grammatical, whatever) please + report them to us.

+
+
+ +
+
Training
+
+

Bootlin (formerly Free Electrons) + offers a complete 3-days + training course on Buildroot. They also make the training + materials freely available:

+ +
+
+
+
Slides preview
+
+
+ buildroot slides +
+
+
+
+ +
+
+
Training materials
+ +
+
+
+
+
+ +
+
+
+ + + diff --git a/features/buildroot/docs/website/download.html b/features/buildroot/docs/website/download.html new file mode 100644 index 00000000..f88af00a --- /dev/null +++ b/features/buildroot/docs/website/download.html @@ -0,0 +1,217 @@ + + +
+
+
+ +
+
Download
+
+ +

Latest long term support release: 2019.02.4

+ +
+
+
+
+
+ +
+
+ +
+
+
+

buildroot-2019.02.4.tar.gz

+

PGP signature

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2019.02.4.tar.bz2

+

PGP signature

+
+
+ +

Latest stable release: 2019.05.1

+ +
+
+
+
+
+ +
+
+ +
+
+
+

buildroot-2019.05.1.tar.gz

+

PGP signature

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2019.05.1.tar.bz2

+

PGP signature

+
+
+ + This and earlier releases (and their PGP signatures) can always be downloaded from + http://buildroot.net/downloads/. +
+
+ +
+
Source code
+
+ +
+
+
+
Repository
+
+

The buildroot repository can be browsed online through cgit at + http://git.buildroot.net/buildroot. + To grab a copy of the repository use

+ + +
+ + + + +

+ +

+ Or if you're behind a firewall blocking git: +

+ +
+ + + + +

+ +

+ + Please use the native git protocol if at all possible, as it's a lot + more efficient than HTTP. + +

+ + If you are not already familiar with using Git, we recommend you visit the Git website. + +

+ + Once you've checked out a copy of the source tree, you can update your source + tree at any time so it is in sync with the latest and greatest by entering your + buildroot directory and running the command: + +

+git pull
+
+ + Because you've only been granted anonymous access to the tree, you won't be + able to push your changes to the repo. Changes can instead be submitted for + inclusion by posting them to the buildroot mailing list. +
+
+
+ +
+
+
Tarballs
+
+ You can also obtain daily snapshots of the latest Buildroot source tree if you + want to follow development, but cannot or do not wish to use Git. + + + +

+ Older versions can be downloaded from the release archive. +

+
+
+
+
+
+
+ +
+
+
+ + diff --git a/features/buildroot/docs/website/favicon.ico b/features/buildroot/docs/website/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fa9d24079be70cfff5e014e0ecd1f4236deb7ab6 GIT binary patch literal 2238 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 + + + + + + diff --git a/features/buildroot/docs/website/header.html b/features/buildroot/docs/website/header.html new file mode 100644 index 00000000..e1909291 --- /dev/null +++ b/features/buildroot/docs/website/header.html @@ -0,0 +1,54 @@ + + + + + + + + + + + Buildroot - Making Embedded Linux Easy + + + + + + + + + + diff --git a/features/buildroot/docs/website/images/amarula-solutions-logo.png b/features/buildroot/docs/website/images/amarula-solutions-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe4aeef8162bd4c8233d89da93e4606c479a9b5 GIT binary patch literal 16768 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/bootlin-logo.png b/features/buildroot/docs/website/images/bootlin-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4f918750ec4538baa801ef4e0a0cc6bc0abe534b GIT binary patch literal 6171 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 Dysydb literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/browser.png b/features/buildroot/docs/website/images/browser.png new file mode 100644 index 0000000000000000000000000000000000000000..56039dfaae032dc97033ece6e64e3ee0ec973cc4 GIT binary patch literal 18175 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/buildroot-slides.png b/features/buildroot/docs/website/images/buildroot-slides.png new file mode 100644 index 0000000000000000000000000000000000000000..6ecba3d479623a3a92689d5eea7523e7f1084453 GIT binary patch literal 32837 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 To-(XP!mo1*8uD4Pm+${CYnMJd literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/calao-logo.png b/features/buildroot/docs/website/images/calao-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c01ecf675282e86e736a7ee3c24886727946e156 GIT binary patch literal 15386 zcmV+#JmtfQP)8EhoCMW2OKA02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{03ZNKL_t(|+U&h~ykAv$@Be<* zT6^#Bbmnt%GLwNJBoKxe5FD7D1x15OD{5;+Yq9O^Rcr69BwUBq-m3LiwRr7IFIrIo z&LWCJDo8f3*h^5&0cn{RNko{D*pg;DzOI&*}Hi`p^06IdK2a172XO7ZEKYMG@%| zk=Y{Bn|)o(ekZU_UN}#9VZ1^9Q|AC#rxx(p_Cd-gC)f)dZaL8Fpp;qs1h8L_O$l}b z^I9I{bFUfYvh~(Ij|UeKaW9bI{?jR-5##64(%Db>jTU>E!5wRmkx093#egS@jsbxb zO~(`*TeqyJrS!zGJ=Aa};6DNl349 zusBri-r0s9e5{-M-**mWa^&f!L`r}rAb=4|?z5XY{s;THq_4utieTMgZkm+oK2Z<$N3(#PT(M|kOO z%ZURC-QzG9A#9D9oKs|XZ=SwoEj)bh6v3|sXnS;o3rY-{5Q%c^I-!$aEIf^06EgUjZ&UomeirN);e^pTr&eN4Oe{SK zJZTg+_O|hprv};Y+{}AB^8NmoQhKDV=#@6txcO%*QQVR>_pVNQ3B zC^D!ip?ZIXBo=n%0!$%CPgjmb%i0*oN9c-B?N1oCipM)zxbOY}!m6MzJ%tC0?M&Xa zm*Ousar|$0bIIr=r(0orA>xZyoXL+qdIJ;w9{;N-;3#mu$k}t)v3u4m`j4N-o*zHV;vd}4o3{2bzZ&!X-gZ9mCm(0anl+94{V%Qn zk#z<>^>#)4v0mlAx_3Tbr_9pNRr#xu;pEvNK}(L%D69$*3~8Tb{Dxr`@2wMdZ0zXZ!~c8@zdZJ}#Qz0C&;hP2NJAMu=@wUNYS$X5OIHENl>W0JNf$LMX(!#NAscw8%CYe*y^D$!_VNQYC}^La)IapQ`f zLXo7igId%=sv{soBuDBLQ!z|DupM>7ZJfMi52I+_|N0a8-rDuVK1o0KkYrxOkiP)c zKUUb0fYf!0z?EolF~6@QA#t_T421jm1ZejZ}J$EL#YTW5sCQVC!B+zVIzpJ^BRu7Ibs*_wID}KRtwsI;27l5^`UZT+j-7iW+r=MxMOBgP$|b z+{a=rYgZIn6*@2|rEpr~l)`BR+Mtw1MFFN1kZTXgwFKnyhA=YNSw;GL^6U=++`bx% zHVv_C-xTu_hjWV5LKUIxppM`W92z7*DT5Akl=4O99k-O0cV5b!b7nF3sX;z{#XF^^ z5rUoz6RTc~*1wIBl?r!i3+~33l_=j@;WaI=q(z~1CU{YZ(x5yoCQ3m3_fBb00!o8c z5C)hiAe_~TUff0Xw0Z1aK97A);~v<_?1y&IwQr2dRLn?Sm`I?eG>OurO8M)GK_noE z3iPZ#jn;Qu%GN02qQ~y%@(o`noTf1j6OLT=??ujrio?D}W-p3tkkW6`)9+qn1J{0@@G+hNuvc%jL+ol`xBX89e1!c6GEdymcS5 zf4hl=`$lL@9pg2}q*IhrMID6|jnV;12ejl%%zyO-47_wT11935Km09ApDR21AF2QW zY0wZeK3XmAB}K&pU+QG=mVni%;+RrMpfyTs5RJ>MU6l40Q3_ECCk9a1RB*#7s$!|e zidZzM7?ch$L5?WOlg}4vZ||VvxcTUptz>A~aZGOCM|kURnX|1Qsni)xEn`ko6HV$g zLV(dBrD7XB?|2IvJ6oB(c@w|4dpFTDLXjNs@5LN~GEQHB1qm#eYq^VA1dmu=*`f$? zf&>O}8iz+bK1OS#;RR^KLnE(*#KFUZESZd{RuamwCLzEPpjAW|MC8I8#ay03u}HC} zi`q+8vg?$S*t2sV9k<=hF+<}7sbf5WaVu0rV2{G2-CezxY1Kc;qI= zIpjs@0S6{22d+WDWu%t?rvd5912!?tyjVCsAD~TuXx+4QL?NOO5zs=az&2ukmZVi7 zpyCYNwv*%b)R?HIOr;u2h!W40DrJCxKth5rN2yq%b6zin^Uh%3%9Tvs^APR-dM~rb zCK-$^BTkq^NYNCdh*}PyL_3z%xq8~m^@74kKjh1<;oX}r&jMpqoG7eS=v1ihPiXB58EVz!jP~I~d+!is z&|=U!Kw32Rq=?7%Ryk&0nd0?#aLWAoFn>N1vpVUY)y;TEJJq0w4pNj#QGrDV4s9Yt zB}fobS$!HC_YBZ_%k8XQvY4^etLW33^rYnsKJW-9#&uRQ#vpC%2F7uc`Y8LKgo=o< z^F>^AjAlENbR|M}EPgj(Y3}v_^~a#hFrAr4VO42b4JUU_YF7D)p8U zm9tLdwm1(mH87>%uNjo5#~9?vE>Sx-{)yb;> zoh4T1G-3o%8qtF4E-|#b!qO$JYz(0qK+Y&kR=o-al?v6eWn#++i{{LNo>sy%B*_&> z=_2MTD#vf2eEhkL0sR>eP;5ohOGr!}OFo{YuzP~m$q`EXhH2ZfiBop(bw~`&o_^v)A@9|82TtuXW=(q~;doAt)pu^(!0`~w9j!;F! zb_SZQw86Ng-6$}D=W~=o8U>g(xSXJ81r*K<+4`$p96Mq;_V{)l?}l<7lq9$~CK-w; zZP>)hlTL$$vl&elni@M;#zuOm&b-H~XZ9s<4ks3ffh3FP4dkdOpiO~b&TO6p9$}2$ ziBT5z?ISA3^tH^P!T}>MFNg<-h^%$b+Uiw=e$^E9PYI+7xj8`pq(Xc@5Ife&>4mkk zA1~9=V;H8DzzA)jMx#(leE89VQ`(Cs&=_qXh^W3|5f5*wa{Qf7u(GQYIy?N6k4(Yf z7`$XP6DKd?Nh{>*mZ6s&&uz?VCdtErW_wT}Hfd!MU=kRkjsBK4cAR_+4j9j_?T)Mf z$59O;HNMWicOoKJyQ6BZON6;7CjG1+52o0Ug4>l~eGMS%6l>Sgxi-q>RIM~$m;ef; zh*p)Nj1N81fS8hnBW-ZTpaV^AVT7L7${$Y4zOq@z8ENEaVNWqvmUt*z)plOL;UR%)x%QemyeXu$~S(Q`A41 z3IBu6xnXZXBCL=AP^@jsFU^e|vpc4}BV_drKVdG0)7lJL8AKaj>7sofKgbh-lKfL)8-o7xZv*_iMS8c?n-H|ExpA1URKp68dhK3J^4@4M9h^aYyp#Fs-{Mp|gd1-gp|{>bi)# zS;>B%SY7AqR?WpkR*s` zlnT&64orwxP5I;^kF`!P^qu>8%}+N|J^NuE_|uP4W;yALrS>t0iQR{rWKew&&W8Lr zl)nE6-TQaZGdN6FQb$`yrO?9uu!FbdVrrLO!q1sYz*m4CqNxG%vQLtHM5WAbQ-tH1 zxm|{V6GEou8ghA!$qK4Q0R|c+8ml}8(b;EFnSzu8@pOfDk!Mdk3$&bgJeyBj#@}A` zO|Jaf25$V$20n1tclnjPL=G|kd6=H=kqotA`Ojjn;aQ>}@#HP!@7ltwUwxm|eLFZS zu5tpxEMv$4#5Jmu6HF?_u^rv)H65I?eGi)!cQ8DtS@BOK|Dzq|R26p8FuOyOE{PcH z3dk1&g3!|lN;FOhPJ1HGD$oC0?WqQ3gj6XE0U`mS15hDaLbM4{iDKT9V-zQ1cE9(v z{PL^6;Pu<~@!hk3pAUTPYQ77S`1t)oa z7*Q|=?KD~m%0Ze`sZESAx$!=hwYIQp&LRdDhwS)3nValA zw}{z)_E>(`6^_s#)F(+^NPARLE|Z~hIJS0;E@ODl78 zB}!rlP}A3NE@S>IHnoHZ8I%!xY%vZ=2Q!tJc1y;~vutwnmkL{Ii6kd(76UoL*GV6EKN>F%+iVD%r zpjCi!0UG1ssny=2MB{Xb2}25nJUz>grR9oC*)=gt=N-T0L%+G7l|V00xDN?_7u%3W z@BnwnL^J@=PUv{@QQjPcbOj-yWHHP+Y{Tk(5}Kh5!Q#NxN%B=E89B^|86MP0^@l$iwiXTe}Lt0x}XuIf@+@n%>d@FC?JHX;(g84uf z5UgeG48hHO{Z2gKP!|`KgJACtjt>G_jUiBi5(_eOUqnzdtY3^lg%OETKul=r)TM?P zhc&*EMF$WGvC%{VRy@~(7Hp&F!c2QZ)B1hUW$`qHB0x35kMdB|HRgu!N_7oos=$9H zz^EL>6OTim^9s1{K3cc!Wd7bAEC=QRg{#TNzWgi5J|99E?g&u!(7!iFf>0%p$^<W3%1pN$MTH)Uia}K9^8tQ*5bOCPmni_W?J1_VjeKY3a#4`qB&8u^7hMpzM|5<@jtkA#(((RZV~` zwbC~-K;5Q3cF%yFDl6ms5Ua;)4p3qsiWslfXs=rzZfpY@hM)!2X{b)6kP0~wEE+2f z8p6kYC19=gNxIn?3lIW7`Je(H;~QuP&ww%`1c{YtkH~TY5~4(tZ*L=Ax)iojs$*{Zj#gr}-8Lre}0$MRt8;Vj22@R?v zfR2DP7V_2$UzEZrlNDXM8Iqg|P}X>qqqD+`5al#lf*Hxy_^_kGCY(hFzM{q;E}M3? zDy!ZNx}$^P$#Iw})6>xcy|b{bMLKc?in%;F9T7wkQLaF~P^6`$m9A1dCj>bz+4cyZ z_{?AM;al!v`BrH40YcL$(c*O-69iSvcXWn2l zb`%t1vykT0boxYj>$kc&$}Y|k6!TP^gIb+Z7-D*RshI#1282qZwMSWE3?|HFiYQSk zw$hPrWnQhy>u&nLeB`^|;-m?$gy0480B3=E1fyqM$am6&-SrxkH1(dKj8DAyRiRV_ zD}r?jrvp^J71KK(_Lu3YT1Hcibpc`n&<5QSV0t6UqKR~X)n+;eH1a`K?W%0}R%?w@ zAzJyQs~gZ2gPw_ew82UPs+w$ST2H@3dkYeuBdql}MJv$V9ZZGV^G}l9lSmf+8ik<- z11buLiY>H95vSk#EB^AIf52%Yjmfy@uK<6M7D(UuR(73!9yb8v4$s4jcnq%;4yJER zJlfH@B2oJ+1_vf!L@;$jYBNCu8X`kbjF9$_GD4IkUQyb6lFN3$#IG5N_F+dmUwnxR z5Yf1dhDI9ke@3m4{hX{mXngIgG@mf7)%+-nF<7MtiUr~z8;6v}9-2n7F0hC+hs4Af zf-odsDA5vzoN(7Iy#KcQnA7K#V4jBpMBV4@B`ibBBYkw|3#1)AY@3m6$*f+qK_eNI z6s!r*VVssv~q z_+>movxT?>owTdPqC*53I$RWfk2XV;Y1s( zP5kJND3o(q$Hr#fuTj=t+K58s3KU2BdCk^``Q@sWOdM(Q;vmaqzT>qUiZ|ZD@^Ahf z>nfAHzonB?TiTc%<;ZJ|&V=tWPjHA&%1y7xC<_x2bS_}mgoC|~&IzHG2sT3~&IlNd zG8!HDk@KhTe)$=GAwanhqXHBL<@{%dnK7^xdarTWgfxC&x8WTw`61H`d%vucFYRn!} zRO$vtRyC^t(Vh!x4&XY~+;rxBWCDp?P}&P=YTCLiPrvj&|lIMLI@p@lfD zGxp>*dd9}#*kjqIv=>;dPT(9kA!&Mg!^l)~A3l|s)VcI>Uej+EA_ zCb4=3x@d$3?L$R#5;_}8$qFx(S-+;Sq?cL0_&NcZw(@39Kp|FqIHFOxJ0wl1PL}Dv z^Der2x?t7G^eYHZq~nu>Y12Y8P>?A>GK+82JTvoQ%Y!_{ASBXZ69L%i{&VJbo?2+SYIbu->KoO)4J2FMyW_xDMz})!%8_%hlc~E8E@4X=VeQamu*F$@OI!N->J0GJ%gl?@d z0$Qvu?Ph4+C*CZxi^k${yI0hV*r^ppheWv+!tSMP?oVKIo!-%u@x*xMv$^l3XY79& zv@tjWpHx*=aEU=>+ws0)&N^N*xyvRct+Ftd(GX4$Cs=E#RBKG!b_b_g2j{$;?O~2y zQG`=5YG{m7;)qk4l{-xjP&fhI$bB>FpQce-i_;;KrOpF~wVug3t3#+I1>bDRF0L}+ zs;n6^)8Y|@mMk1)VSOe(f2O>;U*{7{w`b{7B9IHxltl!YM#=lsx8C9bo7+fxKT|2Zw^oCC)#WkMTT z6R<<$1Y?tsKwSjOjPTO6o{IEwwJ#EG!&1B(ab>-5fil z!SgEx5<;4{v@gcLxD& z2)Yi{U3+Oy1QLg}jgwolVoVF7ygXz^u9F#k5oc5Cahb{GE4eRv#)8H(`vM2^faExs zoU@4A>t!Yy)PqP91vEXNk#w1_V(al-$r3}~rrOk}6qEXI!U=#H;t-sM31FR!WQYPXWgE!yGad+PXzxNJm zOP64jqL_l+KZ@Bkh$IlB{BtSQeC7r?cX3UIAZ zdD}<0Bg%7IWt?G~PrhB9e@H5oK;OVJLi0Y6+x-26V-Jr$qBEdZ&!)l zp%&6w2&q9iUwL}r`G$*8zK{|;?L5u(d+Vpcel})^W=v5uLJ!WzH;1$Ip#TquB60UcF{hWK#~$WN7|UWZF;rxuZFR?8T04XVw0F!95b@=3~ua- z80tBSqihbQ01L#YtFf)rUCH{Pj22`EVs&pbqn*A)R zOm#GiovMe2#&YZ*bWD}kUVqF002_8mL_t&?)kI;H!D&C~X2@Y&h;e~eO4c1~Y{uK{ zSOUcF2YYHDYtA^`OuVVHRMLc@y?Yt^$7@;E+6q^^gI^U(bcm)8}sS^X_Z~$COwbu6(o%ZNVD94;9Npn9%o`;h@ov`^lzJD$KD#d_Q#CWplUU^ ztl=V!p(~Tkefpk(x9|-4G+0hC(~X#n1$8K#v(%D=!NDPhzVJ_+*|!(2`T)C@A5W)I zw8jqGKSAx$ZM2mwN#c7jUf`~A_`?BJYz98EQDa5s9a=$Lqh;?X#R$Sx8S**AnHYy7 z=dyRYD!bH zPcK5^4^L99Buvy| zYN@4evuALY)LIhjzfQ7O>Qev8o-K8j)H?KzEnM{XALZQ}9;OEfk5q^qk}k~_Eo3{G z{ku6u2ZYVZ2M_72wbVsOvwYyhWO*La8Th`@OHNWDotj{Bq@T*ZJlp$sQ68x>=d5Mi zy>*mRPneCgD)KmNHjtBQaH;cWKmek%-_abJ##)z=fDZBfP*MvuTVrx~lz}gQjn%)n z4c_%mhAw_R+qGeC>ZpuXssDBpy?gqpj3v|(Z!D5Zvs`n|pY*SnaNB+SbfJQi>6^jeZynMzz| zl7w2~=Y1Morlg60G!9=+xWp2V4>3N_$K=2^;-_}gr>ZQtyM>{#G9%kZnW{i7j0l1% zqI2jV#EL&c%&7oTd8`CJPpAMV5l#Y}3PB=-5T`V0?5IzU6W{nl&b{?Eg5yu%*UOIM zu|4~koeSx&rpO~t(Y9kB10xkC%hsevI58bf4GLRHEW*Rc)H&55c7Z*V+dwedr6hb;4Ui5R`I#XVFo6u z#Kw3JvEFSZbr1?tPo`sN5>p@8$xEt}6lzs^m4*$QDdzJ$a^W%jx>EK0NzGfF5{pm; z1RV#63;o|nJfWvufJ(C*keX?Ce`+rsKfRTYjE-aShIL`Uo%cLITU#6XLP$_|xXFZi zQYVfbF^;t1N!FWeYVo{LR{dgt)MeGXpKm4g#+W({1%=cNPC>mMl5D=8czBrAx7^@< zcBs+y!zn-}AQ%~-7fqCf9|0tbcWJrI$R)qehBI2&3z?W^B<1@+Rvplsz7OQB-{awd z3H2V)_O#TpZ&%D3nPO=39`1Sn15B|oyUy}wP`GLaQajl98gS>WWbyq^@^^8w(1Kf@Q_JjRADU0!)qX3w9NvM{TjbK@3N=Ou%^#axUw;OrsW4b-*mog#P?_a{t$;% zKmev*rBz4h1D4UWa^O;I5H&2x*+a#-8Hv3yPlVr6WaGgfTJ)MV2jNf-SpAuK)Bz9$ z=*v>e z>W?*)bL8VB59DZ`z87#c&NjB_4`^N;c3tUcrlk*?ghPMgpmTmSPa4$1%w>$YHZA0t zmLVc-z%qdo15{hcH5DzNc%n-37%({VICv510v3DXPF#UNm5CkjB+iW;;^7toJtESn zkqvI6Lx9m#oWsw^XA8lJhrvGfM9q`L8^Q@9%mo^Gzw-xj zgelHykd!pl$dd~7jgw^7_a1fqlK>I=%ozLsHK>=E1mzbDK99&3an8;ZjPvL2z1!m6 ziARNx0)K3AcR%X-4-w;E8)|O(lJkogP45-hp5opDjES#sXdViXDWs>BrJ><{)ueu* zLORI!Ip>Ejh841*K=4l@vh`?|^wwpcuRc-;YK6Lq7`4_<0l4YLvOIH_7$+hoK)p96 z{k((I0VA+iU{hu#PQmdh_T!rw`lyJMe0-3a(r!S*pw3Pw0V0jO0q8!^yJpkUhKaQd@7J@;@5umwm9t?aXw1kZ*#n>Gb54x|x+GE2TF#r*~TIGO>CT9@K3 zOL1>+r|@=#`jGWEt{p6eSw(;<$-gBjmlcREcgU>`=gNe97H+Kw>s0n|O9v@m4Q^@n zXRF83Ip%O2-uix8PjT;WC3;&C{V}pJAs|R`Ysebtj_JhSO`$g-x!O88!8xfr7&D;Z+*>LN|p!gZ=&4`5$HH+)jf6kmVIx0ciMS5wp<-0jAPoO2^n#E&G{k1OOlJc+k#jOyEX7Kb6K!@;sXu&2MA zJ=QT|6B27ZKjfS*&jC~ond1ev%K1c!#a&+^`M0OP?+UDOH>4BPo`|tu*ykqtXM{9F zM24xHpW+r+*rSmzgVB>}nY-QLT%~pD5ncXSwl1!*yxA3Hf zQcU{h%PwQ)+0Uf}_bUAH3)|a>zVZvCd^{N)Bv_v$f_;m1YQK=t$!j2eHgE6tYqw zaTXJm1z|2k6yr^fOy#O<`+tv$TD}dM;53fjHcT;P+ff?_s21NZA{`^b2CN&!qDe{ z06m&@0#zO}|5>7eyhgpvqb7N91wD^@moT>gBfy+G^;gXh4u?i#&C2*)B66jOoGl_s zL}W8VXFFI1)D-%rHLP$e=-I81I~1Z5+?$s24=q{ISZDgsy@l)8aM{~bnMd)JuVAZH?DJ57XOO#L>dbTbSyE@9UZZMLf44JWsCzxfJtFXkPg?Gczt4By zxLz*PGc9JlT&7EeCtl7?AO8pLo|{=_U`gMSg)jk*v$%`1*Xt~m4p3fwkh7*a zmQFdS9-1$q#HW@yTtm2#!@b_&-ehqXJ7^^NFu}d`GHx(H*`a=rU=xR%JITm@Um$Ir zzHFJU{+H0vIz{ax3g%`F!yjfm*YhUh8Zq1fwRc>?)`x$?FDA!WBL;1KIqWJ~{9Vt+ zI8X4&8p+o+6cX$wFXyIHiv-`FBggG2GuD#jGwV_F)hO4gST>UAt;hka$9gHZe zzBgl#3gfS{)Zxx?xR?BdCsqIt)~Wtjqb_o|a~1a0{Y>;k=zl(e!o$NNE~0qyQ%t@` z;m*kDth-~B(L``(AT?z-pLlAMV&*00B1xQ6ltZ{wyLzsTv;3d^0Np4z8DGPh37 zyYExn@v#K^382N|-d!QNEas`$SDiNJ{NJo94`ftC^n;u%j4R%I= z7ej8+l6(-{*_#+T7I@TC5WX;uv7eohki|~R6+ph;v!UA#@rG=Y;RoNeZ~0$qxWP72 zjjU5`e0phx`e{I0nfPMhL0~+^eq5tI1MW-*s~z^#?Np}#m!b>cg4C0C_ovv80i!Qe zCER2Q*Q{}A2UOp%lI_Qwz;)FsW3?)A8e{F)v=Xj%w8`fp)OJ|p4(rMC3xT;AT;7#p zKLGM~7IvjzQfNz|9nwIsdo=R76!%BKQyHOn)BxmJyp5GVEo&3>e&#Rv(7s)qGt|fA zr~jEN&R@(vaJ8Ad{fAyF;V*t#=6>|?#p2XnCK~7@KYKR$R)w?n>1e3DucbM!lqZM*%ETeS8#sRKT7H|% z>?_PbHzoYp{|*>;Zu($95mAe1ZyjLjm;}2JkQUVLQzb=PrL zrQ&||d_vIE2DW-(w;p7-gMki)=n5J?67ZzZl+z<4#23P~EPhiCk2O{oj zKdYI+%*+zk3e!+iSPN`GUCVtI7-cPN0Cn!#wGJrLx33ynT4)LvBvMgI~+Kf0;aOw_tUn9oCA^3G2mf$1CO#ESf2u?2&{*-B7Uuq=W=A( zQUB)((4$cN`>)gUjZbmaM?TM|{`hqau@1*$1l&u+4nlI|@Z0Y-@>D32P(c&pPm7pK zN{$-;8^?JlmXK!~&_hZ@N+*h8BC6z=B%oTTGrwG;Mx6obfMGs45;Vn3SQbIysF6_3 z4rR>|u)CxwO-`4J-X&5Z>I{(5gJyt)wIp1fb>akJtq3<@*qC($S7qboW8~RKL`V*Y zFjA`0K3Qj!GOS5qg~MHKUl0#?Iu-1vU)o{nbr(|m+FHIp@dy^3KSTP44@UszSKl#DJ<&hBI5@56V2d%meTYv&%`wMY{c2mCs49qcf~JA~RbnrjK! zdCd@?T&yQ^Efq|yf=x0Cbbm_K)%e9az3=Z8blLHG!x#QI#-==H*4*CY_aJ4;5tFYNxJ)#1hSyDTj z=_DTRms-m$q^w8SLB~Iq`3#Cv<|`gsruf;grTyO=r~OOH2R1_VN3GnrYK*M|DSz-I zn0#Zv-*PYYu_~_`Nq9?_@bD`%TSz(Wf02B=&C#(+c&Nj%?;*>=t(r6b3|3ra__Gm5 zaa=QZ(o!fvYuypmgo!dtO$gOgQ_z}%7EY~0P!r1ImbjYuF~Si=tW#R45rmr4KT+kv z|5;}pC-4-TrOMaQOwoS*D3?4XT)sr{3Hm5pTjM>WDepQ)F@CCWR}ASU$0-}&(tkHe-!aU z45L?Re(;rqbGBP9pr1P^v*+d-SM*rwYYbn*F#4N>KWu~fuQGgXSu58gjIWqN-JGy` zo5m~+c>F5GW7N4FP0PLtfAqtYHLufrVSb*UVyF^OXOcNqa3MVMwjv(~#^@kr42vRV z5j7@=mRh2n!dc%+`NZXYdVy;!7WO+X=uu3(9o7-@Ae#DF zG3{5!T=@1JchWFvVzRnSpl4Q>%qvx8&GBm3?$krN*xpR{3$o za>Yi=O5=Fo%z$svMVSP3W|>=lC7ij{a?!OZ7v_cj;y(HpJDxm!h+8S}8#Z`U#0G3^ zaA|_AfTfR=W$1}ta^i-Vb&DK@AYu7$V*a7OO0rv1dCKy{r%PPJE>9W67VDsLhT~uF zaJ+QA<+D>l=X}l1DbNFsUQ%L8^mRnS z;=KcY7w@L}uK?Vh!f_*iR^nr?7yfaHa7W%TIws709M1iU<9~do&U;x%p7XJ^G4_@m zH_R6H=N0L@1OA0s>}4)7J=CMw-1|QR{_>Rp|1w8-Ah9Haj-?L>Z}~gN-`-Z{Eavz( z(4+%MuxX<*Zbx_!w^I`i`U;x_f_*Tz-!XU4F@MxCi+12xAdgsut3!Hnz%Slp_}YF; zd#7Uih48(WAJ%;GB;m&;#jaRr+hJM#Bggx$N%=UBGmHE9_wj%{ z#{Z$UBCI8*mHo%`a@{eLfFWdz)~905yEW#&4O%W_C;tbSWG*o^`lE#11C~I;c6L){ z_ZrLE^}?;hST>$s;PKM~3}XaLFz?|q@3~#L@NUNi=TGr#ev}Q=&YXZ6#nDT$Vw{Io z7(V#L8ei{$O_$~QYYby3>LgS+mntyX3wogD6MVGCIdO0kJDPz6m9!8Xm&&_+%mB=E8tH>Yt?LEg30x57ot*2}Ez+9<`r zR3=7V;ayP_SjNDMEBT%^{DWqAz`%3DuttaIakGEVC-58@O0jV$V+i5aQla1SedQYc zfL1^rSE#sUa2w;eO>F_*KINgF&U3M*m6kh-#q}P$1{IODCO?rN!x6&3L_G|;;G-S+ zm=h^rC(+M_dCgTEI61^i&t_?;vgvGAR9?~4iek7{bC%uM6cG9$XQ2ujJO_{EfjfUS z(2ZUMstnepGki2);tpvX>A`I?@T?BbA6&=p%HP7Y>mp?E*pJ6qpO%veGK2{VP1Q|! z$1_-a#^L&|0+(Y$=*uQM`h=%U;R+G1)8((s2Bt@KDEbgy9NdzBzrb%7Exv4oLw`Z- zA1);(cv|SIQhdE%@i}p9l4$l}V4!bn`nwJ8v>OyEH=(!+bl}t}zB&!jUQP0h@Vx6s zWZR|CbpTGS^SHob9F77n7!DSx?mxwpsW#d-CvMfxZh&zl}3TXzdO6YmQqKg7+E*QkN#<&%) zV}LgaE@ZLjbb>1JD0?MNng|(|Vel_YI~~?H3ac#8HHywegd61OCy7H6%`usgDWd2B z02)Qa_Wh_SKSH5;Of+>9niMi(V+nu9QcBSgv^$9xxJUGe&8ZH9UOzDhX&{Rxj&KxB z4?-9wUgsO^f`4K?N=F&Ig-JuO7gSF;@0!pg5t2Yhpzb5VpoX@fL&{(?ih3Xk97B)r zt4C3d!FCKDMe{dasQA!)Gm`-rF}lyC0yRKnYmN1jDa0r4v4%qNYN6W9tOkGPd1>K61#E6qYc_w-TlZSUAKs|F31@$wb^<)NR-)t2F*p7aY%Q?^O*%G&usfw+yIOdZ0_ho z3e-3RqFH*CrdH6z4Ck|QJk9$AnJlODJmtez4;&i(VUuwxM}3i7(EVr1T#)4!Y)cx= z{iEh8&rJI>UAwW{^+PaoAO13S_TO`tZoUrT|I6IUfA~!y9(xNz)&Kwi07*qoM6N<$ Ef*adUIsgCw literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/circuitco-logo.png b/features/buildroot/docs/website/images/circuitco-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8b315da4d8ff1b1fa373f5675d45599df446c321 GIT binary patch literal 10750 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 + + \ No newline at end of file diff --git a/features/buildroot/docs/website/images/email.png b/features/buildroot/docs/website/images/email.png new file mode 100644 index 0000000000000000000000000000000000000000..367dadc7f13ec85ef6e89085b38bb480332741ea GIT binary patch literal 4101 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/fluendo-logo.png b/features/buildroot/docs/website/images/fluendo-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d02cb668cc4e17d667fba42419747ff9284a63 GIT binary patch literal 9098 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 XT%7x#fXc-ti804-ZR(j}>veKt z;_5q(WQO<9bjM-#AUiTgYs7KhhX1w^!@h9YVSpugW#r2Nw*JK36BneMY`c&h)sLgR zt!@Dy?N%xO@Ux`@;-=`p&H9olf=iJt?Vt92hxWEOKmB&%0QIU&&vyrqHg(ZBfjv{5 ztU_L?#Fz@WrtFX(6h2k~U@mEE^-!(MQ44r-sh_U^Gj(&iK)mNQk)Zjhc%7#LpHCkB z4FQw3DYVCNOp6Vhw>^P-4t)=!JcV8E0X!oljTsyxgv@x$dw)Q0Hsy<-Ix5@K_qrFZ z!a1G(R^W|h_TVr+v>N?g^K7U`O|r%DBysWk?Pq{5l{QwHB~2=fX&(%aD*@I`ON5J*lEj3asR8`8FL*WM{KclL|jHES@aqR!?yCq3)B{r72 znl+{OQi@EHpN`iV**B3U3yK#rvB^(PjlqBL(>%b%tl}xm%-lyZ;%VXNSwc3`qcPfI zbTyp+H@DGDJYTr{aBQ!+ld=Od8FWf6l4;~8g)}K0DhY5%>AkfPKy{M7>eQ{%2$BKP zEvFJ3T$K(bAE7VRdMUdV@)`-}qvp}?YiCVpS^wH$9%-6TDGym5OB_R1y4RT+zh+$+ zUp4B+mHM&1iu|YpZo=fOL(s3fUN0`sg8L!u@nv~_}5_UV``}grv z%&?l3YpBL42J zMWXChoQ}72h*(P1o$`wf&8jiH=L5ACP;dL6&F2Gn1?)*l6|@=xNWkr-_glaQGwas5 zG6tll42&6#-D(XzSFZc8S8W_&lW3iaD0YdQwgp+o zff7Bx`xIKdk2D-fBV^F(p>6{ufrhnkhz1RE3pfeq1Hl58B?KQh=l!>Z-+jZ6a~!Mv zY+@7bOdSgxZ#^~*RkI@0fMU?5*c-LAyyy>0DXG{`AN(F}*2heI-@pMCPSQZGWEfeQHjRhu6W2UgN zBaa!{dP39G&h^iBELr0{^wOiSe5R<%jOe*QAj8jk4xO>d|;Z+*olrD|?nHEO@6UPx_b^)jf%27IA(pd3gM3tD9&ZJxZs(}Cm5 zHe3}f@!qciz7xkk3jAq}Gd>S;JVqRP@N3f#MkdF_o z!#sv?&5ZTu-;tkt`sahr~YC3a^O{^>*l3RRFh9 zS<pzfjU!YLaY2bsZ&*0w0XP?n}2T`>MOc z+QG5vAG_pVa=6jFc$`hF1!8-z64)lkgoTY*1_GNfow4nybQ>4b@W+vNAHs!Eq=4lj z$(lHXDbS!*sE5GBtLrqO_}#|=AE8JG>bFmt*<6~H6JH&bUGc*f`oo;?b%$0L1%kZq z5thNLye=>$r|AignbUQ*KaE=sy$Gkr(+&62Y#A=ga9Im$2J+Dvg0;vM@L9p%WI1zX z^g=APAeWJ6(C{P7&U}l&Id-CM`p`51+QQ@}nOu^+wGT>QTgATU=azZkGo@1;iU@@- zOZrPmCjrMuI!@BdBwZCZk^{a=k#(#p;Zl*JJ1ByWzZc&c1^zaI=mnCV2pk%-zn?7W z4}t4|zbN_M8vS|dZ}iwlcqG79S&y$!1UvWJ{=f!FUjj~*^fQv41pJJoGoyO=mk|tC z$NR9dpRgp|%iy^;&eL6`zFtp}n)F6VPm^>6aI~an$IOE70;iTfe@&FabGCY7diJcQ zCY>H9^PLXQ!jCj4@ zr6`J^^h+Ns^33BJIWmX!0yzOox{RcwIOpjvXv>R$ zfq4=aNVDR*2aMc}HQ&PF+KLI&M(dbV#)ncwqhre3nv%Zuf@jd%{~~f7fn~e!i9s(RZOq_i8_*JR zh0W;9k-0+TyIhzHcxzxG0}MxtG&pE(;eoYBR|^1z7mkU2t<5zG}n`QX8Y_{0K_ zxQ=aG-pcrnoyJ(U+-l1_5hTlU?IlEsxVS<3>Rkq8gX&l=B{Z!Rxa%XW-HR$@Z&2h- z#cg0qsmoa*QC-ikg#Km#t!SokLm6wJFru zPsbfpGJd}6@4m_Dj)!()LU2uxZSu0`I)QA%X8R^LUjW)*g?>+tg~Fg}X&N<=^6?2X zjotc-WCy+r$06(r_oG$7tRv}-()0;krHCetBqhs?U>TMc+)W~fqk(mEyn2kXmMk4X z`~&XCZ9Dwr*^{x*HiC(S<5{*sM>Pw+?8&56Rk6C5i`<|Z;0V{=jBCEi#|s?r3M!!<=hp^=@$=1hG0 z0-+D}$XgyIMhH2H#<8A(^u-;|VfKj^AUha^E{PWoj~^AGnWGFE)*@#X%SNyy(8!zQ zjT|K@0qEvElo+lzO1dlHnx7~6r?*>r$c$uW$mqxkWg7A+r%T;z!>UD#IVG23=L}Nc zs;bRW)!>DmiZcj!RdsYJ_f@AVF9vjd=`~2@t$^5;T8XXt0Fglz+Uhdf_f#n%pRlRO zn?Uhk#e%sk)J^i;&wsN3+uq*9T?VuQBqNxKb%{P_C(}wUWPc7P4YLFbAn4I6vVBq` z^#LUTQplCkz=O}|$?(>ovD4#RP9s@M?j5~V|H4y0aDn~uZ|~$rgiSPr8Jloph95F? zYiNVGMm-42B|#Un$rl5@vKmvDb-tME)z#~m@ApA!)?)gf?`b}ZAzcO?K6UH6STboL z^>P@~V7DJ`q5D#N?4g)@U_DH@49@pxy~y4s`}^;(DZdEQ{*d)BZ^%aqKT07B^*8Cf z$OyPpMHYbbkgXbJK2e%>~Zn4M{D2# zU}fLM~)mJJ3E`=;^M&NB49n>0ba66Xyasr3z!Co!{LyGgao
-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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/gift.png b/features/buildroot/docs/website/images/gift.png new file mode 100644 index 0000000000000000000000000000000000000000..f527f82837ea6b14e38e54f0b6224b70e9faf8e9 GIT binary patch literal 15906 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 ADF6Tf literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/google-logo.png b/features/buildroot/docs/website/images/google-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bceab166196918575f204d14cce4a4e6d9776008 GIT binary patch literal 12005 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/hammer.png b/features/buildroot/docs/website/images/hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..454a5e5814db549970f8504d4633857a6a100f3f GIT binary patch literal 18353 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

AR^W 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 UXbAGL9RL6T07*qoM6N<$f_}VOMF0Q* literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/logo.png b/features/buildroot/docs/website/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2db743b4fa93820a2ad38bdafb1dbaafe7805fee GIT binary patch literal 117499 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

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

EVr2UX@4T=+T75|uU{D1 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�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%0ArAu0SRq3#`KMKh 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


XXVNMj`#2KQ-cm`J9&grNf0 z-`}4(bs~+K_$Mrv9}G_8MGxpLWkTOW`=6G)fy`*RkWOxw4eqBqaq7$$%iRE2e+i;zeTsy_YKKw zO}OoVt&C0l?gioFp#8+JGKY{D)8evgLj-vhP5i!0hKn)LvWy{uzE1eIREBrSdr1R? zQ(Xga8ofRL|9_*5+k~-+KR^%!h}I%4y~_on1iAtEo=EaOQqslP#IG}lp$1f&L^rnz zh%V_SUC3{KEPx++5+(acP*z-R5#X5YyAK7hTC=Oo!X(AjCIP(DlfKR<8wMbA3NGLO z0l7B_)5gDDCrlszcC9dD{M*&So8#ZE5@wEnyFz$dGy)0NA?mqQwTnka0ddx}p=!WPA+mvy5UueQ>s&1zYteKH`8Mz|R( zwucppwuvOli&u+GctOlYLd5F8wWAJ3r?Sl5k;j*a8ux)Uy6Ny5=hI8P`YyMl@O zV33Z&Bi10IAHWH4L@Wc2nIfPv{QNopk$|AUPzd2dDhZ#ZE@LbsL-p;8eH=CXq+EfGC2o1Eeo}VXc2)puc}$NN{KvRwf_;0%Bt0uibxe zFZ1>-D*Z<3Ef^E|>9i~e$OZ=j1i%hB`?2U*P@sRHUqEP32p3Wu7J@Ym<>`Zh=LjKBp3Dk#R)0mhTUq98or7zzx4{^22^;avDYXjphuRP6Ov zctXiFcQiKCRFu9f##7jb*cP9a1yTVXC*IL9bsf+F%qvfdLV{6?09sNB@4W78e!CIX7@LUmpLshtQ)>io$||f`fuWgHZ=@SVstq z5ET2gxxE9YKX>=`fp(7TYsG^-(DpS05(VNNaK3;u2c$LJlQIw%Jq0|=KM2i;l^iVV z;3Xo=_gWnj(9;VvG>(FP30_E$S%R++l1NZ37_jij7SO1duVO=>L0~B54hae8!^c7b z0-k_xPukf7$~vxp6bFoh+Z1Pfk4V6)3QFE4qB^C=jbP<%#`D;^_|VYcpa8ZGB_lHo z!V11uYCAf+L9Zwo=d>o`B-f@sNIC6Q(BwA__W4cO?4n3n+F0K|_RL;${ukPoEPjPsDfU0F?9LS#7n7!R9hbuBC;DB)#OJ0$dgy$@W7 z+<+9ybD-sg7GrV)5HBRkpCB8!o){e!5r*Zq&@gdWOL*|Lmz9kuA31yR zZd5Fph$GI2h3iT22~kmzd}JdW4h09LE3aZ% zo^a=SdK%W~l9RD)7#kZ6IATa-RBS>@>b0Bq?>{Phj`NAD8=70XJ7G9#G~_4U75Q@o z@cP`y$RHV4QxfB1A_G0qc2Tjh@d=4naQNh%>_?A_aLRKcb?}p>ZWk7_o%v9tD zVxLTKw&0|@^i*J%q5`}EkUugeCN3@>3w}u{>DO=GyZiBJQB@b&Ar?|?4~2N*wj_L9UjG_~SE zJZOf%&61sc?+!R`P=i1(3;`h#q2bXn(a<3}o^(jOk|;mT@W#zdHWTIL7e0IO;&nxJ z4G5z!rKIFO0L8?ujP&H#ATO+BV-O3A#0ZKpG%h9{T97T0lhZICVH5_77T7^@2)17I zjM%;k0Bp~Bkag$gwJWi~-u}T{Fc&%o0kjCr#fsw#6D}uULc_6wDQP$*4?G=U{~$8O zhmU|TDkP#eK!omPq6TpRUj8Va5AC7+r~zvV%x2u>=Sf$RQd8NfkT-6kBA{RczsW;F z$B>A}k8-oK@Mto?8>2XS?madY!3da7v4)L>W7q*IV3C(}z)XT!nP^Uck|7bGNqltw z-mUa_KW`d&_;5a=G7>A;$dBv^Xp8tOr~({~4pl_{TgVT#la|+D|AGimJpy8MCnMh9 z8!Zru)p9O!C}La!7bi=I=i<49yel}`GA-?DMh20dfDZ{m9)NoB1z5;1o)}9HSo2WfN(n367Z6Ln{l^KBk**D?> z@w6LJNhI`;MMjCEMrlHhg9=Rvm(i4PZ5;84GahlQBT2}5lo;4(J0#d5v{W3iN%?OfJb)7Q4RsI!%yAi!0^W-XMnpyPd^;!m<^omY(9rR6^h_1Sc9hhsEw6(V*`sr?>cmv=(U;*#k$hdZuyUL|V z-~hN7OG&<(n#QL!;_OWFCQ#8ZL)_0L4r$P?cR&u;)(md&=BE1En)343#ZU9|Fj(A3 z#{six6Vqhr*TmOauY)!V@f|uP2-8OBED21O-CQ@2I$HWp*)8K>L0pcwNF*Mi9^$hiP8*kPcb>%WEBx0h(15jk~ZTJ7pY zJVzX~HI*O$Eq(%oV(x=`ceC%}+-;Em+`FHf_qYWU&M;;Q)Mp5~5VbaVn{hFOAfR@z zcc8bw8^Imu!CRXe;kE$ZJxAXG+boetakdZ2>PQwM-zP;l-##(3u%fvevo|}$0$j=nUIvHxVSZ48vo9c1 zHZn9}h#SqO$Z(Jd%X@kdsJ3t>sygQy7TUEa|@IEq3kTA+gu6!xL9EW`xggf&3ihcx7nR3`gJr9XJt*p0?#0S`UbBjRrbVi4?-f^BDiQn|b9;y>!L^l!8%UB@_nQXJV_KD4ReEW6e^o zez(w{9~qRGRZ!MG1SV^WX$MhlYB2Ue9xWm<6o4q6^ps-lQi0Fx6gn{BUcLLY7R1^x zENczo(k6mzTI-=RkyuN@2Fj$-Btd?hkxbTfBPcvA=VfC*Hd>OcC^?Rh!RisI3iD#4 zC5l9G_%}_UC#ICFIyEr**5i`aL4@FB8dv~1C^PhyD2`(yY14%cB!{fgR|z3k?iST{ zQadV>Q{gU1&*@nwH4Q$ABsDm;Q%&tKox!V)V_1*j9MhAU8fQ*xpE-N(oQ|$Or{AKd zf6?HAp|OcMc3BY6oq+W=wg9+y*gF85?sOCfh~l8nBRED>9fyy;R;PnZHBW16;jq@T zI=bie_4M=&E?zXah>ap9W`OuxSXtUY0%yzFaSpuW)1$|Zs;Q|S!D+g5qA8t4iu~GI z+LWITo4uf~ck!a(MFRu2)x?ss9I>*rwqYtr?HwF>$7gD)syGRl4*bNCp*S}brIyylG)ni9haP;UgR0mQ> z2@S0?r_Y^*8FchGy%+iyPzM78L+m)g#v@CZ!Wuw%TRRxR-rf=Cr9uf6)uS*5tk8?9 z97i=Sm;qv=ugB~0`jU$(}2fDRpzKN
    =!h!?TVMci4(PJ?RD*PgHpb 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 u5Hh_ll#71V^~U@wTr5{~b# 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 )H{ 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%0D?-1;)~#gDoq0zwj{Da2X2t~xe{ zA9at4P$UeDBX@ty{P@JZa=Ml@8>T1HK?=V&d^6PNIFJ?aPnD$(>#jRU-?xG9Ocy%N za--YeXQN_Za7c5cq~a@`q{HXQs;f3QKPQ-(6ndIz4fSR_k7cGfdw0s9Ywf^4Nt-~PD{~Cv;6Kq{H|w>N}B`f85az` zE41&%o2}4QpY3qD4#JmNkA*;5XmM0W9wp7YJ<@1N2yC~~RWG(yMLdkFEDetx zT^<#wEj9S4D6VnERD2vdlgXuvxM^;`GS0;p_y2&04D8i^!b8r#5|zXbMCgwL(p@3a z4(2Kj)R8C`t-P&fL=_(0iRZLuiXyNX)qDnc*{#au4iV=g2V2A7Lgk^&N$P8`CI9Si zoPwX`zh`>n?G9QU?dtsd1b2=ltCXJ}E-O2c&L6xmYUVT>U$zj*m+kjt0_zYo2bO0< z6u+?Y-dSsis z>0v{jiQI)|(({)Yfjbaj#mCibZf9)fxWd3BMj4{1;X2Ek`Be@&tN^-_Ozyp_qOFomQXQ)R)P!FV3d%^_ z7h~O!p3)!n7?*5M&%^7$!lg!n3%9WX+ZaOkd&DFO78&;NWV;};$JN#_JbOW3ciN(w zn=fIox&<$u${x(LNGNq7uJ6})lSpgS2JIySmhahlb@byU8Bi?dp?bf~in ztTd%_(f6bXVIdySFzBfHhTn&mSAM}iQ8VlVu(5HJN_)R%LcnR%>vOlP|CRmN6$kV= z#E#n1wRR@hN)zRO(UaYtXy9(WEGD>_j1q4*B}@5y7G*i8A878XAw(y1mdUl5D?@AZ zS8IJ=ZGyKU$TQfX)UK@zG^{b44K{1I*d%W|^y8DKl$v8KNERUrr2bk093*(<;Qj5M zisO6DB3N3hoWOCC*&uO>MSj4@G&B8RjZUuX{WY+KcSL%+YiyxfIn`lTDH&nCe{buZ z$qkLS{g92Bsv`C?9Piwk6zcoH!T!12`;#$zDmc^UkORX-?)FAuSCp&vG44tDp@o^O8U!IEFyh_jx?t7SBa2-vm~F~T^~PU zHk!58WDeLpMhfijI#)nha;Xhs^kc>X1?Wyo%qlYs&jNP?g_p!Ka564=?Qb{CtRqIc z$XI_yEzH+|R6{;_I;xZ?2Ezq=5&*S{b|D=3G!!Wzu>hQ;Hhfu@C(Dt}>d1K(G1@M8 zmQ%@2CS#bE&Skak1}@(n`^LhNQ)xtG`4<&jq4uN#x!jfo8d>Jm#wOdmvZ_MIBo=GA66Y-vv@z$p>2KT$CT zx`{NlMlDKciwj_1#I=hjvxKBUD9_8nq;?;~3C7_Sc3$qB^Hi2nceYBKSS|aFdiC2m zxa#k^z`Et)atD+R9n>Cz!$Rp4;&t$HH_T^a@)F(p%rs(HYW5KG^TR~Al=(UnOkoJg zv&s{dEad?ya)*8}hj*GOP2Isa?WnW1AY%IKE*H`As$cP?21DVPcl=zYcSArP*Pq{P zbh22ANVy(3PU6RpbsMAczHu6+nfC3|tzs*OF_8Gu_s7Myj-uI?dweN^pIt$P$NHQgCT1CNB_3#A z9^ky?g)3GGMug4gF}@L>hkX3AbI<-^62k|c*P(g(tlyhtWzp7If&iN7iA?=*pe8s8 z%TmCC0xVz=1BjPEFJVbOeYEf_sg2CU#t>n7PBd}|lQ<-|!002#{2WIUSL^Cks+kNi z$fv8*mR!l5wx=oPVR3KwD>ok{u&ZArIe6JmP$CcwV?Y%0CB&lU^svy$wBW@H3wu0)p2`~MRx~o?62yJG zGKdU2?}7F-#q3oF3J7aY&5 z`CF@kin0ddG4FUF89#@N`4Vz+1e#B+w3hqd(P$Y>mJCVHuoME1w7-%$1_3!n5`(2P z`L;t2nQn>EKyOE*f_*7ISV3boW{(e)Lo!?vKpW`gzU6zN1&vXro$Hb{`MxI>z1WAg6bdRiK3!>?2{3=0`10v3&>jR~auwUCx` zj@Rc7aaKgR|Kt!1-noZ9LSK-Bg)scVJW7A$fUT+SN631g-w}|<)jduSM1uK_?$w%)=tQ_;sAppt-bj63QPg=Gv5?n zF<~sNg5PlJxY>>MwoT0IrMY?1FE%9FnPKyzRCA#>Zp@YZv#4|cv&%pu&ii%Tp)PAf zoF~@`#$t!`yv5rGcRWCek8p)2E3zg%qS3|}d{hRuX*vTu`Ro$kx^WSDZIfJ+oCeD7 zQSxNW3T(XY2O_fN7||c}J)<)W`!pHV+{|3_h`nf%BC_w+Q|1`fnr$jq0(q6 z#HpUYr-*40q?EMI?w(}bc4V@q5*N9w(NnT)q_tX4GFq6DOAVF0FdGhCcY}Mg6BY4L z2iVG9!WUYg`;`2JD20e0p3ZOsO1Tyi<*EcFLY;?*XfP-beXOT>?Qbl88{t1a+W`vy z_Qt@Z6DBS!SgG>AK=-@i&6~NzCSw~Y;O79uN zp$9RPk&(*Jz-#Vxf@IX*I7~rW2)8$5%^(-N2s!}E8ZLrQ#vH}j1op3WbgJK>Ql~MP z)}R+rx-Lk<5IoJ$x}(_r;J5i@P3YXLvv?0{>oFWny*cuTvjcNOWq94qFhZ@B!an6Dl z5&0qkG9B@LN^5ceqhsxycz>yW9aNI29BUFQ+KaQtD}37CU<;Z7C(XeM-{V@Ye+xAZ z=>0du-VU2)pZe@p%8!u{B8QIbLCr&}%e*rMooBb!1Q&$m=4d17Ah!D}cyS;~5=vqK zdvnhV(ZqQWSIZmwrBrQVVP03{Lpyx@uWlReAEQ@E$b=-##2^p9=>}xa&i&a|*C?cL z%he9@xzw;9IL8Gg^pW)>niiER-!_!7N8H(nzGGc%4GJuhLzCWb=%@$2!$TcltM$pv zaus3tnIRU8^;TKtIVpX!fZNR-IMyfdA%+lA9G-1h)8K!DY~k(5hMVTe8N6_bdayG- zQUEgiRkWqO$dX+sw(hIbZ9c~m)Q`*^5AsY zp@0sV?(74%fr>4m8Ih;caZE6UOdN+obTG@+_QRs6RC);h0y`+=$3i5dXY)N1hBVEI z!u;w~VKEvN|HM?*yRmRIEg&Md+=PjlT%|w^Y7_!l5Gj5-1v(IgN>NVr;Fhiq7=0Z?OB>V$H9IYkI@SqD# zAw$5zzp=1&tYYt7G1qE!0NAWy1zU2e1J*8QzIXe!yW8m{G9?i9$5Dt;>-0P1RzS2T zAcdq;V6e1^@I237-5iuGD%5H{kCf2w98Y;xa#Vw#q6tzKq6Kvn_#GUL^LM1Nd^DrK zJ#l|d?5*)0W_#j~PiIOdEiS|K9*2ZJzbxe(M(c1omxmWjwZ%3Z%H@{A&wWs*=zSS9l#;QHn+@6=q zMp0%=>b)>`^A)DGozu{9eo~y4<2bl=56IVeg<-M*6&kj|_7k-cB7{(JItESH#tu z-LWn3cA)~wjp^Ba?=ZlcvQk<+Xt=B>M=`r6_I7aTI(7|#Hb6>rG4}(trMn_1_FY*{ zARHZMRxmAws9wB8vN~uC?^DT|E}-qnxSd%NJ0m@ zKc6x|glt7KPKxgiwDUUys6Hmeo^TZt_>mpaX9;(WDfM}rQCtBwq6YYk_CLN|K8-`s z-_ zV=0#)Vg;#5d?_pJKO)03f+KSN&hVpxl}slg>Ua5%_^YiKE(2M-BKDk}WNtNube0t5X^tdi z47S>vYAyHO`{<}JGP3#ry?4)Vg9`q@5s<-4hbpwDm2h*lZ?=}5j-cUaTBhHsp(#7% zBCkDWOx1FfW$MJPGVrKy&uo5mVXSXY?l9oM%yFU-vQSIjW~;#ah@1VcPXeSa_J;pi zqcgo^yQy9c&|DoDajn)x!qo_#Sm{U8Xl&1plCQP~Lc)icw7Q36e`^L;hHKm} z5U+oDkK{AU<#s(${qEeM(>hK*xh`FDuJNK5e#NV#NsXp?@TuP9Y&#(Ig zbU$CLxfjihEnd*wOMCt=Sg6d-H6_obzr7xP2Jt^-*xikrwE(c!%&p4%n2cKgfg|9rhOK8qpROfCAb&o z`%U7u2OaEH1!mS?n~b_DH5wu{#Pxbc#}DUL2szI7UEnQ4&09wnBI$DCKUEjf-QiYduU8d^749!PAQoK zFbT|2msms_XgBBbIe`#Iw@Yf-)8|7}>yhcLFEzTxuO0~&OYz1&Y~e6SXR`_xL&Sv2ZgY1v1c`c0*+2bzSj5`b7+VmKgw z_}!@vzUMY0u=|>)T^HXJME?=X(e7I)kUN4ilQ;d?hji4!-{0!?Bv@-c*KY(2Q&Yd3 zsC)hxpXT#FF@(^{)*4P<&aYF5^BUBUsgVWn&GnRgK0vr;ZpkT^#i(Vk zNgQ$d4TRsNm)XfEtv5yE34cZN4sxnZuMBN=&vTA{_;Eq<1(ZM85RjDads5RdAt1=u zmWSkyEMGGa6O#s6A&0_}Yk>3|cxi=&3|xKNAZh}H@2J5oBe~)dYhV_)*YU|o!Q-IU z^WnD^P#@PlS+6xr1}%W4`rzN!87m5j6^m~HT5&Vbe5F<&w$Wo7YTGkbY-ziuf%3X(Z=3i#0$gYiqil`NL--Fs^ z6m!5YR1+kN%j97VxueNLex-h-*zK%x>lIC_1qI^<*Je#?7yiJ-H6W=pb@lo-N+GYZ zHZcHXYmU}b|M=1o!8iT>gv0Y*VdW4Md~~={TMV2J95=5?n;PbK0(0AZL-@E&HwdZ6 z*dW*G`IEyFD!D^pv^vOpzMw6NrCE5+>U|Pm*TAJj!UXq}@%g6QeygFe%O#7}CDY^g)eOSamdW7_fcLiX)X4o&YW*Dop0 z&>!eY%gtnkS@Q2SeuN8zh0?MrLfmXZgHKeWl||#vkHJUzv?%l<6$kQsDMqB3rOW>_FquK z|JEq900V)Ggksc)MdM}d?YrNr5_=xvRsI-DaIonTiT?bFZAOs6B1xnnt=#A@t|~5* zst`>}Q>Zh2e)40;wY!(u%I1(R+kdGg-OIK;2LGVJ=we>mX_B{-?{sdJH=6R|kGg{l znnf%I(FmX|&zO0J0!OZ4uD| z+fNwD)H5?Dzc8(z(!xpkevR26fmEH*O|vVS;!0wPQrP2%ycZcu91HC1vvYGIPRgvn#g6_& zZ2yev;vyF?RL#>761*^UA?U_A335ptWz?z!P4iMogUD2+?HPrXgS?EZ-KCoT@SJxP zz1J9%1 zTlWOwM_%@)!z91GrWd*pWnz3`Mv24at?kEq4gG=XpB~0>y4~r|8zr(S{=fsCspzd& znv%By`Sv@CDJ@@^$#BbZu42c(1ApF@{NBEO&R*>mlGpARs5uVJ;*l7Nk{EjP#xYM> z>@?>TYp{(MprOs$1~iX0sMjBwcHg)0>%XSvx0}F9)4yUJ;qiyt+Xv+ zEVV=x+DieCM#W>>dZq4mzPGXd$;OH>?Rdw^e^Br_eblyJ2%#=?-qF&0+n^euK$_JV<-KjyLAyu2yMAXF5;C9pelqPi_0c4pB$TFW@!#J4mZSoH z(qNdH4n2^6vZFa2L|b3|T8#Zmvi2gK*<9;Sue<24iqca4ot`d!@&Iv^Qpu`T2kOUz z{cy~cVFq^!|HtlgtuKxulcL-XGZruiov>nkXE)V{>`gOpkMvp_4sV!{WNz;18D;0A zd1DTc=3Ey<2K((zNxhn#>K|yv2*w!~<>_l4)i~FunnqB)#nA zjo(3}eAZaY=ZCp7ps#-1fzhCYga=C6+!+`3iBGW7Ed^p0yYOPW?K_Y*3@k?pDbFal z8MiYi(n_*1Vr=;5uh`aXS#|iHW(R9Qb=WvyASs$45}tER<)S_}2qIO+kj19aLP3)b zQjD4dqd!4<{aTmY3X@TamRrR;+;byAW?cxfH4G|;ZsUjuGYpQ!aIKG{l;wWmEUVFf4Zfr=3LI--hS z;Ke(XL#^UFUDHWl=?x6%a#gtD6Blu*RCu|L;%r>ZrB(X*Q>6o6W7i+?Q28Xe}^0#z=9DixeIATD_T1HDZ;+;66%~vdW9hG| z(7}pWl5LD6{gEPss(&@wkh~HI8?9lCO*3oKUn{`KL-&w zp1-=nCyo^vZBEvqNh}SaM3_G^^3k}#hKou78ZGo*B)i+*;0i_J{5QXf!G4V+l?e#> zw^2g$w~(G3vHTT*avUZ8{D{&7F@E6anDJDBLaQ`4kl=*_&X` zL{jM}U?Ifj6ev*DrqSF-AH|SdDk~r4swngTtc|v`KNalEO7#{wtXY(J(XA>n)-21( z(+@6o`GvxLUT(s|mEdJ8=bFF$^Lk8_mPC{=DDHRS3b6grkW61!cv=(GrE#YR>ttao z{`d3v`5SDY1ZA+qLR;?@3K9pL;3|C$sH2^Vm9OwQ8{)Ry^Bp{f6Ul&pw6cO12APmC zQ*yTN{X8zOHtXJ3RK`xceTa%=@CF=?LjW3>W}1>?*fB3rS`g+dKuuR7Ro10s{&-1! zu#~vDbfH51bA{T%Kr(DEl|qRF-}u$__ORUSd6d0+C!|ByP=xECo?#DIuenQ_K%xzo z=zFw>Z?D1VE2+Fjq4B=mwfO=lt+U46atC{C8qVh-SpzWAKj36L9PXIL}zFdWV>3tkggA?O?QA-@`Dnla< zDR(#Qn1L8@P#P-?$`ojIA@LG7$fDs{y^o;)V_+(xwRM<~Qom?2{=mXvTjo{4YO~Ze z+Gp0^0D(dQ_B9A!u?zQhS5Xp)VEd)`6Wq(th;a9lN*0ZpWKDL~B?k%$_Qi#<&2lEy zK-JLvpndz@bF<@VazW!I5>f`zfbK;rSVRw47ZSsNbDrFWk9)9*w}ebY%u%_Jiab!A8B zs#R-(bWx8%dc#?3G?+C?u7ij~wY=JqK6tLQ!FsnaXzIXdQWw$R$feNnM50>jT^=K1>{l=N)djqd8#CnBcd<83ug$Z9=bj6W-B>}Ltj}v zCqL#B1eb=XGkY=PQW{OSVxh;n8YuD7WWWtC_MM$=rysFec|ka>8oGA>C3)m;3;FO4 zVmF{W(sk#_qV%5w(^(!8cH`@bz!R-B=ABQ;oJbpX*){Re(!j$BU)#1Uw2Ciwm@80pW zl!pqT87;ZkFE|W0xSKLphlT&?sJSdmA_9(=F(xOzCguxT?Y822@TxzfqYrn?=ReX_ zp&l+eJ=$2AYd6NO=%AKLb1qkhQUhRxcOM=5{)1VoXU zlJt*naN0iVY+6xQPtuR;-s?Vh$zu@Wq@;FBCAO;Z*$|fOC(6i~DqMriF1->{ngxZ6 zN6KGq_kc&PN~}hFHjZIcR=Q@nNJJGlu^HLhz))QSl8w>XVS;hvPg2`XJ7UqQud)oy zY21FUaF5kL8)Yqs(=H4ytj=KOBh)Ut1G%#|1>gJjI6OvqxRgYjyC0~y9RYJLu`e66 z2$r<=@fO%x>E@QDq*=~G!eb_GTx&(`-Pwo9VwM&0%g198Bow3)s!Ix63i8TMcrad9 zn&sc+Y7;Q8I)bl!&R(_smKr*{U1EhwXQ=2(aQZW`lC*hjoZ%}%bc;C23yvZ&vS}9dCqW-jwjKefArsIAR`NQfC*p_KU5b$ z2&A=~Gg|jq!Y0f7WcR+D3tk8Zo#_{skDKNathVg}l3PGiRf2~1sr4Z)Yxo<^^XLvo-RefgfZZ#FbLLZSmHG<565VvOuA#^9g?@eL=&&#{#sm6L7XYO7Zg` zKbv~txl<-QXUS?fayUIubGla<6_|GQgp@jd!x9$mj|xUj<*@@qG9f!*qEVuGYs({D zW$AjSj(=66f-QJIUsn=X`(EZ8BC{$i&N!D$!7ncVNhjssCtFljEoUSh9nsrt6ynva z3{7NcqByTE-A9!Zs>~W3^D%0Mb-XePywLKvi*8zXxOj)xy2yOLiRAS0MeQ|*+0le< zm^1zVm`(5XR`4%Jsj?s#gqa;7mzu+1z7%VNRMvjVVtVruvgOf;BUc8SOB7ShEi;k@ zeZ&T3nS+2I5lcCG5Yd#Yrc=2OdC~A1W=ah%%xm>pSaj%;=c^Orc4Rkh(Qy`)f|_il zsaSBs$)Ls|)=T0p8m%Xk-JvF@g)f3I&SGsK3F}?*j6*-_U$_|HF7%qNNBnD!ci`t| z2Xc6$xb1*JxmvDYp~R?-iLY72#~*rO=?EBRQ>BI}Qsn!30}6lEzhsZvuUBu@6okBa z$&wd8b46FsBrSrJrvoVCqbrtBSy`Ct8nPMmwxcTO$lrUut=~8K9hMl0R)(ZyKF=Ox z^3L{0NCj!)yShdqp$y-y)SgQEel(bckvluSotQa3oG^#EMemv@MP05Abg^#^OP@8! z@IO1#>H4BnRTJsWsVpVCza6>VO@NG5_D|c+YxsH<5hStbgN?{bZPLPws6$%1Bpr;y zvJ4_BYp9wuh985mNG<=j__K)TK^yuU@mMiJu!JYQ=dSA7P*yg*^L9a%r!{$P?IX+? zZgKo~B8LPz!OQk|IDMLOwO>0z#G2Alnz_7fcW5Gr?QVC6WTSrKiC59(b)x+o6CB3w zC{EIt$H=v0n`KWnD#Xg8L1d?kiy>T@8Tv~$IEC;IzAzWJJQ(5PA;)Wmp|h{y^htd# z<2q-3uu^|Y>FaQZL-UdG`v5MQv$^vIo_+H#m1tHzTa{!`m-R6W$3>oLtCOFMWQG9(n-g2w?{Twk9H?VI+m1SuhPk~1qBoQQh==OgXG zn-o)th6KIOzvSzl?~{$*H_DmI*@U>Xc~$*Re-<^7huBa{2>Q`;vLYVh7eKSpHisQ; z@|A+L)~3oZbtdwKM9QoEvCG1YqAvvMV)dseOBgL2!YR%z^*;WO3*efnaBzu{RNk5( ze(9d5#&)SctS@m_DVq5@tY>T~PW%%{G6E$r%;vTAZ}q`|1$Yts8Q)=b^TPq$-`5fze;SQ%d0v;Zv@5(UoNUOZPK&1kXRQO$m^0jW zH&dSe(BrBu{baO|;9trhdqwc zSYc3iv6F8|F$-^D1xeiF#VaHX52_4JQ`5aVI1Ez#{qKBdyAHF}s5e(9qa%rV=CaIC zT&a53xPe$fqNuDB=EZz`7)N33bi(v2^coQm&9y%J1a3{TH9j|%oL!Yr1#CQkur`&& zh)h`rN1AE~Qk?SV6zKz$MoU}IfRUV;h8Z;~PI*~*HPHoZpArl|ld0%`>E0#LQ1Da- zvbeZ5U6KpZ3I$nf^d|{sHl(6L8T-u?N3(t<5~GJu1ghE6FAQ}#FlljcgD}2<(Ue3C zrGu45Q)Y;k@Ze$BehG|&Wilblr#>{hfThZBFCGj3rkjmfoT@6}A-PnD?bjqPY@`W^!bbLr4 zSv(1cxqS~I+vk#0SG_IH@E(4ub(`g|(OpC^EcvQ>s1^z7MN}+QeDn}5C{7GWpa!h~ zc(zWCi=z?c2WumTP?wOU%rUa28DCcSS3mcV^=z8ZZvExK+;L)QL%0V`^jjkD7?n6q zEC~Cb>h+qN3$gK98#7Pnje%yGcGKasG(1U^ig9TEv8v!M(I_pk5lJZ?1jF4gc9d3E z6TugNEDi92lMxK?H8#R4v!pm>@*hw}K;|6xWBuo_kekbAm}p4fkdeRy4|cBZvHa*N z-*h{dyjY=D68`duii}Ss%+=Q+I_>_H(}Mqjhm}jODA4N4$z}QBjUe8GtzIdh&hQ)O zQ0;@@Tk@AR6ljneGEaL9cPPKMJC$!~ZNd*FR~e+_*SeqVfpGjAqxFWrYEem0>6oZ? zK)n0mptxM$!*FfB1NDd^Bw8EoB_eqAPOvli5s5{mV20voRP_LyJ996b_71Lc(K$-s-c%g@X$kzLKD39uyd;Jj29@ zkpmq~%&akTQvz{H73gt5nv}pXs+9!m)WPGY^>;4z5Xa2h(^S=gy25HJx+9kfeGNv! zMX+Jn?KTv2(E-iQlI{FP8lDaw@KcA!;tjpz0ax10+sIcSzoz~Qo$DZ&$Caq80cmMf zQ<#*8*e#=!1dW9OcVFS&|F$cVZkm7wr%c3S(;>_kS<~Mn_t8fcL6b$qR8!jkk0}1UxWFr-}Vo;04rbA_^B$gtdfoKu?WO;;v?7MK# zp3+*Zm^i?oaz-fttV}pyq*q!k4h_s%M&UMm=(Q1z11O6YRO<86Mg+~8oRHhj7LAt9 z0S_Gzo61Y%>IYGX`7f3vh?327-QpeuxC6R-HV2a4?+*D$26a#V; z4pmO-zIsBMXK+CvBdI-z^r=PkC}sACsyLN;2P)l|%zs(B5r(Bsk3?-Q=`QxbNNsg8 zej79L0J{3f`^(%TM6$`8-G8s#IWKQ1^sJKaH27gGMj1%TMDfB(({b(`L^^EdDHhgU z^!?ACMHn(R+!=%A`~RcrtE1vrnzuuMAi*7i26uN$aCg_>9^5UsLvZ)t?(P=cZE;;B zu(->&xi`7L_d93*n4L3I(_K~lba(aB)rpkr9P^0R&8_`kUU8bE!>Dkgsf-I!iq@@| zP%#U*zRp~`Ji-Mfw6CRU+&iBqt%-#OB=e&R8EV=-6Rxb&K2Y66Rv3WEm>kn;$1DrH zpB7?j2qL;ef^UY|77IwmW}7-gI{0m2--EI0yFuv0vPjQ4>x z3=tIkU$b_09;ZEHo~=~nnhp1;5#IMK-tQJ3pYJo=@Fj!*UHag zsJ&>gP%~(O1t~Jp*y4<-!pcf$(D0+w;&j@DjQb;H$$1>MU##?#aB3#I^S}Q%=H=e1 zcPE1vO)xo;nK)PwI-&xQ%(nmM?*FX)03QEayEvJfz z2907lpFgqK;YA7sIY!9Bh5klMv^J5xe1^k$9rU*ATtiw8#_6Lc4+WK|IfQu-&GqH( z3FmnS5uZ#hMSx%ixxyDX(XaJy!n9h8TosO`wj~Uf{j15$vsfZb%;*iYtmtnbPS?Vf zdSHsOG%wriyohWPv8zTH?9;qnk5|tsj+>8{W&0(u1=Wiagy3)qXq5PCGKWv1nu{T! z+QWsU3eXCq5al~=Z@~Z(P98phHV`L|Q-XYk^hWd`Brul8Q0?=-@$t-b#G`W?u@HeR zl(+R*Tv?AV@J$#q>@wBhVK?EUM^J3$t=&UqdgtncSkr((As} zHpS*jiQsE<{q(RY=*Edzs1(~4iY?9(OU%x#7${;>=^t&FUP<2%YP&>0YGSIpl@P** zR1{+Ok6xFn?aWi6`97H}c{7ox3U7s0IuB)qd=a~VTR48$)5JV474&2dSH`XpVJ~p9 zmRTRDS$AH0*(V;Jt2pB zP7C5h7BW3vcYga8N9RLky1R#T7FnXnsbsRYU1R3cf$ggwNbi>GWz40$Nd021 zt8#|p7DM0$NM!783pwv)VclP|(4w!2zqZj8H&7v< zSQ37DbNa>WY#DWUO4#danXVSXQ z*N1%LNhc_2+3W&a|Cx9TT@a}JdPSPGmbgD7?-f|aD42?c9gh>i4yPwo^D+~zB_2Vdlt@NOP3Z{O5P>OaL($6Y*!LGl@aOMtDJOChC}awT zjcZkAnU}34Ht(s3=BW5u2^WgCX7t>g&{vyLE7M>O??gLq8C_={Vka-Ip{etPh$i{# zS;<*^P zJiYeUDL$9>URxorF$7ki9qo;EKk1?~I}wWBG!BNx{vz;sX~4TJSE3w~fgm0GbF^)O z0JlLU?rpEm^9aYgY3$C?L9eV*dn#ld9nn1iZp$9y{SZu%<9N1jtY``U>h-fPkjRH6 z-M6DK493R=Td;+8(nSA(2gnv#?Yx6W=UomRGASu3yjA-Qb`hAiQ@Ni~p^L$9F z{|fNj+_X|2Vpzlr8k~h2Xby>B)E#65bp>?2blBzqvquK7GlwmPCW}Oe`lG2ib;ZFp zKv7NyA4axLEag}8-BKbJp>oU07rYj=HXlm=VTOBP;u;m`dx!T63nkGiwK0iDsLyY*)T@M!^?>Ik z>Vc^>u^a{GUPSU1;D#1}vT@5KWl*fzcH>PH6DC)@2tGs^ql_EjND$}i|LeZem?mE%!1Gkg)>x@>AW(dGH zf>xC_@W+wg{49LKhLb{pz`=Uv zLGEhQ0>dB&`_LYtz>!_^69qO?q*Yhd-_9uHUkv6PY-9S#P)D(%<_im7omdz*3(B{W zmSf^yU_=QRHyHJQ!WTB~3H(0&jh=OvewRO+Cq&SEB1cU9GF$)to$JOK3h?zA6KVw} zG((76IDsnx8zm6$GA&y%WT2?0ibW&zv!`2Q@6Q|A$j#iE=9*A*Ni<=hPeunum^ek} zeQ!3ZqE_!ee*;QJ4AnEFyR|`J`}xmt z@LKXC5P2#wz$WH7fzf*pg3#kZ0;|IWVtoN3gDBdDlvQtmCT+hn3{=$)KZ&z#85Y|~ zVl9lPTw?g7+5XD-8n*Eof}%_xPc)%SSQ7UY0S9oxwRO@px(s?17TQq6!OK-BLHQuM zsjl&S1}13UvGTQ8axM?hHt%jDpKqZ9Vgn{CxJ0@d&A;Jqt~u=e16aKd1!n@i||%QIqa5YwJv>vs|p*JRm2lmU}l3 zn5?pVvI@;PbZxkmq)>}PW2In<2-3GdAPbDuS4)_s80_aQv$deA3AO|gtTeL5fp%Jk zvP?|}m`{G<-tEzZA;PhYJ8>qtUz7|r*DbS<~-*oUWcrssqvLeEJ`_COOw?^C~i_h#bDrJCPyZ` zB@mWlU;pfoeFVoVP?endUQ#7Jh7-xJ3WuJ2>}1#h5NB!!&p5W(7DyFtrF=ek`Hc_R zzZo3c^^RycpDJNXL@g|~d3cTBU+7q|W?c3Y&`6&A9B6csh*ddD}3hhJ_K zXH(-H@1TbU{qyS3Co)T5F;QIVtUGst9zi>mAz23FN${+49f7W$d*;1csD_i2u<0oa zxGc@5sFknh{N>9gDW0o_g`7o9^H4>|8E?wiMN~yWHJ1ujMB7Q8gnRdE)N)=c+6VNi zDUKsbcx9O7VAf+@5K~vM{?ly*-<^!0t~3^FmsJ9h&pq#Ii$~}JuE6Bl3#>M+W;CA< z34K_!z!N3$^y1XpD!y!1><#Wi>cz|Hx`~4Ao!0t;sG+oMyu*Psc zuzYi_kzmzzg@5&R?A=9_bn~wcTZ7JM^P{Zcj9*Bno%akr_e)wX=@uE@^V(dFinQnE za6p(4y(e)CeO*xrx+EQs9Mx{OBF`qd!B1vJDi>A@3{Mw*#e_umvSbi zgTfZFH5$7Q$F_MTC9zy`NLp{sG3$}-QP3g%>;U8Eh@voX|4%BqIYi7E|sr0h}LoheUyTiSgQ~8WT^;%VQOFI z7VhJ-UN%`-+&rNyLvAscG%o+aMv5681E*q%Jd$)ZV|FrT1odLCz) zkzJUFC4LQm;!nI0&Pe|60KB{h=5naX;>#T!F^0wpS)7d=m*1j4aigJ6aa5$=1f#^E zL3#$Cr`7Gc-k^I5Xhh6IL{;csIT@c@2l21Cvg*vpq;qCwm{DOP9u{KEPm{QS@PBA! zhnFXiOL}Q}cpR9^Y7r4xr24@NsN{9u`zj3y9nh?k!*tPl?3=4s_I zw~~rY2wA>SB4SwSjnq6TmP%Zrs^yLWCxJL1s7fI5huA@JVN4wyP~WHoWKZIiPX+^%pgQbOBlb5cLis%SFQVA8W_$2m(KauyL~I z$G`0(h1Nl7KSd)BDo{c^I9%#~?L6|#IKR!_k8DIaasRd65mL5stLWibq)d}IgepSd zMy+GdsRv5Et7Cj?)=mCsm?KFXPkO%&bZf2N5B3OM{Xkdt36~1u{$cW`kD#Zodg-gK zbJu38FR=-z3wd@L*^AAWPakTu#;uFGxdYj!mfcplROX} z+*!sS+#y3xC{-j)bCis85ey}_2yZr}CH#x+Ple4#lwZC8 zbCB5>@-WmE#M;~_WZ?`%s~(t^*r7Y7MWeFh=4(4p`mNtj($BLp(8{C>}xjb-yb36*dut)NX_ z4yM{*bb_c7+T13y+mm~v`7xr>Sv*6Cl2E5R+Nj;K^jBsK-ohv}RFE15-~K8&DZmc? zdFabLuc7^3M(Tu9@Wq7WXbQI;D=UEuBG;*%#RABnf0#DZi^bM`Xc>%(Om@l`AC~YQZQDAZbY*kJ^Gw98^0Yg zpYW@)l1@|E%unUHhVwn~Yjv?ZseY%FijQc(mCHMw6(XJmB=q|BNVpbgX(KYQ!{|cR zZ;W#H{lfi3h}Fmwyz7ru`KY1LrE|ggn9@tn=f3BwwLei?&5G(y`{eWKPGT}|#sw^7 z%uyrdU5|R_NSD{83r8}-=Ml25X?;f@oDmqfN7y|p#)Ccz!mMibHBf$h_RRo0yG6FjwOnDCpylMRcS6d0Xl z{3SAvJXhWxGJt_Lq##>dq06^~+FD1ZDAJ%s?%}S`V-T-3&_E@{H24Lr4rClvm$Exw z`F?>+MDh6{j36D}dI!g`8)n=v&v-SP-wg45eF*XTo^$FoXrXJj+B& z3{=obMg`8lt{muJ^tlO^$VBEtEiqzK z9439Qq}Z9t=@@&USD4~5MftQ2=8)$hfU;{@(uEpdZIrwlLSf3C#V2sDTFmT^wlnm*E) za>D8@bZM=HpeTh#2D+=jlV_-L5q!6@q)eVBD|kzK&jLr7RZI4+*P7J^(L!iakv>wX zxW8X4-p0mHDK>n$Et-XRF{x))yyQZQe2`#4!zrbpp~6q5SYm`+EP~vyOmQ%$m(J!y zQ>pVK^&akscms_L&5siH94)__%6DGa$_!XPu}RC}EkH-zM1b*|7ku!HJ>TmogZ!6X zQ=Cmf;9!!Nl0k4?m5u}p%g7*!LKUj5-fxzjp{j&c9s<+c z<;p)C=-KvX+zNXSBx0qkna%OiSTyosXQ^lWC>WwxbV5JVCS;ocuGo09@5u%4>;;ML zM~2K-I-}ads4)$dWGkHHvWFFisDoWkOusY-!Ut%*nj%cRH@E&;Ktixt3LPv)gX7pZ zegBsW(9NB_-}qf>d3q*+ynw*I<)=ia|0Uamza0C_aw<5!8y~7vBSFp575iM|2tj|s zEz=^Ct3%>K*jY8LwHToS_uI~q4mk0f*7TH7w<~fMOcXh0rkse%Wopw~@OjQ!vh4ty zjuBIQQIU~6K6)5(LrW;doAKU*55eQibZfk0#oI|_vfWmXl!fU}IO-)h+1A3J zSXv|4k70(@F~?^;4o9E^Kg(?F6F|{N{WyAzW_b- ztLwxO1P(p8lxq((UNcs=X?=X1(tTQ85%p}0y}9`&wBf>W6{WyVSOJc!a+sXoWEnWU zQ$mC)$ZS8`Mv0vOCuu@o_9GRZ=y#jEx}x-b1$1@N44>zY5xp|ybxya^RP?8ik&uw- z>hvML`k>2OGv+EIvbpY2S--#Q-tbPafb?Es3Ub}tRV%-gD8e93C)^AEaB8-e1s?{N z;yt3N6H3idgv!yY4lvn&D`TeBR9zn_RHWSo`3|+q_k&8aWuf#BP59 z)^P@TUCKgpVwLxycs)b*z~)26RWhlB?9SM2d$#mGPwM}szmsNVV2_q zOdXf=;V~=3P#QS5kVdq=ZePGEOlVe+Bv#?TBdqeP4Jq6y%)yQh2K@uNT z9B%OQcPZ3`#(Z)D1Ury(*O%ssWOqk17OQ=yLiyvuvN~vOY9+d%2I#q&=l9_7w$hC% zNHEZjZBMH&8;UUzMVTQI4>HWe8Zqas3_iMx6O+d);%eJ;&6BrpKeu#|vimRXrxSun z$EPcBW)D@j?bg@*`{<_gkmLypzyq7${kpscrx8a9N}g1hAy?+?#&g$wUAzOI`;POf z-3sJb+OysSZ1ye;IP~EhHRO2S7Gv_&Y77vfW)T0Dv|yQzzaXee=auZ4Qdh+F%c1AC zo}P6}WKaqGp5pV!M6Z_0(kB$qc9^#9X0+^hdGjwzxzyvjy%JRf?01rB$;@uYP4@$= zqDgvoS^0hN25Lrl3!B zrnpP*pI;IQitX5&IUEK_OR5`Q2xF$1X8#0vdoaIV2l<)}bu+2LNYTm|!lik0c!304 z+Ug_AHeB&_D`Q}Mo(KrnS};zO^?g0QQ0_zyjP6h6AG;r5yI$n!_3mYRp? zK17~vcgFVdgfZ<0{utf(42m1NpGM9$v?~sjgI=N{Nm&rtOKoeuuT+H+&z@vAqwf`X zl6^TeL!Mgm;+~E1k3F$knsa?i-R@7e9=rq3=Fv^24pQ`z;(Rw=x5i3GoxHZ<|gtUC+4*wR* zyAe#X<=1|zqhb1-mb|282`s%PACnou8DGYEMoSRLx#rAOBAAxsDT*o`FiTzJa!?UFOU+PBjN^ zt33T23jHQ59J#;Vqu%9{J5dB4y+MB67Fe($%*!>yl9tyPt1tXkZ2Xg>M_OLsC;f*; zW|cGUi#c=+uKdJq&2nj0P{Ml+hlPT`$l9ZI?dH>=jlGpJ#3J2GxR-;D(duV+iBZCt zKT9F~RUu{2JV48NM_NLS9jXC=5v(QUk*T;!rs@|94#dQ>G(gK$05)qC^Bd*DoYs^L zi=|E<)=GZi%PWh(GMY_omnyB{6J&v&BLPuqZ6wu-oOU+qs@`rpnI*m`Zhl-TZ|&td zqG=vm4x2(D1E)~G3+r_+y>2s*PZ;g`(?{eaxy?!700I*A(|2{1Q)enZn-aAV6_pPW zrp{<84;oD_*oT@OYz;*g(`|=U#s{YsgN(Oz79YlRnL-Fb$qjiD6Nb9sm12FH6Fxe^ z{?jD6W;Gfk_o%_aA=Kii_ge-JkKz&tchs^5ZYksGqt>7gxe2uKM8mT)n+B3w%0C1x zx5{xX#9XZN^H`0|CO#7IOXgjD7ETr3p%!MBt4`(c&|(i@tQblsoB=Gzn5qYo<|@D+ zWKIXFpY9acglk^zPmK#FME1I?zI(htz^2JT6kg$AZZ+Wj>`9B5JGohDb7iwS_@zcf zgN}tq>tiipZYhh>^e$k<91h-ElUK-cnXQnWs$BLHH;tl%d|e(Jn@CRp3$;+9LNqHK z&!xkQQ;&|1%Z^kQ;Rq`i{&f3`)4KhDCY|LiRTBL=NqJkj>H~r4>=8Dujb%Y8fP3NA zGJi`dpkk`a`@NOklB6{Ic)Jl+E`Ja^(xf^D%x$&B^E(%Wcl89`81L)f#c#sG>ST>i zRv2BU$y%?mN-)`=7RlP~AEe4QQ+;;VN;3VuvV$h_YW6dMjv1Pjit3Er`0asZ@G>IG z0N$(uxr}R#b?~+(Z~CR67a}(O*FHp>?Jdu&UhelLgwbP_dk-+QUVGs?xNCPPP3zu* z`SiA==%C$+HX_pofz+_V5o?&sZBBZT)r)LCP`ad;2S({YDu1y?FJkvD66K z@)n?gT8NEP1806XW}*HWMeFOG*b6Bh1>a6gs*Mza2jSLdflPSmf}?4`^g!g*33%th zES=t+oSdK;(n_{xf*HqNNhAHv-8#$b&8|mMwmlv&W4*sp-zyr}p{bLl)GVbyo1?<+ zX7C1(!xzJpDW(~6;pNXHN|8&45ZHc8EcU`fm)}n$p;kJ{(>}=?M9c{nY>i% z9r%%z%l*OSYpW}znfHMT&$!Fi`;m%Yu>0tM02|5tDV$P@oQ9HE9d~qE^%#eJP-f4s zT>Z0g>?Xw{9Vx9Mb1R(P2Ty(DffCBP?fQ3(8)v}s5&WJu;Sf>ucMycZmIHAoy1m1? zC%^Cr4Q`|1>yqeAd|Z3;U2Tmf;>hXJS<|s$vJIO7J*fPIuB#2f^Uv7!*SHa|+0QUp zc#`&CIYQ)Ptr>#C5RARNY^Fbzl1LxGTLY@IDojbb9)nz`(<^IlCams%C4+Wq2E=Qw zX1EWYh$ph|4)Pkpbtaj;&RB=$%4{I+(SE$O#uuI%K1}Y4pJjC2wCo$RA3*uRUcfiT ze@M5V<%V@F_5Qm^zgXrEL4D1Ep2o)&wab{-fq$HtXciBSVbzl@laJx;FeFW_1@>}{SkHx{~ja~ z_Skmqy|~}TfTlYByB`fYiuLA%PsrVs#1YTKU-z`ZolwU~1?9M773q4tYx8-Lez~6{+~SQ&>opHAD9RQa{cbco0Ib>E__}kP z{fO|ohR@RK$T_6<(k3HMZJpb_5Y<-vATYv%pEPs!hSvp02Pel)L%Gm)h(V?^{02NQ zm{~%vJp{8so;V42I`svl3$E?6ybc5y+=dD=TAR}?Nd`(leA%8|&h)R3sUOVY2@2XN zuyH=Js%1QyOv027ga)6Ia_x+f-n~?8>?y~r$rM&+ZY7cHxB+6>mRT?}NjokLDxZ5J zp47kKtnv4T(=rx`FFw!}c>#DlQwwajX4QQ&f^cJ6z&RsKuqQSPeV^Vo@t@Isa6#Vc zsE!tw)9r!A&K%2#GkLHd)$H6dTYZrC9mp3nrvTKX?(eBr|7c3Y@V4Hl&U{)QiYBd$ ztUW1MOHqNp;B~vY(QZDz5u4$PbI4k)DY6@DSBvw419~0^aM+I;-4Q( zf{38*vIYTxWOCJw3%9&5dYe0*gj)0P*yM#+67&L@m(h8igF09fpaOnnn*q?}gH`HTxQK;W_4eGsuUSSa%@856#+RCSCb^31UDW*Jg+F1|ZAz zb&1a%@ZACTI_x$alT}0?%|WKq%#@CPidSru2#I*yM;V;)>7C*8>5sS-G+ID9)AK7+ zFDrXJaPZ})qS<)9femue)u)CZXHV)NnFi_NL4nMO$=y;J?8&ON-YhSnhoxowIwt|y zX;{Tud!6$M1V=R+(_&+ZDmU~|`6F@_q}lpVtC!-$EC;{-MXGqio(o5}q2BK~zM-Yc zcguPVUPI|{Mb4;E7>a%|VI(U68EqgwgU4d5F>Cl1fAE4%=mH@Rbv|}S;^fP)^{K}f z@FF5@M;+$v^N?7AzCPpqg=m#jzD#2H1dHncd3)2jyIR+rJh{e5o=HUNTB;~(uQ~HT z?QBe56Th%Qv(Q82K!%4QB|tNy6f@8AK(Ak0(2JeF>@jSZse?bFHciJ9S)6dO8%`Hd zB{&=^N|w!d=0GaTVF!Q0>v+XHwIk^Sl6;PtmdoJ&qX!;7X#vCf^$^I^qf!mH2+n#0 zvTuLg5uajG_*i!UwVv^HKM2v2O60r6q3KqQICB?kj#9YQtPb)uRJbfvvf<6wojfFo zuxPGQv=%LoIm?Z0?E*{aW*Llm`Cjt`C2$L9=8)^UTlF|+h^WJ|q95czT4fLegHMW3 zMulxI(?o^#(Gcx~g%YC0TmFW$ooZ-B;3rRk7pNGjgc&Mq*3}JheGdwnEBgrvXkBLV zrH4kW4qc`;0ZX>VM2v>$K@~Ko6?{1XUxv}!XkTt&d~z=Qy=i*BPBSE;hbI_|H4jF8 z@NO8E8Bavk?awZSZ5m!9bkTZx*{TZ2P?GpYBPJOeKYtmiGr2CWBbSndA!12mn5Fuv zz{o$lvC0;8Bw8@!6}K;*lBw8CPAs|AkL!+bU&fT&rY4aw;~0gOMei?*JFd4E7(Fhg zP*K$6DD!8y^dM|IV3uJ_KwpjNih#Vt8x;D@gOIejk9OsB(BczH4-}N?wY5C3?awpv zr?sLoHD$JOj11ARzq7A2+c<|`3S5NHjUd@QzCOQilkJHJz=mN+JAEVRGyq?c8IIvE@Q)9A&C~3 zXLNoDw68BxxaQZakPY2|vO>_1UE)bsp2+6C@u`-SF+`Ye4%@@dl2Hmf@(iVBp|8`l zkN!x5X`iZQ%E%woGW1J&X@aajtfylnZ3*sbq=Ca{zUiBXCKvx1i(bJ+g)CZzqlVQn zXjZ+80E`NTag+*n@F$OMYKu20L_mSO34fsIFE0zqdt*!TJbh1;3iguT%bWzFk4jj) z69MlFEMfH28XUn>{aux{Z_Dg&N-(l8Do~W^zMpnEN38gAqV82o3RzphoWWO5L_4cy zAxWye!Vt9|5QRAfTY%X{Z5u2RPn93<1SByQg){q3o>%8U-OGVwjYjhxna*5h#e;<7 zEd*ZoNAmW-NAe=&IRxPFZ~5R28C1_)0a<^~lU z%?}2kI6T|NQJGq2ZmoCrYQ=H+EW=elc((=yzS9c+y8Wu-NZ%JGz7v`6wgHo5_-^!| z+jG2gV>ytkk*Y#rVoQRFf*2ORukDek54yC5#Kb7lUgLIz)t(}}ruF72(>ce|Z!WdN zRTnwZNE*d5SzG&qrqe`pL%dQ_F&X(Lq+-~^~2Eh!`Qu36NzmG8m@ zHm`kekD5xRvig?rhjiSaPsEXxY6)9z2u+=+^E6nqQcEW^S2ct^jBAs0d6jg|i--cO zqg7N$2yd@%pC_6Z@8PRYbE>jEO#u8kCrDi9Ox&G`1*Bl^#`%iVRfyy^oG%OwbeJTw z<5qd!(*bxYm{4`jLQN$zL(Jpy#fDz(7|@yvH~oW!1b{m-Ky#OsaE@)*m6P~2wI}wZ zIqDJf=+&>9Mo!(&fjfG|-ON{__n!`uSaV86XT^XcNvA-kjy-=Xk< z&*V?MI1gU(eRW?oDL=``Km~Af5|Sa7;K_hDw>-@uPk(1L$Zn-#5M~&Yw2IYv70Ya2@0I->EGL*RsLKAekcANME>WW|AC+JvHZUe z1TGB`NSOdinh1t%f8Eea(bmV2(f<2jiqIU_Eedq8EpI8m?MT%5eF*D8*@Gauhwhs_ zd`S${k{>TZzt=3lLi>#;vagMIZwj*(k@F|~1{JAQB@35w4h#rTohK9@%|5D^^3w^z z!oIEY`S7P`%#z%L4pDu%gQ<2Z&sBX+-#7zK{nH+y8!zgMrpVkoc+FuqV>i$g?QwA)vpJ5zaWC>A?i+-!7(CuQg( z7l9WR$r~1n_B>D$rN{t%>7Trs7W_w8UQ>+VbW=MsNx#Sa)k#V@!aUVm)k(3P5f1oC zN0rj343Bg83vE|LCOQ9uGRj-P&q7C(Kx#hdL4du!z7=9+@69zMS{a)SIPnO$1uumE zEfT3L%EKnz!jk<$kG)12T)@Xk{`P?2N*9)_G?q~;Gg}JFZJVAtJj@;^H zuzRdyBP(BbuwAP}o!RoYVQEDp{#YtL(h=!w*fjlTfl$gP6j?)2hS?$Tp&4Cn0@-uE zyzKbvr7ZyQe8uQwK6@ix0!j#o9#Y$f? z#VfhRxduK?Z_&Rk=jyMOL$X2`#vhx zMwY~!TltV^;)A+YE=3Bd>N9kBey9X_jtTC+ zgjW3tI(flF{$Mae|8_v<)BfvqILpqVLt(hFGEuv{pU$-@)k9#x$1 z0qtL357iIL^pHQSey3Q#=Fw}Q0+HlUBaw^Y2b>S7`rEEqltL1sG9W7u@&ia!PUc2L zx^9S%-W1?d1nW5R(j#iN+rN_pcE9%$S{$-@ebKFa-jceClyfQwkDXTiS9kqnI~jc? z-wOAUwD4w{$$Cl_V+`P>G2H8S8^M&DJ6=NE$f1h`6}!7|OzP^vFO(^(nUF<%c-mU# zh^#1-ISIe0{{TcvxjlvzIulj_#@7scB@3p7A|ovrTwlwEpIhEMTC#k#Wq|jIDx@Dx z6tza>c>h#UQf|@mKqkkMp^{^TjYgf>Wu#%y0P!W{t2Ks-;cvnpxR8dmjz-)-h1zM1 z$i1#}@H)c3@4~|6{kiyujr^bKec6?$)&Ia3*gp1>Gc8)5sl)RBeo;PZFGF}(3{8X* z@CDtb&g1UN{~PfXm)RcwUjPH|kQa+`JWld(ai;Qj3e7UyaSX8`0uOGjkWVNU48h3_ z6z~ZQxKtrF(&NnD{P}Pfy$byY>Y()Q-y^0Xw0Ew^N~ynJqz|Qmmc-A^G-%hX2a~7! z;_^HftaYZ|?$J!dr%C-S)QDyrml$pY9ys3wWW9?BMW4UPd-L~&Y7`F*FpAJzMQ2{( z1#D73tonv`OyZ%W(TB2KA=KQL{1jn@>LdR{kyNcS8LC7vtMi!;ph$VqP3`bKm&&I* z)jPx&jrBBmB6L~zBCePk}| z6m!x+#VR0?V;SSOB&_I+BYptL>R4%8kz`K9A}SZdMVfkKg$z+m3fKwW^4FrS%>+uJ z8T0+=IGDNJjaj&B4c-h!vaWE&iA;Yd+}#JQ_eTss;n2F1eZIIv9 z%YfW-zhjuZL>BnTsQy)~fg^7lr^s04udo&_pxp>5_`8xpTvkKuG^KWAVHD|j+l@r4 zy}@~@N+%9WYV8Z~$OI3G4GZR?-fXJ>kVSv{4jRnN!>f$Bzm4}J)``1JgFUx*bNZt~ zBdYVa8$Lez`M;Q_Od8IEk1m@7QmpqvmZvCeh2lrLBjxH7A`6bDb zS0ASB{(4^j2lW5?&;M~qvd}*O_rLw8Oeb;aOGp*tUx$(Wk#oF-oChCbQZM_L3&6fb z*K!MrVovGbPWbT$-THS66G}nvd0xm`T^EzUlYHfJ{--|7&k!&#p1i+DuIP*RCARk5nRWX+vVV)odmSFmSi<@FhqC#!Q9P~s?6?N0@Eu2{; ziT*Arw%6%pljs$D?}cP!P&W0WV2Fu`$~fNmDsbP;)CdVbn`c#2GA%s#03+XE~YniyZvlkCWCx8|UF;yjqrf{EdF(Mh?a%B)DFT&9&Hb`LxT(HSe?EkHaGvRy#y-r3S^90k;Cu-pW4T>zo z$0q#sJn1eWAN&<0K0HCe8yHHryVJ)d?ke|KvZt*Z<-kc;~?X;bIqFNx~m6 z0|%Zrs>u#B%I2x#o`wH*@L7NlP84a8-Lf6tB1pC<4X57$xNHVAqBMJ3k%_nE|4K4+ zaKr+3mz;x0!`}k=ln`TJ zjSM`6oV-16czcWkno~6Ex%~K>Wh#)WRRQJ(l2UQuXQ`<~xFf*1WXxJ6zO_P_>aTU2 zFvwaA`+yVFEk5e=2iZd<#i*gl5~QFLq7<_T7q4_edT;4p1wCyEZM2mZ-F*y~%(70s zg`rLe@4Q5eU~dfu+H{&KuQL46)tH*3H226cLY_CbBEErhqL9g{DE(a+BV zj2~S@`1F9huaB?6L-k{H8*w5|i%QB=kdk;i2|RP=re}oW0Yd^O7AP17H~|f{cCo~; z{{Q^c4Qb%rW{eS_rqTjr$5nCAQ;Z3+E^BSM?5%+KqjRek{-Dghd%K@TkPyOcO@kg) zNGQ`@aOJOEhPM%4-BrA&V?`k-P3>$d z2Sq8Obz1rNIe+4?|K9okuXSF+ipx33{@B5vSZ7A$N=UC#HE!rXVN``Op>uFDkyrM~ z89Z8=I~_xwjEVC9svac}Jyw+_XI19vlguld>q|d-JMX?#!wXWWnF<-P`9bfizeE#_OHQrWlnwGRL1!qyy? zvQS5MEsC&T#sfVC9&b~$Fw5j7q$9BTbCD7*Qyh!g0c>T7!royVSbbR8cbkvyAn{Y7 zDpy6#VD-4Lzv{L#K@}qYQo;#fqe12J?H+J?t66BVFmWFJdKcpLHD&UGUQ*q@vq1gm?Esj^tDK%&%*WvN;l0O2-}izwZ;0L$y1iyp^Kvg&1N_dRukeXSsheyiDG$R|I``Zz zkKR+$6^!^PNDBX_{2919J|I=gw4|^;M3dAX7lHcxT}0)-YZNk6%)gSs*Bwm86*_-Q z2PG-Os0;p7O-{m({6CIQtaDzhndO+UDuFiLx7oL)j!zRWuU(-~g5!UyWcJ^ed(TCM zN|2hJrBmC2bBZ}iahAoeHYM9wu)Kd31Sh`5#1FUxa_bZ1(j=kym*>#_X&k+n;X+ms z%xQL^-XZ}o`HqB7Bf^mmU~5PN;65AB_dh$5xvfIPD;9JEx%D#l$py~>c2(?e1)v&e zC?sfT{*#jAPXkS2G$jb*me3#?+@g;bUZ`Ym9aXtU`Ffk3SA#YFuZbl(TtgU2@Gq8BHCd0(V6_8Q<6xe7Vs#tn7m4mpo(npQ4Jv z`sI8CWGXwQv;TDT2M8i6yUol^S$PNf-saoxk^*NnJITWiKG)8WCMF131S}kVx-9yu zWfX?j@`S#sw1{4F$L;WK@GMeQyiK^rvt4{0`L9v80`0r;DZhQ(WSmY)N_MDM&Bh`B zYf9MOSVyA@m6{O{dAC&9`@gsOJkCGOd%ndtSH2(J_TY7xi+8`V zLH$2~XU9hcExCW#K-cvou1`_rJnZvm#xU$^MeXy~mjcCYS<--hLm4HP&1E!vFGrL* zaUlM6R7K4*wZG12AjdTlUOChTU#`R?M_?{5fRph}|aE5;ytp+?{{xtWyF7+q2`HN=smuBa3?0Go@*z zJWokW$&)0)1{K82L}(LR@=fr|#}W)T;92?ks;wt^YUwu7>NhE90`Sb?KS+LGfbpFb z?`!Vamn*+@bVMp^44i0r@OH>M0WBMCilVsC)3^rtqCKG`IXl3Yu^u392nwu7xxVB7 zW9zKrnvS}FuYiOgsB{ep>F(G7Q9!yu8l<~xj1mx~hIEeZ5^3o!VRXX;q(=AXchCFz zJkR^j`}ekcf4{qP&$;J&;=W+E?9Ioj5L;Jj`|l&+LIq(!pBxecTEQf33fhm8%y8d_ z7=pvLZ1X_(tw@t|5e>{KyXKcVd)geYA_4}q)+mT@2$=BxCk~PFx%HACUK?2Ij&ay0 z(KmJ+c^_sp{a+z-?yJBUd)GEms8gN?RX14m&rHGk-%Ak3MV2v8f>6G;Z{Q@AH$8W& zJRM1DMCi>)l-!ZR@tzd_DcxPuOWaT5#j0-BZSOwTx_`I$?>`pC@gvxS(k|USwWc9h zhD{9^J#;_B{$s;fC`DRyy3QaxhF}KyclgR;LET1G_= zbY4qZw<(RX%BY`#d|Bny$zN+1o=-k0y9(SjJn#NBFfzcMopM_HQyrgd+mn20_|F75 zmmxgZ^f$9kRdRigUvnz>PNpg_4XK|N>w0o-OQu)XUIIRcXa`-Vb5{X6AnR{IBik!# z(ABm~-D$0_q)C+s>>$INB0Md9oI*W0@}V>bExh5LnpyYV&00M zN&ChaSe!l{`VvpPPfR|G>|d-0Zr+sFERZ*ywb8MZt`62#wUEv^yCdYXyIe7J6Kn{p zF|fw%-E>xiN3^yYwen-q;8KLKf?imK>bWJHXV0}NEQJD|Bu-LTY=um37Ia}ozQpLC z509i6{AFq0p;hl$;UiYHtfuo!$4JZ15jPfi6;=vx;xjlXvpH#10zauFL~q*6Wqh8%f|KXq#_kNsjf=oG_ccxWVMLZA0xw{n0_Ip6N*u^7d{qJgMW;B$+E z?$)!mizZDqJ1Gi>lqxngqC9!0mLm_)X26_v7wU47_?Y`GkJOSLbdsX2ge7ZFzj9#p z$JW$syB0__MLAGkO*Q={>jF#d(0gvfNc@&leYVl~yyUc94LW+}dEL7B2NUX1@bC?6 zq>8*hykhaFwNXowtWAJ9Nrp0V?45+1a~e;*JKxtt=w4KyqDSrz!I!5hu@6Sr+aE)h zdPI2C;eSM4$n9BNjUKqYF*qJ=TbE|tke(MH+}{%5UNTl|8W(ka+P-@giMcEL4KpHo zihL_0%1zp0U$wot7SZG+8`;fiZ{{N8yxDT=3kg_Xbf=krrQJE$HjcK9&!r}B!ahG5ICn!=o_-IujA_T zGr*X9NxG=1vbcpTMnIPCa-mQ4^@-}8ey%#?1U#V~j8F9ic5%dLChHc<&rp#(O=0Oh zNd;m-f)(4|SL?p>Qy1q2yh#05MWUYD(h&P1nElIuD{r@hEN;4en{2+xQ}QPRqJa2+ zRkm?U*jcKW@1-d}4lwp7U{yZ{jjBSCo(897Fk4wTleJ(P$+LX4 zA&fzOfthE2&p7;PSlBq*AGZF^gWFv28$O7_epL9v{u$&=oItF6L32<3PmNI3#t^)x zh4fhjlxmY{Fz;gdzMWqQdD8-w(HaTP)ghOFM3$`HUIiI-s!E2%6#%J|I(wWA@w#uc z*59_g*&WSlZFTybIvXGbZ`uKcQGVlW`rZ(+Tn~i{2|ao`!Wet)bMSSh8<5Eh0A+}z z@)Y+{)<;a9#EB~4DZctrxMG~2rz5t_U^7n_m*V_6pRCPwDw83q!_kv-*J|-OK{cBP%U1*hB7bJm%@p3y1f878t7o_0FJD- z(?qErU+#E9A{Z?kxMKOGu$*t~wBQ)3vR0`f-(FD#d{B{M@yeUYLYSvA5U`QRjxGY3 z&eMdR_J&ICPXF`DGAS18kXlGJ2Qu%-sMUg`ycM8`Dx23tsRd&1-r**zy2RMdqJ}96 zvC(_3a51+g2mM)^rT&6+*(6e^=J#?WJKMQ$C2rNY7Bug)*|QL4=VBW=R%!?OTEQ9B z4CAgJBm*0jvXFq;>&aHYq{fmd2@}C5(>C9pgG$oi(O>iPqC@jE_r^=~G}@2ThJ5RC zid9>tI>#Wj=aR-Z)-6h-hwB+dUEs!ZO47ke9mKw7eK=rSYh43)HENJy5^77dud}| z$Y0X>eyWSf+r-P>(5FMrZf`g)Qf1WI7INDyXvRMzF=xp+Z3)-`nN)pZF-O|*8Yc7R zO31;9rm>g;h)g6U@j!wf&8Le|^K8!)(VxhSmi`c0h`@KW@^IYBI9R1hGKL70dGE|P z;Dd_>?CYu~?G9e!EUUViIc#Mp&go0cWL{gtVkr-HGv5Dt`5aM^+)mkWYmHmz!mbkw zD2m2zxwg)=84~f2*%akX`%8+|h|C~=i31t7oe^s_!29OnLNJ znRDk=0k5l3?SL|>v$>;|tcY@v<2;wP7hc?({TEc%qJ1A!#IwB0o=1mI6j|`A9#cWa zr>Tv9&#?PKC-D|!^72)(oR3JDJy?k;EK+7u5Nv;qOe^mWvl1jSrLB3+ih}GXRE86L{?}# zQ^x9v6G&r{ea}pRtOR7SvS0RS;O%|^)D{c~JQv&WjTXrHW?MIFtH+2wFHW+=Y^1^L z>s6|!WW=D~f!qB(*P$Q6b#1cBu4Knm&@7U;5 zoGrl`7v`NGOjVxzwOukk70b|xNgV$`mNxm4WKsCjUY3lN*s$+cdJ7=zB|#2DdZmy7 zy335T_$pJ31&wTH)%4=|qDtbK?cVW8+>j%g+=rG%)wfrL`cC`+0@qKtUk%!N42to_ zUfp43_ZEzif{Zn?oEv!+EHDF7coimp<(k&E*1h?`~RkrC`6m92D#PzoDck1k(&wf_~DL`N+t{-Eu z1!uq!_1>7711)^c{LCJ)F9n6mrVgsi13KqBbxn3o{^Q10OmO-?3#A)9$Lf@O0d51Z z`-H=QZ0A@pldmc-sa{y9Gsh9Y1-`S0k{*w#J9$R-r=HnnY{+41il}_x@B|lsJ6&(i zjD7=%9;}yp_P%n}qEd(B{2${lH)S#mdfPn3P?N@p6M%)e0JVTZZQgd$H(mcM@Pf|n zO59M6sjzgXZpJy-*z-_&)6tqZUa+rxJ>4Kn2x*Y}qBqooDS;2x3_qvp6SB+r!Gq+} z`Msi*stNbqNsCqlrLNCgPsEMXzFJ^n_Rs>U{LbR;f2Q15n-(1<7p93aQv%6Wm%wq9 zu`x4+UkYjz_8C-14WDVM@y}U2&o1Q%Z+Ph<#=L%O6bWS2O^K_ko2frS^xRAkG8gy@p*aK=E zIUTg}SM>ACv|r%}(zC&L32V+~cU)a(r*MO0`n zc}i5usJ(R!1fowO{DkO@6bW20nALKaGIYpy$D!|H;ZuO6fRIAsD;M1&j1;i!fsmI3 zF{LiaZf|z4qI$Vl>nf+vLa7!owJnP|5uAQw-Is@3kiZp>)`tBd22mz0-!R49QAwiX zhgDi`Q=;lOMGe74x<})CsvDhHB9!oeso7o6x$lYynkLUK5v~|-XmY(Q4vdZ*Jp5r` z5xcEktE6sRz?E{tO|#d4cEYwAoz5$AA&fXbiL+#v*Gq;7#E5*4z{DWaUenM*5CleN zD{n}z1+0uw35V&^P!!vxHKlcrj82PK#HYEGO^T4O2P>s2L)J1j@9hk0=(9 z2q6C8gJzgloXIyZ`)?S~Ls8CmiQK-=gn9oI*5A9>YER?oeOmh(=Y~jt5_+Pz_I~2& zYPp_`+Z*b01)KKf*Era)6Wg#kDxDkUMibd*YOojh*=zvkWtX zk>7Tyh<_bps1mm2Mr!Y7#PaN>WsWzh5e(kbwFyFPn*lk0wFM9>l;{bW`q_3z!2%K5Vi5{%r9Nl9 zlHkSlQBxJa7RZ$Prjwq5Bw2V6R=7_q>Qh6JCxj{6n~6nP=a#iITbHx>H9xF`f3TBm zXRXjVegAXUY?Pkfm^XlKkTX*Yh361Vm_zzEJwW|0?OMv=B;ZfSY2mjPoIl#N!Kc5r zFS{XAa<9NcBHLiy01p>X3O}K8z!}DRXO*N@=C!Tc-_NKm6F0L75gscV(cdlrX2Sj5 zjB>D%+#!?#=kk2Cn+TwfSe7FEFf}$8aK67O5cxB2;H9iTD1|KlJil8csZASPa1Uuc zu#v?T^V{k)sF>(`BG)3{Qbp;UX_L5>)5QhCFaMs-qQE#-^$2o7Qn*sh4lkNz-t)+Fh2UMd*_fLm26mKuOX93yhPN{6$GAEc{A- z3+&w_<&Ql1w*UY`9OYam;YjvaUcW)@gM@R^oXP&Se9mNbkAwVM11BvL=nph z@OO~2^??v35H`Y63Zcy7f>@>}q?r-n84!JQu#Nu>v+U#HzfB`5vl$S(RHQv=O$h~f&*fJ!f&5Y3KlV<-ci8m$m(E)KQGaT7 zG{_5Vs_j7J$P6R@>z9CBx;gdRt>R1DOgTJ{e7z4Af;Ee_p6k zGe31MF&rzc@Bte7MBdQmlUC{6@Yu7*5{RGPe~B4!uqLZJHuV+XJZq5Ec~|`S!e_)U z`@=Qj3HkL;|AR`z(yUjKGiZ92U3Z)FlkBS@(JN}N;FSMC=$B!B7-gj&Vn@3yP-zHX z%xhm6fa+Lm-az~(xXIITFuZx?e^{*>(46E>(D=2s&0g*KK)Zd_pP&ClX75DZ*&}22 zziWB5YQ=;WE3TXxoi=m$&w7Xs@35znEb9mVT^(1gaft*&46 zJ|tluct`xMKP~!yUwU^2|2yX5=bU3p(bgh#@6&h~97?v(EI>JhI`D|5Q9=!+I zCh5f%RRa=zwqFLqMXSe+_g<6I;)#mncGQPYrN1PZF^KT4B^=97WCS?BDyDoIQ}bf+ zfJ`@JHm)BNdjroTBOODi9RNlkudsV%sAp>6D=2S+u3dKS3~M(8?b#vrOy`lG_~^KNwpA`N_|a*jo|#} z_-$YGDOjOprWb1*n>k-He+a9ZWYti71u#K{4(6KnsCMU*Fe0J)n9K<`P<=|~Q zQ(g#*p2&eS`Ji%2wDCdWB%6Yimz1inzvyDQpe>U2g|?bvkVS&yY}8ENl%4ZjzTl#^ zU896{ogCZX)T_`nTzL&BbtU1b0T!Uno1j5BHF1hJv8uLV_MO^A0pESs&+*XQRpfYu zZln!=0l{s+YxKg@lO0%F6xjfmKMN`-fnH^qKqGanc-hbYX@O>hv%K@i^Jz9TIz)Bt z>Pjc<8o$@caSX=OhiU+)rW}22wHa`8yvEEt626;`PwnLd?BP^rELhOfx+CrdI&u z^*f6UJsY9r27Rb6aBgaM@>`K)g23{!nWh|u6;;K>;?AVauc5duUf8Z(LyMKZZ>t&w zA$EZl=z_4)+Np@;(1mQZn1o(C1u}JuXP6PyzEHHnc}O(;is-giA$MS2{J@*KoWuZU zQWK3dmyD74U~Fn?4}>7viM#wGGIbKyWvhJ?T{v?{GVuD?uiJH;CF=$a&ujIw_7)Z` z6F05!bAP|a(S_8`7Ohmg%9Jn7oG|MWxr)IAA!qj~a2l?yDRI6Cqj8HBjq5_{nwfM% zluK-b@VBeu(ZC?}RXX(XylAE**ZXv|M4_cE%0*nM7!4+@XmHK)$o5uNAhq8d&O~{w zc{6XAr!zq57sikTDu-gUTyjdHjV3DRds(@gS^2R_eXR?ju&~06AYmPP=;sIC8D+wS zdc6b@jP8-5lq_%W>N^p2|M^j zbVR_qf+kY`1Px!u563gFi!6RN*Oa>)Qlj6|!;q%w$$vPKxD!L+1bf`u{FRO1VM<4? z-ltkN=(>}M5J%0#J|LRsqFKvfhLgeQ4R<@`gz?_1(R1Y;mrI}jaHdkHEaw)`RT?S6 zu_0xn)665(GDS2_^(*>WGlf~LZ0mndb4c87p~+67bqDtgoZ;m-t6?!(J=BFv zh(c(`spIrMA_A zJd%FtOf~dI0zosbvpWstyqC&=-i$B=~(*zF<|>&gYwXuP6-QRgD^%MAzZu z@RDf@Ta&0M_GoCAd8Kc&FV#cht_;a2Y)>2vzAnBi3@MD+yCS?`Mh)Ioc4i`l7Q;m&p=_r?4E6$^S`idXFpb zNk4{yGEHPv=}W;RgU}+OO>z|qC*_t(l11&2+e7vK_f!IrHdU(ivjvp;iO&m$Nx`^b zIW-zF)@`_#;_gg_hS9|Vvcu{QbtPyIJ1&+MlMeTHiHk;|YOMwq16@B;{=0>ag7G4m zw$*NIUX3@(pXHda6wyASO8Lkt$EYo1T+-JZr*P~1@G)9jsM>m7JDd8jX1P#_VU%u& zwpDKrebxT6D0ZRr3-PAlhFFE5grPbH4yDQk2KR8-hfRW;kenx`NV{2$)s5xUA=i)V z%SLMXF&9sXpWRu0G%9;xTXwpJ zl%3v6kY;UKTP@T&-vBv8>EbkcbDS7iB4RMVoUi=vnM4p(b3&)Z4>)K8m7Q&<@ zk;FX8X8PwU**MtdT{dJ8;-nuj5w)xOg?Q*Wc?_yV^wVtzfPQx|7kU7nv2 z@sc#Bz-VXfTc}~jIwe>)cbj^zo~oE+oqw!ifw|y{pTx%zwfP^KI`bBxyg{E(hgzKx zcn4 z7MTbKP$yjt_{n_yxbZZ>@o@9PAnIGUhz=DoR0;8ce9p3X?e{chtqt0%tL4j|Cnts_ z78*E=M;E!7wYUf)M>V00yDnUwf0NugBf3Rc#Cj@&m%2nkvlH9J4q8h%dqbo@%0C( zzcY9e_{UN-7)^+k<)XW`Dg5w1?+LnQ{&}o1^oF-h$*Se!G70Ldobx z=d2=)ZQVC_D1TfW*R8czmx%EnOTjm8=34<#;AP*BnaUR=bJOE}p6`!H^G8R+MR_kq zWz-}ob6M|m&eMKRu)au$BXyHb0V^K$;M5IKT#+vdl<`Mlrb@3*p{dkV#oTj*Q8Z?5 zQ;{sf^CVbwlx)$4%f2icQ;eWzmXq+4VaCAIq#w|T+S~kku0?Nqazuro?JW6!RP3i? z6+M)-+vw7UG+GAHuCi5@8(KkwUC;+oR$D3g5Qw04yu;YCFR@w`EO%mcy}e^;z2DGf zv*>HCCP)e0Gq>-_Xj0_j8UndnX_$4tmK}QX^AGc7ww!vkefz0;w-U@PIp`uiBXZth zDHAC~;gV&+%l0MC2SC?JA#mF*-PyvQPb8Z^OCjX{q}2x%{@mr<^ZK(aF5$NEwF~bo z_a6~L(Ie}gD@D6HzLGS`rgbZX9Yetj11_39qcqoGVeEXb>)4#%c>6Mexr$ z$uC$7C-9S4v83iODQfeITZ?vU`cvKS0AH>|x5-~i2uKP0W?qee6S=AE%fX4=J60fW zxQ&u0>1M$&JMppP0G!(%97Iwg?Mk>kvd1xE=L5pFI5&cK*W~cY@falxw5*(CWu7Tr z4N%n{R{~O6Fn2W+E$Y}FX_JR{&A`)w#eEVH2o<$s6q-X+m@8DC`EFee*pEO0kj=2* zZriq;fs~7w(}hVZN}lEHXCUuf06CZpd13-ihKU1LuaHbxy0ERAD8bxw3tNF$Z#FL<3ItZ!YzY*?WV0uxY|;ZR9M350 zTU^)`EAiW#D{PwELF?^)Iif$KTmYvJD0SbV*!E^$$0zkEE{8cb6C&u?=~6)L@gC!K zk!iCO{y>#vivLZK=B9_=OT>BKSuI6I9k=9Cmrd-b$mn^xs5T95@B$a%{$BxdF2ahN zKZ-_6WH?18?FlYlyOq3SF(r2SHiftl*-=LsQDASE>=5oFIJcYG+bS+lO2qMK)_S^d z**NCXddDpO#P*lye=QYsv9C5Qx)QdpWwN{PJ{5Mh zL<8}sero~a&g3n8K*2t2&88IBTIk5O`*G}_%|4-&uj2RxSf@Z^-xI$U7}HRsPNZHe znoJ(#vcOXVewVRS?7Yh*YoFU>TUhraKj&P@b^-(a4llI3uf#?H~}f!5_=kjuvVI9=(uJB zy5)z!>B@On!1=#j0GMW%d*Dz9dNoyh&}`Ivw7M+-Dg)}$YQvvGm`j@F*($ft4^Ek# zu)WY4okG=gyPJl{)hP?NG^bmfv}`)z4IyLY|!nE(MOv36_FVL zeA7tH`we25joE|-VKmVr>1IX;Qfl`r5&gN7A^XMM6`>40%vg|(#GDM2Ogq^A<hQ%c)Gh1QUPbelO z<)I#xc+eNGl33N~jwWpN=@eOmDx(;GageGUoa--~eLk2}Km05!z>(h(HNbB5Nz!w( z)qi(_tb9fWzBw5|G0Hu_EhQ=uPz@>rIQ>KhgLQSUC;OAz>RNUuT1=)^!Jd8yqVi(j zap-%f=GQ`GL)pOm$^~moJ$M`33WWvi)hyh%b6BJR_MO0&B?JDu8qhdcTlFq4npO7i z9}19{*&w#vuWqcN@8L;1860kAE(psx>;c&s4+;d(lcs69-4EhsCLUjRE6|n=Q#uep zhf*)mOHL8cPqSi!USe)F&}C#a=D<a^Nasc?m9^0~!} z`v>H|S$RJOacWYprxqAPz6lZWT-|k0tK7~W*vOY~kR;J<6>G!Xwtv9U!<=W`85!xx zH?YjSjZURfHH-4LY$ObG=OjfL?%2RmJ`(G)$Gx~&8wxp0X;-I3&A*2nJ%v+uhp%S4 zb|aVY&PMSkJScCXdqYO1MCcZ_HP3;+FO00)*$%cxegV{$#PyxUybkP6CsH}FzN7?v z@Zs5UzZ3VB2NY@1zQkIi7&?`X_pj5v#maauHNoL;o#bx{dJQOfg9;Xkv@f7by7H5B z;`~@B_0=8p>HUY7s>*#lw>+4d8_(8GWjO|H9l{LKG#I|`j5+n?jVqs={=)KnCu#x- zHW~Rf8~f2CD42YfC^IxKrbu7pZ`4;sm<03ph|_?Ss0U9R?<~95GH>|P-H@VlaO+z~ zP~@TDkZ7Mp$uvWq_I;G@?j#dEM>cJtkVc`V@@@R_+st_y!MI{J{X;%<6VD&7FyA$0 zX3ue|@YOF)PMaxw@Nwi!=6P(%%$YuIVL)dlTY7wn)L6dWq|a{kmu`IZLkvE)Bv!s4 zATHH)=t99t`mrC+2SNRQMYHj%Tz>bibJ#HEyV5p+f%i-pn|m97rj`!oTXcb zzB#1K75Te-SD5jauS{|=K_j*@KXh_Z6j7KnaswF@=cH)`q(uFsncFq4vOQOw+SUFB zcX`dSK-xx^`zF&;V$e9;fzJOcD))2Hzl75Qlk*RPPYg(xTxO6?4E*R&VN^37#=vQ7 z?zf69mm|O_evmJbT2ob*YdlX(B$*PN{JWLVaOr$7HbmVr?X8={z6|M`tH|0pqduvJ z!{VGnYIo;&_qi3Kld3C3goEtPu3|j7o2o}gj!mRHs zvG@nMAJ&0(epe&pL~aBLt-M1&T`lt11@|^#2`$TePZp(mo2S^a8fEJclu&%t|op+%3HS5KIq=7d4|o%OIosMaUBoTo2G{O zOJ2V^yqgwth8)hhjm#KFU-9EfzvLFs8uU=94TSkT+~72=y+sVZ@CucpN5)!xsGCnw z)Tk6H`JF1L@B^s*GPYWyWca?Bq5NkNDvd`LfNNsT2$ijE_KU2(;D`pzvu^I+#7)h7 z#`5yg;H&J~#>?*TAFR~N+8QvO-*~*emq3jy(J@!g^3o5e$gd5r-hO^>TOR=QXgFFu z-KHlQ=|_0^d~wnitJUoiH)VE^W%Lmrw2I05EHrE6EWlhm*CbD-Ki-TKZ|KiV8h+&c!|G&fEt_hW&KL*e5FM-$F+z0?`e z%=&JaS4wh8G6yZ+`bgFLu|IMygYg|RLp8cNkLLkMJE!iH!>ofC(2^)Mlqh*sXU@IH z@(*p$i8;V?uJ$s~uvwD7NkN7+Wn1dTzu?yBc2j$}cIMz}FfpD637W1H$#ul~#~T>u zdW0D!*y%{rOFL|5HEoi_7&KBVn0&t$Odc5i2U}Dc1mI}8uHmKZ?0=cKdS=v;lwc73 zbfgho$xsje8v=jSdpIZR=)`vk#DKPW(^B67Ok6joE#8TWskAb@s?-y?9$%6g#BVVRDUUa#0Y`Tvau{ zEZWy1g(6wKND`-vwYMxWh+&S~hA~|!HwgPKNi?GRT}n@ld5i|OpIQhFCuWSKOxaZm zX)}ZqhH!c?Ik&@;C({)RYBu}V^kL-wd%2~v1P*(1ryUQ|UguICbS{s7=XOLm3i4@; z>pzixbrS)}xvZ9pusZm#F?tdar zxQ^?*vk|zir_S@}eeNU@JQ6u`*6vA2-R!u{>EJ74Wjb#^a1w z&Fv8pm>dDu*#AK;a}D^_ZNs+fSmxaPLZ2kb5P$#P^LOj~5?q&qqEbC&rJJ{GK6GB} z*R;9AOcsvt`zKar=;|{R{%Q6#{c_fJFxgFp>G!~c@`T=zOtaOA`!S49JU;n)I? z<~)fWfaNG(OP)W(B8?T(u^olFsRAfx(Q;O^z)DZzK%QCGD7$|GGvQQx$!#TU&{{-# z{Iu*x7g8D+EB2^P>UGi6dO1V4<~65{+A&3R`vW4?>$yxWhoSk8JG-s7tALX?TdRTH zte?OuR5lr9j&}}q&;R*m^1$|Ac9KiH%O~xM!-CITbS6# zff2$Bg-|@-BUe9F)ep6`V>(&iy54Uq=x(#)=qMA@0+pLKqK*qv%pN1iyU35itx5aE zGMk^Sl+*;?*t7R|I7ZXNTxfYZ#8y^5bu(Dof1#%(kWTI5$KItT8uW;rru&yP=8&>V za%Jm~=>An>(2g_U%n32XrPliWEW0@>_l&hRz*3uSP@rc~XYT{O`Q9D#2~&141z%C#;iZ&&-$0^=Xmj4JNYBYwAlNpN7%)9iQSajOxJ`5hnb zPdlEF+nRX2Soz&o%qT1pq5Mnwm@vB~PcnruXNnN8jge#x)jBBIas5d~`}&3&b27_h zz{Hmo^i{W7z8pF4>l$jl&UeYrzVX*pUp2OHcHjM=UZ|fao5foKXxT3#+l7Nre&9Ij zmD+9jDOHbsLbev$(f`;TTJpHt5lTH*BB4}07YtDjs)aLMiB{WHW#?+(5r|+HNPfOg zpZX9e6J!yl)i)S;`-k$k*Lz9IUkh|UnuGZys~UGuIKC6+tVgl~~zc-@6U9F?UXlI@duX?h(CNKKBp zpxfVdMnZ`mDG}G_5rcY#;$>)dVAo)<%6t2b3Vr#RWm4CMyw3XxL& z$wxsmT&<@HPO9apQuq04r+YrJx&E|AsH;Xdt^FE9V(0dQ(z_WtsaUDUGx*67;`9yA zEjmK)E9^Uxy*dIKb000Gs*hv_7yQN|4Fj@xnK^ig@6o0&+%KQxA~rxl?R`o?r#OB< zyyn@F7iP~yaq9ud2Ah1-8-}JsrE$lBz=*tpn$XTlg)br_ z5C**)d(rw&2+>uW?MdqF@bRa$ow$9xoRJr}Q)2a;?C^B%bX~74(Z)pYEhXVD(Pw_E z(s}tJO1f6YQJSLJ&j-^wb$+QGHwlfWHjiF|0;U%Sz}qdM(+6Cat@KFjjxPq!evy1- zbhSHa`5p?c|HxkJ0XZM-7>ST-R5(~HKK+s+2`!c^l1&z`%RbcCQ>A_zS2!-2-?YaV z^rvOjU!>TjM1bm2Or$x|<@zvaaH`5Vw-vGJSEs$OzH#&rbp5xOvl_DEbLKUtHx!ZK zNch@akonh+(u!UA8&Uame`W1LuNwl|`k`&-AR-s=tub&r`{7Na*ZyUol|^L117kM* z^6~RL)0^#*7D=L{=fLgeF!Qgb4w}?by@|dP4|t^`h=Hk@JCy&UYyTHNRr92n`VD0S|dJU!+qd zi1vH{TaB2j#T$&lR8W79?#bvL6_Z@RGmR&$16Rjx*_D;A?8f_S|1xSoLmAa*w2_{0 zSfK?DWUJ?BZIll6T%_aN(639trPIZ6Z6xhQEtp388dkfSZ%*a0P1l-qh47O?P80jB zMwxcj0uYuoIAua3JFq3cx#~8k8f4UUN&wb#W{Tpha-n3e&-Czld~xKzee0LwK^s#C zEu-+97x<|@LEMfyxjMPLaz0(33qU8L?{eC=4#@?{P<1Zi>dz^?j2%%fg1Mg->?&!v zqP>rFZh<3r;l}=6jf^1Fu+7Pm3xuuX!a{AM#o6x5<+9J1`%J>&x=s7z2IOdzZ#QR@ z9Pnv-*;;i&Uv15%9o?Ui~)LZV~>nI&FdtH+1#8r`p1M=zZa@|vc4R!dP z==AzPV2uIw1JI6}p}Ro=!_>97QGvNLc*m7~>w|te^kIkvMHh5`2J{_?0TyEWL1MEX ziRdzWi!CWO~%s2{e{Yw`hg|1iZplrV* zJ!}a|P-c^HE$|C>$i5qGJv41kb^$Nj{W^OE_q{InTaogAp(d%tn9cO_*U=|w3$Ok+ zRcHT#Tm_2zgGL@N5~??DA9mqq*{ip9U+V#T2S~=r6pAN?PVP4*QPCFv%?0p`+AnWB z+Y))eH@R<<>f?FX4X6NZ3On!59HZ0w8=$Q0m7Rv?^>aNNE+K{h{KjPr5#wiaub2%X zThO3TpJh_t^|Oxe8O(HBQunLbXQeo#D{?jDN5h6WzSX?UynwfkkX>(Q1h7Xd8^Sm` zVR|;(7!)7zRjh@JfbPpcIkU*BJAUJI`(Q@k%>Zh3u06!m4{o!wgwDH9u!Z}a#^RBy zH*}R=U=Q8a?>k-0^HJ#f?i14u zSnQc@`UG8OpR`p6fI7}^eeNFj+x$G22fVg#OK+UoM5u1t|9D{^iKk5wRadpbT(rb)fNl z7e8^Gk2N2DMAKu(qp;M)kL>NKY=26NvrR|jsC4D5wxgrf>pdOGj$@4Tv_MofsvF>$ZTL?A?~mvsJ7M@+?0#0=4!w z)>Q&5D;P-o9Im=1)76(ei5%A>+hyC&gB~OT?}`J%rO+e)!Qyjo=4=>8oMo_cIp~iB z9{+I!eMzq0Klo`_geS8Dp!};R>GxLTMc*!o*X2R>x=4p$AHEj1K)uG6#arw{i9bSf zbpO^zh)#FA-#jAbs@H?s6E|T8v;>>%ca8Eae&eBP?KT{SRr~ozCybn;V}8$!pK03O zNn5Z8Ec@vshox^sT1)q6k@S;tsaK=BVlsm_S%w44>)u#k5}wZt5pF9iq) zYOi~B%=)H03x(JQ7zo}>%&PjhNOVD-k~%Lt>QKdZMpSX>xxojmman^>+d$j8VdNb{ zM}fQ5Lq>k&Qda_v@n;a1+N34}pk|=Yp=^cr0)kJ&sABo6gUF2=d2R;;$ii zM}a(BEc+loR+jgY_Sqd>M^^m~@9;(9f?+8S?BDhFb5FFf^jY>1n3}-^KFqvV&T5M- zABf=9MwMNX%GlPCrIKNpr{{(|ZCG7aTHARQdnneaY(>3N%H*isqwdhH9=F?(+9LTo z%}~n7I`EW&=ir99!~fC7u4Ua@@}x#$J~6rJ;_s*nDWhOWv4W-3nB?P|?Ca(HOrhHa z@croB(xd3RAVZpg29ZM+wqV{T@!!-QURxh}ggxH+yA>zDseN``6BK@3Dp7ikZJe*? zKJf8N2z>~j|F;1jm|1(%hf-l>#H@;CHY8ljCW<6kO{;Ok2z>F<`!9co;Aj+2;%>*T zyK~2p!DZIcfPfmn68vD#3|{;(Lp3a@Yf*0tz?U&iplwYx46+muX|3+Q+qG!DTjze* znUjQ4wTB0togG;X{^M#be9QYnHqf0V=uWD=^A+FV%u!RU+Wn#$|8hcq4JW78YwYJI zv~`VBhcqqOSv`LoH*O58I_s`J?@RW7XJlDu_oJczWpq+SJychi^OqO(_h~FZ>RtF= zjS@bMWYx}Z@VA3TlfH>bJlKn3zXOA2s=_z3lHH?HH+ZWj4^-i4TKfT)`Var4AWuO} zS=l$cxAU{)J(W%45UpIR|Lj475Ze)h%S$2pJR=plh`p-a4VJ1ur~8;_bBoCQC#?`y zN3Z=i6`RGhJsk>YP5jYSdxvU)x{l1_1zsn(qLx*nt(BM4dw2qGOafo=Vtzt?ocQ|L z85BC;FbwKS9kAzxj8Pux+@A?LM6|afzS!eIClEk`q%7sZOU+&|Rv= z?fMytO8Y%m8u-Ee`2#h6R!DDlpaTZ!2`$Fw#eBKC_$IrVj} zsa)W3O5WaYmTU&ppX~JqYuI_v4KIr-a8N4X;_cWp(|0D+SM=3Yn=^c19&5pCCOA#j z`UgisyIA+W;BY!r*t@J>ueDA5;t<#2LA_^~6`xp=3auddI10~Vnoq*WUiY|vd+YQC zg0ZAN%|VJx63+!Iv79VE$p6*gN@882pZuOMW;IkqE5mblDLL%t>h;Mym%+`QaJMPM z#^&3#yj!^ygd^4j@&ldi5uFwBoFevJn>yoaIi3+Y&vB_Q8DCGY0<#+db*PBR{X$)y zibxq74W(vz;>m~*M%!$6BWYMe1zJv@<#9PI5Pi3!-Ly|%+z4-*f?TJou3pDh-fdov zwl=w>-}+=)U8PZZRo488lTORbSnlR|&=Bc3Imx=4G~T9AOHSjmtvF$SJdgs8k&lI^ z7WE1;@jElFJW*rAU~+r^SwThUTO>|%eeiSa&1=8FN2#NK90E_j*S#0!W~E5aqyG7= z&vurjvn@=vc+VZ)bU_MsRYHyAMg^JA4MdMEbj@fK7{ z2a3^?8?HtE`hep@4M9UFmr(i>wU9WuI<~y0Tzm!ceR}9_4JJFU=j}dMUqHg76;=EW zv0CW-!y?+fg7qf`B#zos5I1y&lw;{wFtrt8jdyITk$#SUlZ}5@HKic#YbC_|eRge*Ax;uZh0J~vv=F4t5kp3H zG4~7g=QK!S!ezZ4)~+5+2^06s3_ca9OkT3Gg&S6` zN352MTK1@jvXzj-e{Fx4_x)GeM#I6XS#z`4Z2xCHBgjAaeS>BDr?t)a9-$10rjvLe zeAe-^_+L+}G?!NOf3Xrv*VAo`nSM<0aj*9TU>#WCKV0}hmd*C&{T+%nW5JNX*H_W? zUImm1-r?n$VIW7R;g2=Nw>w6b_rC^iKWEp;XnE+SkjL}B7lIP-7w%I!@0E}I;s>q>rtS|%cI#x4$x|lY z;qegQ-HHF7n!Yls&E|Q#1&UjN;#w#aEiNIryBBG2cXxO9;uLpxhvLEA-QC^!r_b+w z?+-aA$=Q2mR%T{rX7}pz$Y>&oF&P)0jSG}u#v?!c&Bek3UR*>4M0{7ntSm_`z3>c= zy2C)@xrGY$`^@_W_a0^*jPbouwESn`k%aVPJM~X2SO%}6fq%GGkLC9le?Qp+uREcE zPdn2Nx1KT17Gq?Iw56{+^E~=|A#eJ)S&=3qd7_VDYDOXEm4jE#O3$tj*-Tc%CH5xg z2nOq%%ht__!t{d&{BiC3Mhms?to}6wEHM<~=rsOKN``KCbk9!G_Ig$yn;)&*;!rW_ zb+gC=efuzi@6UAS4dD15-MxG7)?k{x3^`_M$cWI#tX)yj2|O#C#Vk9}le{@|T-$ob z`nP6oAZfcM>nBCpI4;AU`Re*+2)tJQ{kHH~&+CX-SPVAmMCf&wFUO5HfNRRXy$2j2 zv4?iDIWoA7rEd+mnQ*OAPE3bxmYHe;x7>1OQ^ z6KNETPAv?%wcG}K?ZWa(#J5E;8G3XoU{ccJV>yPgx!sOr^4sEC6Y*!X-lme;7 zSRLyQS8WjN7c5-=*3&&BR3Tc;X{u@yM^@NBxlD3(KwEh${R_6XHUr<${x<)pRZpyv zYDE+Xu}s!+(f49QY#buCMknB%MCF>P+?}Rv*`vu-yRY^APTkj1JfZ$!KQANpFk@MH zksY3>V4wD|I<7qwl@D_}hN5&n3nr=& z&YDX>hKMixf7x7fN@Y{{B@t+P%TH?+x1BR;+Tny-`M|W`Gu~YvK^nbqA&W9RGKZpjB4q z&H=qqvhC$THfpr9j{_8>#E@GC)2xg|r_?J7#ycF(F=KGkRKW5zG#ye2 zrnPGG{RIIX7W-pYA4THF8qvtu^!I`Vd#O;XT+xmmmZ3F@`)oz_Z?3I5v7Tlh2&Kb! zpyePK^=qTG81kN4`|wGo&?%_*VZqY@HDcm4W4H5~d!hcEuK(hT#kvSPTuw>@mJ*%i@Z&y%FZca-Q7=?-&BdmaJ25qg~CmxSAc0y2DR=+5n(0xJp06mHRc?A*B*(9U)fz4u_U3RE)3u(Kp^dZs}#E$#-31IctkhZ-+ zu3j;p*d#!=E&DCmdJi`HH-w*?4PFGa@=JzxiRn2}KV+{SCwJiL6nHJFoyYuIY z-0_Q|pXM_{F;o2PPZEs~ztEjUPhJKWpJH2t`1xuWdHqc`XbV8WK-Py$hwj2MsfQ*^i;?z8YLd1b1$&Uie#424)>&mdk*LTQs!XgkFip?Esa; z;V<3TQV=7&?l|p3_9=?`A-Hh=VY^bMx|vTPzoLphl$tG}Mr=@pLJ3xHl*NNn$YV&F&|m(z zlcYK1+b_%MU~HiW_4{`+jX|?Axi->eod7#Q_)`e`XE}LiF4a3*PZ{8s+``cujVp-a zb?@&sOZSkapKE^GqI-V>_lI!DN%Fj`0n$vA(J=xPa-Cht;(7zdWQC0zYz2#R*-?Uo zldyFFaP&4pr8$YLl{#hyw!x+8wGksd;NKTEF8BP zEPP`ldEdA-c*S`1K+tYqv#O7J8l~|y^|Xe5ng0XU6-PHgUhYP(Bzx%gX;gz5Pfw#cVTdXl6BWAYc(UmR}_-UN7H0YkpoH(>tZki~t9n zsnIN4yv0^Rag5aKp4y3qP!BO#m!90wD!9U)3Nn~IO`Skgm^x?DmZj7R3yufDIeD=H z`H!53$cuT#a24TwG!me67-o-H*&C;t%xIZJ5f5D19KV%DPz}_l` zrrs|lIXL2Od_tUV=!o98g>1;3kc7WD&gT?fWBq;8&)nU6e>z@Sup&qCZ*I2tIN5#= z>gw_;nO!1)7iPmnZD9^(a$(sU(9G&Nfb9>93H;cr1e5v7>OK_QF$Mos6-o-H=%Y&3 z%mWR(XSqk^(gRN;wT&gJxGHFY^{g3e(=6ZRFxh`Fo4!a)!VhRjhr zUJ}eW>2mu)PG}`DKr*+Z@(Bh$&vZ+za&lWLBqV%1T{shYLa<^t!VD$R-%0u^|7$j* zEuBC!!sHrk$5> z&fH|EkYdml{ko?a&HeS5@@OTo=b z2gOyfUbLMxoz<~WerBv6Jo0ismialoqqw7K)RdoS z_yLQ0kZl*KgCQ|NfonFi=(_5)8ZKqSBj9>LnUNzf129>%MK|ZCOivciFDcSq#qY|L z+E`#J0tp%vgN7av0|OHhMe)h-J#-|MK-fVNBOdN|%oggy z9ht5@jI14*8&juAQ-*_$Upmg+Nb$cAd>jstG^K87m^`vusYz^iMV>ACiAz)Dj>r+> z2b?siJABk7-wRFuP1Emc{r?<5dfOxP3o78=W$Fo&wXirAi^cmi?aEN8sUTqN`a-GK(0-E zZ&)8Yr;9nw36^VEa$=}qr3d9}5YYbBpLJb(__vS2)~r97w77cdCmm$k2JDw~?=K4C z(%>$$mo7$h7~(v){-!r4nRRg-gk?%2(X_AY?T?rK%+a~7qI4gtBem&dkcy^)z8xCP=2aZ?I2nUQTc4ZHeG-T3`bA*HN0t{>n^*tM}Ubcx*i8Ju@>y6ZV%VFC*MmV0vt7 z6%Z7eSJSex2e@>{djC!qDg$F_cZH=+)cM@Rr=5e=ItIcPWq^V^6^UF?&Sde>gs z+m6N@WS9?!M^IRo8x5L{k5JqA$#<7=N=@O-tOmMkNOUbVn@kqdfcwapZHgJifgcVR z778Yh5*BLyZ8+)Ok?O^_djB+Pep==DhOUXiSO3)@KT~rU@>-7JJfD2UPU*Ftm@UiJ zW%?WkDrxGF#TrOF=Y$?fG~X1n@x=PL1QL6Mu<*}rmh;a{qY-vj-x*-3eQ0xNp(`4)`{Eq>YwaYj~_dpZj8!fLf5KxeVVHDCw@0xpLX1_tv5C|4Z(76 zS>M!GKBj10d;T4ENxe?%Ai4Bt%{wdDz-+Mi#KHVPK}`wKqDNCKiwcsp;)B&@e6E#ps37{ zLK7RGStgCaj91nneRn7Mg;3q^E4<-JI8>DhYFnfDwDc$ zlM2xam5}2{6N(^Roh75(Qvue4j{VO8h`PyYiFmt<<;oPdo-d5Tw2ay+du@2pzNf5g zMWUFnyd5OnG#T}CD90CSw3aY)7cLdSW*gP|cP%vPr7ptI(e=d9^PS|X7a_B3!W&|I z;U)G<`}L%pXmTSU`jQsnXkSCNTS0ELXj2jWMpU^~a*MiD7q*NK^GH80)e@TlXWs+& zKfz>oGmaD`Z4mV3ez95=B11o3(qz4O!0FHRiy>|LK%9ChezNdH90#}|2P*2}PJ%R} z!Bp^$+s1n|TnO0+K)!BhwTAYNA8W@O2p-X-@|E4>FbaGxZa=S^fk5M zqfL{O_ct$9FOpG!76D>9T>H0K(`2`9bqx8sI&780lt4jI^SPMg%LjovhRA|DblU5M zQn&zsnWoO4V6i~rjz*^OEUb)U%W%FDe`t)HwTIAoM6(n_s6P%TE% ztX9RyVuN~X$|GGxMLW7aUABdBq+M8KK_9yqK@(kc2obsTv_bY0C^9VLZBeKm;I?8x z4-V2MQtPLH^=#CKGyL)7#K+S^{$X#g<>&DrL)~8(U+@h8%(#F-9k~R|agxm~?K9n~ zVSxdktEsQ>i-^MWVo#I>x*`(hCQ$2Q63{($AxjFhzoRC(=YpZXt5ET^2K+#oKrH_@ z*dV*K3`y1Ig6QOF+~J4$9}&qja&mtNb;r&mg<~Op@t|jOdGC}So~8N$qp*0|T?fOIL|T?cc9nA8nRy;HyoUhuyZ|L0xB+YU zTI#nMv6~8$-c97KE;LP1EoY;!4sI3}zP~bq7()`jJ43!;tYV*#25fd^)s`vXd8(I4 zqFgOYz6_&m13?A=+ajJ!srayCj8j}%KmCI?Bj1^mXtOv`Z769nF%%W6+u`8ki1JU> zMd=sBN5doEZpKd?XvKF7Q=zyG#ox#Fsaw5rwed)|Zmf^MQ(=q{`l_U$KK(c=YpQu{ zF;~aLq_E$mUeM9~vPK7HQlD!-%?ifqRZIHtOTr7qk9ApL6u@{S8ePw*%3Z@a0masB z@bMmIO1>o~(o}^}iK?n5DtC96{-&m*-wwj>3AxDQZjqoOq!Uu$Y!qKKHybmjz+IS$ zF8-n`uW#ERZo+;6AMYT>-E2X)%YHF4w|!_Oh1rGMSkgIQ#&Q=TGv(1Y6nSOSr6=$0#WgPhbYXLAT74@jKyOn5NC{ik{ z6m8+A;i<=Vsh`aw`vX&SbgD>{sG%xF-#{$H;TEcJmMOSH#WO;A-w-?_B%$S-HA z#X2FiN(B&&qN7kA-ezdN{fz+zC-(2_Phq;2)xGMhU#z4H6!m7AeF*{(r6Y~LfF#}aGDv}I3aqmjmpA8uF$H?V- z_~#&(Tf}grZw}CCQ(xy-B`8nP=Sn^k%Za!EWq`}F)&O5iQ^{~CI@J}GjLF^uqQjog z1lLBuu+~F9`HLbYI2$sJKPmsJ zX@Jw3I~bTH(yD$MQfud(m9ni_9FxX}>HkXI4Fu*N;aeXWtsx)p?5AGh<}KOnERnC# z;e^p~xF|g$+6Qu2N|a+A@@EkoGc%f;pMTY5bFsIIb!$4(*6B}m&`IDRa6wMH8-thY zO%pltwb~k$of_n9$o|eir%>U3>}p?zh6L{qKMo)=u`c8x5PQ50LVYj?#F$L^3i@{2 zIikp!OfgN!bhCa1vVAX ziO^*L8*}OmAbvPHfqJzpwKBFtpL$uitJ+7$Hd89dT+I8NEmsf9kuM^p!~F6+0MB}Z ziJWNQ$9Bb40qN?j4B$)$KWuB|tKkn2?TIcWE^dee>4o{u{@gKtL#=;<1M==HHN%(U z89%l)>4wQw>`Nm<@-@OEGOG}AIHRkk(YBPK$@RsJ(JSUYq(lDZnGG5IHtIo#+nBKB zSk&}kF_)h~U}+}Cg`i@r4prU5l`Dww$43-tw(__5fhaC4X%fP(VM$+sB?xl&Hb0mK zg8=Aq&WsbWOKNZ@FsnT3aZJ#SScg89X%0Gp92^rLdt_NyliRCMZye%e*c?c;)wV}f zh{U(lQm^!U_41>zCkK^^h}^{7YyUP0JkX$ zJ=ohR=D_?bnv714fm^4zx^fi9&bsLvt1M`M@@MNir&tM*HuV9V;_@p>iY35-<;7kQ zVB#us{qD`aT;8BszOTl!0F_wBX^<*Slivv--SGfimrP6kiBGF9V!i|SxOWNrjBjcB%gRsb zBwJcE+eNr+`0J8h4vwd9E`+)Ye}x>SLx<)uRUQRL;LU_zL+;cL>f4Q3*&x-=<>^&; z_{hnWsq`#YBVWD=XUlF)KxI5QtBKs`5GC|nc#+O&dCFsvdLS|b%Cq#-HadEsFy5o> zU2eg}Bl()d2!Dh~m7T)J)^`KSuv^tR*c!d5FJyEGnSzoC75ecfi;kjUwf`YOzgH7Y z8d~UqPFl`>YX*v<7C8cWay~(L7HXtPfZjVwiE2FVN3a7jDhu<9i1c^A4}{?Towsee z8IT|2=S@@AzwwGn^kcRz?|6P{=?!CA{p|Oo<_z5p6Kl-zV9FHrqPT+tBL|NVcCih2 zL@HE!Dk?5}t5C^RgM%8|rzH$rnr`wL=HUDEJi2ePbl~1O1;TluG)h>8Yo+P*bdYdC z4RQqP^n5I7*(Wty|Eq4oLb=f@Wd(<*2u9|GP$6-2Kg-s1mq*U;^F0$_F0{xE9xOZ?E=`=N$F5C2xj4MA_mR1Q^a4v3#A0s|m(m9{ z+tPP2XY0md8xW=@1}B1g$|W(&7}Cd`ya4dibnaq}Z5dmc!740BWK`q|>JK^?>_a&I z_!FcE;21s}R7dgd3R%riJ*v88Y4POp!EV_k@K-Sc*o; z3k{*lxLL^1LIGGt<8~(tbb#0bV;!F^-v)TOk=`G>T#g>8k2zuu);`tMym3L@_g$f% zq=^B8&AT)i=ZsE$Fn?_I9q;EW8Lozg3ok8#l?&1?rJk6~7}T(t=~z7V;tm&?Wq$<} zlAC^RLZtc_K5d)~;Fc?02bND?2%+;2dgPmd=F7~E(bl|8= ze}ka4u8*+KHAN-Ccr3*@IA7Q3KJ7fg;SrsZb#${ZWlqD%F>6Tt zMLkdJwbwJSpWzcTdIWjZz3cGh(Tu_c=X6U)G%QZ9Lwwa{A zMX{~1ez!LnN05Z4qa9A91&2J!0Br7%!E$3l%tG%M=&!5h0D0OG`=cGatNfU|E;3QE zme6WH@b=CdCY`e83**>B0_IK`+gjO|eJ%$b#P!hWxyhb_ONfO`HL2{Kxs(_iQw?o& zW&!YuGf=9!UW0_-XdL}FrTPy?zs)=FCvnylW<$$Hh0=@5+jM8RI$QbhqG?KS3e8u7H zG(96M&qS3802|mTK;FR-!AN0awA?hfL4bK1m%B$?Ez&0%$N0@*s)ON*OG@2Xh#tz* z!{w}YqHKsNoA$MjS4vMG($8DMB_zselz@}Gu1(KK&z7HafY{_u(Uz@*-jAHF<6?&t zn9Gy{ArL9Bv$=7t`V9h6S+XTjVAVrYI6|*-Jd4;C{vjO!TIKWm#&~^7b?$ zK)eES{Q|5dZYF;_vv~@OQYkNmxiOQX%PuJ$jpSr(pGGi@0N{xQ##KvHU7lWz&Cz16 zFv!AQ_}=q+YTjl#%h_edrp=No| z*;|4N|Iv$nJUfY;NZhz((PQv~(dehrY-lQ~lnnKLvtu2DYsNp+NPmg9C@3BeO)1C6 zlu9I@sMwh%{)9U4BT1|84oHF3=kTdnEEXF=4RD3qsQp4XqDKY3%A9YI`oEgD9Wwl| zJL+Xc>ho!M`zQ)_lNd;F#AAFMLKsUZaq)_fQMJnMQQwxStm(}5EWA9yJ+wee`*GG& z)C@oDM>^%pVsDrZqRLGpU%P2Xr(#e`PB$_$@`ac%oncB?!1S@h#zn?9{rjWk8J}|` z^5pWWjJ8+`+}ley(9s4q1)kGZC$Zu3b4>wh;!5`)lD`Ss?*rfi5~6Ia@($lN1(YEF ziV?Vq;UGB z|GB83wfCvj>nqK~!36kT6GRO!=xZs_O-ibqDlei+n8$GOLM~^cApqnOSZDhs?!qus z$0*X-91rJm@P?CRjmfc=U}#fER1X4=Xv`q70N;1wPqSJ2zL+%sgjTq6HT z0`)w@!X1ogH06JwVo2tGLzFuObf$a?UiNND%cwv$+Ai^xcXi@>fl=xv{j-X(Sv)&A z)!nJTw=fKRsBg!8-CnV?j`GcBe=$sQN$b;lLvGD<@q>;hPWroVJ#S-*oCSDHpUm;k4@P_ zJXUWLpS#~8@(6=<=0?$k8-x4Wx<*W0?k&#;5G4f5tfn*1L9!cRIz4Ag4XtY3RXm5@ z5Lv7_Mz{t!adOs!ztnAc?>M!dNk-S)t52B_DB;BO#u{7zUD0w+>=xV_iiyzz#jU=( zF=o7wq}`A9Y`P2(_$h3!Eh*yq#u@#(jX48wYd%>b!0T}Mpirh;NZ7rF@tnEX#R9i? zxPB*V*8{zS5$7fnJ4ij&cEv2$?h#=xC2@8}l0}uqU$GNcBdbNNf^hrcRMmn^2EL$^5vy-eANZ6|Xw&-Cd_~mAXs5te;tSRuy1p7KbiGUX z7F5yhyK+Hl$pr5)&=4$rx;_jsJ2mps*B#kpEz{Mr=Hw;3;3zm^UEbKd)_2LEN@6gL zYF9OrAATWPTPJih$u}-HYG=oriRC}N^p6Xtuz|Hy3y%x6glWFVd^cWCumIcN;gy}t zLnoeBrcuh80fYtDCG>f}(F#I!UFiOBb(7zp_Z}1Pq!O%;UL+FF*r9Nr%4;VZk4F`{ zZrb=(JFf_W)%es2j#NY__wAo{lNMYJ;_?*<&Pj;!SxhUp5K34)j*ro5lZPhw?AUr# zE&FLy(Hs2XOVU@KfoPt`FvX+4T&10Us!TRI&c5@q=B!g4S^HJr3 z9{Eh=hIha>3UJ$p9^%~R5_*aRw1VE>4B<+Z7Zb1J7diDA;mDd%xt)H*eAhNBL%D zt({S&*x2nxzWx9{QBVm5Vy;V%v*E;Efa*+jhhiR;;9L*hRu4Lu)*Qj7$dQgYVU7`H zy_y-jfrS}6yYXKbT6R%eM4!Y{!rX|MnWFVuov&X~xFi!~c^xMA3iy?`u?t$I%ib&XF1&Kj6B^pV(6Bd+sp}3d}Td;4r_8MyC z)>8Y~I*7CvQvCM9Sr|((4KV@7w15p3cMp>F2XIo%Yg+T+8KHmA>BF$2o+b8eK13h& zVxI7w+AR_}PqAQFV$EoZFEfZ`ct#}|;S{%MdOXBk&hjh6%UB+=%6Z)CN;WezSa?#A zCyBLDZ=){#xEit_znGC?anSDg^Be?wATHHy7cz}nD~5V8bLO9}8DVd1{9~2K6#2{H zht03!p4UtTDB;p)daxBKq*~><^r17v#?fsf{%CCxT#OLx@%gS!`Cq+hQ4)@}sm3JU zVg5?Qs%xHT?c|f90=S44rTw(r&X-quALq}>-4|gj$HGtpl(A*67F0H%&iP| zYRC+jrhK!MH##f+oGds;tp`Pv!@&u=hQZ=2JcLOz?2Np%1KZzW_QR;p@Njdu352RJ zn*QkTa}eu}NleT(CUlijRnee8f*R7q9ae(+!*EAPj#8P<3G4910OU^#~!PAkPD-(%h%iswrWU z-t%A=pLrL34tt?>+ti7KhS6?S#sN|b$Odz3CeFTZ@3t;=0(1y_u}i#AZM z^?qJNk&I3(ujfJ6^sZ55?1`@mrRF+l)(1M&qDqr&Z9Zp`9S|El(>Jm}A`sl$@}(o! zQ&EL3mj}#gYp%4K`mYAaBJwH*OCGZAH(y($GIfh*`u{GlN~%t2I7++@;bpu%_3S9& z1+i-mPc$%%>>_^MBlSlF-=FMl{-GL-(C*^ld39(6!w<)z?i5DVY+vGVu^HQJ%QZ|+ zC-tC`udy1&CJ}pwZF~8gS`_T3(o=YlSV~IcRk=KoqOJc;t8xx-Udu2tQS#?t!Kh>% z4wvKU%fK{jSaJ9z1jh==%nrH{dT+WqWo8&QPjy90Tjcaq&%4yJjw)$;Ckq0=3yG)5 z)&v3!s|G@a*hqcA@r}Qrn95ecpx@ngK)ONAI_u`R1o>lKr8wP~F}lS4YMXm5gUH z-p_$e{o5vGZn}F ztc<5c#sreSSO<)~j=3I`Jq@-Nn2YGL)NEFx-{cWvIID3-i=hC>MYBBU7(J}EgtTtj zWCFpE#0N=$_;k0Eh4kV>E%Ol1eKA=TbSFdW;^CtZ`yf|*nGU^xEMV2 zux(BoFdtnptNX+JErLn_xIsEX1*i}un}uZ(8Xr>rx0d8d!Rk*8Zb9HSBrjom2_4Bg z3LmZJF6(=|{fSHx;iQSklXCTUt*SkNs=SPzE%(wl91QtL>wpfm5-4tut@HoqJL*Wf#%8KS*Pl3^nOm;L#^Ll_HiiZ|;_yW{Eu^bic*+Kbt*Ns0gF_eL+x@60E^^W-bXogX zV@$r>Vxzo%7?0jtMkH=-;mNl#H+RvKfGhrLgf58r@X=}&x+kRH_)GMMFI#i%-#G?q zs{Y)%w6#c~2Nj8ulmJ6*UTr%Oir1pcIHGzD>xRH){tAb&3`RCj2AAMn4s~hI* zTvS-2*+`M~Y~co<2ss+pdRY>y0lXTYTxeY^2$rq1l3IMlL|iaXjqEGp5sNq~h$W`G zZObTuWF5zwpU4C?IIFK+`tL7ZV;DWy#zSDo%j$aVw#EP%2%ecO`{a4PhKmXeOElK7 z3S;Ih)?o>MOE1lcI}mff+J_dYJF!^L9TRH|^gonsehzTCg`jrPog{y$M>E@!S&z1x zWZ#l;{xS{=n1DnZT`Y$AIW}#Ny?#sSi`gr%*O|1V;&R#=6Is*jDpfub9P>lV)uQ6s zS#~_4M5=AdOaryyjucRH7(>2U1ZXJCeTSR8{hCpI0=rKW8I$GrVcxtM^ zh0wDA-?_<$vhC6DnIq*K4xMIOcw_>Vhd#Qg3rx>IBAeXHW*^kDgH$q^^y`aR;aVCxI2etcnH~6BK9j5k%f=w6{ zvQ$`kHQ@7f%ePZh)+`Quwij?^0O)RBLi57CECtm^$sET%=&(*JUHq9~mXGjw<-^x5 z(~hsO!~|gV^KoJP&pDy}#`;7qY}OT
      i~J(!2P|3rLV75SvlHO&RtS=KI}TJ}z0qNI|cubMl; zt&N6~(3~9|cZN))NzU_1nud2LbwEY2D#ZR8c|+Zi4Z@s3= zX@4hhVYpA{ajUhYYBq9T%Fe(^G1FUDns!tJF;-hs%nTJTZ&xbjlIVfcvKbj4 z8yP_}f=Gd2VwzmAt?<(4Qqpr`%!FXSd|9x#7d=|3ovx=}M|S_ z=Q9qzgvsfZQ0^Ntpxz-gVEzQ@=az8oT-MY3gdjtMVnUELLry+X;X9$iKuFuvuc3K7 zu|k)4K7k{baLxagOBS)IgNQ6MHbc(*DDX9*rVfy3H-HG`pbptqjIB^RaG_rRXe$7( z)ft#2XB;rhx-Z964pFQPdPRtg#oD5ttOu#Na!>1nm~<3f+o~s`5wspHuwXsFx3>CT z{aShdPjltg$_NpaA6Dr3+;eTWY$PSIp_$6PhCXdQmsz{t~94eoYIA zp1Y<<{ihKz7~Fjr;{%ySG#16EB_Sorz0($L%ZV=_NV?gQSanh zYVnjE#w@C zT2!s?c}q#sl*Fba+Wga2GFvm+lSP39j5A1tk2S^=H%M5Z63V*HAX6{x8(@w~p6IE|jZiz*nSL=_hwT;Pf*mK1DYauD6`^9<-5)79$s*oKetaR< zKbFDC)CmR}gTKS%s-9_b`d4aHe;N_J4a7!tMehDYEUEQ6$EyE(kYT6a!`DvVd*93Z ze?h047V=qt0v+Z2uMZR=d~Q|}D0x4&Za*}a{>XwL5W3VNCyX#WZw6<4u+I9~0(2c~ z;1J&PQSzGZ?{m*}2KzB(*jiGx=r4qq4q2f$p0Gr}d*e&G-HX|wcfLNr0)DVysa|*0 z3ch!kAvxYM^0*L5gmzcpYt!VEFFHLZCZvCz!VBN@7n~tyP1=rAZxXuxB_f?@Kq9(D zsD+KU&NxPSh1Gzfvdm0#jT4Il3#!|SvF(i|6~Y?6~HQy zSh|iz(b-#t0t=3xGmx)g_Rd0lpzl2?VSkE-O{v*#qPY#i*c{BLh*I4ODR5glpQfQK zL$W#wWc>zGC}!rI;~F+JEw)C~1AZmd2=j)N=*QDI@l!WTBt);WaPw3-`5U|P^&a13Tbhh1DwfnL)+%D$-lo#- z`ECDC5f5|n9GPO^)`+O*1GdKNX%3apIw+OT_&I}|syCVl(Ts@6S4`u~D|eECiOr=5 zW0UdTUL*iiB7?G>eDI5wbw7wJotd-U_d$f## zl@|6`n!!D^=w`Zd6AxDSDuu*bfz;Qu$MsBw1DC2AAs<-8y8oHQ$-5OxG(t8)ZEvr7 zK@@WzUtgJ${L}^ik!jz))coD29+0$Hx{gCdW^Xl_|4bhDmJ6pT`gSF?wuA<1@8tXU z>CTo#<~a7D1}QHv_8=43f47JD>Cc4Pc@c3G5gUUylv_z$p!~xecUOOy{(J78#0)dVB03 zP>$is{F+0qGH|pDV7dVPrwazIdCw(-w>((S2+?l?L69dQ&=Bl}EXGp3;lF!$%iAmr zx(yU#kk9PI85iP^4D~Eb#m?%vKP}cwwyFQVT zQ9Bx9Cx6Bi*^bJ%b}MwSRe42ose&sDFs7KQHR7D>a#loq<&6X1{nVlTxh&6^lwk82 z8jXH*h8#Fc*z0D+?CYCbg|?d{T^)T&lIAH_O}zxFuJjvf<#iN9w&i;u-^AKL7LohS z#5;$v7Mo2sj0iiR!8nd2YQLY%%J)C5x4%$^UdWX&H9b!`xeaYm7?3aVTHhYGBIl60 zW>BgcYJRgbAQX#3+kXPrB&-(r)ij=Z-=liZs@aGcaG4`rf9-c8!&6_^6nef}K~8Ab z{yIl1Qk&-q@WF?7e%2$;P31`qJyz1FCSZzQTcCq6BEabNN1B&!Fl@w>X zX1bhwh7et1TC%9M`=&!NO6~27^@jUem5((3{be@3LXJ^#x}5eQK`$%&1H!JPC^0MF zzF2R)FDr}BdVvBev!nFAA*E+7Fr&Rs&lA-YbZL%aIIkl{EA1PTlFEZhzA~#knTpUW zU(oM;V*KU6**TahCw(@e(w{xI{qz$3-ggAm?d7C53Tt+bnBYIOn-SLOM5dUOm#nZ& zQbC_SXW+^|_V;Hb2D4{N{LO)r|1Baq+toO$g6UhLSKS^W`6L7nGv#C3R2aEci1&l` z%MenkR?*1URtII2Oa0W-J`$SrGG?YIM|bE_pA^cX8rgTW&RAlx)>A&T{erzCvHyG) zd`AS^=oyCMW^guY68tpE48DK$u$B_w6&m;oK|(XK&`%ewzd zxkb-VCC1h4*B%S$)6J{E#iMAE@4HbchvG7inihfyTm@p1M@{RcHV*A`DPN(BjJneJ zdn+%#R8mrsv)(^&@`af!s+Dmy0A-3Y&@|>VqPxgPc1hXi$4a!XNAJ-R0wABQ46I9% z-yf-`z|}b9J@KfoHUb}-=`oc&D(kbJn&o?parNsi#hzWSj%-<_N^8ft)%_>FR5H@c z1&rVLB9ni-i@bjqkJiTHMYJ}bf1|kP4S;3ZqSmV=>K)|Vqwo2%5wc{}(4*m*Qu57^ z!LKSq{#6uBy{x=#F?)PZWGL#d!;NA*S4qpy8yd>lGZ8bD3Ez(3_%fVdX9rVHgpg?F z0LN0?&&Di4KrB*nY&9l39~ycCGz(%Q-z2KolF*4TCk5DPE!%w`4ww*z`(^U1g;`ZQ zaLA98BrT^!Fzice^BI*Cb6jJVsWEtPI_za$+Q@nt=2QtK*_XTu&>3da`3AcgFX#epHzDzZr-D*G?>KU;d6O+;A>{(0TF7#Gt=!MB_Zz;Q1 z&j6;Fvu4QYp9*_5UVS}FPTJeRg#oCt*sm?&+RNQ+98}=Eh-o)L&yDVn-qg*+n-bRC z0Npn!)gM%;-uKOcQy-r$Xa4O`M@hE`(%+B0jOwR^+JA;-@DzK|?sDLEap5M1BuY5t zl8AUe=debWHk*)yILd~5fFRa|q;XLG3Z`n1KM3j5APWp;nL*a3tRte!mr~e?ikV^= zo+ZSuw%EOes3)JD$PlGqC<1#?yDG$$HbrzFKZCPQ1Fk9#p>xW@2Vwe@erf(pIr)B& z{YpeW>a#5rRf{FGWj7M1aQExxv%1Rx3n8FT1}s1S*%BkO64#z@IAShR~k z#s0LJ&+WijzZe>lyLx+3)v?upw?bv}8Hl~*v?*&?GdHI4Du1R0jAVUHWd>;~icM2j z0^#4QU1f-$1fEOL7Zh1xkkv{u(oL5rHBo9Qm~N2mlz4lK?r5p)B2@MO-6qcf7t-Mw z+f~R0g<~8OoU;wRpIm0iqwHM*DKTBUk07^Bm2=*;TrXRh4W1moVcPUTM7P(|M$`dC zh9;b*HFD@>FINYhMP6?2EQZM7dw#Uuc&u7pfNy-d#LdNs;N8=h`#D7aDMyT4(8+F2 zM+lfRitwqt|C0tjNK<3|M%yl5x{>+=7MRCeCLshBf_YNlNlW~k5G}E!s|9Pji9}sC zu3L$=Q*;~!UAo2t14AenCYg`?=71wxNk@n@o7(inxubav~Ujq4z(=E*it#1}y zJVQ?YHR!=*ImyL=VhY5^i0}`Yj?3;P*yF4hW=l9^!b}Dx3V%Fo!wtgYKLm;*7%|A4 ze#K^4*!&P`pjkt!e#2Ek`~p3^b0fPq@SwlePi{n0vq87 zU0;sS3K+H6`+NDTFM55i02L}IwJ;Vyg~)n)QzujqA|iB0NdJD`ohR?B%E{sfA$(p= z_~=Tad0?hS=ngB{_y4O;q81UE!KoimxXPzw>$3;i+n~tT%BmPw*A`yb5->Mbv2%7{ z;NBvdce(v#?XHAz=PZQ#QFYoXbjkwbv z!|zz4gY(AnTP2k+HBb%bOPB0}miXu8J!gt9Z;6zo8*Bxl?VW=f?HFNq1euaeRj!vB z2v{|BidKsfm1IC%DUp{+QqpG*=e2JdVxZ=`=XA_Uu+`T?5>4wnZO~xf>r2G^VTem) z5Uumkt6)rueNpJX(_nwHn)`nBIqrXE0MU$}f5YdjKG02i<2b^!9WqBNLrr*DjDrpi>l?3T8(o-BFP4sNPc|(pZn51z+vzXP05mS~F7xQ=Q1f zgPzsP{@5%R&GS=4L}u~9y{c6H*C5?xmcF`Y?Gl6aGfza6k#$OZbAq|Ki+A30>EPLG z10Y6yR!-v->@Wic=>>Bq@7k+}U5^4i5!kCiJ~X3|Z9ljdud|fIR?xRTuh&03y8eLa za>~aA^Uoy#MENiLxl&?Y+HWzp{*eOhy}O_KILj@-CI^|DDW`ux;p$9qlhW*PC^Zu} z@{+-8e%afLHqY)6GhNR55)5AesKFR5C5SK5^n2^t^~eAKAOJ~3K~!60QtTh0=X%B5 z`6AzWz{fCJXYwlyMRtB>ejW?#J8=g4{#8P9T!ef8x+i6&rH!_}?I%!Q=5G_yU#!sU zj#&SIxZ>JDPT$wUFEjdS-n&?@yE~gGjZT#lFN^3t#nFPVIARyx@yL80(-*m0_u;T; z1<@-lYkE`6-#GRWF+$~-7xap|!n<_mO1|RQ0nMuVBx+Z8IpO{aywd+;;I1tJB2I0V ziZnIBeEAhDzhoYB*R>jHUQ}3(FV{QDejpjBJxVU<{tb)I5xT$N_^}s7H*#g<5$DR1lo;Bim<*EWdL_2F1`t(w+yDS@Elw$+l!ulWprpf6) z5RxN{nVs^o04d3{%ej84@1y&N^*`Lgq}BKnL;(jA$4WQzs=Bn&vk*Q zp?cjSz45%fTnEnf=GuKRQ{_W9SLiw-RAiM^zn>enDWE3Bes?O{4m_#D6rTu4+dVh})i6y~eZ(PQ8XBPwF;>6uo^V!{A;`xV) znS=J6V-E_|`#~%t1IzTLuZ|YPY)NZqNTPH5PQTJndw(eVE-M3_L9M!EIoG}##WsVg z$Zm4ZtJX36JMYLyR!`ry`BA6yx_oJ_E(7`8rL4QDIIn2KfX`?%bY3CHOj*seFBtTr z?%s{M%yU!%0O63N4E&DOAn(3-@VmbrqkXCDD5rlV#hwe0F#OvW89FRH!)(O#qjs8{ zcDX@MNg=JW{I6E)?Y|e0P+s1TS_jyj`u9TmSs~JtBz%Ac?f(G&Qe~Q5Bh_0iSa?Mxo)wyf40U8oF9zY+z`&RofU`PGe z66b5{?&PBCQoZq_Znir@NtS|0L@W_;)V_6aeE3d*xH0Jl`B2gE$sZP1T)U9#A4}0E z%5jdvvbjuzs8BiH4YtdSYgTK!Wht}Q%g446l0!qEK*R8tHW8{ov(r7Nk=Ac>tgPpu zj+lAA!sR8Wu#4xT_&rBy_^95qYN_7&+huygmCNPlNqDD|Kn=hos+0~*YHxk{_3}~{eg=4R~N)t->cFSvMXVt zsvV<#2$Y7ZR6YBQvCcBp0Qskb`Fc;F>T8yrmk}Lx(Ww6_~Ts_N^PDIvoq*z8T`%gUDt8MMfdJhLOJkjSU#z(^=B_GsgL6iKL`|>_XnYM6bEAR|nJP%yuha zC){r+L2D#CfM@i!70dLRzg5iYX?jGQ`_;9+P;B1DrE zJv#Uw5%FOD83N&eyIZjl5>?o_UL)C$+JVro*sE!UuDcz3QzSyPQ}!-l9&^_T>uwHy zmkD+AhWJ!mNul;~QPDo)f+0eMM?n0feNJB5m>vobe_ZssKHX+R@L&y?_&l1ec;!j7K zIe%p|!Kx~&Pg|rn{o@b=wJea)0?l3id>8jzZDSK>;ryx8Q{~}0LqihXq2C%=rq|5| zImc4L1q&(S&xOkrjph0BB~PKBpxzgTtKrq@kMoc?2hNcGnVCOR zm%G-%?#q;U0CP%ztN8JRqTU)%As@4;GgOEcgVGKx}B(hp|8VAFDXkgO+9No-2I zHfH7f7w9$5H3GbOLXNRA1Qr5A=dUJ9_4~Id@j#e8Q;z?V22e}|F-p}!eAHNeySEqJ znX`5Qvr7P$d#L;*^QH5?Vd6W+BdxF`@I6aD5EnseESm28-4w;HEBLoSO7$*Ku~^Jq zD$%}j{uIR?>>8d8;l)ODnKH!7mj~Rvi0{k|3M!ApgekLmB~UzkfmgoxGx-e~8gvTr zlEG_!3G&12v&(qFP^7#QP1x}*jmkBjO6~2{w42J@at>&QG`i9(@swyLUd8{uHyDC| z#B5oigL^+p*Kx(+MkY)vFXwFZemw92}}$D3U#FqibHRpPS?;~R)PV~_Z9 zCQ4wb;R{Rk=9~RyI@zf^19?QsIiw-L7@KpDr>3Ru3}=p{m?e76je;G>W_gGj_r7%O zvge!}7sNRxC}*IRFljqQ&mIkZ+X8e%!`uX~Gui?|ia}jIqx76!^W=UUd}NB5*Z#?m zeKUV}e}N-DF(4YFhc{<@^5sjj1;j*{BgxGu@z<61 zS}{0icCeZ=LHTEaXZXeoLi!D-52~fi8OT@~#j5YQvUDGmm79b>KUW0+RA5fII$kBP zu^In$jmM8I>fty zQm8~pJzLiv0O9@12-bajF>{{`gEWPpw^c>*a-Z4B_380Kkeu^ZKfu+Orle1o=Q#+D zz0r{c7~&{Gr@cbXfAv`OTte4g&e=~CWX;#P`j7cxmSLc7Ley#wg68+*0FIrYZ1=Iq z^-hSP>ygI&n8dEXcYv2sb10fD!J3s7#Yhn!wJ=&Ph7a<~Fw;R)Se4yfO zu3O!F0YdZlvMB#BIkP7sIx8jn@tE3|0Il?z@79u~@(xb;%H{HCP zPZ-r0wR+b4_lp01hu-q+2*VdxKgqb9Wdmw17FDNsqW#AoAcc|&*qP6~F+z7Qp1U+R zG;XXjR-}cxb}L06SfdoJG*IdqZ-$+RwaJOb*T*!E~ zKfWw5$e_vo)k;j)o;%8iU%#aV51NB>3;R-f8A!gQPVHTszh*7JJ3~pUVRG%pW#qJ; zNC;Au2c9B&_Rk!ZW`{-Tx3814w})uY-1W3sb~kQC#Qt4Z2jQ2)n?@fM&&3D}zn8jM z5G4damZGz(2$n7;zqWD0a();VsC{0)_ehF9?(C+s6`qb&#!6$V4f@?VdQlist6lUQ zk07(_j9JZW7XpTmnk(!t}jRb2_~ao_jSdhN{wn= zC#-*^tlj}och+@&uaf3-0tT{crvWWgnKKaL@Z_9p?k?$lk!fA$mT>oT05}$ z82}GcI}FloodOPZm!_om&<@G=mW>i?G zQ*=xvOvMJ-tU-L3=iXJGi&`8u=I1+TM10W};Y6#Z5nUH~idRods3md82X-f+#*6RX zFd*}1d=exe)vgzRmt1!PTo#4?y-Yu4`@e{#uPLGssg_mZ z>6805W}ACk)pnN+B8iBs*1KMS=$VqPt*xfGkJbKy-i~jN5Z8zuxlBd^rOeqFK4foB zpW0vi%w%)QbpE|&@|D@m%2x}C~-k__*|K|glXts>$7Mbtl@ zRdo8x+XDYi7oeM}Y^+EeAR-b|oxcg*CK<>T0oCosX5S{P3Cv)ML?R*w5PJ0-xk@qO z5?u31Z7Th76CNSn!;M#W8CF!w*CcddTe--irF=3eOes3pc}77S^9Mh+&JRnJR%Pl!Tq(+SS=Awd3`Ac9OxgP$u9uxz7o?=juWo`j zCiy0P#za9Z#!_9DWin(3uUk?#-7mAju?NtU5xSXm#B#3NdAVLYs~h=bV8%@0S4;J} zZ@r{HSr)1nitkd)E9KN#_%dx@Ls&Ce1e1`X4=l@oX>;>)ziMfYZUZZXYnVy1#W(#$ zu-24-hPh_Lb+`5PwJOW#lrc3U2x^_!#+1XtQBQhF!x_}+FD@TUfD@t-e{0(Xf zHVPZMVAX`WLo}L>GAnuiHBzNS@6~J)LSf4wh`2 z*F~XUuYOOYQ8q=}7BYF|c_!QFrq(U_@~m$CMPn$UK zvjKo=EgbLbiG9Ez8k*6{2v8I3+MU_u$E}%hI#~!Wrw!;ULTNRy+Av^A{G{s?%NjE_ zC0KlKv*l+o&}~X7F^I4T)(xWy226x#@ynH|Ykc-V{hYw_{#2KlfygVdNf72z{Ny%gFE;BS_Dq+;@21{%$Vts@U_81*gH0A7Sk#s6a$iXA8!lNBb~18(EnlKV=L``tSSot4&jb8)u6AB`-gG(X^nGEZMjR zbjhe-WIReR&prPG1}6)~Xem6~>L+f8!I&YKjn`}m8LE&T9vVUnT`!fFbtvcv>y1Z5 z%WUwUdjOr43$;clBc(97O~pHyrF?$G1V5-Pn-Nfa|FNfkw$=enArLpE%`r+?Z5zog z%F&T^mK&Q7h|8+6rzx{(WxQwPFmCv{Wq4_*4)hFVTFzNB>TG)DIOkmDgT&1jL^SIA zFdNGt$AJ~czLPI0ib_iFn!6v?ffw`sT)p-eMsao_WdewLLiy&9}wr8jMn#18+*XS%_$fwZPxe{Sfc~tQ6*cB17aGQtwM?N z*p!ceJjqd2L)U+LUTizl zo^wMXNp%g&MSW9l05@L6E?)%uybm_}r^rdKtb+}n-h2js{SN5bvp$L19fFEvsaq`u z{^d9r+M3#|!~>=|f+R(SN=Z2~9Yt|;kMXy~zo=-gP%(~QSN()bDdFw}NF*kjIg``h zT8ub1pJ5JYR+v+F~ciG6}Z0Lq;6@7_D$58|g|lHD9xq76g+bQ}Oic*gggbJg4g`>YZnn68xPFD#ZyItSd7MVLwKs*jm+Sl^hA1T!lHwz-1@uaj- z@=8iVdi;i_D{iV4`Y!5+R#a2g98;DBbPsBM`BS9MY3=&C>N6`^A~1C5Tsy0?I;*of z3#M|*PocKfm#R@NK|$;@>Rrdd%TYdCbQA+9V;MQN9OE0NtE=&|ti&~sN55Umy)U%x zKkTf{x5Qk2IY~tP55B}t4bd4ht(Vkdyu9Isc9d-QMDS)%{adg`#89*A(n#Z4AI z&Lxq{OW}&x)TU8tRDhrNpB6oLkFyT zS>;<*RhJB2J($8zs87M{xoTHFyn6^DQsM_J@okE^Gh*V3FmPD=$@NC{YfSVhL2noA z?KMW;ajslmna+vtg!CW58l_7uwTl<&H4nv|?ccO(9#T=&8ej#z6ZB{Ri?vxZS9`%j zs4I+M*BPAnrX}3?yAWKmS;{rCX~$vJm~^a^z%nHmalH}-u*UlOU?I{8)NXGKT=IcL zN2zsIXLVL*{YAT1M%9(GPUQo0pz?mHmv2f*P3oz-$@VhiQqFkGfL!$p)y+>-khgau zq{j;tXwwEez%H#1;ZsC#_SnP>&u#qNj_rLpf=2J>^=i5uXP&c~+Rue}7Nj$Vsol9F zC!X*E`p`<{65tZokBo&In*1hIqJ`+A2z~CNvtzQ zv$I;R1JGJIY(r#qu6!X)W@{zNL zq%X_|OY)>Dv+HC^VgexziXM8XbWh{azq8mM7?|J~KhrzAe2dt5tXs%3E@yGT*h9c+%?{5!t8_y6pad4{gf0Y<4{(O+%H+M})AG8C z!aJoLh8Z6~h*45&h&96Q{mH&h?9r<{wz&|HMnzGh`#8ah?KMP7%o*y80Fqs<69FLxx=$Ilt|N8M+uA&%P>ohZHi1cDFRZAU{h+xlFb%s z7vISR4{qS0U>X&o~l> zS#_*yY~A$3T)q8`b6?wp>T%9+YMGPl$!u`+^a~6=G+IE@vA>%)K+Xpey?ttD`)Tv@ z^+(H>={09|Gw~SE-#UU=i@{8eiH|nO=OUtuBBINb;cpn?&qnCG1nF^or;4DrN34GP zavl7CsMd;9)DnA+*9u|0IVH=y0I3(`!sIF~%X{|DYknU+ue@MGJ9=Ax@r5go^RM!J_><`X6z1H4*3vO`StHus84X;Q;r z5LArs8&T{nPJSfrD5}ottj^lHSCqE~ImEXN?YTZnQzpRFJcU?F`(yoV4)qh2$IG6S zJ?E49?~7B?Un*cI$25HdcP32JbZpzUZEK^AZQHhO+Z)>(=ZbAx8{1C4+|PI3UohwN z%yd^(SI;24Rmd4_MWm7ZpBJFv3?}QM!LNG4EK9sN(ph2fg7#QG^2CesC2^pHFL#4B zSj=FtKc}#7xp85hph{9J--n*cGBOxti+w8xnpvq4l$V#1xAt$b$LEu;%-MT(tcE+= zKq~X>hxz+ulW^1%=Opm^^6sHK`n>=JN4pf8}pAD%$Nv(IIUu9f=iJ^#)hZzD>m1@Q34} z@bVi!^Bxoxd&(EQ$OUm~I=mJta@&$Px6(Y-!$$=EkkW>~`Sf~;Dx%n0#gNTgx%XdM zO7`yD+Uh8mWm7pbP9-sMl8CCD;e;DDR+tQK zx$#9)jsm$$)#Arw6jeE@@m&6r1HoFh$&IxC33>o&aJJp)bVLw~;JPhH&07!Evvgn0 zr&KZIdae_8`luJ`Ek~;>+eQyZi2MFY-cD?jNSR2@8HJ*VU$E(mKWggO&l(-^P;bmX zZhtJ#brYvMkM;biqAX@DOLeH(@5{J&J*i#G`LP94%WL5tw<+auiZpTd+?SP{vUdQ- z*i#eDZ$`gjji6b|`8DA4`Gktw;fBSecnsn??W7x@dJBYNh?I$M4!ON#lRA=mftDeI z9fcecB4z_k%@T+KEEO3Tkwl>48K52E{fS-asX|?jEFd{E(-7V_-eyREHas+cwYm&GKpxl@*P1R1aML)5JncP5} zWD!)2NtReL)Ek9-zZ?RdFS0(-Lp-&6OxlSzl$zT0K#e(g;=+08NC zd|43ZIW7$4sZVpfFuVZkp?xNLtO!P%yNu=kw7YiS+rvMig~c<94O-vcZsaKC63|62 z9UY4oV#Bt&-0m$U6B4;lPBj3#a5ffpV9DFQFvmQL_0J$K<416tamqlc_5d%1h{Sue zd~P7xA-E)%m=cQ+R&g)0*FKmp(~E2N1@135iY0|Zg-hk`?#|s~|E~%?9yhD7bjVu1 z=OV6$;c9%W$02BBQ22XXl3hK(!+{zv+EWwFczSAH#z7(3#Vm!~Z2jqYc}laJte z*rzt3kctEmbfBo5rIZv@kZFcVd?B%C;Ri5nAt=8~SZC=rIvidk!mL}C+8H;WxEb!r zOo>?*WI6j*Zf8CPy{VKvyO_TWb?`rtj#02QFu1vm=al49fjBzrl4fam0)^-(PboP* z95x7K@`f)z>B>Xbj|F7Xzor*5xZB_VAEeN8In;+OtXSe_F3ksp0|5e3BbL0;9{n{% zC0IMpgCo$$^lDf9W0EWavV<7@b@$ep?G(%?``PK{=t16FI>E#G+f=?0YQ!97?I82G z4m7(B4Qai#F@V(E!Bi(v=iNPI*{H8kQx1Bi%F~bvy|nG?N{zd}bL26yCTk{EL+U09 zBBjM6-T4v%p`ZI5GIxu5)p{IP11JPlG@SxYHpUaLiSoIRb&)vr{)M&9nA4Vymu^Rf z5p^bFnY+BYGa8sG?xkc&s19jO6oZOj%eO!J8=aB1pR1TvGI&r8Ijio}Th9XL?4zg$ za+@75ed_d>Ow?Q1aU-|Qzg)%Owwa|V@>)4h|B{T1MtDtZOGq@5va*Hz%uzUZDicVY=S{UoQg`eh z==i(OWp3YmzPh(fPI!y~wZN}L=N+DYI`=UjUfO?g=hEQ^EawF4%iZjb_c@jKzB$@u z?^j3tX~c`QpuDf)xX^D8mb!#~b_zyO9z z8~atnq-VOBjoZ~2!u`CY@vK7)B+QWDAQ=cN3%505@1@25my&m^n_v3QPTd)oMYEI) za)%l^cvAe6*Um2M`hU=Ny)x}UNuP7)kpRMcR2utmppU0bEA8alL&hK*dFBa!)l63h zq3r;V;Q7}e>CW~tJVNaC*Zp%_f;GYKa(=y_Pt|KfYoMu^2|$%W93#(McIC6MNr616 z`1bikCg_Bs)bGU#NmRP(jPK`uv*r7bgo*17ski!@%l;Ds_Uw|h1k84`f>KO?Po9AKBR5fjjQag{9o7XR# zZaAGGi)X75z$#mtm-)W)@|v(LHpR6`+kv zk!j(bk!y)v>jQ5^I^Lk#Lsr}$R-1sdwZA9_8oyxKDIhiz` zt(p@l-Js<0lMq+l)!;2|utagdy&6XG8BXA1yRXlugQmCakjev@jl_#^*IWsUdJZY< z)8lsHc=P7oVRTqsWch!rqD7oxVWx1o=o{6gXW`wDLAi5$p$H3LA$Eznc+B?C)qKto zi;&mok1gKiHSXWH73bL7Np7fVFRDKhDl5$2M;|7XW5#L#jicWd$+$`J6#E`H*L)P; zuZ1Apbd-**jM&kqp86pXNm|i5O(z<2cFnWOVZcrN2*)EFe zA3XTCJ+r17El2t0co2Hv*Ad7}(oe;UO)e+zxXhUVJqTOJ@LvD_;Yp?ctzZ-K8ORD} zamIZ=aYDM_r3x%`n2?#{WpX||78AyE*yI)cy4OdfYI!yEFGeT`tJ{z- z(4IHG2bEWy*xK+@7qmyQy1o^L?ZNA=eo>>Zz}f#+S=wuWaF0Eg_qx2txOc`}jet>A ztR!bs7!e}DR_H#1{pBc(8G^!zNyqy=4{m#?TIP}lt@vS5s#CG5B2_~x%52GjRE-aw z<`D=i>}7S~(9jHrbSG-Jn8r!Ef2i-e7@VNxO!Za}CFH|fs|h%w)JrcH+VM@ zT8d!nbA_%ODbrTxRnbBL!8<=+d|A^L5~&aRJz4L8%|)M30g)JbKyf_|DYdf0Vq045 zW4a>e;W-oOC>WYKki@1d8R4(RBl#MbohsXkV?NeAH^HOAR2cMYL6tA~*LTzNk)sp( zO83k2VmJREaNu=j2|cD=B-snTobcdW4Umn17_zQr8#g9|RW1rY!4at(F6`58vKhJk zL0qJ#B?C4=TuZVBNa{eK$UYC?>>(^%XekRwTh@iYXI+AFOEn!^{8j{uYRcIpo9Z8&NzrFDZ^4z8BB*TUDzj{;7Bktm+K3@iM?L$C zaTxSk&B%|4Kxq!@g0rveg&$@{CiEg2Kay`M;0%=vP{_DjVvV^#qY8IdT;PJ&cI11n z0o5q7D)qvBOA1XhfoB<$cufw_sQ$Y7REJ^TBd`8c*o)F5g`NPo&7QKHTm(Ua5Gx*% z31wk#eyjQ1=%quok=R$&?HRSt(077&E)nD_Ho{w)bN$tN)d_Fw~bvLww# zMDxry9PO=}y+xURixh!DzkY(?ur@F3hbGu9_vZ;!2%DH-FUg`uS9~3bSP|xI(f(lA zo+nk^y|klmb|{3|qjq^=1h)FnxovL`&g;*!Y7{UFSc$BZh)s;+y(pfaF9~bc-xdw* zj8{9~XiH1%25o7G)3cG6BK4dde4fGI+urJ!vf#P?l{KYce|kecZ6gwnm{EmMrOGak zGTUzW8Lo^V=r#Al3ydL)ioyEr{=pGF()PTW2EBoZ1}3IFz=|O!5(E6_df6ZVy|RU@ zUwCNqcHCY2tC|M#&f%qj*WfZoW-tfW=xE6(?T0!I4QPodYD~_Z71DXion7AV*puJg zXjT-3MJcl&11L#ecv; zg3i&Ty82qJQ$&8Vot$S1W9FS@q*SUdGh|||KmNic3%p^<{@r%^4$&q(Jk!KNv%A~X zJUtlyo0;l6qnKtq9MyrRjqTw#^kBGS5vAkfe&A0@*BKr3Xqbk4Zh z_U#vr4HisFZwK&DCW~;320(PaBlH!&+x#AyGZw=$Znl^kj%ly_hS0lf0(*-F+6}7+ z$2CHp&p`^ElNV^fdcOU2Bd9)Iq+A*T$=(Eu@$38btn+i|dA}3c24yjAJ&xPwI7b>~ zQ59%jD*JYcduyv4wF}=bO-c0lG&be^A}WC#?4-Mtuv6`0(-q&M;qJMv{!N){W>Q44%I-7f#$nIo!A|m zL;h(m~wqW`4FR)N+I-$)Yqg#ZQn1{`aQAr8uU)++-@q80^Ac*eGfyAM+R=HvTZcezFkdoGS<9-uA_rZN7jeE~x<}o02FG|NVv<)Or-HSv-+V$^Gu{8$$mPD>QyDH8srGDWUJ?A8Z2(1(@))in$#>(9#L&euc!WhNWoDNo0$vVvof7TIbKOWB?frI>AWiC#abi~1jHw`F=$zz3-Fg=nUk5b5xRr!iW{LaNysR>2y zGcR<~UyVkS3C`(0d%G48k2bR$GqJ z#EEi_B-_eN;)GhY3Eg&p>&K|IojqO^c0?6@uE48(JRu44Aq{-%`)m{2ImD2SVM0D& zIy7EaP+UH4mAQ_+uM1=-QYr?&I^>DSuu?j&SWP%^UkKf)W%+Ug2*(1dX4YSl3Rgt3hjs8h7y9(3iKM0u@-b~ZRQ=N(>&y+0w_=mMq4_@OAD zj6kf9&Ro~ez-3!ZDKH+ldc5M7TPOLPJ~I<|(mP|`a&W<^DmP_YYkac=Z*Q1rZP=U9 z`8^2*&!pImk4`&dNHHWTHaGf$;qO{RnhduT#s+el;rP#!MQ6A;JD?@8P1MYN7Sw_D zeTKm(hiW}{sloMk0}y9||88Ka#t#iHY+fdTl%rgD4ClwOUF=kutnCt^86xmx-jJ?7 zkpn4=o?*hKgW8i(t{DRp6bPT_u;g}iUo?$4c0I{;v?cp&ff}XINQIC8Fy8OjqmQp0 zX)OO7BysD5d*3<*tdRgQv1Sb`ieVBEIA>LVNKRjA(H$bj6e^*OHL)X-^Xd8^ZOR-q zDTiJ51&3jMSLM_J1NORAmbumYJ^(J$0Rt?l98$zsszs!*lNOcDir4N|If0(;Xjora zdZTDza9i9M#tj^>yv@PHGTJdmcru-HPnix%Lty$x4D+c;z>4Hu!7ed_7h^*|k`kH4 zz-UB5Qjp)VoC-mP)Nxl6gD?}uD%xb(pvIpPuzm(BhHVU^$GijjI=g|icr1fVK8-Xg zD2dc?WVVFqFk%s&IAKoNA<7;LTHLiV68P5lIcCWK_6K~RX63l*x^*$)_McF-{Jr$WS^-y{ zoYaLgmJ(xe-&Vu+I#0UR8!zxj@=xG$ib{&$fb%3~XaqJnWE2P!R2*h<15 z2R1o_89ox??M2c?NS6GXF;JiivB5co!k`9y)GwtMr`Z+0qjYRSrIp5;y}{v<#$lkd zdJg>M`!v%DrQFpvfzLT|F*~tkq`;a)TIUtB6%DV7Q(#cb6n+s#!EOsYydrzH<>1L+ z4qQm=d^lCI$pY)makH3NxPZ`#kdJja-QrYo{a5gpjYWm>z*40-X;E|?06>TMhSCsOY&ev1>RNv zt{_P!1dTkW_4Tzr)%8YtIJ6ay%^-gqd-$W zi*34wI!g3;E7Rr}TL&RYqF4-w#v1xBrGEjnc4ng><|ha*9Z2#ZgFK(GWWRJ+qn6VM zbpjhH!wix%^f`lvNYl(x9q%k%Q)aZjF?F1j?>n>@BjIR&{YCBVL_vwKPsmJ}+aqR* zX~2=n0lv>3Ve#G~ckO^Jh8p{D`lt&pQ6@m4Sq8A4-*lJx=B<_wps{FP^84M0_l6;W zd4>SrJOA9N5O4^eY>UKOJ%deA&ucgdK~@?!d)!9WQkuRO|2*mA?*pUi>5Awo)#ZW= zvE~dR1zi;2sw~+^GL*Et7?W9R)*UzO*=H#TFBt`r@F^%wG~D-K40_ZAry!FjhzCIj zDBqK*9uVDcgIFs}BdF*lqlEQI|96yx&)L7-6PAThqi~6v<~ah395l!1RIl%&q59sz z!fra;@*0T@Gj}}BAaqTsjH+D-E51T;>M{SZ4-WnvXd(hGgOqW*78tWMin@`AWctkr z$g3-e?n%zAKLLn9Ui{MKOw4chu*|dA182-@*dt(Pw!W+P0603Iy7%D*c2HvGL8An( z$lkV00|FHgWLj^8ppx3WDM(K?@d-zzf=&lEU-L%c%WjqRFE~{4blD8k*5XYj4LmE0 zW(>iXwV=1>%kN9Q^GX|7yPi>^*Gl0jG~$3dc0;EKY|(lakRYc~AhK#ex)1D%-?i^U zOJrycDF&6c6wwC-6e8nTzs(f3&FGT{kO693PjdaCiI6?R9*Tz1Lda%9hU(0sNw@`; zul@BvGbBQhJpPW=GOyJcA(&Q(xQ2fvnPP`eJbiN($}(2|rZ2~V? zN;DtPN<%Ei&?0ZzO%8p?qQ435NElXa`g>={i!D8os)qgDjXtFRQbvdJ{QVWaEN(fa ze*A{g1-|lK(;qSeTFHT@C^(WxN3(=Ys$QGc&6v^x2hQ_&{4&OmdTMNc6Df*UWJerm zq4UqDVeQLYFkK$qF?}s0HU4^VW*hOwc}R8!oigd>b<$8;eEPd#D$a% z26!ZH-y~#`&V=y`B-RG>Sq}WacGtGA%oh)dpRm;z7~7|c1R-r9PIfbrA<*IQkr9li z6ewZ~4K?_NcNwtiFG(ltM^W@RG^W+*bz%$hB?ds^_%jwF;2V6_5uUWDYNE9eQ{4=} ziHH<2RwWiSp_c17L*?G4+G%lFKo%vUG{ySX7dS>_dUA3+j!w~3aSfXQ5~OVeDHT$L zVPh%B!byEK~+)W0pR`+DWwWOSfWhjVdX*Kx5v372-& z#s7dRNTR(8pLdOF(X}dleRu|~hw!}u9Xgt2kW)x*vlHM~na{6{K-8sj^k*8G7g>VL ztrzZk`aJJO?#K>QC&Qf>7J8CXm^_V51PzR9gffc~H1^X|^TRMUph8NGFux2_bKT4P zChbCa_gBxU*8Cb1fxK*NX}e7icopZ~f}~tE7x{!!D$iN=dK9XyqP5S@<6SFw+Ga{- ztU*YD?fV%O{>A#k25KNzK=ErxxYo!MyDFbyLxQ*WhX$N_O?(2YQk|n$)vpJ3#g5u3 z4CX1ar5qLlEXyfP<4FCzMmimbN8snRH?L8IBPYSWI1L_@hnu#j7jWR|)-uI@1I0)j zG71KdFU1v7BQ{pAX(GTF(*7B9yU(?TK7*Ff95Q!et|TFY!%EeBJW;dE%gDskT)lli zu|{S0I@aiTR+5wr(%G0MEVBK$HtVr>_QDqyEO0Yjw#5#bTNnPCbF@t}I9^p8V4 zhuq-}p5`7Bd4y|QbLRDmTC`0TVmr9~1pod_t69A_1nn4@cf=Xnt{6jd@Bp-Kr!{g- za2y%hs=P!@T zudt%nh;XQfT}F)mxkdLW0>%xK0ACEIVki8`iNZ6K@gsHS5O>Y#(Wy&G%tL@&G==wq z5^~DI1TqYQ4-xU6RMzEre->~gXb_JT*fulc6G44zM_N1~SHhjKvM1ZUbHSCsadqAO zWTM}paVlTp?Jsz=eZB*$A!VsozXZyt1VPnKUIs~5n?JDL9?;(TxhEH=o!Evt;}J+x z1JYAfx1K|V=7CVwlusR-PFU@+v@XcShs|#{$3o&9{p6Zcz#!*+fw0!e0C#S;y<(HN z^$%mWCxXbcg2qTOLUBT~WX??#CgAu*K^}2Y4c^_L)QiP9lb89r9!KIs&g2(vUX_O# zLU7chw*PKT_2zrg|K{Wu-Romj;}p^_hG4{M|7$Qq;+mE+|q z#>S6D%SX6ATMa|8VQc`|Mdc21EDKr>t8vzTwM6D_ymSX)rh!$+v1K^G3H=9}#a_>0 zlmBz=>DRZX%Zw5ZQDH~&5wBSEkftE7Sx=L%nXNG;693N&aFUIB^Oa2AhzAl&sZGof z2(>21r=uiNU{2?UUl@-AqiWJLNc_+XWPa{2u;UuUXjtwC%E2NJb(b5_)zm+qhy?@h ztr3v4B0cBWPhnDJK6e~<6Q~L`hGW~83U!DaD0Or#4P8)yJPsf5BQWN245~{DM;9dK z9#x&2){C{LrI1L(ve%!oJn(Na45^!~-7wxgbI1kbtZGCHMze8{|AbO$Ty8IzaKQ^*Y_W!QoGr=@iF}&Wc^dzS91Md!@`2P~- z*Ga)%@T}P;Y_%b}1{_nMSW%9fyK3?f0fQ<_Lk}~Gqd7+Y1b247pr0;;3?nUx`8x+! z418PixVs{3+%+VssdaTEiL z(=g6mqVSG2k=~9he9Xqt`1L3R*Ex>~*z6NU;tb3q8BL1lLqFi9I;r#_+tY6R$z4xiL=ey>hTJS{CMY^F^JkXC-HO+Hon@`ud3Y5SP zB*Cdr7A03*98mRFHA5pfcYY|@$yB7Xbe4W(3d&X|8r-?l`Wko~_}#~xtdhVJs??7S z3UgVJ20|x5h2Orv7TS}w+cADseWNw5!8r$rga#x@7Tpoi6APghwpQmZ$74&aE_M9q zhPFfW`JA)SvEkUb*$j7HKKBG7PlY&*k1;qKPf64l>J=}|N_!2d#HNU*o*q!>Rkj6Op;?*2 zH5q~WzG%%Fz{O%iO`nL&AXI1!$Tj8;K|KV~>i9?J$89?2Cr&83YO z6BvM4L{5DMN)jSXtt<7QCh>Dfl~Fk6iyqSOwznOq_lL3$ksPU|=0Ki(K-RLA>6uHG z8T0Sl-A6Jxvz?4UbZhaDQu`z&57cU%)sMbkn78Y56GKkab0h$v6Ls3*On*mLF_ey% z4~6j(!X1H`X=?ts4Z#8$dnHvl2H?*8b>}r}8aX5}xX4Y>h!h8U1%$~Tx*O3)s;w9k z)dZ~*2EMSmLhV1zgTBy6&z~dt8eEWL(1C3#fQ0623~<$H?(WIKFs*-3Lp!YRH%Icc zXW2EuFgDcEIPeilc;FF?j>Hj>*yL{P#}*;2Y)*{>VBxF4O)3Pp)Xp>T+(DcK6UujK>0RA0Q-(}VN#-wxqe?wKDE9x9)gpM4h0}g1<&&-*?u6+K!PM!mY-$&| z8DouGT!~8vZ~@^U^VBL(ZzpKTiHCgL51-%okIjvJ#2Yh?;0Jadaq-ns=iTOV5RwWc^dKjF9f)$4LaF!RAw>{Ms3)fJ?V zFyYu(4#aI%2_$jgrl99T@Q+=IovFsf>-p=+3&`b4czP@-a$N@&Bq}uIms`wM|c=BfOPn%XCU;i<=+0db@dnK@t3>6IA}th%w2QPx9}9;e6i=beR{t zla|5G!M;31Qom6W6Do}Qe=|)95fj7PdNo`k0F;L3jnFBHi^OryB@79;ztOUYbWyy|q-~cgztf2u6-~fdzrGWGXJNL$A7n)9&Jp5~rb;nT`INBy5 zalnq7D|kJf1iO)*{lvdPfa0RZTt_{Jx-UAztnP0jFdnFu67<>Q&kowO_f(EGO3;w90+3bpCmo~SQUM_`)HFI_eJs4=e#iE2aQ(0< zdC36F=`zd}vkc@23+ej4xV+78t@#wUj9;7DAFn@Mmp;(bE>zTqPa^SSZS)MRNamAp zauldlp|yEHDNRUf-wY`CC+fQcD^?V6te8PS4heU_+zx;4^xHf|X_bx-^>bz1Yt!$m zot|c2y~C|>^-C{AgfA-N4_k;~i-)E$W_Jn;LR?9bf|OZLp0;^|4Z&a+vS!EdOyR?v zUk#s-_9Y95CW1!t^VE(oQJ0Pp@YN$iQGF9zAD#}Q%Ck{+4Z#OFx{1d*g_L}sqb1Ip zpN`}xBNB$^@?iCA!Tk4k3#9?)bO%rivViGRji-Wd6ZM?H2#ibDM3ER$Q2z8nfk{ch zNlAIuS!Z|)22et~uW&i=Bt)E(XJ8M+0OP=av0&_dkRGLUSu*6mOorV~*dz)5J#$4u zx8~Ooy)LLboIiaM`lvpd^&I(Q-{^<09K%TWG$FzC(8%16|6mBC;`TQ>1#Ux3v)U~2 zd;t->PdTHv4(dC51f#snhS_(F~<2S!9S?TPa-xqXrT{6#Z+tA2mJnZAV4{-*qPL zVL+yZzcOuav2j;v4ub#nnFDQ}j}1%G^NQt51*~;C+?;XFV%sCbupNcMg41ru1v4Qa zZrEsCp+D3?G~y3|Qf;Qx%(f}|o<?apdEvg=X|^Z524Qnz9ow0V;-wJqqZE zxk0BO@ZGxsi~6$VBr!h?l?GcmUjapq^2SM~Fc6+$Gk+V-mL4xTVRxa_NJH}^1h0VD zY3PTTKnhGDT(a*DWKQ?Lkf~hMKwhwMFA#+XA8=;!bN==4^#&k)>Pv6kGC&E24+E&y zKR6_@`$U^PdD@>bsMv4}Md^|&1V=A9IQVhH>)W* zk4iR{fHgNo4S(okzyfST2P`bC?=+%nzRiJ~F8^@;^E9JXi)mWW5A<&ZBo+4A9BF^Y z6$%ar5gKFwp-6!I$_Ez#pcP*xEboT%t`S??szQ%wMrr!0z>l3}x(r{BiJrQWke%Cy z1GSWE@9_dpPHtriJEhCiq9u5c4;NldDP+zi@E%E>oWZOd(2%$lWMk}Cqe6|j=)dmr zNWJW-5uu8oTsE-2Y})A-{ZyUHrhCTn(j-IJSW5=6@!wHY7S-`7I0nqX($RIr9YKwa zL2Ba|eHm;Iv4{-qdlLo@-Y=NE2GhD`r1}dr^|pRtHqnSc5h}G8xDYBesMpeI^PrTfVQ)solcqVk$1D^p6iTddzV#a>gWUTSw8< z`pxiW37*5pbfTX}&`C3VM(B+L{m9F{z~Z-gV+HOZGR5y0&&UvrK$thl&GdD5CU?5I z#g9jTA1hP%Wp%Z=)N@Lg7c z!tK8@%~K3$)^949;2w0?VvYsEfyt$fR`vInH_6GC{KKNZJlIzn5f~z~9*`3F(;I59 z)1$I9@KFD+Wf}#3+{=HTOvJU{As7}lh|>-$8-G)r|GUtVjh3hlatNkCmNGOdy9;n!P5w&|^;)aH12U7OwsGr~sr&+T0cz zx(-;Wm7ezq1=oav))xbdXKmt3|!$9hE7el2Zzgd<>BOHPI>E;t4ccH+s=#P+)ZR43G~ zkEUNfgj*mdV7$RMo^gCMXj3-pXigjgI1v-|wb>8n% zZVWG^v1X{ks-})MM9M%ZEMl>!5f%h_iJ_hI-=FYVNG5)0%8gRi15=xRy0Vk@8&kL0 zj5|KEGSCe3qYrY1Rt)TKO}*cO$2d=bSmCK)3+QN6Qpop#+en)!N=9s5S?2ItecQqd zBFVxp!1Qoq1UxIZ;rmR^^?xeL8c=D1Dgjpy1*D^+W+L^IeZ9?YOWVzC#{Dl#$;uJP+x#TA~s5wnqXhYi}v&FR^hdCU~dwi zK0I-!8>}Va$>3ddSn_iu36>g>>8#_^r-$3ANyqN)lP6SH1Rn1N9dX?}6`72#fU=~nc;ktPwc3*2Oonx6tEDX+tlBXcGnxAp~Fe2ifTgTYYEJ@PFy&b zLrNF8+W!Gnq>+mtHAqDzU;#^juoajB`7b0zw_Q<^uq<`D6-q$r!K~xFTF>ccw&TRz zk0?OQmWI73V5CD#rs`0)RC&mMJmU5Z&A|7|us<~>s|hGh)`$jxYGLG*xy0wZL7 zG}`Dgx&wexEYv;L$b;40++5YOE`G5hErr%Plj+jGyPG{T+wWEp))*Yy1mvfiq(>US z5tAeS-q^Uha=35CKu%`)v*VGGCqqL{SsC$Ef|_sm{&#ayRRBXI}R6fZBFa3$5_ z^PImMFHmb(>#npfu^!o;d~=fxG5~>IMP#QZ(plVBA&rty&-57)FO|?G80xp{ev&kB zPMGqk$nONHTKJZr4zwCG5Y~wm=}Xmx5n^dL`illZ0vuJ4B>1d$?C6-f?GQ&>V5J|}wC=t){wvGgv%O@sh940L zA%Eb;(*>47Gw^;lNYUVn2ZN$foAMG0me8vVIrK?&m(Smcs* zVb1xT_@N}yv#lw;NQ4z*dX5RSV~2I}%1!}uX1aBMR7N>Nyq~h>GC^jTMI&A7BU8~0 zfDof4!zG3hNVt^Iu&}XWxKSB=67<{#DPHeV;HKTh-sX)9{5>`_#a|wwvny-pSQE*_ zNG-lg@VvVOuXsFv8$M5Nzq0Dt*6S|!#P5PulcT5NP9NYB9SDX`tCQ{PGB+ar(;#U} z`&T4~f|c2iB`U+V^!tm-4PVLe$x;_{;2(4pK8YETF5)aH#1Ti>m-cWT>xkhzZ(YBw z{dQEg{7%%y*B<)j7nrjuW+d0J7>+r|{gk?j0yiR{wrCkRV$RwJW$&u4Gd{Q`PALFb zb3S&rrK~4tJMYw`k23n1`NQKIvi=8@^Tk@b)0C?Y&mb4cWn0?c+7?s@ON32fhq#2s zaD|902QB8gQh9eqkLyvv-q?;>iIyLHNe7XLM7rV{} z{}w2O%p1A&=bATXr>3*<{S5f{S2i*!f@xQ z`7=)V!;@V-lH(j&KR*ywAMAuif?kz~r5qdDgBJ)3)Z)%(!9)wTXv|}eXJp+(s9aWg zG;OB9nQ?8D)72ZU>V&9ygd_>1$#9-Oz)KKD`9P}HuOl67oQX}-r=g@nwYt8Ba62?GYUN)_6h|cP_@1iddJuw=S$HzVI%v$i6?!|4#eX=eClZy?Vv#_Mz=Q?6 zcycrW0cJrK$ONn&Vis1x?3m^aoyTp(z$(OrGXP(xHF~a>RQ%X2bebLp^>5kB&>QS+ zI&LSEHY(KAwC}ThYmn0=+HTsuzRk)%(_#GZ+4l3dgsnW1%sg|X6NMN*3YP?xfxZwj zM;?@#+;3>`o^hvy(p;RkEK8T8z3jj`X#w@Fxf~f7kU`m-)7!+G}C#)-kv@=_`C0R_0F3!e6CA-KJE&X9h1Duzc|yf$A$(bTySjC32J^!k`yTH!kj zHJd=HVWDKP@NJQ-B2_*!IUU43LsLTtZz~XVh{sZL0&$n z-{)StFkl`U6HdrHfB$m`Oo0U@6q>c()|9b9(2IJ1;RZ7my4gJ8Oo5Q86T!8=)RdRH ziPtuC;}ml+eXnGnCZW0;tl&dCgq({(!4&K?vQk4BkSVNtqi@gky#=26sDXn}hJhsY z=0r8^xbgjN|0j1O5TJC_wb`@t<93=Hd_iaY^Sl967Lo!i*Hyn!a2rlS*6ORzifxtM z6CguCf3=_kt}SF{AUmuHt5iIVzuchQI;=!3t^wLw|vBFnQJ^ z)iO7hm&Mk=5FUEPkNzS4^boJWE10qOw20HiA)echJ3eOABz& zo9?8U^Bv!&<;w&CXU1T!75(%j?`ZNWfr{fu5f9g{rPMGd>(YIU|3LUzAR0+nuPOIb zeBP%Z0n>^gw0ULek`!^ygWJm%Y@7B@z3fT2Q_(C)-v)Qzx8kE3J`)w22+0hHE|z|Z z6X*W7D|=uh_g3?h8h8TFq8H*EWMJNzq83Zcn8ypl6qED4l&5^X5wv<4&^Zi%WEpR#W)^3;A(`SkhfGa|)d$eE@K4Y${OL!bB1@*W z>>V4akx}Fl^1KCmyhgN7bs>wk!gebSGPM` zf`e&xYt{JJD#Z>E6tlZLzRsXe9B#G>DwI%AkwG`n1@8Gax!L4@ zp3<)hy_d+)(IHytdMECwXn0|-RBr2dCJXJ--yN>ec3cQ&e?Vkej0yjy0h#CFx$VyT z9-Pf8B$kzz4UtRd>woFfquLG8&1koRm=eqpA4%Uh6`;-_@cbTr9ZVDP`1hhe6aZ5A zx6IETJDewFvv#xPF zg7jLk+?PqzHke#NWOa{NMa!=TH04*oq~u-kAiyF>3O&i6CuI8jSUe+{Zu&Ge8&PhA z_zXk&p8>W~yJO=C?@Pz;YXJ0*S{7>Km&%2O@+Y4^c*FqM<%~m=2tw?FmehoDp!r8K zs@uh{GMgVku+OGjSL%=xGLKiWe;Q5}n6*v&%q?_Zz}tLFu#e{+=W!5*#u)?27Y=_$ zv02hgUgnt`?}6ftb0A%rdtSupIZ9UohE3%%J|@;`UP(qbWGXc4v!*BFQVQ$tmALIn z1gt6j{6@D6%KOxywtM4}kw)KeE$=Yl3C+`60!(l2A)(}Bty-bgU|JJ6`8(hf$w_*d zQQH?@0z@Flakr8>!yCleTXk^c06;Ko_f*X%T9_4n-&=#&Jd!S6)R{enIhFPSEED?k&0nykX6?lVNo2t90 z`Ykyx;}EzxwTZeGJ*c=ETumxQB_N$eU6@i3$;RYJWHmQKEKf&jTk_YE0|4}=l8yWw zD7>n?w|-gI$1dd_n=(yLK8`Jo0T{R5hMJ54}%!i2fPqjC0pMAZMxIBTT(!V%F{ z9nC3ECii5-=?qpo;>LcAr^ahB_(fNGN%)tVWw{Fta%QxtZ z*e(KL!{h5jJu5q~p%2^n2N_yTR=uzkJJP-0^&nrf)&fflWzI+=a8Dbe(k8}+g9Tuy z>TIYlu8xN9CmAUTA|X^I|el zvXY~KoHsl_uWPZ7nan-7NsFe>9$}x2EY=DyG*90{r0iVV!5V!NGJnP324x15Jtp`y z1AzNQ`Eo>b^B=hITqn&x<)bg~$pK}S<(;Jq*iG5@&vAA?-P}_@(b>BpZoT7Wqxbw| zUiNzsaR@Fr&oAP2hmVQvUD~_H-#(YBFqK)t*Ju=laC#XjI8myBH0+q6U;WpzqpEjn z6v-FVGQ3zV=Vi0~(OJTC5;%4Fh};8oghj&@L)h49Z6Y-{xphMRFwssKzrzlWP*i>? zS{GynZ0^QKj2VNkax1Be`C7gL$iQ=2(&MDsy}Pmb-WY#M$%xCQQ%B%e-a?{c8WIT< z-v4<4bjPAc4|5ATJj#1e2jOo~MA--BAkN%}_sZYRc1goQQy2(Bp*N`73{K^kSnZF_ zdutMMVKcT!Y|~CclpM?k+joF%OvAe<1`f zyI_T+ui}%L9sfKD*}@+H`DU0*tgW#A2c zc+Uu-3Qt7si`)+Hk)tFD!6e5@Mm@?Yp@(NpnJ-U~x68N`nh{E7X znGwh|^(K4)2uo`sY^JldcwHPg;9z#%mJ~ie5GZ zJ2dMk86u8wWigh@t-}eTet-#ZktBr?V>5yOG#;N|yR9fS!PL^8rhxH@ZvF6bBT~<} z=WNgBGK0Hi<*oNiz=7+jE`oGyhptSf!d7|By%dIRmQ<1H3uyd*5LFCo-E>%sm;kwS z+W~8VY#`@&h|j)vO!(lXscq)Bk)Pb@HVN)tHe@H}2$TBh2j(a~h0Y^6{U`MUuScM{ zKCw~9rQ)NzB~Hl6eRx{Z&^5r{f8iGfap>H}Xdi z4C4D>gxWTPe>66Fjb!7x4olnILynfaFa)^3cNVCWlkGlb7MW~;i$^?w*yY{1e=t|G zYs&!T*`8P0%$Kn-7m3M^HwsyMw=LG&nX)o#D96En;SmVh=a z5;-A6o?lk~=-C-*KBSGyzfyAZuFXUl(At3n`od9xv$0;LP~su$8Vb{algu9IVGYZd zn``X{Cq8@_-B@fop--woI_5D-=>C>7M@Dk$A>tl=F$YQmzm@X2Ek|WT(<8{Ibj@(Z zFi3s|GkhlvRUuN6$_lFC`9G5g8$)#Rc0f-5oe?3EvvtR2&@pj7ayxj4j|hQhar7^Q z6v5du7>j+B8E*5uXhFbSFL`|~hB4tk7CAm#i0O0Dh3IGiZvJR?l(_}^?_4ynKXv3! zC$`dBd7su&-{^TZTp$d0a7A=%DWyyEnVZPb1H~pB&a6lBPB2! zGMtAwO`ic087qY2#<0_Iqb~xDqsjV>%&`78{BjY1+;w1>eWSyR066#!w(aBVk54et zb6)w60SgTmsZ!@c7BP~aUUu|%7(C~nlAyTP$VhJs`(B#_OX_2#Q0f7%s$6-_ zQHTqgx#Mb}azqz9YUid7KP3YbA(98LsYgEkAGKA(!We2TKoD>-0 zp1Lc~m&E2X5klAY(GPE3r%H?O<0OSJ($`zEM?xSfy1TE2(nq)ay74Q#7xy)qz%msx zu3coJVi6T_kV+x>9l!~DLpHN-LPn{*``Qc3_hULH! zk`Qvyu?hH34lfX7w!uto?{vHw%7_k?2^jSiL^Dsf7iE?`nwt@khasom&4T9BjX{rc z_3z5PKQ6z5oe5ZSB`Sz>(cA6MMnybEa8#r4OU4H0*N>gq$QA6UCeQc1=?Z*D`Kh$WGsEMMw$ zWkelda+k-mWz+`3{-oU!LG-HiYWtr}#CqX3KxuD$?arE=36`4lF^h@{?0UL%B1@`_U3xoi= zT5Kwqm<@hQC9Pk$Q^@!dp3%CWUlkWJArLv^wUBe7LLkrLXx)4H^Ob-anG%O;&JtOY z3B#&&N-|5Zd2(mJ2FwDn;DX~)9$#6b)U?B8&*j|dTAdHH$f7LBh(l0A_fLH({O*;M~)Int=M8{5SChdCBEO<&2&b zaS90cPdf)-Kv<2r3#Q`1DT-8U^=W_R?V0?C9TBrM{XQq+m}CtE%8iJ#?vtHbW}F^h zmi~2)#La!^Tvs>fX-MUB?@g5V;ME@Yc{{-;8(k_OvxCl(vW&5G_@ zFN+jT>7M|PQm=vVSZ*tdW6j|pUC5v!*t;Oi>1O$hzmKdQ$}wTMW2*C;B8Fyz5i}ZB zhoA3_QSd=NT-p!HpNf>vrW*+k7Z!X$@*5MR5|x0VQFV?(oLO!vG<4}sc^YMo0d>wR z)8}Pa73CKUSS-^>@izy1&e+Oxzt%1UqVIN+8!ZW`>ndoUWTStm{Qiyyyr7(!em5yvQk>t#fla0pUG8?2BuiOSVJi<3s?UwS@aM< z$ThzgMSqxwpUd82y##X)X}sPXxT7*H6EwHVSV==vQ6@dQdQAuW-m}t{x7pS6idHm> zFM}T!n0sDb=8IUdWMceUfyOMaT{OGiheWQ$BEtZCmkqYirjpJ}=KQ&T-pCahjhyWI9s6v3H38SB&udUeln1}g34aiWH6T4}lDWMTfJKf}lpXhzEYZ ze>;15IuuB)pT{1VR`U{-YMGKs-z z#XBV!b!nj-A0$0(ywrB~t(maH%oIB$6m$L}67)@WA0G%F10CoMI6JD|q$@eDgjnh5 zxvXW)qnR2^}p9JknYaRXtt@Mr0xDxbO%1c3Kh2@PxE|0k|o1YnR zpHGrFx}h&XJHAYF>ojN*wKB|T=moPsdHg;Jbf@wI5$X!|%X1>1;?4HM_7U;a(t%dB z1(E})fXe!7mG?i?t=ezm5i!6AZ&#Z*QR{FWQSu{?l^ndJJrXZ)*7dJeLWPQ#)~iUp zD+j>B+$RUAV*>PV*dbcPviU3q#DKoEmzUbW2f915XJZv(ay_ulit>p17FAtO|IBKE z+FvnS=YL>&D-GI7KJ0G<$U%LU1xKxzkRzc*sSsNVT*@6da7kT3iUXe|XfJ=O9;Kv6 ziw51@#CiV+#JkkPMSdNAeh z)y-_PmE)OWbqkuHORg^KCyIlR6jCMFPh<_c85}gSidVaXg$h3PSk@S21-s`*qQi_> ztWZRU17|a3(Pxt0{=#{Z<8dMy5(OdZZ5SkvcOpW&**=_!Jvs(%|KZH)^1q!IXBL9_ zzBIu$**R%velQs+YMIwN(G=*6w)I}?7Dr|m6$LZ+d!m~wNSavf-bg_k0(U;gHUTPo zgW1GF5~90mAuUb%zi_%CM9nD7$EqfY*s~*(zKMiEpVO@BLz5|>IC8?%@(S{&VAXr! zJ3iCBP7Wt0H-cJGjn8Fi6&{4$;qehZe5Fpm@; z!U#b^?EmkO0Qc+7>`9+<-CLwiSgr$AR@(k&3bSfCRgw@4VZSy^xHY*;EjczybUtko zA#LH)GGb$qhvE6T8>d?CUhm@D)%C}weTbDf#RDHG z-zLSpy7XAiTK0VtY}UG>sKvef?`%JCThRD|0KIrIk$x=Q8C)HZVmb9}$gVH%!Z_&K zqIXlA!EdcPwb#E~-6H*QV1xwx#$>142f$Ce=VX4RA(gR-ZO@lLh`70~rsmZU!(egK z0xLnR9lq>NHyr(>eRW`I|PNt!kV3Y*`s-E(-M z_B7!kCG*#zbPNA`;vPb}(shHs>AIG>ZaSmkirn_~`;Bew-Fxi9UfpwcXG{ccc8WK?F39J}ChNzzY$=k-8zMH)kUj+Z ze%G=l$Zcw9(%~wqB7HDMB_3`JG!0o=ZTv+%TlMPH_Pcz21sg9X^TN^ibZbBVuw7G& zxK&a&{?PcOIT?F1`}gY~t=h6I0{{Q4TbB(JIhz_HF08LL{8%%j7sJu`uw}14v2i3Pw*dz^ibv?N*gUEx8x08d z`5>d!Mb!y0OvFhGcfkZr9OE~-Uk860ba>MH3Hl=BbYmkuy+~=ZWR5S_N?y77A6+wE z*SdZ2ly2{K?vRwruk<3=@jT+QL-?nVB^Knj8l;#jo0;td}3;^VQL8is&Eel%4i zG-)kmyJqA~?l3YMe@q1Oj6@3aC&X0_{DU^s`u;Jj)5n@S>l?}LsunKFT++>hDJ(ZP z_db1MCo@U&r8r38(WHtw@)7uUgN~w)shY8AD%bIs!NL||4H**?4Ft^e=Eq*f$$bdO zXnR1f|ijr@slH3V>U6Y5@$fmbwcQ=(-(pCaH}hH%Qqg-@jV&mutG}q z-yZk=kI&#YjO@nPv@24Bmp!LQI`O{5oTN=vUkex@Qumu&e)rHlkQAffykx0EVtr6? zkj@E2-_|ijdnC&K0dSf1K4uOf%2PAS5X_(&3Vk#}7nppA5L%i#tiYs@mam_M^W@W< zgzyN9`p7(EhKya^{kZK-3`zxrdNVAChGNy^JA@aZ$I@1QXaA5cC@1Ivtpr%#2VCow z5bXNo8y7Gu!NE{BBsJ$sFAS-RmAmgZx3Y29e`PAXYO;; z*}GodgBj>*Vw4)b^sZ8ps@R|#@y_ua_Acl>*tWuP@T2@f%ERM94(-*uIn8FL=N-Yb zs(mDKs>T4^iAW258qxUf5AN-v|Aa|qvp|BWAm|Y$AgwGZyaZlcU%d$`1NnbPPXi20 zeuX&G`~w4n@44Vb$a#4d_D6>5VP**s#Ig8AQZE80{ph2Fl?I``PDp4<=J^}u9~kdD z_4bQZJsSa)?ncBVZJQEp_aeC%T+~11a@PAdg~Bs+ih|1ku)e5{t8xKB7+t?7&c>hL zS9uh%x&N=E3&cmJ?5m-3Xy+dlrNp<9i#to}^&|&=FW@!Y6I%^~g=XUMWD)E&zMza% zc$p2v_gE=PoS(}3-}{OaE9l09-a}f@K#E+bVuX0O`|2rS2uG4+(+>oBYn}x3UaWJOm@zpb*3G1PDae z!zLtSI<2*vf40mB8Dy?mtr0hWnwKs#s0Zh9wv;F4fT#&9ZN^CYXnhItdt#7%^JNwI~3 z241&SH(4U7zVgZ3$@r{T*l+N81tn?0;BiovF`_87urY(k9z7qAv?UVFL2CDzT%q8!4ta7M1Y?Fh>P`;?wP*d_C!68!)6RQ3A)I*$lB z5DcMz?U&=r7xoCPQ%k7`lCVYrye0VMrx72*Z^YOKnf}0c%+-VHlVdFjkbxa=W{MR= zafmb_IB)vKwIC=INM@U-*qK%r{3@r+;~m>+6s+%w z3#N=&a>Jve*ybMyRf0(N2A-IdpmkXUe7ft0gu^EpHuJwY?8(eRWaEJx=%EDfaI8>b zU=s6M7+wf!!aT-pmxnKHxrH&NRGX`RY3`^GWk3{^hrb;cD!JTHfeKLPli4l*H`Mjx zb;F;Wb>!^Bc6)p2U6-I{{P|%&NfF2?IgU^Y=qeTU(@Ze@mS%rVbbUE_NR#m`K~TPG zbUpr)y-HQzn5IIQ@x+O(kiMUg3ap`sNGZ9CO|u>W@*6A8`9F4(pB|z9H!QL}3r4Z# zv2TQS&QEDa!OP-To(e`k22&(*uvf`~_PP_7jTb5X--fuAk6H0Xdkn9Q!hB>sM(78G zbVs1x2_bq{0k3)-lvhSJkxC#2;Y`Q>Wol;Ckl*VtTqB3D)74lHK1e`G{mg)sguD^P zCciUejG+_Xf;L7!xa}Cip#+f1IG@#q0;G><7LI6kdLufV6JWuj_q_*1`1;G?CUA1I`AOEueXMUW z4B$1li-=QaL6)LLaZ0Wnlw!wTBz2CWbAN7nqfb-Naydn;hu7_f0dzLGoEi<@X0@P9XLNe*gaVY- zh%5-**9@5aDL6M&M!VuV9VRbafpP#QV6~}^Si^VL|NF%0gC8$nm1FVJx5li>fd{NA za)K~>ifA_`nKK~}ma#8BTFo63`DJ`ci}37I(ICRWi9nxHwq(sa2ktN&Q9e^2R4uwM zx8`mxsL_j`A4t%7O%+iIf%I(a1_iqq`q_V>#!vOQA{E`Ci2Q3Ai~tqcjeF|Nn=nm^ zkQ^y(sqq&ClW|rBk-yGve2AnOjE&(XKnJN#e#citpdyamP8azSLa~o4k&{VnOwYx2=ki%?gt>8c%SN9s(w|{v6BjPEt8*``#kSnTIQXxfvTh)Ghw8w>T0g zK_5%6KC}m@h^VmmLvRgJwJ6u|<6a*JRCdVhwwu0(?L>f1&C%kQ7UE(9dNe3a;SV`a zJ|F!ri-a?zS8mp2GW0_$6mh_lc5@Mto$4XL?bx*I@lWs_BBa}&4e^H;>YhHweNc@d z5DL;zFNzA`vgxsq?on;BNqA(Q69f_(Do#CPL?`;?+L#@ZiHVfmisvFMj=x*L$US5b zvU8X6E48c;ptHek9R1y4J>4;`mkk?7{aXca@cQKX_%%U(^5(F5nW=zvRWfC>RdTffdh8?lL|&jC zRqYrCTNi$Xro^#7UZBT zvls|V{cwt;^WL+;0r_IsrdR>7HlP^CaMp1rxs^GA3Qs1)=ra3WMM}l1iK=-|k|4yG ziwSk56)4%;GqOzJ&x4T&-!#*yLdN`hxp&XPMM9z2IM`0sfgQNMK9aPF%p`1?)0-Y(=#D9jwB( zR$5$;YCZxZ!bENjyQS^WVSZ`X#~fpDGH5?#k@!W~dl8;+kuQBP~&Frl`lNIEIG zFxjslTeV*sV{v8yL?YKvlE7z_FRP^V(2#qKkBpMKAg*Z!Y;p zLWC)dZ8F~KNbG(H@ASm#g+i_*q3wY{O7TR&Cc?~809PwPLeTW#5w#=4Kl~!GjCpqi zvbT-v0cJ&ivv1QkApo(glEal1P^5pgRp~b751sXXuy4nqlE@PS3Kl$b-ge*?hTi`` zLOpBaaJ|Leonn#%>NEGLpW74)ZEK^~{@&g4yGz3MQsV|ZL>)rD(({leACRukKJ8*5 zYx}=mfB0Tzd1e|bJ0Evj=6IIpuzo_|-~x+@q75`hA|N@THR3uez!M`%L`IW~CqyQg z#hb59i&BuY;6#;%h3Br!6oLGWV8RiSk0h3l3xR?PmF#YJe<%P(68v)Wv9I+r~^RU(!W0AWe_QnNF(P!X}l!amBbB#LJNlBqB1D$3{= zS(Bn=ks7pTkukAlXaW51qUvmx-M$*tP|@+2Q;l|3e6)*_fiy7o=&p-NvfMfEpI-@> zjhZ^+>6V~;NR<=?i@dp<_X~l@D0nDTR0G1_vn}i$ z9|la=&8E}&oI8;bKijU+69F1WIag?kDod*{;)QYiP&8vBTk_&n(2z7qOk~n3r_`Rl zD@svTNnsVlY5r;Un2=p<1pMWpBQn{y7DSfv$(Zbz4|Zc3N-Lg*+!@|Y%d>QeR))rQ z0H#lx)Dk?RYjvE+55d#T1|kLQ3InBCe-W8NbsSL;X#dz(E^*IanLi$2aC;&{-BdC! z4VH+iqu8FTg5Nx(dlwL#F<4%r9NV(?VJF`ePrl0DmwfdQeC9qiuqu7Er#xek~eU^)h2t zXVJs_u~v*`Z`z+sC|>*Oh4EnkQ%YHonp8#A7)$MJX2o)DSYf;q9O7hVYKOELyv!<1 zzgr7sDX*N>yLX;mZyio=!bOq$+~N3*i#0_}z4A`aV2KkYxQ|5wo;#Uo`)G(}$xUK7 z)S0wPsL_2qxu7O65nu}5&rexn5;Z;pDX(3x_X0mB8RNgw#zoxK0cvgEW36~V-#xU7 z1THT=laMC8CM23_zfb=;R&2+xRN23PANCoN)NutYCPDd!3YTF=VLUr!G9f9V9Y4h6 zKr0GnJH?m&@S%iq@IK=MZ)y~VxyK;Y`?>NhGVbQro=+`y)(l&^W zbRNJwe*Q&|RYx|dP$yYVM?!)%pRToa$hu?KEax>ajc!x z=k2q7aJ$_)kJuAK26Sf~wTYGC^4mf=zVyZ4)ot=URVs%9iPdg9a6+f4u`*aZhQ;aI z1{wVR%82?Bnm!CadQt%nFA7bhc;Qytb4W|*q24PUucW+lqKnYDA8W8;F^o?YlrdaG zJ3fs9xLS!mEdlWasAEWMA=<-ta|Dk;8*7k6y?G8>`mucL#vhwy2o&ql(_!}>%TC}J zaKzxP8sU$#jxKgd?N{J!-|wsfgPM*Jor4AoPH~T{2|oaHlP2{WRcFmo>b$BLBPP^N`Ge^q@(fA zyufyBNWi0VdlDaw*QObgE_W>`p2FGQYMT|8{tT?3_J||<%MmfW3~>*5q4;FrEl*#x zO#fw`5IVZJ0BT`H{kw7?@bw6$1umhv!bJ$iI5q>UudlOHwpIfbJHlDrnDM&Oc^shU zp8|8iY`DNe8c#ue0BIqs)S}T!#96T6nePcC zTu&oct0J{dQ+ST=oOD4M%!*jM`rE4NDBGn4qLO&>I7SE`Z}Jr4JK5Be<<{!FTg%5N zQ9tk9?`mrtV&IWa+7#h|$}p(c<*G%F%gYc?EL8y~ZnXXjZ|fsmgT^UhHW^g16YWcj zn&ztSST5Q%IiBgyLSJwSt&#TtbHhyfP-1BT7Vam;X}AjitdqJ^k?uO?}f!Ej3ygDwk2*_AT&0p z`cMxK!qHy>E-`)%N4uHjv3Azs7IH%f#2V_TuneaxIUcnsfil8&fEc?-Cg{RHKY}JR zas`=!DFXG8Y=);86oh&Km*OJA?J3&p3&Dtwjj$jcL0XIv9 zPUpTBBr`I@0Iy#pIVyMfQ}(L+B(eI4>Ev*Oqo%+O!14~yO(Yg_Y!$gMOvZa@ z+bC;7E;QZAKj?39=|9oY1mH|!+lkaq6j>6sxATLgnb#QJkuAHO8ZsL>Lv8GflLEhj zq=uK6&FKhoBhJn?9W8&rT|l%+=n{Nm$0!R*j1RF-Pm5-;QNfc3UaxJ>VUp6B_+Ovf$#W(irK<=J{SE zFZnzU`&m+Nf%6V2&XVQ-R(q4%>a_wRt9zo|b6oFST+=0Q`(6rk{#^?Q(4aKiz+1zQ z!;z@Z&YylHarC~{JSXJ3b|%=J=LjvoV-YsN6Zw-Tg8*r2{sBU5WEu#3OUAfl9H&V+ zsJq=a?5bQ>|Ame6M1p3`@~n6jT-K&A-|3^5ZcYlCcd#|G_v|v$WnY`=yjAN^ZvWnH z(E^YCjq+m1fL~(Fu7qjL7Ui;MPumF7`@lW znkB`%``V_60UHO$!EYAyVDgWkt{O6znj+iySm4igj0j|>XJAE64D7tq3Ws+&H;OKsAG}{HaXD zKUbB|-5GAM;bJc{#x!=4f?+rHH{$T(c`7a?r-nNGV=*cHD10P#0Zx~PGqg*T->C;h zz0n~q({t8lVj6B$Gn2RpsuE$pIn4TO%vsRao^|+J+s^Jy)M>S?`I7&+|HC7Q!^g_o zWiSxYR+J$)c$ZF&F$4R2AIm zEGY9n?zQ6<6Qi|I>wVv_*4+Q`&|08j91(e=Cw#|`UH1#A~hnt7(vQ@cAWa}3?4gjE%rB%#)W#f_}hnM zxg_pVOC3#7x`Z)qE|pC|LoM1?k37ji3FUoPv*gtK5HZ(2Vm9qHXB`|+lKP6rQ(k(M zVv<1wUYlE3=4Wt_!<4GtZB+1*xsFUky#6SzX0G5aAQWQ+9rqCxw^%qQy@d^}UTuo+ zkCuj9z=@~&Ufbai0!Fs2x>*Ae2^wO zh9`L>7&Z!Xd}RfEei}Phx-cEpOhO9T&r(JQybdP_od(CYiXHkfaPYsEXwL4G)a#vi zT(wMN`!nSY7TI7q&~vH4-39{XJ$(vdH;rR;`%lP)ngTYHX15wK&&^dGYvHER>$v(Z zz{B}Of5>VXWiji>lnAj&8QwwFPP_ zm9nW(O?JwzlQg)*4Bzb|beKyFMScswy}jd?>VaCMjHFFdrQS}$WnpvfWHjw*iHk%j ztN@f`lxhotpDz77Jrh6pd#%P95jF4hySw2U5R{zsaqBnoW$RZ=p_o~i9gr)i$qnM| z18^xA)ZxZLVbZWBS~DITb+4M=F?qCPg2U7)O?Bgl816fN<9oRF9ZPI@TPEF;Bz|03 zSMd2*7@-W(COY!R_i6&HBF*)3RO{wu6pX=$Seh!DW_s2d)oYp$4_vV)$jvST_jc2| zxU^@J2kC1XQYi5d@GM7ToO;bJKQ!^TWo>+ET1^@v#VBLj5r}wJ;lVGy`5T$fYLs95 zgt^`au`fBO3VbFh7)J6nesqNOqK@@Bs?K>a8SByBK^Uhw;C6_kNQxE|7h=v7t&+5R zxS)q{(MpSMW;xE!$zgfaDf)N>^H=zUnOfq;Z64**x+EF2cO2OBGV?Q;Jud(;47D3K z#QWzKjc5i*$ShqVg!)-U;cwLcs3@yS(<3Y92654erMd~ofTJhY)Vc+;3Bnw7xzl=FUcU9>-}I_1-mD>; zNv>>D^l(F-)qSf`mVbemc(=Gi(t$0CBSCnX2zom*6B}6@KdgrH^7NOIz|BgVl~cg? zf}cpM{M*i0@)%y`A!`Ck0RP-^s!nqv2t)*XE4{w)W3b#&&Q}7K%Hq!OXs5Lgj%KH+y{??_kh^=ruq4 zg!JBdi@F50{^h<|>2W9{s*H5%dd!$ljdoAJbw{uNQl2zh3IE|2yIoDZEwwxBe5?T8 z96;RAmE9b4-!!hkZ-4Q_TCnOk{R1a7$EH&3)?;jOIx~9q`P0M88k1JN-M402aAF;B zvd@NO>kx-D{RColz*7P}=OC?-Ys9G)O z$OatVWtyGm#~gmzIzH+J1AwGSmr) z_|@ZYNqwA`5t#4mWwfl7`}VmTH1S^Db2)i=4FXEck9vVGgX%AGmI+z;Ll>6^g?shLnh(bx!)zaJ^M8LG9V(`j7Q0P6T7S7e=n%Z8 z2n`swiV7QSPFeuDJ++Y3ydSkKX`y$je&2Ta@5?mViOJ(Uqt~k)Kd-U;A*!vI3y*Gz zClc1AH8kJjERak1+vHJ|vJw6)#u;+>J{x;lA(axoW^yNzO6u|LH!y{Ih^wqb>rz>> zx1f8j$__yu?*Y1N$d$7AuO7f5g1ag(%O+jfEn1?9n3V8m{pDj@@Ya;;)y#WZ(un}j zsWbUL(y+|$3ZdjR{WoSS-9o?_Y_M@(e6UTWyb}+^J1DTi#o5O|LZE8*dSN1882Jb` zi6sPP1?u$_@njHl9~vG_c5zkWc`}JENZjck7Y&Q*FVt1xAP)@k28_!sSD>XVOIFq* z*tF46f|dl|51~U=r_l+14T44(Zq~q!qMVI3EFJyPs_G|ysTv|0E=V!9#tgG`(a~zI zKttKBLfuzobk_0_v$r+BQaBi<+*c%n=G!3G04{9at2Gjws4&blkW3{2Nld62ralt%;3kRh!u}} ziOxF zv^KqLrF)nJw|bJ7EkgxWyZvd#GKZ74acImMNfizN-j<~H77k=pQ4I_6Ca^pUBnsu* zA*f#)+$3Vbw3?bGn$`$OHuqIJ{7Pd5pd5ypoORvSP4Kbh zuExV3oO1u{>oykqmMH^?j&Zcf+ka=q6t$bRiCze=A*N@vk_he~4E zxwh+cT*g2OG|wq`K}r7_<1g zm&OSD4qm@Lyw?C%1^~IR*=tr@^Ne|gB?c?769}%EkA9m$O61tre+?ouSC{L%DdvGs z1g>?i+zW{{+07n8*6f3Urg+%g?!1;U63duT>CgNoi>yPEuiuPYm3nzu_!}dcvT{~D zN3^qd0?t3@*CtY&g$;fwccX+W`)9cSW!L?y#lp|R?=znHJ!t*G@mjUhq=m?|jDXWBF(U6Hre z&=#Wq6={A}m9V%4PjKCDbic;;6E-_^U_R!NHIdQ4HmS{%6lDbzIkc6K#68<+g9mj@w=q?F_)I#ac_Y-iHz)vu?&t9DMY4UKJz4~q4DGr?(;`dl)ZoE_G{q!W|Bw=l(b-miwA|$eYL|WLQ ze|(SC%e{t18ACYi)Y=zZ{MD74=3UhF#bmRB&h)}Hvt0T8Vx;ngg1)It=Sl0W4|J|4 zYnQ$3>Xo0TvMwkBkq+-=!tejcmAxeNgy8#CWx?b9sKc)`4S7|n=i{uk-h4nAki)Ns z?&jqXu$XEUcY;GzWJ;&K!t$HyfDJ<$Y3xwFljep+J?m&B@u}7ORLKTGEfq%aGR(rA z#!VF+!ZN>NJHJDD4&zE%ktFC_2(R}LmqDiG@?jU48%)}a=w}h0l+wR3T z!{<&nuQU?2Dpp{J-zEU|#me7s@{bM?^cQF*x2e2_(v{ST1M)?RX83kz7Yc%l1K@=h z-f)fuVasZk=id5gF*@|xeZD%f-pbkyK^p>|#w8-&h=iB$e>XR%wvjiR03Q0%TYuFe zQ_Vzuk6`+8vJnT;10W5W;PM`!do41FvnNs-yZ&yr2yq!uLatw&M*Plw3Vu@)yl|nnF!Bvlhg*DgWXl&=p60Ey-!vxB8k;cne?15BiQ+KJM=7iV z5-ufT-v{W|;~&O5L*_|vNlpSe`o&{B(pseL-oS5&pLbjSCEahJ#)YY75g+xXYS?ZL zz>V1gr1`xutGGCuxk$c2Jasy?1$@s;_#FdaZB(%Lzi3ZSihND8rUFg* zBE3O2V{4_gwnhDz>-J+>KHkb|yG4AV&OmTybA`n?PRW|Bj?7E2C(dD7rc%0JX%n4B zmS<*k$7~rQ^bAB!l{`}Nug>untmOK-s^6^k<7F`607mU^PJtJ+H3T{XEYa)5nBUVp z57*7irDD9&T*W;(Fc%sq-NRc8g$BaD--?I+gFG$oQDZ0A*q5fQ$DmmTY1p9<{J&%P zW2gL##D{&d+cvMkk}riCu@;-1yAaR$u^}!2mKZP>Q8liYz!&PS1h_6L5GgFoA;GcK zeR53wN&?S{BKfJuKa66o_v4-{;-(xdCj4zjW=nRUSFGvLHtz*BT(}~pZvPS z$NW$emck=EM7!xPB1(O8ZFU(xPkit1_o|*t-reGfG4@xUxcT-;g0SkdaKe6oyF`l1 znMIzAZ@kVNf_Nc!p3K4tjiM9Ff8f~i#jD^L3rVh6c5&+nT={$G?41Fa$`9sNY3L~) z7w2qQN|o3?$s(`yz2S6OP)+?6@WFg3mF+tb9GM*&_uGRA8kD9T(|TL$0n5H~NkoV1{6Q|QrwwU+ z9)lj{W>D_S01kXMe=b=pb@0jnPkCn^dJEK6bUx2HkCm7#Pp1kL#Z&CCbLURMVZI^g zI6NNO5m)AmwF0*-WsZ{^gb-H;izzaq)f+x2GDS?7IXlYkw%z&miJsj(W$CdSmrx;QN0`gwyc z(DrVA-1q9|^ESvn)94_@4untUdwpI==e*3Xu}F8_JKQ;GozS2>L83xpKxD-R!1CLg z8m7jAAVQtk)=TfskqIc@> zNaT8!;M!{M^9iHMU;tik(w|6vv^LKQdO0&yUpJe@1EnG7(u~|OMSoQ-A~=0vuTP9sTT^Kkx%W!~_8xzHgk!sR-M2TdMhS_~wH;VbL>!vFJq#0E&e)aj)kIrKhm{>o(YVDK-GT&%+)B_vYre2afKS=zX zNma*XMjC;euHf;`e~-*x-QV;itZbaeCmN6cG`dq6p#FSGJ77uxZ3WmA&wBI5!*dXt z<%4+D9~x=KnE6Use~8!QHg1^jC(_)o_HtPz`E;bvj5wS~2wYl3EilLq#nnf1>DG_X z@p(jB+f6Ds9#aXu)~-kx@2P|vTc^sNH<>c$dQuvZu|vkN>_H=%G4vv`ZoasT-^OS0 z8FJN>{@r-#6zsUycQachs5mlbgZ9vd-O%+2rCGgNhU?-40lSfbz=x=;SD)>E(hTIx zF-AOc)2pQ2(Um@SOxf2lbcX=35wiup0sg}c>QL7j3qDMJpRKAF!*V0NgJm{JQ)9GM zT8-BH7+jj%kngM#FPDy1pRnNX!wy$aAI(IiMY6ybVF25E@r$hcui3XW*4HS|AmXos zKh5va z5=X}2&Cr%@^(O{#Vl83xL8`wFqLu(F>1v6pHuF7&mamtPy}$8+`ixH-vFtSEQJa-K z*8>2JRYUBHFQ`GhKSp#oR43_pa8}cVS-gk8u+o3ebHu<$f5ax}X<7sBdzi`Vx#R~g zSmPVk!yO!qC*o$i1gKrMV8$ZbhUHb#11`tLJ{zkb*DjXVL$|_<%W!#^-ZCHSj6T)p zvZ$gip6dq0oN;gf=ZLhpg(@Fy;@vFh-yPFj?$Zs{(oHah(?7Pc7~zaLgaep`rLMYqh%;@AU{Dj$MYwOW@G-F+o z!Y?DE10@{L>m>eZ3qOS#G^?+`wEeC@gmLKByQ-h)GA;Mn^9!R7jqwSE5*yZNXd_tv zhEhjep6Mjl?BRRH5kGD(+n9tWfl;kXZTz`yn`M&Ve-$zip+_?}$V}*!@>wZC33SEn zjGE}S{YqdXx7o3{deiykM)P(1WrdFDv3z_%X%|3|+9Bs%`9?Tzb zE;XhI<_i#gJzzA)&d7AlMaOx4vqcs}`hT-q;Dhu#`a485JmBq%Jx7@ry^*WkOmN!* zDWKP_iUMt93+^!zLjxPvo82s5=aKsxAq^tKXy?ICErb=QBmvQ9wc(OdHTWe-BJyI} zJcpLkj=bW~F`k#g>drf~$pl<|pW{hZt$jjtYmihfObr;^pO!~dE;1osm0Z})pPH16 zv_|cOo@$g$$2HoqQPI#7Um94Q3=+PtNTypQ+-gqO>&!@0hNID2E|R*`DU!u-#`o&q z_ZWE8rHc+WJqL1sD=}eS?p!)wHpr)6zUD=~?6bx^RAo`m_cG+KSuSf*$GTW z5$laYpjPw3)xp}3!h`5cXywF@sa-H~v(N^BfZz~+iwY?*lBC-&k+;I>XI82}5Vay+$&XHr9eiqoEjEzoFV#A>1`z5K-8d%o6jLhlt4_;-D zesf*;c+X{fuxJYRJ=l{!kwpyMrw0a7q$_6q^q(@{frYls$G&pOt#!*Wu+@7A_+IIC z9warsN4ZcsGj|%QDWbayM;*&1!&R2}*tH>G`IbcT)SQCGJ;6OjOuVF1Oi|%hIj)uu z`;kg;QBjH^J$NAeeCjJ4|6fU0;?MN|$5CPKvxv%OW`yQyQ8J^#6uEMI)1y4IMY@_ z0OY^^j)b!C|D_;+-w<}`YK`Vt!xL6LnvayhXe3wBoC?@=BjD5u?4_YF+)2CtFzjlLPvIDd^uK=7bULtis72nT9{8r~nCt};AS$F5MI14Hn zh9|57PP(g~l>w;@8u4->-nf}CJWoUW_^Y?9qF) z*{Gnigy0T|?Ku`x3NJ89Wz9#@y*gyg=oyj~e`Gt3rHcq#j>^EG!u#e;la zpi_eerl~;Vg|-Tqi*sq~cltwBg6Yh-%F5om+d3-u9uB>BL=2aBpjQ{&3C^1lt)cyc z6%sCdUh!k8i>Al`C8^^Pilvm?FMxjtkrz__X=PqDoHbea7og-5oY!a4Lc}i$^_)9g z{peVNOs*x0iyX1=*L~KP2jJqO7TI;Tarp+h4n?DXatBCRQ8U6gMIxQ*Tj{sBl=p~#nA;3bA^~pNzKXU4EEB! ztgseoDK4Hpop=y;lN=xIFQJ)3x0gSZh_dRLXvae*v1KkRe?Gl2F8oYbm=#~%awEpL zU*orISC>vdkOtFwD^2&%NDI}fV}E==v`s(^BniTPRlSoLzur%g%ji3`j@T;|_}sv; zB%iP=iGQZ(hdKhc{vS?2Nag9QX4C&kf)P$9*c%T$uXeg8qmQv&#x zJ9p1;1ejsfS+u%uAXRnDmlcJkg^*LV|26o>vHx3wKoW_2P_3k3hC<0fD7(Y>z8}pF z<7RJ0i4(1W!Fu%@LiE;0MUEF2zxMojvi1)EvuyJf0N4hoRi0Bhh@Jg-J^OdhmVBcO zNu3@(;jKSoROl}q%qG?&P${D$Q-0436ajk}626@JUjNcrA?D419z_#0RadnlM?Fkc zy1#YGPhO&?x0;sw3RrYHB?Mb)Ix3Omd(49&b{NJnAJp3_pLM919u6s=WH{ z-J#?vSjiS~8&flz*U#Bs0bq;$kDq{p1*6|S$3~_*I2js z=Xy>uKxG+P{D81Oxoa`~l%JfFf`IbU{swIA| zUttJ(I*wH7t4#^wfX@|Tlxc6zY?KXy3sbp({gOOd{=@ZBd0fjaj zmdoUUv486ld;)A;60%_Bi@hzfaXDEt4+`AiZG^#*CS7W$tA?(a+t&r{1;o*g+mXA* zrt>_la$bZ!8~-s8O$Kp_GH9u~=OgQzmqbu={SvDd6C3vACKPNeEH`_jI!eH-o3m^X zN*CFxymxx+=3WZq&~mgvAnr}jHm#4%H}Xj6Os0Bjf?L-XvtupzuLy?Zxwmad%X7YM zjqw-1g;GD%Dt^!N2tCpF)U8Im)@t8`H#8zIALDaqq5O~5W~s|(9rfEW^>PQCIxrO9 z-k3yN-T%^%v{oVnM5xl{cP3+nZA1fw|2WwR`NDQLl$*jsp@m#txqdE%>9L6;Cv?I< zbKhXJXYz*yd8?rEF*I*CwVBf1%-FrWL*-C0XZ66jl|QfFiKg0X1V+W#{BWB!gA!7c zFt=j#%JqTVz!r7)#|TTN5$Gos-DpA&Z0npZCmRXZ|5l*hH7vvICtCVWu;?MpV?CmZ(A%RL0wM_nlBw2HoOX77ZhaT9)o%PWay$~G9P{^q{O83a3j3mJM5p5a3A?cy+BwqvEEK1e(m(%k5DX(CC z!26ONMwuqFN=cvIQ(-osa zaax-q!=Bc6CJb+y#K11nWRON z#9x6NQx>VJ3M$L2viN}DmF=LugBwFBxAV9yL{_O{fU&D>>!?-KUO5VG|JG$YKW)#_A_keCb7HW8SfK|EtVi$Udi28 zX6i2BJ&U`YMVqKuo+f*)0fRZ)4gCyL({wsr+F}#3X1rsJE7dt57G|Z(!-d5Kv>6q7 Gjqrc_5zfE> literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/text.png b/features/buildroot/docs/website/images/text.png new file mode 100644 index 0000000000000000000000000000000000000000..e2eee546f8952544f408776a2c4587e0a09dcbe3 GIT binary patch literal 6437 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¨++u>zAB_ufk9*c8js+ei_oUeMQWp$3&2V|&+k^X-+ikD z(1Dnn1*bQc_FQyo5dP}A{*^Vv|73EN44YCmeid3*{aQ^q(`~m?-g|duELI<~7E`{} z()3ZHD9MFpK4C%bzpKx@owJ3X&0c#07Uf}Zmx;{a-%>xHPtOhatEEgN7zzr3Dk(c?Uu4(|2#=AX zKZ;nD`q}$ePH|&?xU++Bb@bl+2g2!Ccg`t+0XeD^vjIc+KxMIA$0HS&T;UwJib{cE z;=XCU#KMBcK>6)Z>Btu!I`lK`SXjQSCn`i!WJ$XQj}(@GQ3PR4?PfL6pgPEV7w5m%V^--wN*w0t$ zhMU(=p`HdqzDW!Hxj4ubX?6~9p%I5|Qr5zg&%e9{=L%aW{K+S3YtM9URoWAJ|F9wiBhhjXy3Z`^W zFgK=@|HdQKcbH0R@ko>jbO^X-VD2daoQcfy7k&*YvjKl-V}HpznyK7&bwoFz+47tF zLa&!b>RN@pFkzmi68g3Y7@N567Kcztk9c>{;br%4mYqE9i8@&yx2I?qCYiE4#pHTj z_ZG=tr^SbWH&*6Nh_oY%J-NT>A@KkDo8`TIYyc}=EZ9H9JS@|B^$xbVr$$mILo@kp zsO)u@k~H;FJ<+Wy-;>lR5!Yk!V1MGq(V0`AOqdd2iF8~3|aTx&nfqbY-%Tz`=rY7- z$XD`5a*LE*U4lcRZ@6AQa{;rQ5+ORYv4flqT_lA~-p>6BNHlH5xNe;2?14i`lHFRip^osX<;u$xgVylIX$DI;wD0x8^cZ{h+%VFfu zlsIohOs>X4h_f02PPmP?#Jl6Q7Xy7%!s!5SziWH{SD!ywlk3A5%vBUH!@NOB1X?lq vI3{PVYPJ~$U+4mb;z2>Hf$pW2Q@+mr`sqQXsBG{L4M0!ZSgZ1;bL{^BA9?dx literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/tkos-logo.png b/features/buildroot/docs/website/images/tkos-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe58826e10adad4fc3d3fd0cd31d004df0c684b GIT binary patch literal 10101 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 Eg6Od0od5s; literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/xconfig.png b/features/buildroot/docs/website/images/xconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..cb99a3a353e62103b811d5669d51da3f16f61def GIT binary patch literal 224081 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
        !M;m-nASb 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 B7+e4V literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/zillabit-logo.png b/features/buildroot/docs/website/images/zillabit-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6a2ac31f51e82eac7dc2242ff224c9e52d85ede1 GIT binary patch literal 5394 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 Q0Pv?I_d>Q*+BES006BgvSO5S3 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/index.html b/features/buildroot/docs/website/index.html new file mode 100644 index 00000000..300adbb8 --- /dev/null +++ b/features/buildroot/docs/website/index.html @@ -0,0 +1,151 @@ + + + + + +
        +
        +
        +

        Buildroot is a simple, efficient and easy-to-use tool to + generate embedded Linux systems through cross-compilation.

        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        + +
        +
        +
        + +

        Can handle everything

        +

        Cross-compilation toolchain, root filesystem generation, + kernel image compilation and bootloader compilation.

        +
        + +
        +
        +
        +
        + +
        +
        + +
        +
        +
        + +

        Is very easy

        +

        Thanks to its kernel-like menuconfig, gconfig and + xconfig configuration interfaces, building a basic system with + Buildroot is easy and typically takes 15-30 minutes.

        + +
        + +
        +
        +
        +
        + +
        +
        + +
        +
        +
        + +

        Supports several thousand packages

        +

        X.org stack, Gtk3, Qt 5, GStreamer, Webkit, Kodi, a large number of network-related and system-related utilities are supported.

        + +
        +
        +
        +
        + +
        +
        +
        +

        Buildroot is for Everyone.

        +

        Has a simple structure that makes it easy to understand and extend. It relies only on the well-known Makefile language.

        +
        +
        + +
        +
        + +
        +
        +
        + +
        +
        +
        +

        Our recent activity.

        +

        Buildroot is an open source project: many developers contribute to it daily.

        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        +
        + + diff --git a/features/buildroot/docs/website/js/buildroot.js b/features/buildroot/docs/website/js/buildroot.js new file mode 100644 index 00000000..48fafa67 --- /dev/null +++ b/features/buildroot/docs/website/js/buildroot.js @@ -0,0 +1,93 @@ +function load_activity(feedurl, divid) { + let container = document.getElementById(divid); + $.ajax({ + url: "https://cors.io/?" + feedurl + }) + .done(function(data){ + let x2js = new X2JS(); + let result = x2js.xml_str2json(data); + let loaded = 0; + let nb_display = 8; + if (result==null) return; + for (let i = 0; i < result.feed.entry.length; i++) { + let entry = result.feed.entry[i]; + if (entry.title.indexOf("git commit") !== -1) + continue; + loaded += 1; + if (loaded > nb_display) + break; + let div = document.createElement("p"); + let link = document.createElement("a"); + let d = new Date(entry.published); + let data = '[' + d.toLocaleDateString() + '] ' + entry.title; + let text = document.createTextNode(data); + link.appendChild(text); + link.title = entry.title; + link.href = entry.link._href; + div.appendChild(link); + container.appendChild(div); + } + let empty = nb_display - loaded; + for (let i = 0; i < empty; i++) { + container.appendChild(document.createElement("p")); + } + }); +} + +function google_analytics() { + let _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-21761074-1']); + _gaq.push(['_setDomainName', 'none']); + _gaq.push(['_setAllowLinker', true]); + _gaq.push(['_trackPageview']); + + let ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + let s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); +} + +function showTooltip(elem, msg) { + elem.setAttribute('class', 'btn tooltipped tooltipped-s'); + elem.setAttribute('aria-label', msg); +} + +let clipboard = new Clipboard('.btn'); + +$(function () { + $('[data-toggle="tooltip"]').tooltip() +}); + +clipboard.on('success', function(e) { + e.clearSelection(); + $(e.trigger).tooltip('show'); +}); + +$(function() { + $('a[href*=\\#]:not([href=\\#])').click(function() { + if (location.pathname.replace(/^\//,'') === this.pathname.replace(/^\//,'') && location.hostname === this.hostname) { + let target = $(this.hash); + target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); + if (target.length) { + $('html,body').animate({ + scrollTop: target.offset().top + }, 1000); + return false; + } + } + }); +}); + +jQuery(document).ready(function($) { + let url = window.location.href; + // Get the basename of the URL + url = url.split(/[\\/]/).pop(); + $('.nav a[href="/' + url + '"]').parent().addClass('active'); + + load_activity("http://buildroot-busybox.2317881.n4.nabble.com/Buildroot-busybox-ft2.xml", "mailing-list-activity"); + load_activity("http://git.buildroot.org/buildroot/atom/?h=master", "commit-activity"); + + $('#slides').html('') +}); diff --git a/features/buildroot/docs/website/news.html b/features/buildroot/docs/website/news.html new file mode 100644 index 00000000..ba703004 --- /dev/null +++ b/features/buildroot/docs/website/news.html @@ -0,0 +1,4944 @@ + + + + +
        +
        +
        + +

        News

        +
          + +
        • +
          +
          +
          +

          2019.02.4 released

          +

          7 June 2019

          +
          +
          +

          The 2019.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.4 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.05.1 released

          +

          7 July 2019

          +
          +
          +

          The 2019.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.05.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02.3 released

          +

          7 June 2019

          +
          +
          +

          The 2019.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.3 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.05 released

          +

          2 June 2019

          +
          +
          +

          The stable 2019.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.05-rc3 released

          +

          25 May 2019

          +
          +
          +

          Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2019.05-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.05-rc2 released

          +

          15 May 2019

          +
          +
          +

          Another week, another release candidate with more cleanups and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2019.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.05-rc1 released

          +

          8 May 2019

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details, and read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2019.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02.2 released

          +

          29 April 2019

          +
          +
          +

          The 2019.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02.1 released

          +

          29 March 2019

          +
          +
          +

          The 2019.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2019.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.12 released, 2018.02.x series EOL

          +

          29 March 2019

          +
          +
          +

          The 2018.02.12 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.12 release.

          + +

          Notice that the 2018.02.x series is now end of life. Please migrate to + the 2019.02 series instead which will be supported until March 2020.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11.4 released

          +

          28 March 2019

          +
          +
          +

          The 2018.11.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.4 release.

          + +

          Notice that the 2018.11.x series is now end of life. Please migrate to + the 2019.02 series instead which will be supported until March 2020.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02 released

          +

          4 March 2019

          +
          +
          +

          The stable 2019.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2019.02 release.

          + +

          Notice that this is a long term support release which will be + supported with security and other important fixes until March 2020.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02-rc3 released

          +

          1 March 2019

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2019.02-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11.3 released

          +

          23 February 2019

          +
          +
          +

          The 2018.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.3 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.11 released

          +

          23 February 2019

          +
          +
          +

          The 2018.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02-rc2 released

          +

          23 February 2019

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2019.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2019.02-rc1 released

          +

          13 February 2019

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2019.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.10 released

          +

          31 January 2019

          +
          +
          +

          The 2018.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.10 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11.2 released

          +

          30 January 2019

          +
          +
          +

          The 2018.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.9 released

          +

          20 December 2018

          +
          +
          +

          The 2018.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.9 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08.4 released, 2018.08 series EOL

          +

          20 December 2018

          +
          +
          +

          The 2018.08.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.4 release.

          +

          Notice that the 2018.08 series is now end of life, please + consider migrating to 2018.11 instead.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11.1 released

          +

          19 December 2018

          +
          +
          +

          The 2018.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11 released

          +

          1 December 2018

          +
          +
          +

          The stable 2018.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11-rc3 released

          +

          30 November 2018

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2018.11-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.8 released

          +

          26 November 2018

          +
          +
          +

          The 2018.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.8 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08.3 released

          +

          26 November 2018

          +
          +
          +

          The 2018.08.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.3 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11-rc2 released

          +

          21 November 2018

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2018.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.11-rc1 released

          +

          9 November 2018

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and/or read + the announcement. +

          + +

          Head to the downloads page to pick up the + 2018.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.7 released

          +

          25 October 2018

          +
          +
          +

          The 2018.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.7 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08.2 released

          +

          25 October 2018

          +
          +
          +

          The 2018.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08.1 released

          +

          7 October 2018

          +
          +
          +

          The 2018.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.6 released

          +

          7 October 2018

          +
          +
          +

          The 2018.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.6 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05.3 released

          +

          6 October 2018

          +
          +
          +

          The 2018.05.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.05.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05.3 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08 released

          +

          6 September 2018

          +
          +
          +

          The stable 2018.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08-rc3 released

          +

          31 August 2018

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2018.08-rc3 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.5 released

          +

          29 August 2018

          +
          +
          +

          The 2018.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.5 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05.2 released

          +

          28 August 2018

          +
          +
          +

          The 2018.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08-rc2 released

          +

          20 August 2018

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2018.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.08-rc1 released

          +

          5 August 2018

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and/or read + the announcement. +

          + +

          Head to the downloads page to pick up the + 2018.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.4 released

          +

          21 July 2018

          +
          +
          +

          The 2018.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.4 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05.1 released

          +

          20 July 2018

          +
          +
          +

          The 2018.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.3 released

          +

          18 June 2018

          +
          +
          +

          The 2018.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.3 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05 released

          +

          1 June 2018

          +
          +
          +

          The stable 2018.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05-rc3 released

          +

          28 May 2018

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2018.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05-rc2 released

          +

          22 May 2018

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2018.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.05-rc1 released

          +

          9 May 2018

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2018.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.2 released

          +

          4 May 2018

          +
          +
          +

          The 2018.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.11 released

          +

          11 April 2018

          +
          +
          +

          The 2017.02.11 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.10 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.11 release.

          +

          Notice that the 2017.02 series is now end of life, so please consider + updating to 2018.02 instead.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02.1 released

          +

          10 April 2018

          +
          +
          +

          The 2018.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2018.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02 released

          +

          4 March 2018

          +
          +
          +

          The stable 2018.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2018.02 release.

          + +

          Notice that this is a long term support release which will be + supported with security and other important fixes until February 2019.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02-rc3 released

          +

          27 February 2018

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2018.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02-rc2 released

          +

          15 February 2018

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2018.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2018.02-rc1 released

          +

          5 February 2018

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2018.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.10 released

          +

          31 January 2018

          +
          +
          +

          The 2017.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.10 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.11.2 released

          +

          21 January 2018

          +
          +
          +

          The 2017.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.9 released

          +

          1 January 2018

          +
          +
          +

          The 2017.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.9 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.11.1 released

          +

          31 December 2017

          +
          +
          +

          The 2017.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.11 released

          +

          30 November 2017

          +
          +
          +

          The stable 2017.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.08.2 released

          +

          29 November 2017

          +
          +
          +

          The 2017.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.08.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.8 released

          +

          27 November 2017

          +
          +
          +

          The 2017.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.8 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.11-rc2 released

          +

          13 November 2017

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2017.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.11-rc1 released

          +

          6 November 2017

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2017.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.7 released

          +

          28 October 2017

          +
          +
          +

          The 2017.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.7 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.08.1 released

          +

          23 October 2017

          +
          +
          +

          The 2017.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.08.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.6 released

          +

          24 September 2017

          +
          +
          +

          The 2017.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.6 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.08 released

          +

          1 September 2017

          +
          +
          +

          The stable 2017.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 + 2017.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.08-rc3 released

          +

          23 August 2017

          +
          +
          +

          Another release candidate, on the road to the final 2017.08 + release. A number of fixes and cleanups in various packages + and defconfigs. See + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2017.08-rc3 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.08-rc2 released

          +

          11 August 2017

          +
          +
          +

          Another release candidate, on the road to the final 2017.08 + release. A number of fixes and cleanups in various packages + and defconfigs. See + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2017.08-rc2 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.08-rc1 released

          +

          2 August 2017

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2017.08-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.05.2 released

          +

          27 July 2017

          +
          +
          +

          The 2017.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.5 released

          +

          27 July 2017

          +
          +
          +

          The 2017.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.5 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.05.1 released

          +

          4 July 2017

          +
          +
          +

          The 2017.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.4 released

          +

          4 July 2017

          +
          +
          +

          The 2017.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.4 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.3 released

          +

          2 June 2017

          +
          +
          +

          The 2017.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.3 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.05 released

          +

          31 May 2017

          +
          +
          +

          The stable 2017.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.05-rc3 released

          +

          30 May 2017

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2017.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.05-rc2 released

          +

          17 May 2017

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2017.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.05-rc1 released

          +

          8 May 2017

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2017.05-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.2 released

          +

          1 May 2017

          +
          +
          +

          The 2017.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02.1 released

          +

          4 April 2017

          +
          +
          +

          The 2017.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11.3 released

          +

          10 March 2017

          +
          +
          +

          The 2016.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.3 release.

          +

          Notice that this is the final 2016.11.x release. Users are + urged to migrate to the 2017.02.x series instead.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02 released

          +

          28 February 2017

          +
          +
          +

          The stable 2017.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02 release.

          + +

          Notice that this is a long term support release which will be + supported with security and other important fixes until February 2018.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02-rc3 released

          +

          26 February 2017

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2017.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02-rc2 released

          +

          20 February 2017

          +
          +
          +

          We have a new release candidate! Lots of changes all over the tree, see + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2017.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2017.02-rc1 released

          +

          11 February 2017

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, read + the announcement. +

          + +

          Head to the downloads page to pick up the + 2017.12-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11.2 released

          +

          25 January 2017

          +
          +
          +

          The 2016.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.2 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11.1 released

          +

          29 December 2016

          +
          +
          +

          The 2016.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11 released

          +

          30 November 2016

          +
          +
          +

          The stable 2016.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11-rc3 released

          +

          28 November 2016

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2016.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11-rc2 released

          +

          13 November 2016

          +
          +
          +

          We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details. +

          + +

          Head to the downloads page to pick up the + 2016.11-rc2 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.11-rc1 released

          +

          3 November 2016

          +
          +
          +

          We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details, read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2016.11-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.08.1 released

          +

          21 September 2016

          +
          +
          +

          The 2016.08.1 bugfix release is out. This release fixes a + potential entire root filesystem removal issue with the + external toolchain handling discovered since the 2016.08 + release. See the + CHANGES + file for more details, read the + announcement and go to the + downloads page to pick up the + 2016.08.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.08 released

          +

          1 September 2016

          +
          +
          +

          The stable 2016.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.08-rc3 released

          +

          30 August 2016

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2016.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.08-rc2 released

          +

          17 August 2016

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2016.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.08-rc1 released

          +

          6 August 2016

          +
          +
          +

          We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement +

          + +

          Head to the downloads page to pick up the + 2016.08-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.05 released

          +

          1 March 2016

          +
          +
          +

          The stable 2016.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.05-rc3 released

          +

          26 May 2016

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2016.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.05-rc2 released

          +

          17 May 2016

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2016.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.05-rc1 released

          +

          10 May 2016

          +
          +
          +

          We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2016.05-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.02 released

          +

          1 March 2016

          +
          +
          +

          The stable 2016.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.02 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.02-rc3 released

          +

          27 February 2016

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2016.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.02-rc2 released

          +

          18 February 2016

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2016.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2016.02-rc1 released

          +

          10 February 2016

          +
          +
          +

          We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement. +

          + +

          Head to the downloads page to pick up the + 2016.02-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.11.1 released

          +

          5 December 2015

          +
          +
          +

          The 2015.11.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered + since the 2015.11 release. See the + CHANGES + file for more details, and go to the + downloads page to pick up the + 2015.11.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.11 released

          +

          30 November 2015

          +
          +
          +

          The stable 2015.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.11-rc3 released

          +

          26 November 2015

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2015.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.11-rc2 released

          +

          19 November 2015

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2015.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.11-rc1 released

          +

          7 November 2015

          +
          +
          +

          We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details. See also + the announcement + e-mail.

          + +

          Head to the downloads page to pick up the + 2015.11-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.08.1 released

          +

          6 September 2015

          +
          +
          +

          The 2015.08.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2015.08 release. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2015.08.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.08 released

          +

          31 August 2015

          +
          +
          +

          The stable 2015.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.08-rc2 released

          +

          24 August 2015

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details, and + the release + announcement.

          + +

          Head to the downloads page to pick up the + 2015.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.08-rc1 released

          +

          5 August 2015

          +
          +
          +

          We have a new release candidate! Lots of changes all over the tree, see + the CHANGES + file for details, read + the announcement.

          + +

          Head to the downloads page to pick up the + 2015.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.05 released

          +

          31 May 2015

          +
          +
          +

          The stable 2015.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.05-rc3 released

          +

          22 May 2015

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up + the 2015.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.05-rc2 released

          +

          11 May 2015

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up the + 2015.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.05-rc1 released

          +

          4 May 2015

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2015.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.02 released

          +

          1 March 2015

          +
          +
          +

          The stable 2015.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.02 release.

          +
          +
          +
        • + + +
        • +
          +
          +
          +

          2015.02-rc3 released

          +

          24 February 2015

          +
          +
          +

          Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

          +

          Head to the downloads page to + pick up the + 2015.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.02-rc2 released

          +

          15 February 2015

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2015.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2015.02-rc1 released

          +

          8 February 2015

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2015.02-rc1 + release candidate, and report any problems found to + the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.11 released

          +

          1 December 2014

          +
          +
          +

          The stable 2014.11 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 + 2014.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.11-rc3 released

          +

          28 November 2014

          +
          +
          +

          Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to + pick up the + 2014.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.11-rc2 released

          +

          21 November 2014

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2014.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Report from Buildroot Developers Meeting

          +

          13 November 2014

          +
          +
          +

          A report from the recent + + Buildroot Developers Meeting is now + available.

          + +

          Once again, thanks to all the participants and to + Mind for sponsoring the event.

          + +

          The next Developer Days will take place on February 2nd and + 3rd in Brussels, Belgium, right + after FOSDEM. See + the wiki + for more details.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.11-rc1 released

          +

          12 November 2014

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2014.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.08 released

          +

          1 September 2014

          +
          +
          +

          The stable 2014.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2014.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.08-rc3 released

          +

          26 August 2014

          +
          +
          +

          Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2014.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.08-rc2 released

          +

          18 August 2014

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2014.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.08-rc1 released

          +

          8 August 2014

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2014.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.05 released

          +

          31 May 2014

          +
          +
          +

          The stable 2014.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2014.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.05-rc3 released

          +

          28 May 2014

          +
          +
          +

          Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2014.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.05-rc2 released

          +

          21 May 2014

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to + pick up the + 2014.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.05-rc1 released

          +

          13 May 2014

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2014.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          27 February 2014

          +

          2014.02 released

          +
          +
          +

          The stable 2014.02 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 + 2014.02 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          25 February 2014

          +

          2014.02-rc3 released

          +
          +
          +

          Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2014.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          20 February 2014

          +

          2014.02-rc2 released

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2014.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2014.02-rc1 released

          +

          11 February 2014

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2014.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          9 February 2014

          +

          Report from Buildroot Developers Meeting

          +
          +
          +

          A report from the recent + + Buildroot Developers Meeting is now + available.

          + +

          Once again, thanks to all the participants and to + Google and + Mind for sponsoring the event.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Upcoming Buildroot Developers meeting

          +

          30 January 2014

          +
          +
          +

          The upcoming Buildroot Developers meeting will take place in + Brussels on February, 3rd and 4th, after the + FOSDEM conference. Additional + details about the meeting can be found on the corresponding + + wiki page.

          + +

          Persons not able to join the meeting in Brussels can participate + remotely using Google Hangouts. Simply give your Google address to + thomas.petazzoni@free-electrons.com.

          + +

          This meeting is sponsored by + Google (for the meeting room) + and Mind (for the dinner). + Thanks to our sponsors!

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.11 released

          +

          30 November 2013

          +
          +
          +

          The stable 2013.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the announcement + and go to the downloads page to pick up the + 2013.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Slides from Embedded Linux Conference Europe

          +

          30 November 2013

          +
          +
          +

          The slides from the Buildroot presentation at the recent + Embedded Linux Conference Europe 2013 + are now + available.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.11-rc3 released

          +

          18 November 2013

          +
          +
          +

          Another week, another release candidate with more + fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.11-rc2 released

          +

          18 November 2013

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Announcement of the next Buildroot Developer Days

          +

          13 November 2013

          +
          +
          +

          The next Buildroot Developer Days meeting will take + place on Monday 3rd and Tuesday 4th February 2014 in Brussels, + Belgium - Just after + FOSDEM (February + 1st/2nd). This two days meeting is mainly open to Buildroot + developers and contributors, or Buildroot users having a prior + experience with the tool. It will allow developers to work on + Buildroot and discuss current issues, the future directions, and + more.

          + +

          In addition to the Buildroot event, we encourage embedded Linux + developers to propose talks for the Embedded and Mobile Developer + Room at FOSDEM. See + the CFP.

          + +

          We would like to thank our + sponsor Google for sponsoring + the event by providing all the needed logistics.

          + +

          For more details, see the + wiki + page dedicated to the meeting.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.11-rc1 released

          +

          12 November 2013

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2013.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Report from Buildroot Developers Meeting

          +

          11 November 2013

          +
          +
          +

          A report from the recent + + Buildroot Developers Meeting is now + available.

          + +

          Once again, thanks to all the participants and to + Imagination Technologies + for sponsoring the event.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.08.1 released

          +

          17 September 2013

          +
          +
          +

          The 2013.08.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2013.08 release. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2013.08.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot Developer Days

          +

          16 September 2013

          +
          +
          +

          The next Buildroot Developer Days meeting will take + place on Saturday October 26th and Sunday October 27th 2013 in + Edinburgh, UK - Just after the + Embedded Linux Conference Europe (October 23th-24th). This two + days meeting is mainly open to Buildroot developers and + contributors, or Buildroot users having a prior experience with + the tool. It will allow developers to work on Buildroot and + discuss current issues, the future directions, and more.

          + +

          For more details, see the + wiki + page dedicated to the meeting.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.08 released

          +

          31 August 2013

          +
          +
          +

          The stable 2013.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the announcement + and go to the downloads page to pick up the + 2013.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.08-rc3 released

          +

          29 August 2013

          +
          +
          +

          Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.08-rc3 + release candidate, and report any problems found to the mailing list or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.08-rc2 released

          +

          16 August 2013

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.08-rc1 released

          +

          5 August 2013

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.05 released

          +

          31 May 2013

          +
          +
          +

          The stable 2013.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2013.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.05-rc3 released

          +

          25 May 2013

          +
          +
          +

          Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.05-rc2 released

          +

          15 May 2013

          +
          +
          +

          Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.05-rc1 released

          +

          8 May 2013

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2013.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.02 released

          +

          28 February 2013

          +
          +
          +

          The stable 2013.02 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 + 2013.02 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.02-rc3 released

          +

          26 February 2013

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.02-rc2 released

          +

          19 February 2013

          +
          +
          +

          Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2013.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2013.02-rc1 released

          +

          10 February 2013

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2013.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Report from Buildroot Developers Meeting

          +

          10 February 2013

          +
          +
          +

          A report from the recent Buildroot Developers Meeting is now + available. + Embedded Linux News also has a + + writeup about the event, including photos.

          + +

          Once again, thanks to all the participants and to + Google for sponsoring the event.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Next Buildroot Developers Meeting next to FOSDEM, Brussels

          +

          12 January 2013

          +
          +
          +

          The next Buildroot Developers Meeting will take place on Monday + 4th February 2013 and Tuesday 5th February 2013 in Brussels, + Belgium. Those dates have been chosen to immediately follow the + great FOSDEM conference.

          + +

          Attending this meeting is free, after registration by + contacting Thomas + Petazzoni. For more details about the meeting, please see + the related + Wiki page.

          + +

          We would like to + thank Google for providing the + meeting location and the Internet connection, and offering free + lunch and refreshments to the participants.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.11.1 released

          +

          3 January 2013

          +
          +
          +

          The 2012.11.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2012.11 release, most importantly with non-largefile builds on + recent Ubuntu versions. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2012.11.1 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.11 released

          +

          2 December 2012

          +
          +
          +

          The stable 2012.11 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 + 2012.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.11-rc2 released

          +

          30 November 2012

          +
          +
          +

          RC2 is out with more bugfixes - See + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2012.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.11-rc1 released

          +

          17 November 2012

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2012.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot Developer Day

          +

          17 November 2012

          +
          +
          +

          A report from the recent Buildroot Developer Days + meeting in Barcelona, Spain is + now available. + Many thanks to all the participants, and a special thanks to + Arnout Vandecappelle from mind + for taking notes and Thomas Petazzoni + from Free Electrons + for handling all the practical arrangements, and naturally + our sponsors, Fluendo + and Synopsis. +

          +

          The next Developer Days will take place on February 4th and + 5th in Brussels, Belgium, right + after FOSDEM.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.08 released

          +

          31 August 2012

          +
          +
          +

          The stable 2012.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 + 2012.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.08-rc3 released

          +

          25 August 2012

          +
          +
          +

          We have a new release candidate! Various fixes, and + addition of licensing informations on many + packages. See CHANGES + file for details

          + +

          Head to the downloads page to pick up the + 2012.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.08-rc2 released

          +

          15 August 2012

          +
          +
          +

          We have a new release candidate! Various fixes, and addition + of licensing informations on many + packages. See CHANGES + file for details

          + +

          Head to the downloads page to pick up the + 2012.08-rc2 + release candidate, and report any problems found to the mailing list or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.08-rc1 released

          +

          1 August 2012

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details

          + +

          Head to the downloads page to pick up the + 2012.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot Developer Day

          +

          22 July 2012

          +
          +
          +

          The next Buildroot Developer Day meeting will take place + on Saturday November 3th and Sunday November 4th 2012 in + Barcelona, Spain, just before + the Embedded + Linux Conference Europe (November 5th-7th). This two days + meeting is mainly opened to Buildroot developers and contributors, + or Buildroot users having a prior experience with the tool. This + meeting will allow developers to work and Buildroot, and discuss + current issues, the future directions, and more.

          + +

          For more details, see + the wiki + page dedicated to the meeting.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.05 released

          +

          30 May 2012

          +
          +
          +

          The stable 2012.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2012.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.05-rc3 released

          +

          25 May 2012

          +
          +
          +

          RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2012.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.05-rc2 released

          +

          18 May 2012

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2012.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.05-rc1 released

          +

          10 May 2012

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2012.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Autobuilder Results Online

          +

          20 April 2012

          +
          +
          +

          The status of the autobuilders, which do repeated + randpackageconfig builds for continuous + integration testing, is now online + at autobuild.buildroot.org. The + code behind it can be found + in git.

          + +

          Thanks to Thomas Petazzoni for running the web interface, and + to The GCC Compile + Farm and Free + Electrons for hosting builders. Thomas also sends out a daily + summary of the build status to the mailing list.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.02 released

          +

          29 February 2012

          +
          +
          +

          The stable 2012.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2012.02 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.02-rc3 released

          +

          27 February 2012

          +
          +
          +

          RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2012.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.02-rc2 released

          +

          19 February 2012

          +
          +
          +

          Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2012.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2012.02-rc1 released

          +

          12 February 2012

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

          + +

          Head to the downloads page to pick up the + 2012.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot Developer Day

          +

          31 January 2012

          +
          +
          +

          Another Buildroot Developer Day will take place on + Friday, February 3rd in Brussels, Belgium - The day + before FOSDEM. See the + announcement + or + the Free + Electrons blog for more info.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.11 released

          +

          30 November 2011

          +
          +
          +

          The stable 2011.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2011.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.11-rc3 released

          +

          26 November 2011

          +
          +
          +

          RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2011.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.11-rc2 released

          +

          18 November 2011

          +
          +
          +

          Another week, another release candidate with a bunch of + cleanups and build fixes. See + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2011.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.11-rc1 released

          +

          11 November 2011

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement + +

          Head to the downloads page to pick up the + 2011.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.08 released

          +

          31 August 2011

          +
          +
          +

          The stable 2011.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 + 2011.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.08-rc2 released

          +

          29 August 2011

          +
          +
          +

          RC2 is out with more bugfixes. See + the CHANGES + file for details, and read the + announcement. + +

          Head to the downloads page to pick up the + 2011.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.08-rc1 released

          +

          4 August 2011

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

          Head to the downloads page to pick up the + 2011.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.05 released

          +

          27 May 2011

          +
          +
          +

          The stable 2011.05 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 + 2011.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.05-rc2 released

          +

          24 May 2011

          +
          +
          +

          RC2 is out with more bugfixes. See + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2011.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.05-rc1 released

          +

          18 May 2011

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

          Head to the downloads page to pick up the + 2011.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.02 released

          +

          28 February 2011

          +
          +
          +

          The stable 2011.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2011.02 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.02-rc2 released

          +

          24 February 2011

          +
          +
          +

          RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2011.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2011.02-rc1 released

          +

          14 February 2011

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

          Head to the downloads page to pick up the + 2011.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.11 released

          +

          30 November 2010

          +
          +
          +

          The stable 2010.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.11 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.11-rc2 released

          +

          25 November 2010

          +
          +
          +

          RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details.

          + +

          Head to the downloads page to pick up the + 2010.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.11-rc1 released

          +

          8 November 2010

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

          Head to the downloads page to pick up the + 2010.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot Developer Day

          +

          28 September 2010

          +
          +
          +

          A Buildroot Developer Day will take place on + Friday, October 29th in Cambridge, UK - Just the day after the + Embedded + Linux Conference Europe. This Developer Day + aims at allowing Buildroot developers to meet and exchange + ideas on the project and its future. See the + announcement + for more info.

          + +

          Thanks to Thomas Petazzoni for taking care of the practical + arrangements.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.08 released

          +

          31 August 2010

          +
          +
          +

          The stable 2010.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.08 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.08-rc2 released

          +

          30 August 2010

          +
          +
          +

          RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2010.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          + + This is very much expected to be the final release candidate, + so give it a good test and expect a final 2010.08 release + before September unless critical issues are found.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.08-rc1 released

          +

          30 July 2010

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2010.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.05 released

          +

          30 May 2010

          +
          +
          +

          The stable 2010.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.05 release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.05-rc3 released

          +

          27 May 2010

          +
          +
          +

          RC3 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2010.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.05-rc2 released

          +

          11 May 2010

          +
          +
          +

          Another week, another release candidate with a bunch of + cleanups and build fixes.

          + +

          Head to the downloads page to pick up the + 2010.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.05-rc1 released

          +

          3 May 2010

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2010.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          FOSDEM slides online

          +

          2 May 2010

          +
          +
          +

          The slides from + the Cross + Build Systems: Present & Future session + at FOSDEM are + now online. +

          +
          +
        • + +
        • +
          +
          +
          +

          2010.02 released

          +

          26 February 2010

          +
          +
          +

          The stable 2010.02 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 2010.02 + release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.02-rc2 released

          +

          23 February 2010

          +
          +
          +

          RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2010.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2010.02-rc1 released

          +

          9 February 2010

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2010.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.11 released

          +

          1 December 2009

          +
          +
          +

          The stable 2009.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.11 + release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.11-rc2 released

          +

          29 November 2009

          +
          +
          +

          RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2009.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.11-rc1 released

          +

          23 November 2009

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2009.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          First Buildroot Developer Day

          +

          7 September 2009

          +
          +
          +

          The first Buildroot Developer Day will take place on + Saturday, October 17th in Grenoble, France, just the day after + Embedded Linux Conference Europe. This Developer Day aims + at allowing Buildroot developers to meet and exchange ideas on the + project and its future.

          + +

          As the number of places is limited, interested candidates are + invited to send an e-mail to Peter Korsgaard (jacmet at + uclibc dot org) and Thomas Petazzoni (thomas dot + petazzoni at free-electrons dot com).

          + +

          This Developer Day will take place thanks to the + sponsoring of Calao + Systems and Free + Electrons.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.08 released

          +

          31 August 2009

          +
          +
          +

          The stable 2009.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.08 + release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.08-rc3 released

          +

          26 August 2009

          +
          +
          +

          A number of bugfixes have been added to the tree since RC2 + (especially thanks to Thomas Petazzoni) - See + the CHANGES + file for details. This is very much expected to be the final + release candidate, so give it a good test and expect a final + 2009.08 release next weekend unless critical issues are + found.

          + +

          Head to the downloads page to + pick up the + 2009.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.08-rc2 released

          +

          6 August 2009

          +
          +
          +

          RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2009.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.08-rc1 released

          +

          2 August 2009

          +
          +
          +

          We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2009.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.05 released

          +

          1 June 2009

          +
          +
          +

          The stable 2009.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.05 + release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.05-rc3 released

          +

          27 May 2009

          +
          +
          +

          We had a number of fixes post-RC2, so RC3 is out + (see CHANGES + for details). Now is the moment to test and verify that + everything is working for your favorite config - Expect a + final 2009.05 very soon.

          + +

          Head to the downloads page to pick up the + 2009.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.05-rc2 released

          +

          19 May 2009

          +
          +
          +

          RC2 is out with more cleanups and bug fixes + (see CHANGES). + Unless big issues are found, expect this to be the last + release candidate before the release - So give it a good + test.

          + +

          Head to the downloads page to pick up the + 2009.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot.org

          +

          14 May 2009

          +
          +
          +

          Earl Levine has been so kind to donate + the buildroot.org domain to us, so the website can + now also be reached + at www.buildroot.org + (and git at + git.buildroot.org). + + Thanks a lot Earl!

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.05-rc1 released

          +

          5 May 2009

          +
          +
          +

          We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details. + +

          Head to the downloads page to pick up the + 2009.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Moved to git

          +

          3 May 2009

          +
          +
          +

          We've moved the source code + from Subversion + to Git. You can browse the + repo online + here, and clone + the repo using: +

          git clone git://git.buildroot.net/buildroot
          + See the Git Access page for more details. +

          +
          +
          +
        • + +
        • +
          +
          +
          +

          +

          27 March 2009

          +

          +
          +

          We have a logo! We have so + far been using the Busybox + logo on the website, as the website was a copy of + the Busybox one - But not + anymore, we now have a shiny new logo of our own.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.02 released

          +

          12 February 2009

          +
          +
          +

          The stable 2009.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + for more details, and go to the downloads page + to pick up the 2009.02 + release.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.02-rc4 released

          +

          9 February 2009

          +
          +
          +

          We had more than 50 changes since RC3, several of them + toolchain related, so decided to make a RC4 as well. This is + very much expected to be the final release candidate, so + give it a good test and expect a final 2009.02 release this + week unless critical issues are found.

          + +

          Head to the downloads page to + pick up the + 2009.02-rc4 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.02-rc3 released

          +

          31 January 2009

          +
          +
          +

          RC3 is out with more cleanups and bug fixes. Unless big + issues are found, expect this to be the last release + candidate before the release - So give it a good test.

          + +

          Head to the downloads page to + pick up the + 2009.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          2009.02-rc2 released

          +

          23 January 2009

          +
          +
          +

          Another week, another release candidate with a bunch of + cleanups and build fixes.

          +

          Head to the downloads page to + pick up the + 2009.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Release candidate and new maintainer

          +

          16 January 2009

          +
          +
          + +

          It has been a long time coming, but we finally have a new + release candidate! - And a new maintainer to match (Peter + Korsgaard).

          + +

          Head to the downloads page to + pick up the + 2009.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker. The + plan is to release 2009.02 in time + for FOSDEM.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot mailing list

          +

          16 July 2006

          +
          +
          +

          Buildroot now has its own mailing list.

          +
          +
          +
        • + +
        • +
          +
          +
          +

          Buildroot webpage added

          +

          21 February 2005

          + +

          Buildroot is a set of Makefiles and patches that makes it easy generate a + cross-compilation toolchain and root filesystem for your target Linux + system using the uClibc C library. + Buildroot is useful mainly for people working with small or embedded + systems. Embedded systems often use processors that are not the regular + x86 processors everyone is used to using on their PC. It can be PowerPC + processors, MIPS processors, ARM processors, etc. And to be extra safe, + you do not need to be root to build or run buildroot.

          + +

          And as of today buildroot even has its own webpage, making it a first class + citizen of uclibc.org and busybox.net, and more importantly, make it easy + to find and point to buildroot.

          + +

          If you find a bug in buildroot, or wish to submit a patch + to fix a problem or add a shiny new feature, please use + the Bug and Patch + Tracking System to post the details, to make certain + your work is not lost

          +
          +
          +
        • +
        + +
        +
        +
        + + + diff --git a/features/buildroot/docs/website/robots.txt b/features/buildroot/docs/website/robots.txt new file mode 100644 index 00000000..1b425ee0 --- /dev/null +++ b/features/buildroot/docs/website/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /cgi-bin/ diff --git a/features/buildroot/docs/website/sponsors.html b/features/buildroot/docs/website/sponsors.html new file mode 100644 index 00000000..7370ecb0 --- /dev/null +++ b/features/buildroot/docs/website/sponsors.html @@ -0,0 +1,350 @@ + + +
        +
        +
        + +
        +
        Sponsor of the Buildroot.org domain
        +
        +
        +

        The Buildroot community would like to thank + Zillabit for + donating the buildroot.org domain name and sponsoring + the registration fees 2009 - 2019.

        +
        +
        + + + +
        +
        +
        + +
        +
        Sponsors of the Buildroot Developers Meeting @ ELCE 2018
        +
        + +

        The Buildroot community would like to thank the following + companies for sponsoring + the Buildroot + Developers Meeting organized on October 20/21 before the + Embedded + Linux Conference Europe in Edinburgh.

        + +
        + +
        +
        +
        +
        + + + +
        +
        + Mind sponsored the + event by contributing financially to the Buildroot + Association. +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        + Amarula + Solutions sponsored the event by contributing + financially to the Buildroot Association. +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        + Bootlin + sponsored the event by contributing financially to + the Buildroot Association. +
        +
        +
        +
        +
        + +
        + +
        +
        +
        +
        + + + +
        +
        + Logilin sponsored the + event by contributing financially to the Buildroot + Association. +
        +
        +
        +
        + +
        +
        +
        +
        + + + +
        +
        + Tk Open Systems + sponsored the event by contributing financially to + the Buildroot Association. +
        +
        +
        +
        + +
        +
        +
        +
        + + + +
        +
        + Rockwell + Collins sponsored the event by funding the social + Saturday dinner for the participants. +
        +
        +
        +
        + +
        + +
        + +
        + +
        +
        Sponsor of the Buildroot Hackathon, March 2018
        +
        +
        +

        The Buildroot community would like to + thank Scaleway, who + provided the complete logistics to organize our Buildroot + Hackathon in Paris in March 2018: meeting room, Internet + connectivity and accommodation.

        +
        +
        + + + +
        +
        +
        + +
        +
        Past sponsors
        +
        +

        Throughout its history, the Buildroot project has been sponsored by + various companies, that we would like to thank below.

        + +
        +
        +
        +
        +
        + + + +
        +
        + OpenWide/Smile sponsored + the Buildroot Summer Camp that took place on July 1-5 2016 in Toulouse, France. OpenWide/Smile is + sponsoring the participation of Romain Naour and paid the food expenses for the meeting participants. + In 2018, Smile sponsored of LLVM/Clang integration into Buildroot, see the final + report. +
        +
        +
        +
        + +
        +
        +
        +
        + + + +
        +
        + Mind sponsored the + dinner of the FOSDEM 2014, 2015, 2016, 2017 and 2018 + Developers Meeting (Brussels) and ELCE 2016 (Berlin) + and 2017 (Prague), and the meeting room and the dinner for + the ELCE 2014 Developers Meeting (Düsseldorf). +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        +

        Google provided + the logistics for the FOSDEM 2013, FOSDEM 2014, + FOSDEM 2015, FOSDEM 2016, FOSDEM 2017 and FOSDEM + 2018 Developer Days in Brussels, Belgium.

        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +

        +

        +
        +
        + Imagination Technologies + sponsored the meeting room and dinner of the ELCE 2013 + Developer Days in Edinburgh, UK. +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        +

        CircuitCo sponsored + several development boards for the Google Summer of Code + 2013 project on Buildroot.

        +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        +

        BoundaryDevices + sponsored an i.MX6 development board for the Google Summer of + Code 2013 project on Buildroot.

        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +

        +

        +
        +
        +

        Fluendo sponsored the + meeting room for the ELCE 2012 Developer Days in Barcelona + Spain.

        +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        +

        Synopsys sponsored the + dinner for the ELCE 2012 Developer Days in Barcelona, Spain.

        +
        +
        +
        +
        + +
        +
        +
        +
        +

        +

        +
        +
        +

        Calao Systems + provided a a meeting room for the ELCE 2009 Developer Days + in Grenoble, France.

        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +

        +

        +
        +
        +

        Free + Electrons sponsored the meeting location for the + ELCE 2016 Developer Days in Berlin, Germany, and the + lunch for the ELCE 2009 Developer Days in Grenoble, + France.

        +
        +
        +
        +
        +
        + +
        +
        +
        + + diff --git a/features/buildroot/docs/website/support.html b/features/buildroot/docs/website/support.html new file mode 100644 index 00000000..1a5ce9e2 --- /dev/null +++ b/features/buildroot/docs/website/support.html @@ -0,0 +1,99 @@ + + +
        +
        +
        + +
        +
        Support
        +
        +

        You can get support for Buildroot through three main channels:

        + +
        +
        +
        +
        IRC
        +
        +
        +
        + +
        +
        +

        The Buildroot IRC channel is + #buildroot, hosted on Freenode. If you do not have an IRC client, you can + use the Freenode web interface. + When asking for help on IRC, share relevant logs or pieces of code using a code + sharing website.

        + +

        Note that due to excessive spamming on Freenode, the channel can only be + joined if you are a registered user with + Freenode nickserv + service. Follow the instructions to register as a user with a password, + and then join the #buildroot channel.

        +
        +
        +
        +
        +
        + +
        +
        +
        Mailing List Information
        +
        +
        +
        + +
        +
        +

        The mailing list is for discussion and + development. You can subscribe by visiting + this page. + Only subscribers to the Buildroot mailing list are allowed to post + to this list.

        + +

        Search the List Archives

        +

        Please search the mailing list archives before asking questions on the mailing + list, since there is a good chance someone else has asked the same question + before.

        + +
        + + + + + +
        +
        +
        +
        +
        +
        + +
        +
        +
        Bug Tracker
        +
        +
        +
        + +
        +
        +

        If you think you found a bug in Buildroot, you can use the + Bug Tracker to post your bugs and/or + participate to find solutions to existing problems.

        + +

        Note: patches are only accepted through the mailing list.

        +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        + + diff --git a/features/buildroot/fs/Config.in b/features/buildroot/fs/Config.in new file mode 100644 index 00000000..527051ef --- /dev/null +++ b/features/buildroot/fs/Config.in @@ -0,0 +1,20 @@ +menu "Filesystem images" + +source "fs/axfs/Config.in" +source "fs/btrfs/Config.in" +source "fs/cloop/Config.in" +source "fs/cpio/Config.in" +source "fs/cramfs/Config.in" +source "fs/ext2/Config.in" +source "fs/f2fs/Config.in" +source "fs/initramfs/Config.in" +source "fs/iso9660/Config.in" +source "fs/jffs2/Config.in" +source "fs/romfs/Config.in" +source "fs/squashfs/Config.in" +source "fs/tar/Config.in" +source "fs/ubi/Config.in" +source "fs/ubifs/Config.in" +source "fs/yaffs2/Config.in" + +endmenu diff --git a/features/buildroot/fs/axfs/Config.in b/features/buildroot/fs/axfs/Config.in new file mode 100644 index 00000000..8dfaffab --- /dev/null +++ b/features/buildroot/fs/axfs/Config.in @@ -0,0 +1,17 @@ +config BR2_TARGET_ROOTFS_AXFS + bool "axfs root filesystem" + help + The Advanced XIP File System is a Linux kernel filesystem + driver that enables files to be executed directly from flash + or ROM memory rather than being copied into RAM. It has the + ability to store individual *pages* in a file + uncompressed/XIP or compressed/Demand Paged. + + So far, the only supported mode is 'XIP all', so all the + files that have the execute attribute set will be XIP'ed. + + At the moment, the FS is not supported in Linux mainline + (v4.3-rc5), so the kernel has to be built with the axfs + patches to be able to read it. Patches can be found at: + + https://github.com/jaredeh/axfs diff --git a/features/buildroot/fs/axfs/axfs.mk b/features/buildroot/fs/axfs/axfs.mk new file mode 100644 index 00000000..4b93df55 --- /dev/null +++ b/features/buildroot/fs/axfs/axfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the axfs root filesystem image +# +################################################################################ + +ROOTFS_AXFS_DEPENDENCIES = host-axfsutils + +define ROOTFS_AXFS_CMD + $(HOST_DIR)/bin/mkfs.axfs -s -a $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/btrfs/Config.in b/features/buildroot/fs/btrfs/Config.in new file mode 100644 index 00000000..85be68e7 --- /dev/null +++ b/features/buildroot/fs/btrfs/Config.in @@ -0,0 +1,50 @@ +config BR2_TARGET_ROOTFS_BTRFS + bool "btrfs root filesystem" + select BR2_PACKAGE_HOST_BTRFS_PROGS + help + Build a btrfs root filesystem. If you enable this option, you + probably want to enable the btrfs-progs package too. + +if BR2_TARGET_ROOTFS_BTRFS + +config BR2_TARGET_ROOTFS_BTRFS_LABEL + string "filesystem label" + +config BR2_TARGET_ROOTFS_BTRFS_SIZE + string "filesystem size" + default "100m" + help + The size of the filesystem image in bytes. + Suffix with k, m, g or t for power-of-two kilo-, mega-, giga- + or terabytes. + +config BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR + string "sector size" + default "4096" + help + This value should be set to the page size in bytes. The + default value of 4096 is the the most common page size for + most systems. If the sectorsize differs from the page size, + the created filesystem may not be mountable by the kernel. + Therefore it is recommended to leave this value at + 4096. Unless you know that your kernel uses a different page + size. Suffix with k for power-of-two kilobytes. + +config BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE + string "btree node size" + default "16384" + help + The tree block size in which btrfs stores metadata in bytes. + This must be a multiple of the sectorsize, but not larger + than 64KiB (65536). + Suffix with k for power-of-two kilobytes. + +config BR2_TARGET_ROOTFS_BTRFS_FEATURES + string "Filesystem Features" + help + A comma separated string of features that can be enabled + during creation time. + For a list of available options, use: + `.../host/bin/mkfs.btrfs -O list-all` + +endif # BR2_TARGET_ROOTFS_BTRFS diff --git a/features/buildroot/fs/btrfs/btrfs.mk b/features/buildroot/fs/btrfs/btrfs.mk new file mode 100644 index 00000000..38851638 --- /dev/null +++ b/features/buildroot/fs/btrfs/btrfs.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# Build the btrfs root filesystem image +# +################################################################################ + +BTRFS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_BTRFS)-$(BTRFS_SIZE),y-) +$(error BR2_TARGET_ROOTFS_BTRFS_SIZE cannot be empty) +endif + +BTRFS_SIZE_NODE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE)) +BTRFS_SIZE_SECTOR = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR)) +BTRFS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_FEATURES)) +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +BTRFS_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_BTRFS_LABEL)) +# ") + +BTRFS_OPTS = \ + -f \ + -r '$(TARGET_DIR)' \ + -L '$(BTRFS_LABEL)' \ + --byte-count '$(BTRFS_SIZE)' \ + $(if $(BTRFS_SIZE_NODE),--nodesize '$(BTRFS_SIZE_NODE)') \ + $(if $(BTRFS_SIZE_SECTOR),--sectorsize '$(BTRFS_SIZE_SECTOR)') \ + $(if $(BTRFS_FEATURES),--features '$(BTRFS_FEATURES)') + +ROOTFS_BTRFS_DEPENDENCIES = host-btrfs-progs + +define ROOTFS_BTRFS_CMD + $(RM) -f $@ + $(HOST_DIR)/bin/mkfs.btrfs $(BTRFS_OPTS) $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/cloop/Config.in b/features/buildroot/fs/cloop/Config.in new file mode 100644 index 00000000..3e01067a --- /dev/null +++ b/features/buildroot/fs/cloop/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_ROOTFS_CLOOP + bool "cloop root filesystem for the target device" + help + Build a cloop root filesystem + + cloop is a Linux kernel module that enables compressed + loopback filesystem support. With it you can mount a + compressed filesystem like a block device and seamlessly + decompress its data while accessing it. The majority of the + software on an LNX-BBC is accessed in this fashion. diff --git a/features/buildroot/fs/cloop/cloop.mk b/features/buildroot/fs/cloop/cloop.mk new file mode 100644 index 00000000..17749c5a --- /dev/null +++ b/features/buildroot/fs/cloop/cloop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# Build the compressed loop root filesystem image +# +################################################################################ + +ROOTFS_CLOOP_DEPENDENCIES = host-cloop host-cdrkit + +define ROOTFS_CLOOP_CMD + $(HOST_DIR)/bin/genisoimage -r $(TARGET_DIR) | \ + $(HOST_DIR)/bin/create_compressed_fs - 65536 > $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/common.mk b/features/buildroot/fs/common.mk new file mode 100644 index 00000000..ca46a331 --- /dev/null +++ b/features/buildroot/fs/common.mk @@ -0,0 +1,208 @@ +# +# Macro that builds the needed Makefile target to create a root +# filesystem image. +# +# The following variable must be defined before calling this macro +# +# ROOTFS_$(FSTYPE)_CMD, the command that generates the root +# filesystem image. A single command is allowed. The filename of the +# filesystem image that it must generate is $$@. +# +# The following variables can optionaly be defined +# +# ROOTFS_$(FSTYPE)_DEPENDENCIES, the list of dependencies needed to +# build the root filesystem (usually host tools) +# +# ROOTFS_$(FSTYPE)_PRE_GEN_HOOKS, a list of hooks to call before +# generating the filesystem image +# +# ROOTFS_$(FSTYPE)_POST_GEN_HOOKS, a list of hooks to call after +# generating the filesystem image +# +# In terms of configuration option, this macro assumes that the +# BR2_TARGET_ROOTFS_$(FSTYPE) config option allows to enable/disable +# the generation of a filesystem image of a particular type. If +# the configuration options BR2_TARGET_ROOTFS_$(FSTYPE)_GZIP, +# BR2_TARGET_ROOTFS_$(FSTYPE)_BZIP2 or +# BR2_TARGET_ROOTFS_$(FSTYPE)_LZMA exist and are enabled, then the +# macro will automatically generate a compressed filesystem image. + +FS_DIR = $(BUILD_DIR)/buildroot-fs +ROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE) \ + $(BR2_ROOTFS_STATIC_DEVICE_TABLE)) + +ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES)) + +ROOTFS_FULL_DEVICES_TABLE = $(FS_DIR)/full_devices_table.txt +ROOTFS_FULL_USERS_TABLE = $(FS_DIR)/full_users_table.txt + +ifeq ($(BR2_REPRODUCIBLE),y) +define ROOTFS_REPRODUCIBLE + find $(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$(SOURCE_DATE_EPOCH) +endef +endif + +ROOTFS_COMMON_NAME = rootfs-common +ROOTFS_COMMON_TYPE = rootfs +ROOTFS_COMMON_DEPENDENCIES = \ + host-fakeroot host-makedevs \ + $(BR2_TAR_HOST_DEPENDENCY) \ + $(if $(PACKAGES_USERS)$(ROOTFS_USERS_TABLES),host-mkpasswd) + +ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES = $(sort \ + $(if $(filter undefined,$(origin ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X)), \ + $(eval ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X := \ + $(foreach p, \ + $(ROOTFS_COMMON_DEPENDENCIES), \ + $(p) \ + $($(call UPPERCASE,$(p))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ) \ + ) \ + $(ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X)) + +.PHONY: rootfs-common +rootfs-common: $(ROOTFS_COMMON_DEPENDENCIES) target-finalize + @$(call MESSAGE,"Generating root filesystems common tables") + rm -rf $(FS_DIR) + mkdir -p $(FS_DIR) + + $(call PRINTF,$(PACKAGES_USERS)) >> $(ROOTFS_FULL_USERS_TABLE) +ifneq ($(ROOTFS_USERS_TABLES),) + cat $(ROOTFS_USERS_TABLES) >> $(ROOTFS_FULL_USERS_TABLE) +endif + + $(call PRINTF,$(PACKAGES_PERMISSIONS_TABLE)) > $(ROOTFS_FULL_DEVICES_TABLE) +ifneq ($(ROOTFS_DEVICE_TABLES),) + cat $(ROOTFS_DEVICE_TABLES) >> $(ROOTFS_FULL_DEVICES_TABLE) +endif +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + $(call PRINTF,$(PACKAGES_DEVICES_TABLE)) >> $(ROOTFS_FULL_DEVICES_TABLE) +endif + +rootfs-common-show-depends: + @echo $(ROOTFS_COMMON_DEPENDENCIES) + +.PHONY: rootfs-common-show-info +rootfs-common-show-info: + @: + $(info $(call clean-json,{ $(call json-info,ROOTFS_COMMON) })) + +# Since this function will be called from within an $(eval ...) +# all variable references except the arguments must be $$-quoted. +define inner-rootfs + +ROOTFS_$(2)_NAME = rootfs-$(1) +ROOTFS_$(2)_TYPE = rootfs +ROOTFS_$(2)_IMAGE_NAME ?= rootfs.$(1) +ROOTFS_$(2)_FINAL_IMAGE_NAME = $$(strip $$(ROOTFS_$(2)_IMAGE_NAME)) +ROOTFS_$(2)_DIR = $$(FS_DIR)/$(1) +ROOTFS_$(2)_TARGET_DIR = $$(ROOTFS_$(2)_DIR)/target + +ROOTFS_$(2)_DEPENDENCIES += rootfs-common + +ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES = $$(sort \ + $$(if $$(filter undefined,$$(origin ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X)), \ + $$(eval ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X := \ + $$(foreach p, \ + $$(ROOTFS_$(2)_DEPENDENCIES), \ + $$(p) \ + $$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_DEPENDENCIES) \ + ) \ + ) \ + ) \ + $$(ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X)) + +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y) +ROOTFS_$(2)_COMPRESS_EXT = .gz +ROOTFS_$(2)_COMPRESS_CMD = gzip -9 -c -n +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_BZIP2),y) +ROOTFS_$(2)_COMPRESS_EXT = .bz2 +ROOTFS_$(2)_COMPRESS_CMD = bzip2 -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZMA),y) +ROOTFS_$(2)_DEPENDENCIES += host-lzma +ROOTFS_$(2)_COMPRESS_EXT = .lzma +ROOTFS_$(2)_COMPRESS_CMD = $$(LZMA) -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZ4),y) +ROOTFS_$(2)_DEPENDENCIES += host-lz4 +ROOTFS_$(2)_COMPRESS_EXT = .lz4 +ROOTFS_$(2)_COMPRESS_CMD = lz4 -l -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZO),y) +ROOTFS_$(2)_DEPENDENCIES += host-lzop +ROOTFS_$(2)_COMPRESS_EXT = .lzo +ROOTFS_$(2)_COMPRESS_CMD = $$(LZOP) -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_XZ),y) +ROOTFS_$(2)_DEPENDENCIES += host-xz +ROOTFS_$(2)_COMPRESS_EXT = .xz +ROOTFS_$(2)_COMPRESS_CMD = xz -9 -C crc32 -c +endif + +$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): ROOTFS=$(2) +$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): FAKEROOT_SCRIPT=$$(ROOTFS_$(2)_DIR)/fakeroot +$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES) + @$$(call MESSAGE,"Generating filesystem image $$(ROOTFS_$(2)_FINAL_IMAGE_NAME)") + mkdir -p $$(@D) + rm -rf $$(ROOTFS_$(2)_DIR) + mkdir -p $$(ROOTFS_$(2)_DIR) + rsync -auH \ + --exclude=/$$(notdir $$(TARGET_DIR_WARNING_FILE)) \ + $$(BASE_TARGET_DIR)/ \ + $$(TARGET_DIR) + + echo '#!/bin/sh' > $$(FAKEROOT_SCRIPT) + echo "set -e" >> $$(FAKEROOT_SCRIPT) + + echo "chown -h -R 0:0 $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) + PATH=$$(BR_PATH) $$(TOPDIR)/support/scripts/mkusers $$(ROOTFS_FULL_USERS_TABLE) $$(TARGET_DIR) >> $$(FAKEROOT_SCRIPT) + echo "$$(HOST_DIR)/bin/makedevs -d $$(ROOTFS_FULL_DEVICES_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) + $$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ + echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \ + echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep)) + $$(foreach hook,$$(ROOTFS_PRE_CMD_HOOKS),\ + $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) + + $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),\ + $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) + $$(call PRINTF,$$(ROOTFS_REPRODUCIBLE)) >> $$(FAKEROOT_SCRIPT) + $$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT) + chmod a+x $$(FAKEROOT_SCRIPT) + PATH=$$(BR_PATH) FAKEROOTDONTTRYCHOWN=1 $$(HOST_DIR)/bin/fakeroot -- $$(FAKEROOT_SCRIPT) + $(Q)rm -rf $$(TARGET_DIR) +ifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),) + PATH=$$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT) +endif + $$(foreach hook,$$(ROOTFS_$(2)_POST_GEN_HOOKS),$$(call $$(hook))$$(sep)) + +rootfs-$(1)-show-depends: + @echo $$(ROOTFS_$(2)_DEPENDENCIES) + +rootfs-$(1)-show-info: + @: + $$(info $$(call clean-json,{ $$(call json-info,ROOTFS_$(2)) })) + +rootfs-$(1): $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME) + +.PHONY: rootfs-$(1) rootfs-$(1)-show-depends rootfs-$(1)-show-info + +ifeq ($$(BR2_TARGET_ROOTFS_$(2)),y) +TARGETS_ROOTFS += rootfs-$(1) +PACKAGES += $$(filter-out rootfs-%,$$(ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES)) +endif + +# Check for legacy POST_TARGETS rules +ifneq ($$(ROOTFS_$(2)_POST_TARGETS),) +$$(error Filesystem $(1) uses post-target rules, which are no longer supported.\ + Update $(1) to use post-gen hooks instead) +endif + +endef + +# $(pkgname) also works well to return the filesystem name +rootfs = $(call inner-rootfs,$(pkgname),$(call UPPERCASE,$(pkgname))) + +include $(sort $(wildcard fs/*/*.mk)) diff --git a/features/buildroot/fs/cpio/Config.in b/features/buildroot/fs/cpio/Config.in new file mode 100644 index 00000000..83a7fa58 --- /dev/null +++ b/features/buildroot/fs/cpio/Config.in @@ -0,0 +1,65 @@ +config BR2_TARGET_ROOTFS_CPIO + bool "cpio the root filesystem (for use as an initial RAM filesystem)" + help + Build a cpio archive of the root filesystem. This is typically + used for an initial RAM filesystem that is passed to the + kernel by the bootloader. + +if BR2_TARGET_ROOTFS_CPIO + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_CPIO_NONE + help + Select compressor for cpio filesystem of the root filesystem. + If you use the cpio archive as an initial RAM filesystem, make + sure the kernel contains the decompression algorithm selected + here. + +config BR2_TARGET_ROOTFS_CPIO_NONE + bool "no compression" + help + Do not compress the cpio filesystem. + +config BR2_TARGET_ROOTFS_CPIO_GZIP + bool "gzip" + help + Do compress the cpio filesystem with gzip. + +config BR2_TARGET_ROOTFS_CPIO_BZIP2 + bool "bzip2" + help + Do compress the cpio filesystem with bzip2. + +config BR2_TARGET_ROOTFS_CPIO_LZ4 + bool "lz4" + help + Do compress the cpio filesystem with lz4. + +config BR2_TARGET_ROOTFS_CPIO_LZMA + bool "lzma" + help + Do compress the cpio filesystem with lzma. + +config BR2_TARGET_ROOTFS_CPIO_LZO + bool "lzo" + help + Do compress the cpio filesystem with lzop. + +config BR2_TARGET_ROOTFS_CPIO_XZ + bool "xz" + help + Do compress the cpio filesystem with xz. + +endchoice + +config BR2_TARGET_ROOTFS_CPIO_UIMAGE + bool "Create U-Boot image of the root filesystem" + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Add a U-Boot header to the cpio root filesystem. This allows + the initramfs to be loaded with the bootm command in U-Boot. + + The U-Boot image will be called rootfs.cpio.uboot + +endif # BR2_TARGET_ROOTFS_CPIO diff --git a/features/buildroot/fs/cpio/cpio.mk b/features/buildroot/fs/cpio/cpio.mk new file mode 100644 index 00000000..28a435dd --- /dev/null +++ b/features/buildroot/fs/cpio/cpio.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# cpio to archive target filesystem +# +################################################################################ + +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + ln -sf sbin/init $(TARGET_DIR)/init; \ + fi +endef + +else +# devtmpfs does not get automounted when initramfs is used. +# Add a pre-init script to mount it before running init +# We must have /dev/console very early, even before /init runs, +# for stdin/stdout/stderr +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \ + fi + mkdir -p $(TARGET_DIR)/dev + mknod -m 0622 $(TARGET_DIR)/dev/console c 5 1 +endef + +endif # BR2_ROOTFS_DEVICE_CREATION_STATIC + +ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT + +# --reproducible option was introduced in cpio v2.12, which may not be +# available in some old distributions, so we build host-cpio +ifeq ($(BR2_REPRODUCIBLE),y) +ROOTFS_CPIO_DEPENDENCIES += host-cpio +ROOTFS_CPIO_OPTS += --reproducible +endif + +define ROOTFS_CPIO_CMD + cd $(TARGET_DIR) && find . | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc > $@ +endef + +ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y) +ROOTFS_CPIO_DEPENDENCIES += host-uboot-tools +define ROOTFS_CPIO_UBOOT_MKIMAGE + $(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \ + -C none -d $@$(ROOTFS_CPIO_COMPRESS_EXT) $@.uboot +endef +ROOTFS_CPIO_POST_GEN_HOOKS += ROOTFS_CPIO_UBOOT_MKIMAGE +endif + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/cpio/init b/features/buildroot/fs/cpio/init new file mode 100755 index 00000000..dbe09ac6 --- /dev/null +++ b/features/buildroot/fs/cpio/init @@ -0,0 +1,7 @@ +#!/bin/sh +# devtmpfs does not get automounted for initramfs +/bin/mount -t devtmpfs devtmpfs /dev +exec 0/dev/console +exec 2>/dev/console +exec /sbin/init "$@" diff --git a/features/buildroot/fs/cramfs/Config.in b/features/buildroot/fs/cramfs/Config.in new file mode 100644 index 00000000..89f8ad52 --- /dev/null +++ b/features/buildroot/fs/cramfs/Config.in @@ -0,0 +1,26 @@ +config BR2_TARGET_ROOTFS_CRAMFS + bool "cramfs root filesystem" + help + Build a cramfs root filesystem + + https://github.com/npitre/cramfs-tools + +if BR2_TARGET_ROOTFS_CRAMFS + +config BR2_TARGET_ROOTFS_CRAMFS_XIP + bool "Support XIP of all ELF files" + help + For ELF files, uncompressed and properly aligned data blocks + will be automatically be mapped directly into user space + whenever possible providing eXecute-In-Place (XIP) from ROM + of read-only segments. Data segments mapped read-write + (hence they have to be copied to RAM) may still be + compressed in the cramfs image in the same file along with + non compressed read-only segments. Both MMU and no-MMU + systems are supported. This is particularly handy for tiny + embedded systems with very tight memory constraints. + + The CRAMFS_MTD Kconfig option must also be enabled in a + 4.15+ kernel. + +endif # BR2_TARGET_ROOTFS_CRAMFS diff --git a/features/buildroot/fs/cramfs/cramfs.mk b/features/buildroot/fs/cramfs/cramfs.mk new file mode 100644 index 00000000..92506388 --- /dev/null +++ b/features/buildroot/fs/cramfs/cramfs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# Build the cramfs root filesystem image +# +################################################################################ + +ifeq ($(BR2_ENDIAN),"BIG") +CRAMFS_OPTS = -B +else +CRAMFS_OPTS = -L +endif + +ifeq ($(BR2_TARGET_ROOTFS_CRAMFS_XIP),y) +ifeq ($(BR2_USE_MMU),y) +CRAMFS_OPTS += -X -X +else +CRAMFS_OPTS += -X +endif +endif + +define ROOTFS_CRAMFS_CMD + $(HOST_DIR)/bin/mkcramfs $(CRAMFS_OPTS) $(TARGET_DIR) $@ +endef + +ROOTFS_CRAMFS_DEPENDENCIES = host-cramfs + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/ext2/Config.in b/features/buildroot/fs/ext2/Config.in new file mode 100644 index 00000000..74bacc11 --- /dev/null +++ b/features/buildroot/fs/ext2/Config.in @@ -0,0 +1,135 @@ +config BR2_TARGET_ROOTFS_EXT2 + bool "ext2/3/4 root filesystem" + select BR2_PACKAGE_HOST_E2FSPROGS + help + Build an ext2/3/4 root filesystem + +if BR2_TARGET_ROOTFS_EXT2 + +config BR2_TARGET_ROOTFS_EXT2_2 + bool + +choice + bool "ext2/3/4 variant" + default BR2_TARGET_ROOTFS_EXT2_2r1 + +config BR2_TARGET_ROOTFS_EXT2_2r0 + bool "ext2 (rev0)" + select BR2_TARGET_ROOTFS_EXT2_2 + +config BR2_TARGET_ROOTFS_EXT2_2r1 + bool "ext2 (rev1)" + select BR2_TARGET_ROOTFS_EXT2_2 + +config BR2_TARGET_ROOTFS_EXT2_3 + bool "ext3" + +config BR2_TARGET_ROOTFS_EXT2_4 + bool "ext4" + +endchoice + +config BR2_TARGET_ROOTFS_EXT2_GEN + int + default 2 if BR2_TARGET_ROOTFS_EXT2_2 + default 3 if BR2_TARGET_ROOTFS_EXT2_3 + default 4 if BR2_TARGET_ROOTFS_EXT2_4 + +# All ext generations are revision 1, except ext2r0, which is revision 0 +config BR2_TARGET_ROOTFS_EXT2_REV + int + default 0 if BR2_TARGET_ROOTFS_EXT2_2r0 + default 1 if !BR2_TARGET_ROOTFS_EXT2_2r0 + +config BR2_TARGET_ROOTFS_EXT2_LABEL + string "filesystem label" + +config BR2_TARGET_ROOTFS_EXT2_SIZE + string "exact size" + default BR2_TARGET_ROOTFS_EXT2_BLOCKS if BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP # legacy 2017.08 + default "60M" + help + The size of the filesystem image. If it does not have a + suffix, it is interpreted as power-of-two kilobytes. If it is + suffixed by 'k', 'm', 'g', 't' (either upper-case or + lower-case), then it is interpreted in power-of-two kilobytes, + megabytes, gigabytes, terabytes, etc. + +config BR2_TARGET_ROOTFS_EXT2_INODES + int "exact number of inodes (leave at 0 for auto calculation)" + default 0 + +config BR2_TARGET_ROOTFS_EXT2_RESBLKS + int "reserved blocks percentage" + default 5 + help + The number of blocks on the filesystem (as a percentage of the + total number of blocks), that are reserved for use by root. + Traditionally, this has been 5%, and all ext-related tools + still default to reserving 5% when creating a new ext + filesystem. + +config BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS + string "additional mke2fs options" + default "-O ^64bit" + help + Specify a space-separated list of mke2fs options, including + any ext2/3/4 filesystem features. + + For more information about the mke2fs options, see the manual + page mke2fs(8). + + For more information about the ext2/3/4 features which can be + set, see the manual page ext4(5). + + The default is "-O ^64bit", i.e. disable 64-bit filesystem + support. This default value has been chosen because U-Boot + versions before 2017.02 don't support this filesystem + option: using it may make the filesystem unreadable by + U-Boot. + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_EXT2_NONE + help + Select compressor for ext2/3/4 filesystem of the root + filesystem + +config BR2_TARGET_ROOTFS_EXT2_NONE + bool "no compression" + help + Do not compress the ext2/3/4 filesystem. + +config BR2_TARGET_ROOTFS_EXT2_GZIP + bool "gzip" + help + Do compress the ext2/3/4 filesystem with gzip. + +config BR2_TARGET_ROOTFS_EXT2_BZIP2 + bool "bzip2" + help + Do compress the ext2/3/4 filesystem with bzip2. + +config BR2_TARGET_ROOTFS_EXT2_LZ4 + bool "lz4" + help + Do compress the ext2 filesystem with lz4. + +config BR2_TARGET_ROOTFS_EXT2_LZMA + bool "lzma" + help + Do compress the ext2/3/4 filesystem with lzma. + +config BR2_TARGET_ROOTFS_EXT2_LZO + bool "lzo" + help + Do compress the ext2 filesystem with lzop. + +config BR2_TARGET_ROOTFS_EXT2_XZ + bool "xz" + help + Do compress the ext2 filesystem with xz. + +endchoice + +endif # BR2_TARGET_ROOTFS_EXT2 diff --git a/features/buildroot/fs/ext2/ext2.mk b/features/buildroot/fs/ext2/ext2.mk new file mode 100644 index 00000000..6bb4b1c7 --- /dev/null +++ b/features/buildroot/fs/ext2/ext2.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# Build the ext2 root filesystem image +# +################################################################################ + +EXT2_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_EXT2)-$(EXT2_SIZE),y-) +$(error BR2_TARGET_ROOTFS_EXT2_SIZE cannot be empty) +endif + +EXT2_MKFS_OPTS = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS)) + +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +EXT2_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_LABEL)) +#" Syntax highlighting... :-/ ) + +EXT2_OPTS = \ + -d $(TARGET_DIR) \ + -r $(BR2_TARGET_ROOTFS_EXT2_REV) \ + -N $(BR2_TARGET_ROOTFS_EXT2_INODES) \ + -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS) \ + -L "$(EXT2_LABEL)" \ + $(EXT2_MKFS_OPTS) + +ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs + +define ROOTFS_EXT2_CMD + rm -f $@ + $(HOST_DIR)/sbin/mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ \ + "$(EXT2_SIZE)" \ + || { ret=$$?; \ + echo "*** Maybe you need to increase the filesystem size (BR2_TARGET_ROOTFS_EXT2_SIZE)" 1>&2; \ + exit $$ret; \ + } +endef + +ifneq ($(BR2_TARGET_ROOTFS_EXT2_GEN),2) +define ROOTFS_EXT2_SYMLINK + ln -sf rootfs.ext2$(ROOTFS_EXT2_COMPRESS_EXT) $(BINARIES_DIR)/rootfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN)$(ROOTFS_EXT2_COMPRESS_EXT) +endef +ROOTFS_EXT2_POST_GEN_HOOKS += ROOTFS_EXT2_SYMLINK +endif + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/f2fs/Config.in b/features/buildroot/fs/f2fs/Config.in new file mode 100644 index 00000000..20d70fbf --- /dev/null +++ b/features/buildroot/fs/f2fs/Config.in @@ -0,0 +1,59 @@ +config BR2_TARGET_ROOTFS_F2FS + bool "f2fs root filesystem" + select BR2_PACKAGE_HOST_F2FS_TOOLS + help + Build a f2fs root filesystem. If you enable this option, you + probably want to enable the f2fs-tools package too. + +if BR2_TARGET_ROOTFS_F2FS + +config BR2_TARGET_ROOTFS_F2FS_LABEL + string "filesystem label" + +config BR2_TARGET_ROOTFS_F2FS_SIZE + string "filesystem size" + default "100M" + help + The size of the filesystem image in bytes. + Suffix with K, M, G or T for power-of-two kilo-, mega-, giga- + or terabytes. + +config BR2_TARGET_ROOTFS_F2FS_COLD_FILES + string "extension list for cold files" + help + Specify a comma separated file extension list in order f2fs + to treat them as cold files. The default list includes most + of multimedia file extensions such as jpg, gif, mpeg, mkv, + and so on. + +config BR2_TARGET_ROOTFS_F2FS_HOT_FILES + string "extension list for hot files" + help + Specify a comma separated file extension list in order f2fs + to treat them as hot files. The default list includes only + a db extension. + +config BR2_TARGET_ROOTFS_F2FS_OVERPROVISION + int "overprovision ratio" + default 0 + help + The percentage over the volume size for overprovision + area. This area is hidden to users, and utilized by F2FS + cleaner. + + Leave at 0 for autocalculation according to the partition + size. + +config BR2_TARGET_ROOTFS_F2FS_DISCARD + bool "discard policy" + default y + help + Enable or disable discard policy. + +config BR2_TARGET_ROOTFS_F2FS_FEATURES + string "filesystem features" + help + List of features that the F2FS filesystem should support + (e.g "encrypt") + +endif # BR2_TARGET_ROOTFS_F2FS diff --git a/features/buildroot/fs/f2fs/f2fs.mk b/features/buildroot/fs/f2fs/f2fs.mk new file mode 100644 index 00000000..f35bb60a --- /dev/null +++ b/features/buildroot/fs/f2fs/f2fs.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# Build the f2fs root filesystem image +# +################################################################################ + +F2FS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_F2FS)-$(F2FS_SIZE),y-) +$(error BR2_TARGET_ROOTFS_F2FS_SIZE cannot be empty) +endif + +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +F2FS_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_F2FS_LABEL)) +# ") +F2FS_COLD_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_COLD_FILES)) +F2FS_HOT_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_HOT_FILES)) + +ifeq ($(BR2_TARGET_ROOTFS_F2FS_DISCARD),y) +F2FS_DISCARD = 1 +else +F2FS_DISCARD = 0 +endif + +F2FS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_FEATURES)) + +F2FS_OPTS = \ + -f \ + -l "$(F2FS_LABEL)" \ + -t $(F2FS_DISCARD) \ + -o $(BR2_TARGET_ROOTFS_F2FS_OVERPROVISION) \ + $(if $(F2FS_COLD_FILES),-e "$(F2FS_COLD_FILES)") \ + $(if $(F2FS_HOT_FILES),-E "$(F2FS_HOT_FILES)") \ + $(if $(F2FS_FEATURES),-O "$(F2FS_FEATURES)") + +ROOTFS_F2FS_DEPENDENCIES = host-f2fs-tools + +define ROOTFS_F2FS_CMD + $(RM) -f $@ + truncate -s $(F2FS_SIZE) $@ + $(HOST_DIR)/sbin/mkfs.f2fs $(F2FS_OPTS) $@ + $(HOST_DIR)/sbin/sload.f2fs -f $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/initramfs/Config.in b/features/buildroot/fs/initramfs/Config.in new file mode 100644 index 00000000..9d5a3f92 --- /dev/null +++ b/features/buildroot/fs/initramfs/Config.in @@ -0,0 +1,22 @@ +config BR2_TARGET_ROOTFS_INITRAMFS + bool "initial RAM filesystem linked into linux kernel" + depends on BR2_LINUX_KERNEL + select BR2_TARGET_ROOTFS_CPIO + help + Integrate the root filesystem generated by Buildroot as an + initramfs inside the kernel image. This integration will + take place automatically. + + A rootfs.cpio file will be generated in the images/ directory. + This is the archive that will be included in the kernel image. + The default rootfs compression set in the kernel configuration + is used, regardless of how buildroot's cpio archive is + configured. + + Note that enabling initramfs together with another filesystem + formats doesn't make sense: you would end up having two + identical root filesystems, one embedded inside the kernel + image, and one separately. + +comment "initramfs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/features/buildroot/fs/initramfs/initramfs.mk b/features/buildroot/fs/initramfs/initramfs.mk new file mode 100644 index 00000000..c7510932 --- /dev/null +++ b/features/buildroot/fs/initramfs/initramfs.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# Build a kernel with an integrated initial ramdisk filesystem based on cpio. +# +################################################################################ + +# The generic fs infrastructure isn't very useful here. +# +# The initramfs image does not actually build an image; its only purpose is: +# 1- to ensure rootfs.cpio is generated, +# 2- to then rebuild the kernel with rootfs.cpio as initramfs +# +# Note: ordering of the dependencies is not guaranteed here, but in +# linux/linux.mk, via the linux-rebuild-with-initramfs rule, which depends +# on the rootfs-cpio filesystem rule. +# +# Note: the trick here is that we directly depend on rebuilding the Linux +# kernel image (which itself depends on the rootfs-cpio rule), while we +# advertise that our dependency is on the rootfs-cpio rule, which is +# cleaner in the dependency graph. + +rootfs-initramfs: linux-rebuild-with-initramfs + +rootfs-initramfs-show-depends: + @echo rootfs-cpio + +.PHONY: rootfs-initramfs rootfs-initramfs-show-depends + +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +TARGETS_ROOTFS += rootfs-initramfs +endif diff --git a/features/buildroot/fs/iso9660/Config.in b/features/buildroot/fs/iso9660/Config.in new file mode 100644 index 00000000..6f001c06 --- /dev/null +++ b/features/buildroot/fs/iso9660/Config.in @@ -0,0 +1,89 @@ +config BR2_TARGET_ROOTFS_ISO9660 + bool "iso image" + depends on (BR2_i386 || BR2_x86_64) + depends on BR2_LINUX_KERNEL + depends on BR2_TARGET_GRUB2_I386_PC || \ + BR2_TARGET_SYSLINUX_ISOLINUX + select BR2_LINUX_KERNEL_INSTALL_TARGET \ + if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS) + help + Build a bootable ISO9660 image. By default, the root + filesystem is directly packed as the ISO9660 filesystem, + which means the root filesystem will be read-only. It + requires ISO9660 filesystem support and CDROM support in the + kernel. + + However, if BR2_TARGET_ROOTFS_INITRAMFS or + BR2_TARGET_ROOTFS_ISO9660_INITRD have been enabled, the + ISO9660 filesystem will only contain a kernel image and + optionally an external initrd image. In this case, the + filesystem being in RAM, it will be read/write. No ISO9660 + or CDROM support is needed in the kernel. + +if BR2_TARGET_ROOTFS_ISO9660 + +choice + prompt "Bootloader" + +config BR2_TARGET_ROOTFS_ISO9660_GRUB2 + bool "grub2" + depends on BR2_TARGET_GRUB2_I386_PC + help + Use Grub 2 as the bootloader for the ISO9660 image. Make + sure to enable the 'iso9660' module in + BR2_TARGET_GRUB2_BUILTIN_MODULES and to use 'cd' as the boot + partition in BR2_TARGET_GRUB2_BOOT_PARTITION=. + +config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + bool "isolinux" + depends on BR2_TARGET_SYSLINUX_ISOLINUX + +endchoice + +config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU + string "Boot menu config file" + default "fs/iso9660/grub.cfg" if BR2_TARGET_ROOTFS_ISO9660_GRUB2 + default "fs/iso9660/isolinux.cfg" if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + help + Use this option to provide a custom bootloader configuration + file (grub.cfg for Grub 2, isolinux.cfg for isolinux). + + Note that the strings __KERNEL_PATH__ and __INITRD_PATH__ + will automatically be replaced by the path to the kernel and + initrd images respectively. + +config BR2_TARGET_ROOTFS_ISO9660_INITRD + bool "Use initrd" + default y + select BR2_TARGET_ROOTFS_CPIO + help + Enable this option to have the root filesystem bundled as an + initrd/initramfs rather than directly as the ISO9660 + filesystem. With this option enabled, the ISO9660 will only + contain a kernel image, an initrd image (unless an initramfs + linked into the kernel is used) and the bootloader. + +config BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION + bool "transparent compression" + depends on !BR2_TARGET_ROOTFS_ISO9660_INITRD + depends on !BR2_TARGET_ROOTFS_INITRAMFS + help + Say 'y' to enable use of transparent (de)compression. Files + are stored compressed and will be decompressed on-the-fly + upon access at runtime. + +config BR2_TARGET_ROOTFS_ISO9660_HYBRID + bool "Build hybrid image" + depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + help + Enable this option to build an hybrid image, i.e an image + which can either be booted from a CD-ROM or from a device + which BIOS considers a hard disk or ZIP disk, e.g. a USB key + or similar. + +endif + +comment "iso image needs a Linux kernel and either grub2 i386-pc or isolinux to be built" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_LINUX_KERNEL || \ + !(BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_SYSLINUX_ISOLINUX) diff --git a/features/buildroot/fs/iso9660/grub.cfg b/features/buildroot/fs/iso9660/grub.cfg new file mode 100644 index 00000000..5a74b235 --- /dev/null +++ b/features/buildroot/fs/iso9660/grub.cfg @@ -0,0 +1,7 @@ +set default="0" +set timeout="10" + +menuentry "Buildroot" { + linux __KERNEL_PATH__ root=/dev/sr0 + initrd __INITRD_PATH__ +} diff --git a/features/buildroot/fs/iso9660/iso9660.mk b/features/buildroot/fs/iso9660/iso9660.mk new file mode 100644 index 00000000..a129655c --- /dev/null +++ b/features/buildroot/fs/iso9660/iso9660.mk @@ -0,0 +1,146 @@ +################################################################################ +# +# Build the iso96600 root filesystem image +# +################################################################################ + +# +# We need to handle three cases: +# +# 1. The ISO9660 filesystem will really be the real root filesystem +# itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is +# disabled. +# +# 2. The ISO9660 filesystem will be a filesystem with just a kernel +# image, initrd and grub. This is when +# BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but +# BR2_TARGET_ROOTFS_INITRAMFS is disabled. +# +# 3. The ISO9660 filesystem will be a filesystem with just a kernel +# image and grub. This is like (2), except that the initrd is +# built into the kernel image. This is when +# BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value +# of BR2_TARGET_ROOTFS_ISO9660_INITRD). + +ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU)) + +ROOTFS_ISO9660_DEPENDENCIES = host-cdrkit linux + +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +ROOTFS_ISO9660_USE_INITRD = YES +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y) +ROOTFS_ISO9660_USE_INITRD = YES +endif + +ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) +ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +define ROOTFS_ISO9660_CREATE_TEMPDIR + $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR) + mkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y) +ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools +ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +# This must be early, before we copy the bootloader files. +define ROOTFS_ISO9660_MKZFTREE + $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR) + $(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \ + $(TARGET_DIR) \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE +ROOTFS_ISO9660_GENISOIMAGE_OPTS += -z +else +ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR) +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y) +ROOTFS_ISO9660_DEPENDENCIES += grub2 +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg +ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img +define ROOTFS_ISO9660_INSTALL_BOOTLOADER + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img +endef +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y) +ROOTFS_ISO9660_DEPENDENCIES += syslinux +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg +ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin +define ROOTFS_ISO9660_INSTALL_BOOTLOADER + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32 +endef +endif + +define ROOTFS_ISO9660_PREPARATION + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) + $(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) + $(ROOTFS_ISO9660_INSTALL_BOOTLOADER) +endef + +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION + +define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD + $(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) +endef + +# Copy the kernel to temporary filesystem +define ROOTFS_ISO9660_COPY_KERNEL + $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME) +endef + +ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL + +# If initramfs is used, disable loading the initrd as the rootfs is +# already inside the kernel image. Otherwise, make sure a cpio is +# generated and use it as the initrd. +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD +else +ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio +define ROOTFS_ISO9660_COPY_INITRD + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd + $(SED) "s%__INITRD_PATH__%/boot/initrd%" \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD +endif + +else # ROOTFS_ISO9660_USE_INITRD +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y) +# We must use the uncompressed kernel image +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL +endif + +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD + +endif # ROOTFS_ISO9660_USE_INITRD + +define ROOTFS_ISO9660_CMD + $(HOST_DIR)/bin/genisoimage -J -R -b $(ROOTFS_ISO9660_BOOT_IMAGE) \ + -no-emul-boot -boot-load-size 4 -boot-info-table \ + $(ROOTFS_ISO9660_GENISOIMAGE_OPTS) \ + -o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR) +endef + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y) +define ROOTFS_ISO9660_GEN_HYBRID + $(HOST_DIR)/bin/isohybrid -t 0x96 $@ +endef + +ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID +endif + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/iso9660/isolinux.cfg b/features/buildroot/fs/iso9660/isolinux.cfg new file mode 100644 index 00000000..28be4fa0 --- /dev/null +++ b/features/buildroot/fs/iso9660/isolinux.cfg @@ -0,0 +1,5 @@ +default 1 +label 1 + kernel __KERNEL_PATH__ + initrd __INITRD_PATH__ + append root=/dev/sr0 diff --git a/features/buildroot/fs/jffs2/Config.in b/features/buildroot/fs/jffs2/Config.in new file mode 100644 index 00000000..44c0b104 --- /dev/null +++ b/features/buildroot/fs/jffs2/Config.in @@ -0,0 +1,113 @@ +config BR2_TARGET_ROOTFS_JFFS2 + bool "jffs2 root filesystem" + help + Build a jffs2 root filesystem + +if BR2_TARGET_ROOTFS_JFFS2 + +choice + prompt "Flash Type" + default BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + +config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + bool "AT45 dataflash with 1056 byte pagesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + bool "AT45 dataflash with 528 byte pagesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + bool "NAND flash with 16 kB erasesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + bool "NAND flash with 128 kB erasesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + bool "Parallel flash with 128 kB erase size" + +config BR2_TARGET_ROOTFS_JFFS2_FLASH_64 + bool "Parallel flash with 64 kB erase size" + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM + bool "Select custom erase size" + +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE + hex "Erase block size" + default 0x20000 + depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM + help + Set to erase size of memory + +config BR2_TARGET_ROOTFS_JFFS2_EBSIZE + hex + default 0x2100 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + default 0x1080 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + default 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + default 0x10000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64 + default BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE if BR2_TARGET_ROOTFS_JFFS2_CUSTOM + +config BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + bool "Do not use Cleanmarker" + default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + help + Do not use cleanmarkers if using NAND flash or Dataflash where + the pagesize is not a power of 2 + +config BR2_TARGET_ROOTFS_JFFS2_PAD + bool "Pad output" + +config BR2_TARGET_ROOTFS_JFFS2_PADSIZE + hex "Pad output size (0x0 = to end of EB)" + default 0x0 + depends on BR2_TARGET_ROOTFS_JFFS2_PAD + help + Set to 0x0 to pad to end of erase block. + +choice + prompt "Endianess" + default BR2_TARGET_ROOTFS_JFFS2_BE if BR2_ENDIAN = "BIG" + +config BR2_TARGET_ROOTFS_JFFS2_LE + bool "little-endian" + +config BR2_TARGET_ROOTFS_JFFS2_BE + bool "big-endian" + +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_SUMMARY + bool "Produce a summarized JFFS2 image" + help + A summarised image can be mounted faster if support is + enabled in the kernel (CONFIG_JFFS2_SUMMARY) + +config BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE + bool "Select custom virtual memory page size" + help + Use a custom virtual memory page size. Note that this is not + related to the flash memory page size. Using this option is + only needed if Linux is configured to use a page size + different than 4kB. + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE + hex "Virtual memory page size" + default 0x1000 + depends on BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE + help + Set to virtual memory page size of target system (in bytes). + This value should match the virtual page size in Linux (i.e. + this should have the same value as the value of the PAGE_SIZE + macro in Linux). It is not related to the flash memory page + size. + +endif diff --git a/features/buildroot/fs/jffs2/jffs2.mk b/features/buildroot/fs/jffs2/jffs2.mk new file mode 100644 index 00000000..740ab3e0 --- /dev/null +++ b/features/buildroot/fs/jffs2/jffs2.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# Build the jffs2 root filesystem image +# +################################################################################ + +JFFS2_OPTS := -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE) +SUMTOOL_OPTS := $(JFFS2_OPTS) + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_PAD),y) +ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0) +JFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)) +else +JFFS2_OPTS += -p +endif +SUMTOOL_OPTS += -p +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y) +JFFS2_OPTS += -l +SUMTOOL_OPTS += -l +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y) +JFFS2_OPTS += -b +SUMTOOL_OPTS += -b +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE),y) +JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE) +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y) +JFFS2_OPTS += -n +SUMTOOL_OPTS += -n +endif + +ROOTFS_JFFS2_DEPENDENCIES = host-mtd + +ifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),) +define ROOTFS_JFFS2_CMD + $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@.nosummary + $(SUMTOOL) $(SUMTOOL_OPTS) -i $@.nosummary -o $@ + rm $@.nosummary +endef +else +define ROOTFS_JFFS2_CMD + $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@ +endef +endif + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/romfs/Config.in b/features/buildroot/fs/romfs/Config.in new file mode 100644 index 00000000..84944a0f --- /dev/null +++ b/features/buildroot/fs/romfs/Config.in @@ -0,0 +1,4 @@ +config BR2_TARGET_ROOTFS_ROMFS + bool "romfs root filesystem" + help + Build a romfs image of the root filesystem. diff --git a/features/buildroot/fs/romfs/romfs.mk b/features/buildroot/fs/romfs/romfs.mk new file mode 100644 index 00000000..163751b4 --- /dev/null +++ b/features/buildroot/fs/romfs/romfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the romfs root filesystem image +# +################################################################################ + +ROOTFS_ROMFS_DEPENDENCIES = host-genromfs + +define ROOTFS_ROMFS_CMD + $(HOST_DIR)/bin/genromfs -d $(TARGET_DIR) -f $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/squashfs/Config.in b/features/buildroot/fs/squashfs/Config.in new file mode 100644 index 00000000..dde2097c --- /dev/null +++ b/features/buildroot/fs/squashfs/Config.in @@ -0,0 +1,34 @@ +config BR2_TARGET_ROOTFS_SQUASHFS + bool "squashfs root filesystem" + help + Build a squashfs root filesystem + +if BR2_TARGET_ROOTFS_SQUASHFS + +choice + prompt "Compression algorithm" + default BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + help + Select the squashfs compression algorithm to use when + generating the filesystem. + +config BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + bool "gzip" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 + bool "lz4" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZMA + bool "lzma" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZO + bool "lzo" + +config BR2_TARGET_ROOTFS_SQUASHFS4_XZ + bool "xz" + +config BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD + bool "zstd" + +endchoice +endif diff --git a/features/buildroot/fs/squashfs/squashfs.mk b/features/buildroot/fs/squashfs/squashfs.mk new file mode 100644 index 00000000..34ab0486 --- /dev/null +++ b/features/buildroot/fs/squashfs/squashfs.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# Build the squashfs root filesystem image +# +################################################################################ + +ROOTFS_SQUASHFS_DEPENDENCIES = host-squashfs + +ROOTFS_SQUASHFS_ARGS = -noappend -processors $(PARALLEL_JOBS) + +ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZ4),y) +ROOTFS_SQUASHFS_ARGS += -comp lz4 -Xhc +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZO),y) +ROOTFS_SQUASHFS_ARGS += -comp lzo +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZMA),y) +ROOTFS_SQUASHFS_ARGS += -comp lzma +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_XZ),y) +ROOTFS_SQUASHFS_ARGS += -comp xz +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD),y) +ROOTFS_SQUASHFS_ARGS += -comp zstd +else +ROOTFS_SQUASHFS_ARGS += -comp gzip +endif + +define ROOTFS_SQUASHFS_CMD + $(HOST_DIR)/bin/mksquashfs $(TARGET_DIR) $@ $(ROOTFS_SQUASHFS_ARGS) +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/tar/Config.in b/features/buildroot/fs/tar/Config.in new file mode 100644 index 00000000..a4e375c6 --- /dev/null +++ b/features/buildroot/fs/tar/Config.in @@ -0,0 +1,57 @@ +config BR2_TARGET_ROOTFS_TAR + bool "tar the root filesystem" + default y + help + Build a tar archive of the root filesystem + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_TAR_NONE + depends on BR2_TARGET_ROOTFS_TAR + help + Select compressor for tar archive of the root filesystem + +config BR2_TARGET_ROOTFS_TAR_NONE + bool "no compression" + help + Do not compress the tarball. + +config BR2_TARGET_ROOTFS_TAR_GZIP + bool "gzip" + help + Do compress the tarball with gzip. + +config BR2_TARGET_ROOTFS_TAR_BZIP2 + bool "bzip2" + help + Do compress the tarball with bzip2. + +config BR2_TARGET_ROOTFS_TAR_LZ4 + bool "lz4" + help + Do compress the tarball with lz4. + +config BR2_TARGET_ROOTFS_TAR_LZMA + bool "lzma" + help + Do compress the tarball with lzma. + +config BR2_TARGET_ROOTFS_TAR_LZO + bool "lzo" + help + Do compress the tarball with lzop. + +config BR2_TARGET_ROOTFS_TAR_XZ + bool "xz" + help + Do compress the tarball with xz. + +endchoice + +config BR2_TARGET_ROOTFS_TAR_OPTIONS + string "other random options to pass to tar" + default "" + depends on BR2_TARGET_ROOTFS_TAR + help + Any other flags you want to pass to tar + Refer to tar --help for details diff --git a/features/buildroot/fs/tar/tar.mk b/features/buildroot/fs/tar/tar.mk new file mode 100644 index 00000000..393d01bf --- /dev/null +++ b/features/buildroot/fs/tar/tar.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# tar to archive target filesystem +# +################################################################################ + +TAR_OPTS := $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS)) + +ROOTFS_TAR_DEPENDENCIES = $(BR2_TAR_HOST_DEPENDENCY) + +# do not store atime/ctime in PaxHeaders to ensure reproducbility +TAR_OPTS += --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0 + +define ROOTFS_TAR_CMD + (cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \ + tar $(TAR_OPTS) -cf $@ --null --xattrs-include='*' --no-recursion -T - --numeric-owner) +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/ubi/Config.in b/features/buildroot/fs/ubi/Config.in new file mode 100644 index 00000000..85b1c56b --- /dev/null +++ b/features/buildroot/fs/ubi/Config.in @@ -0,0 +1,52 @@ +config BR2_TARGET_ROOTFS_UBI + bool "ubi image containing an ubifs root filesystem" + select BR2_TARGET_ROOTFS_UBIFS + help + Build an ubi image from the ubifs one (with ubinize). + +if BR2_TARGET_ROOTFS_UBI + +config BR2_TARGET_ROOTFS_UBI_PEBSIZE + hex "physical eraseblock size" + default 0x20000 + help + Tells ubinize the physical eraseblock (PEB) size of the + flash chip the ubi image is created for. The value provided + here is passed to the -p/--peb-size option of ubinize. + +config BR2_TARGET_ROOTFS_UBI_SUBSIZE + int "sub-page size" + default 512 + help + Tells ubinize that the flash supports sub-pages and the + sub-page size. Use 0 if sub-pages are not supported on flash + chip. + The value provided here is passed to the -s/--sub-page-size + option of ubinize. + +config BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + bool "Use custom config file" + help + Select this option to use a custom ubinize configuration file, + rather than the default configuration used by Buildroot (which + defines a single dynamic volume marked as auto-resize). + Passing a custom ubinize configuration file allows you to + create several volumes, specify volume types, etc. + + As a convenience, buildroot replaces the string + "BR2_ROOTFS_UBIFS_PATH" with the path to the built ubifs file. + So the volume defined for the root filesystem can specify the + image path as: image=BR2_ROOTFS_UBIFS_PATH + +config BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + help + Path to the ubinize configuration file. + +config BR2_TARGET_ROOTFS_UBI_OPTS + string "Additional ubinize options" + help + Any additional ubinize options you may want to include. + +endif # BR2_TARGET_ROOTFS_UBI diff --git a/features/buildroot/fs/ubi/ubi.mk b/features/buildroot/fs/ubi/ubi.mk new file mode 100644 index 00000000..9874e73f --- /dev/null +++ b/features/buildroot/fs/ubi/ubi.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# Embed the ubifs image into an ubi image +# +################################################################################ + +UBI_UBINIZE_OPTS := -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE) +UBI_UBINIZE_OPTS += -p $(BR2_TARGET_ROOTFS_UBI_PEBSIZE) +ifneq ($(BR2_TARGET_ROOTFS_UBI_SUBSIZE),0) +UBI_UBINIZE_OPTS += -s $(BR2_TARGET_ROOTFS_UBI_SUBSIZE) +endif + +UBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS)) + +ROOTFS_UBI_DEPENDENCIES = rootfs-ubifs + +ifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y) +UBI_UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE)) +else +UBI_UBINIZE_CONFIG_FILE_PATH = fs/ubi/ubinize.cfg +endif + +# don't use sed -i as it misbehaves on systems with SELinux enabled when this is +# executed through fakeroot (see #9386) +define ROOTFS_UBI_CMD + sed 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' \ + $(UBI_UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg + $(HOST_DIR)/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg + rm $(BUILD_DIR)/ubinize.cfg +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/ubi/ubinize.cfg b/features/buildroot/fs/ubi/ubinize.cfg new file mode 100644 index 00000000..b0aace7b --- /dev/null +++ b/features/buildroot/fs/ubi/ubinize.cfg @@ -0,0 +1,8 @@ +[ubifs] +mode=ubi +vol_id=0 +vol_type=dynamic +vol_name=rootfs +vol_alignment=1 +vol_flags=autoresize +image=BR2_ROOTFS_UBIFS_PATH diff --git a/features/buildroot/fs/ubifs/Config.in b/features/buildroot/fs/ubifs/Config.in new file mode 100644 index 00000000..e79ab9a1 --- /dev/null +++ b/features/buildroot/fs/ubifs/Config.in @@ -0,0 +1,98 @@ +config BR2_TARGET_ROOTFS_UBIFS + bool "ubifs root filesystem" + help + Build a ubifs root filesystem + +if BR2_TARGET_ROOTFS_UBIFS + +config BR2_TARGET_ROOTFS_UBIFS_LEBSIZE + hex "logical eraseblock size" + default 0x1f800 + help + Logical eraseblock (LEB) size. The value provided here is + passed to the -e/--leb-size option of mkfs.ubifs. + +config BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE + hex "minimum I/O unit size" + default 0x800 + help + Minimum I/O unit size. The value provided here is passed + to the -m/--min-io-size option of mkfs.ubifs/ubinize. + +config BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT + int "maximum logical eraseblock count" + default 2048 + help + Maximum logical eraseblock (LEB) count. The value provided + here is passed to the -c/--max-leb-cnt option of mkfs.ubifs. + +choice + prompt "ubifs runtime compression" + default BR2_TARGET_ROOTFS_UBIFS_RT_LZO + help + Select which compression format to use at run-time within + the ubifs file system. The choice made here is passed to + the -x/--compr option of mkfs.ubifs + +config BR2_TARGET_ROOTFS_UBIFS_RT_NONE + bool "no compression" + help + Don't use run-time compression. + +config BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB + bool "gzip" + help + Use zlib compression at run-time. + +config BR2_TARGET_ROOTFS_UBIFS_RT_LZO + bool "lzo" + help + Use lzo compression at run-time. + +endchoice + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_UBIFS_NONE + help + Select which compression format to compress the final image + into. + +config BR2_TARGET_ROOTFS_UBIFS_NONE + bool "no compression" + help + Do not compress the ubifs filesystem. + +config BR2_TARGET_ROOTFS_UBIFS_GZIP + bool "gzip" + help + Do compress the ubifs filesystem with gzip. + +config BR2_TARGET_ROOTFS_UBIFS_BZIP2 + bool "bzip2" + help + Do compress the ubifs filesystem with bzip2. + +config BR2_TARGET_ROOTFS_UBIFS_LZMA + bool "lzma" + help + Do compress the ubifs filesystem with lzma. + +config BR2_TARGET_ROOTFS_UBIFS_LZO + bool "lzo" + help + Do compress the ubifs filesystem with lzop. + +config BR2_TARGET_ROOTFS_UBIFS_XZ + bool "xz" + help + Do compress the ubifs filesystem with xz. + +endchoice + +config BR2_TARGET_ROOTFS_UBIFS_OPTS + string "Additional mkfs.ubifs options" + help + Any additional mkfs.ubifs options you may want to include. + +endif # BR2_TARGET_ROOTFS_UBIFS diff --git a/features/buildroot/fs/ubifs/ubifs.mk b/features/buildroot/fs/ubifs/ubifs.mk new file mode 100644 index 00000000..2cfc397a --- /dev/null +++ b/features/buildroot/fs/ubifs/ubifs.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# Build the ubifs root filesystem image +# +################################################################################ + +UBIFS_OPTS = \ + -e $(BR2_TARGET_ROOTFS_UBIFS_LEBSIZE) \ + -c $(BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT) \ + -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE) + +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB),y) +UBIFS_OPTS += -x zlib +endif +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_LZO),y) +UBIFS_OPTS += -x lzo +endif +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_NONE),y) +UBIFS_OPTS += -x none +endif + +UBIFS_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBIFS_OPTS)) + +ROOTFS_UBIFS_DEPENDENCIES = host-mtd + +define ROOTFS_UBIFS_CMD + $(HOST_DIR)/sbin/mkfs.ubifs -d $(TARGET_DIR) $(UBIFS_OPTS) -o $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/fs/yaffs2/Config.in b/features/buildroot/fs/yaffs2/Config.in new file mode 100644 index 00000000..27da4ba6 --- /dev/null +++ b/features/buildroot/fs/yaffs2/Config.in @@ -0,0 +1,4 @@ +config BR2_TARGET_ROOTFS_YAFFS2 + bool "yaffs2 root filesystem" + help + Build a yaffs2 root filesystem diff --git a/features/buildroot/fs/yaffs2/yaffs2.mk b/features/buildroot/fs/yaffs2/yaffs2.mk new file mode 100644 index 00000000..9cba27af --- /dev/null +++ b/features/buildroot/fs/yaffs2/yaffs2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the yaffs2 root filesystem image +# +################################################################################ + +ROOTFS_YAFFS2_DEPENDENCIES = host-yaffs2utils + +define ROOTFS_YAFFS2_CMD + $(HOST_DIR)/bin/mkyaffs2 --all-root $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/features/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional b/features/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional new file mode 100644 index 00000000..02abadd3 --- /dev/null +++ b/features/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional @@ -0,0 +1,45 @@ +From 63a3f603413ffe82ad775f2d62a5afff87fd94a0 Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" +Date: Thu, 7 Feb 2013 17:14:08 -0800 +Subject: [PATCH] timeconst.pl: Eliminate Perl warning + +defined(@array) is deprecated in Perl and gives off a warning. +Restructure the code to remove that warning. + +[ hpa: it would be interesting to revert to the timeconst.bc script. + It appears that the failures reported by akpm during testing of + that script was due to a known broken version of make, not a problem + with bc. The Makefile rules could probably be restructured to avoid + the make bug, or it is probably old enough that it doesn't matter. ] + +Reported-by: Andi Kleen +Signed-off-by: H. Peter Anvin +Cc: Andrew Morton +Cc: +Signed-off-by: Gustavo Zacarias +--- +Patch status: upstream + + kernel/timeconst.pl | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl +index eb51d76..3f42652 100644 +--- a/kernel/timeconst.pl ++++ b/kernel/timeconst.pl +@@ -369,10 +369,8 @@ if ($hz eq '--can') { + die "Usage: $0 HZ\n"; + } + +- @val = @{$canned_values{$hz}}; +- if (!defined(@val)) { +- @val = compute_values($hz); +- } ++ $cv = $canned_values{$hz}; ++ @val = defined($cv) ? @$cv : compute_values($hz); + output($hz, @val); + } + exit 0; +-- +2.4.10 + diff --git a/features/buildroot/linux/Config.ext.in b/features/buildroot/linux/Config.ext.in new file mode 100644 index 00000000..14140d35 --- /dev/null +++ b/features/buildroot/linux/Config.ext.in @@ -0,0 +1,141 @@ +menu "Linux Kernel Extensions" + +#------------------------------------------------------------------------------- +# Xenomai +config BR2_LINUX_KERNEL_EXT_XENOMAI + bool "Adeos/Xenomai Real-time patch" + depends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS + depends on BR2_USE_MMU # xenomai + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # xenomai + depends on BR2_TOOLCHAIN_HAS_THREADS # xenomai + depends on !BR2_TOOLCHAIN_USES_MUSL # xenomai + select BR2_PACKAGE_XENOMAI + help + Xenomai is split in two parts: a kernel part and a userspace + part. Enabling this option automatically selects the Xenomai + package and helps in patching the Linux kernel built by + Buildroot with the Xenomai kernel part (ie Adeos/Ipipe). + + You can find the currently supported kernel versions by + looking at the available patches in the Xenomai sources + tree: ksrc/arch/$(ARCH)/patches + + However, it is recommended to use the latest version of the + Adeos/Ipipe patch available at + https://xenomai.org/downloads/ipipe/ + + Xenomai is know to support Blackfin, SH4, x86, ARM, NIOS2 + and PowerPC architectures. + +config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH + string "Path/URL for Adeos patch file" + depends on BR2_LINUX_KERNEL_EXT_XENOMAI + help + Optionally, explicitly specify where to find the Adeos + patch to use. + Examples: + https://xenomai.org/downloads/ipipe/v4.x/arm/ipipe-core-4.19.33-arm-2.patch + or /home/foo/ipipe-core-4.19.33-arm-2.patch + Please verify that your kernel version in Buildroot matches. + +comment "xenomai needs a uClibc or glibc toolchain w/ threads" + depends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + +#------------------------------------------------------------------------------- +# RTAI +config BR2_LINUX_KERNEL_EXT_RTAI + bool "RTAI Real-time patch" + select BR2_PACKAGE_RTAI + help + RTAI Kernel part. + +#------------------------------------------------------------------------------- +# ev3dev Linux drivers +config BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS + bool "ev3dev Linux drivers" + select BR2_PACKAGE_EV3DEV_LINUX_DRIVERS + help + Linux drivers for LEGO MINDSTORMS EV3 from the ev3dev project. + + https://github.com/ev3dev/lego-linux-drivers + +#------------------------------------------------------------------------------- +# fbtft +config BR2_LINUX_KERNEL_EXT_FBTFT + bool "FB TFT drivers" + select BR2_PACKAGE_FBTFT + help + Linux Framebuffer drivers for small TFT LCD display modules, + e.g. Adafruit PiTFT displays for Raspberry Pi (this extra + package is only needed for linux kernels until v3.19, since + v4.0 the drivers are included in the staging area). + + To enable fbtft, e.g. for Adafruit 2.8 PiTFT, enable the + following kernel configurations: + - CONFIG_SPI + - CONFIG_GPIOLIB + - CONFIG_FB + - CONFIG_FB_TFT + - CONFIG_FB_TFT_ILI9341 + + https://github.com/notro/fbtft + +# aufs-standalone +config BR2_LINUX_KERNEL_EXT_AUFS + bool "Aufs Filesystem Module patch" + select BR2_PACKAGE_AUFS + help + Aufs is split in two parts: a kernel part and a userspace + part. Enabling this option automatically selects the aufs + standalone (module) package and patches the Linux kernel + built by Buildroot with the aufs kernel part (ie fs/aufs). + + It is important to use the correct branch of aufs-standalone. + +if BR2_LINUX_KERNEL_EXT_AUFS + +choice + bool "aufs-standalone series" + help + Select the major series of this version. This must match the + major version of your kernel (e.g. for kernels 3.x, select + aufs3.x; for kernels 4.x, select aufs4.x). + + Note: neither aufs1.x nor aufs2.x (both for kernels older than + 3.x) are supported. + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3 + bool "aufs3.x" + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4 + bool "aufs4.x" + +endchoice + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES + int + default 3 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3 + default 4 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4 + +config BR2_LINUX_KERNEL_EXT_AUFS_VERSION + string "aufs-standalone version" + default "" + help + The version you choose must match that of your kernel. + Usually, the sha1 of the cset you want to use; avoid using a + branch name as this yields non-reproducible builds. + + See the following resources to see what versions are + available: + + For aufs3.x: + https://sourceforge.net/p/aufs/aufs3-standalone/ref/master/branches/ + For aufs4.x: + https://github.com/sfjro/aufs4-standalone/branches/all + +endif # aufs + +endmenu diff --git a/features/buildroot/linux/Config.in b/features/buildroot/linux/Config.in new file mode 100644 index 00000000..e275b8ad --- /dev/null +++ b/features/buildroot/linux/Config.in @@ -0,0 +1,459 @@ +menu "Kernel" + +config BR2_LINUX_KERNEL + bool "Linux Kernel" + select BR2_PACKAGE_HOST_IMAGEMAGICK if BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH != "" + help + Enable this option if you want to build a Linux kernel for + your embedded device + +if BR2_LINUX_KERNEL + +# https://sourceware.org/bugzilla/show_bug.cgi?id=21458 +comment "Linux kernel in thumb mode may be broken with binutils 2.30" + depends on BR2_arm || BR2_armeb + depends on BR2_BINUTILS_VERSION_2_30_X + +# Packages that need to have a kernel with support for loadable modules, +# but do not use the kernel-modules infrastructure, should select that +# option. +config BR2_LINUX_NEEDS_MODULES + bool + +# +# Version selection. We provide the choice between: +# +# 1. A single fairly recent stable kernel version +# 2. A custom stable version +# 3. A custom tarball +# 4. A set of custom repository locations +# +choice + prompt "Kernel version" + +config BR2_LINUX_KERNEL_LATEST_VERSION + bool "Latest version (5.2)" + +config BR2_LINUX_KERNEL_LATEST_CIP_VERSION + bool "Latest CIP SLTS version (v4.19.60-cip7)" + help + CIP launched in the spring of 2016 to address the needs of + organizations in industries such as power generation and + distribution, water, oil and gas, transportation, building + automation and more for reliable and secure Linux-based + embedded systems that can be sustained over a period of + 10 to as many as 60 years. + The project's goal is to provide an open source base layer + of industrial-grade software that permits the use and + implementation of software building blocks that meet + these requirements. + + The CIP community plans to maintain 4.4 for security and + bug fixes for more than 10 years. + + https://www.cip-project.org + +config BR2_LINUX_KERNEL_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official version from + kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ... + + Note: you cannot use this option to select a _longterm_ 2.6 + kernel, because these kernels are not located at the standard + URL at kernel.org. Instead, select "Custom tarball" and + specify the right URL directly. + +config BR2_LINUX_KERNEL_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to a kernel + source tarball. This URL can use any protocol recognized by + Buildroot, like http://, ftp://, file:// or scp://. + + When pointing to a local tarball using file://, you may want + to use a make variable like $(TOPDIR) to reference the root of + the Buildroot tree. + +config BR2_LINUX_KERNEL_CUSTOM_GIT + bool "Custom Git repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Git repository. + +config BR2_LINUX_KERNEL_CUSTOM_HG + bool "Custom Mercurial repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Mercurial repository. + +config BR2_LINUX_KERNEL_CUSTOM_SVN + bool "Custom Subversion repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Subversion repository. + +endchoice + +config BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE + string "Kernel version" + depends on BR2_LINUX_KERNEL_CUSTOM_VERSION + +config BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION + string "URL of custom kernel tarball" + depends on BR2_LINUX_KERNEL_CUSTOM_TARBALL + +if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN + +config BR2_LINUX_KERNEL_CUSTOM_REPO_URL + string "URL of custom repository" + default BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL \ + if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != "" # legacy + +config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION + string "Custom repository version" + default BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION \ + if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" # legacy + help + Revision to use in the typical format used by + Git/Mercurial/Subversion E.G. a sha id, a tag, branch, .. + +endif + +config BR2_LINUX_KERNEL_VERSION + string + default "5.2.4" if BR2_LINUX_KERNEL_LATEST_VERSION + default "v4.19.60-cip7" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION + default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ + if BR2_LINUX_KERNEL_CUSTOM_VERSION + default "custom" if BR2_LINUX_KERNEL_CUSTOM_TARBALL + default BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \ + if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN + +# +# Patch selection +# + +config BR2_LINUX_KERNEL_PATCH + string "Custom kernel patches" + help + A space-separated list of patches to apply to the + kernel. Each patch can be described as an URL, a local file + path, or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + +# +# Configuration selection +# + +choice + prompt "Kernel configuration" + default BR2_LINUX_KERNEL_USE_DEFCONFIG + +config BR2_LINUX_KERNEL_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG + bool "Use the architecture default configuration" + help + This option will use the default configuration for the + selected architecture. I.e, it is equivalent to running + "make ARCH= defconfig". This is useful on architectures + that have a single defconfig file, such as ARM64. + +config BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_LINUX_KERNEL_DEFCONFIG + string "Defconfig name" + depends on BR2_LINUX_KERNEL_USE_DEFCONFIG + help + Name of the kernel defconfig file to use, without the + trailing _defconfig. The defconfig is located in + arch//configs in the kernel tree. + +config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG + help + Path to the kernel configuration file + + Note: this can be a defconfig file or a complete .config file, + which can later be saved back with make + linux-update-(def)config. + +config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of kernel configuration fragment files, + that will be merged to the main kernel configuration file. + +config BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH + string "Custom boot logo file path" + help + Use a custom Linux framebuffer boot logo. + Custom logo should be in PNG or JPEG format, it will be + converted to the linux kernel format (224 colors only) + and copied over the original logo file. + +# +# Binary format +# + +choice + prompt "Kernel binary format" + default BR2_LINUX_KERNEL_ZIMAGE if BR2_arm || BR2_armeb + +config BR2_LINUX_KERNEL_UIMAGE + bool "uImage" + depends on BR2_arc || BR2_arm || BR2_armeb || \ + BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ + BR2_sh || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_xtensa + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_APPENDED_UIMAGE + bool "uImage with appended DT" + depends on BR2_arm || BR2_armeb + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_APPENDED_DTB + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_BZIMAGE + bool "bzImage" + depends on BR2_i386 || BR2_x86_64 + +config BR2_LINUX_KERNEL_ZIMAGE + bool "zImage" + depends on BR2_arm || BR2_armeb || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_sh || BR2_xtensa + +config BR2_LINUX_KERNEL_ZIMAGE_EPAPR + bool "zImage.epapr" + depends on BR2_powerpc64 || BR2_powerpc64le + +config BR2_LINUX_KERNEL_APPENDED_ZIMAGE + bool "zImage with appended DT" + depends on BR2_arm || BR2_armeb + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_APPENDED_DTB + +config BR2_LINUX_KERNEL_CUIMAGE + bool "cuImage" + depends on BR2_powerpc + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + +config BR2_LINUX_KERNEL_SIMPLEIMAGE + bool "simpleImage" + depends on BR2_microblaze + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + +config BR2_LINUX_KERNEL_IMAGE + bool "Image" + depends on BR2_aarch64 || BR2_riscv + +config BR2_LINUX_KERNEL_LINUX_BIN + bool "linux.bin" + depends on BR2_microblaze + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_VMLINUX_BIN + bool "vmlinux.bin" + depends on BR2_mips || BR2_mipsel || BR2_sh + +config BR2_LINUX_KERNEL_VMLINUX + bool "vmlinux" + +config BR2_LINUX_KERNEL_VMLINUZ + bool "vmlinuz" + depends on BR2_mips || BR2_mipsel + +config BR2_LINUX_KERNEL_VMLINUZ_BIN + bool "vmlinuz.bin" + depends on BR2_mips || BR2_mipsel + +config BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + bool "custom target" + help + For certain cases a board-specific target image must be + used. For example, on powerPC where the OpenFirmware + description is attached in a board-specific kernel image + target like 'cuImage.mpc8379_rdb'. + + Select this option and specify the make target in "Kernel + image target name". + +endchoice + +# +# Kernel compression format +# + +choice + prompt "Kernel compression format" + help + This selection will just ensure that the correct host tools + are built. The actual compression for the kernel should be + selected in the kernel configuration menu. + +config BR2_LINUX_KERNEL_GZIP + bool "gzip compression" + +config BR2_LINUX_KERNEL_LZ4 + bool "lz4 compression" + +config BR2_LINUX_KERNEL_LZMA + bool "lzma compression" + +config BR2_LINUX_KERNEL_LZO + bool "lzo compression" + +config BR2_LINUX_KERNEL_XZ + bool "xz compression" + +endchoice + +config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME + string "Kernel image target name" + depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + help + Specify the kernel make target to build the kernel that you + need. + +config BR2_LINUX_KERNEL_IMAGE_NAME + string "Kernel image name" + depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + help + The filename of the kernel image, if it is different from the + make target (above). Only Xtensa uses a filename different + from the make target. Defaults to + BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. + + If unsure, leave it empty. + +config BR2_LINUX_KERNEL_UIMAGE_LOADADDR + string "load address (for 3.7+ multi-platform image)" + depends on BR2_arm || BR2_armeb + depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE + help + If your ARM system's Linux kernel is configured with the new + (3.7+) multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y + in your kernel config), then it is necessary to specify a + kernel load address when building the uImage. This should be a + hexadecimal string beginning with 0x, for example: 0x00008000. + + If unsure, let this option empty. + +config BR2_LINUX_KERNEL_DTS_SUPPORT + bool "Build a Device Tree Blob (DTB)" + help + Compile one or more device tree sources into device tree + blobs. + Select the dts files to compile in the options below. + +if BR2_LINUX_KERNEL_DTS_SUPPORT + +# We have mainly three cases when it comes to device tree support: +# 1) We don't want any support at all. Then the ..DTS_SUPPORT +# variable won't be set +# 2) We want device tree support, so we need the user to enter the +# device tree name or the path to the custom device he uses, but +# the kernel abstracts this from us and only build an image that +# looks like a regular kernel image. In this case, we only need +# to derive the kernel image name from the given device tree +# name, and all the rest is as usual +# 3) We want device tree support, but the kernel requires us to +# build the device tree blob separately. In this case, some +# more logic will be needed. +# The variable below address the second case, were you only want +# limited actions from buildroot. +config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + bool "DTB is built by kernel itself" + help + Normally, the device tree(s) to be built have to be passed + explicitly to the kernel build system. For some binary + formats, however, the kernel build system links in the + device tree directly in the kernel binary. Select this option + if you have such a kernel binary format. + +config BR2_LINUX_KERNEL_APPENDED_DTB + bool + +config BR2_LINUX_KERNEL_INTREE_DTS_NAME + string "In-tree Device Tree Source file names" + help + Name of in-tree device tree source file, without + the trailing .dts. You can provide a list of + dts files to build, separated by spaces. + +config BR2_LINUX_KERNEL_CUSTOM_DTS_PATH + string "Out-of-tree Device Tree Source file paths" + help + Path to to out-of-tree device tree source files. + You can provide a list of dts paths to copy and + build, separated by spaces. + +config BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT + bool "Build Device Tree with overlay support" + help + If enabled, pass the "-@" option to dtc, such that + symbols are generated in the compiled Device Tree. + Choose this option to support Device Tree overlays + on the target system. + +endif + +config BR2_LINUX_KERNEL_INSTALL_TARGET + bool "Install kernel image to /boot in target" + depends on !BR2_TARGET_ROOTFS_INITRAMFS + help + Select this option to have the kernel image installed to + /boot in the target root filesystem, as is typically done on + x86/x86_64 systems. + + Note that this option also installs the Device Tree Blobs to + /boot if DTBs have been generated by the kernel build + process. + +config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL + bool "Needs host OpenSSL" + help + Some Linux kernel configuration options (such as + CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host + program called extract-cert, which itself needs + OpenSSL. Enabling this option will ensure host-openssl gets + built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "scripts/extract-cert.c:21:25: fatal error: + openssl/bio.h: No such file or directory". + +config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF + bool "Needs host libelf" + help + Some Linux kernel configuration options (such as + CONFIG_UNWINDER_ORC) require building a host program that + needs libelf. Enabling this option will ensure host-elfutils + (which provides libelf) gets built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "Cannot generate ORC metadata for + CONFIG_UNWINDER_ORC=y, please install libelf-dev, + libelf-devel or elfutils-libelf-devel". + +# Linux extensions +source "linux/Config.ext.in" + +# Linux tools +source "package/linux-tools/Config.in" + +endif # BR2_LINUX_KERNEL + +endmenu diff --git a/features/buildroot/linux/linux-ext-aufs.mk b/features/buildroot/linux/linux-ext-aufs.mk new file mode 100644 index 00000000..d4bbb071 --- /dev/null +++ b/features/buildroot/linux/linux-ext-aufs.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# Patch the linux kernel with aufs extension +# +################################################################################ + +LINUX_EXTENSIONS += aufs + +define AUFS_PREPARE_KERNEL + if test -d $(@D)/fs/aufs/; then \ + echo "Your kernel already supports AUFS."; \ + exit 1; \ + fi + $(APPLY_PATCHES) $(@D) $(AUFS_DIR) \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-kbuild.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-base.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-mmap.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-standalone.patch + cp -r $(AUFS_DIR)/fs/aufs/ $(@D)/fs/ + cp $(AUFS_DIR)/include/uapi/linux/aufs_type.h $(@D)/include/uapi/linux/ +endef diff --git a/features/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk b/features/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk new file mode 100644 index 00000000..3bb12db3 --- /dev/null +++ b/features/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# Patch the linux kernel with ev3dev extension +# +################################################################################ + +LINUX_EXTENSIONS += ev3dev-linux-drivers + +define EV3DEV_LINUX_DRIVERS_PREPARE_KERNEL + mkdir -p $(LINUX_DIR)/drivers/lego + cp -dpfr $(EV3DEV_LINUX_DRIVERS_DIR)/* $(LINUX_DIR)/drivers/lego/ +endef diff --git a/features/buildroot/linux/linux-ext-fbtft.mk b/features/buildroot/linux/linux-ext-fbtft.mk new file mode 100644 index 00000000..cbc9c58e --- /dev/null +++ b/features/buildroot/linux/linux-ext-fbtft.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# Patch the linux kernel with fbtft extension +# +################################################################################ + +LINUX_EXTENSIONS += fbtft + +# for linux >= 3.15 install to drivers/video/fbdev/fbtft +# for linux < 3.15 install to drivers/video/fbtft +define FBTFT_PREPARE_KERNEL + if [ -e $(LINUX_DIR)/drivers/video/fbdev ]; then \ + dest=drivers/video/fbdev ; \ + else \ + dest=drivers/video ; \ + fi ; \ + mkdir -p $(LINUX_DIR)/$${dest}/fbtft; \ + cp -dpfr $(FBTFT_DIR)/* $(LINUX_DIR)/$${dest}/fbtft/ ; \ + echo "source \"$${dest}/fbtft/Kconfig\"" \ + >> $(LINUX_DIR)/$${dest}/Kconfig ; \ + echo 'obj-y += fbtft/' >> $(LINUX_DIR)/$${dest}/Makefile +endef diff --git a/features/buildroot/linux/linux-ext-rtai.mk b/features/buildroot/linux/linux-ext-rtai.mk new file mode 100644 index 00000000..50f79f8d --- /dev/null +++ b/features/buildroot/linux/linux-ext-rtai.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# Patch the linux kernel with RTAI extension +# +################################################################################ + +LINUX_EXTENSIONS += rtai + +ifeq ($(KERNEL_ARCH),i386) +RTAI_ARCH = x86 +else ifeq ($(KERNEL_ARCH),x86_64) +RTAI_ARCH = x86 +else ifeq ($(KERNEL_ARCH),powerpc) +RTAI_ARCH = ppc +else +RTAI_ARCH = $(KERNEL_ARCH) +endif + +# Prepare kernel patch +define RTAI_PREPARE_KERNEL + kver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \ + if test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \ + $(APPLY_PATCHES) $(LINUX_DIR) \ + $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \ + hal-linux-$${kver}-*patch ; \ + else \ + echo "No RTAI patch for your kernel version" ; \ + exit 1 ; \ + fi +endef diff --git a/features/buildroot/linux/linux-ext-xenomai.mk b/features/buildroot/linux/linux-ext-xenomai.mk new file mode 100644 index 00000000..5ec6891b --- /dev/null +++ b/features/buildroot/linux/linux-ext-xenomai.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# Patch the linux kernel with Adeos/Xenomai extension +# +################################################################################ + +LINUX_EXTENSIONS += xenomai + +# Adeos patch version +XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH)) + +ifneq ($(filter ftp://% http://% https://%,$(XENOMAI_ADEOS_PATCH)),) +XENOMAI_ADEOS_PATCH_NAME = $(notdir $(XENOMAI_ADEOS_PATCH)) +XENOMAI_ADEOS_PATCH_PATH = $(LINUX_DL_DIR)/$(XENOMAI_ADEOS_PATCH_NAME) +# check-package TypoInPackageVariable +LINUX_EXTRA_DOWNLOADS += $(XENOMAI_ADEOS_PATCH) +BR_NO_CHECK_HASH_FOR += $(XENOMAI_ADEOS_PATCH_NAME) +else +XENOMAI_ADEOS_PATCH_PATH = $(XENOMAI_ADEOS_PATCH) +endif + +ifeq ($(XENOMAI_ADEOS_PATCH),) +XENOMAI_ADEOS_OPTS = --default +else +XENOMAI_ADEOS_OPTS = --adeos=$(XENOMAI_ADEOS_PATCH_PATH) +endif + +# Prepare kernel patch +define XENOMAI_PREPARE_KERNEL + $(XENOMAI_DIR)/scripts/prepare-kernel.sh \ + --linux=$(LINUX_DIR) \ + --arch=$(KERNEL_ARCH) \ + $(XENOMAI_ADEOS_OPTS) \ + --verbose +endef diff --git a/features/buildroot/linux/linux.hash b/features/buildroot/linux/linux.hash new file mode 100644 index 00000000..1bb37462 --- /dev/null +++ b/features/buildroot/linux/linux.hash @@ -0,0 +1,8 @@ +# From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc +sha256 b1cd8b9e0bfe7afb2fdf3915605db3a6cd3fe098833f9bc0b37aae74b057ee43 linux-5.2.4.tar.xz +sha256 56495f82314f0dfb84a3fe7fad78e17be69c4fd36ef46f2452458b2fa1e341f6 linux-5.1.21.tar.xz +# From https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc +sha256 07be647189ced7eb8ba5ee769906e67919975772184842cc517f609df50cdadc linux-4.19.62.tar.xz +sha256 0b21e7b5effd92303a551b5be2380c9703d6fb87cfe5189fe0d795cc73903d2d linux-4.14.134.tar.xz +sha256 242484430d0729791d8efd92181b7d34b4021050646c6e00cf459866eab94b6a linux-4.9.186.tar.xz +sha256 0b1273d35c0664234e069f1ba894161b466679f6e1053f44fcf4098290937984 linux-4.4.186.tar.xz diff --git a/features/buildroot/linux/linux.mk b/features/buildroot/linux/linux.mk new file mode 100644 index 00000000..29d2f0ee --- /dev/null +++ b/features/buildroot/linux/linux.mk @@ -0,0 +1,583 @@ +################################################################################ +# +# Linux kernel target +# +################################################################################ + +LINUX_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION)) +LINUX_LICENSE = GPL-2.0 +LINUX_LICENSE_FILES = COPYING + +define LINUX_HELP_CMDS + @echo ' linux-menuconfig - Run Linux kernel menuconfig' + @echo ' linux-savedefconfig - Run Linux kernel savedefconfig' + @echo ' linux-update-defconfig - Save the Linux configuration to the path specified' + @echo ' by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE' +endef + +# Compute LINUX_SOURCE and LINUX_SITE from the configuration +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y) +LINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION)) +LINUX_SITE = $(patsubst %/,%,$(dir $(LINUX_TARBALL))) +LINUX_SOURCE = $(notdir $(LINUX_TARBALL)) +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = git +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = hg +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = svn +else ifeq ($(BR2_LINUX_KERNEL_LATEST_CIP_VERSION),y) +LINUX_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git +else ifneq ($(findstring -rc,$(LINUX_VERSION)),) +# Since 4.12-rc1, -rc kernels are generated from cgit. This also works for +# older -rc kernels. +LINUX_SITE = https://git.kernel.org/torvalds/t +else +LINUX_SOURCE = linux-$(LINUX_VERSION).tar.xz +ifeq ($(findstring x2.6.,x$(LINUX_VERSION)),x2.6.) +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6 +else +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v$(firstword $(subst ., ,$(LINUX_VERSION))).x +endif +endif + +ifeq ($(BR2_LINUX_KERNEL)$(BR2_LINUX_KERNEL_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(LINUX_SOURCE) +endif + +LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) + +# We have no way to know the hashes for user-supplied patches. +BR_NO_CHECK_HASH_FOR += $(notdir $(LINUX_PATCHES)) + +# We rely on the generic package infrastructure to download and apply +# remote patches (downloaded from ftp, http or https). For local +# patches, we can't rely on that infrastructure, because there might +# be directories in the patch list (unlike for other packages). +LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES)) + +LINUX_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + BR_BINARIES_DIR=$(BINARIES_DIR) + +LINUX_INSTALL_IMAGES = YES +LINUX_DEPENDENCIES = host-kmod \ + $(if $(BR2_PACKAGE_INTEL_MICROCODE),intel-microcode) + +# Starting with 4.16, the generated kconfig paser code is no longer +# shipped with the kernel sources, so we need flex and bison, but +# only if the host does not have them. +LINUX_KCONFIG_DEPENDENCIES = \ + $(BR2_BISON_HOST_DEPENDENCY) \ + $(BR2_FLEX_HOST_DEPENDENCY) + +# Starting with 4.18, the kconfig in the kernel calls the +# cross-compiler to check its capabilities. So we need the +# toolchain before we can call the configurators. +LINUX_KCONFIG_DEPENDENCIES += toolchain + +# host tools needed for kernel compression +ifeq ($(BR2_LINUX_KERNEL_LZ4),y) +LINUX_DEPENDENCIES += host-lz4 +else ifeq ($(BR2_LINUX_KERNEL_LZMA),y) +LINUX_DEPENDENCIES += host-lzma +else ifeq ($(BR2_LINUX_KERNEL_LZO),y) +LINUX_DEPENDENCIES += host-lzop +else ifeq ($(BR2_LINUX_KERNEL_XZ),y) +LINUX_DEPENDENCIES += host-xz +endif +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) += CONFIG_KERNEL_GZIP +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) += CONFIG_KERNEL_LZ4 +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL),y) +LINUX_DEPENDENCIES += host-openssl +endif + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF),y) +LINUX_DEPENDENCIES += host-elfutils host-pkgconf +LINUX_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" +endif + +# If host-uboot-tools is selected by the user, assume it is needed to +# create a custom image +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS),y) +LINUX_DEPENDENCIES += host-uboot-tools +endif + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define LINUX_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),linux) +endef +LINUX_POST_EXTRACT_HOOKS += LINUX_XTENSA_OVERLAY_EXTRACT +LINUX_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +LINUX_MAKE_FLAGS = \ + HOSTCC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS)" \ + ARCH=$(KERNEL_ARCH) \ + INSTALL_MOD_PATH=$(TARGET_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DEPMOD=$(HOST_DIR)/sbin/depmod + +ifeq ($(BR2_REPRODUCIBLE),y) +LINUX_MAKE_ENV += \ + KBUILD_BUILD_VERSION=1 \ + KBUILD_BUILD_USER=buildroot \ + KBUILD_BUILD_HOST=buildroot \ + KBUILD_BUILD_TIMESTAMP="$(shell LC_ALL=C date -d @$(SOURCE_DATE_EPOCH))" +endif + +# gcc-8 started warning about function aliases that have a +# non-matching prototype. This seems rather useful in general, but it +# causes tons of warnings in the Linux kernel, where we rely on +# abusing those aliases for system call entry points, in order to +# sanitize the arguments passed from user space in registers. +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82435 +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y) +LINUX_MAKE_ENV += KCFLAGS=-Wno-attribute-alias +endif + +ifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y) +LINUX_MAKE_ENV += DTC_FLAGS=-@ +endif + +# Get the real Linux version, which tells us where kernel modules are +# going to be installed in the target filesystem. +LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null` + +LINUX_DTS_NAME += $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME)) + +# We keep only the .dts files, so that the user can specify both .dts +# and .dtsi files in BR2_LINUX_KERNEL_CUSTOM_DTS_PATH. Both will be +# copied to arch//boot/dts, but only the .dts files will +# actually be generated as .dtb. +LINUX_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH))))) + +LINUX_DTBS = $(addsuffix .dtb,$(LINUX_DTS_NAME)) + +ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y) +LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME)) +LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME)) +ifeq ($(LINUX_IMAGE_NAME),) +LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME) +endif +else +ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y) +LINUX_IMAGE_NAME = uImage +else ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) +LINUX_IMAGE_NAME = uImage +else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y) +LINUX_IMAGE_NAME = bzImage +else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y) +LINUX_IMAGE_NAME = zImage +else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE_EPAPR),y) +LINUX_IMAGE_NAME = zImage.epapr +else ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y) +LINUX_IMAGE_NAME = zImage +else ifeq ($(BR2_LINUX_KERNEL_CUIMAGE),y) +LINUX_IMAGE_NAME = cuImage.$(firstword $(LINUX_DTS_NAME)) +else ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y) +LINUX_IMAGE_NAME = simpleImage.$(firstword $(LINUX_DTS_NAME)) +else ifeq ($(BR2_LINUX_KERNEL_IMAGE),y) +LINUX_IMAGE_NAME = Image +else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) +LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) +LINUX_IMAGE_NAME = vmlinux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) +LINUX_IMAGE_NAME = vmlinux +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y) +LINUX_IMAGE_NAME = vmlinuz +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y) +LINUX_IMAGE_NAME = vmlinuz.bin +endif +# The if-else blocks above are all the image types we know of, and all +# come from a Kconfig choice, so we know we have LINUX_IMAGE_NAME set +# to something +LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME) +endif + +LINUX_KERNEL_UIMAGE_LOADADDR = $(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR)) +ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),) +LINUX_MAKE_FLAGS += LOADADDR="$(LINUX_KERNEL_UIMAGE_LOADADDR)" +endif + +# Compute the arch path, since i386 and x86_64 are in arch/x86 and not +# in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links +# for bzImage, arch/i386 and arch/x86_64 do not exist when copying the +# defconfig file. +ifeq ($(KERNEL_ARCH),i386) +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86 +else ifeq ($(KERNEL_ARCH),x86_64) +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86 +else +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH) +endif + +ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else +LINUX_IMAGE_PATH = $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME) +endif # BR2_LINUX_KERNEL_VMLINUX + +define LINUX_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(LINUX_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef + +LINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES + +# Older linux kernels use deprecated perl constructs in timeconst.pl +# that were removed for perl 5.22+ so it breaks on newer distributions +# Try a dry-run patch to see if this applies, if it does go ahead +define LINUX_TRY_PATCH_TIMECONST + @if patch -p1 --dry-run -f -s -d $(@D) <$(LINUX_PKGDIR)/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional >/dev/null ; then \ + $(APPLY_PATCHES) $(@D) $(LINUX_PKGDIR) 0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional ; \ + fi +endef +LINUX_POST_PATCH_HOOKS += LINUX_TRY_PATCH_TIMECONST + +LINUX_KERNEL_CUSTOM_LOGO_PATH = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH)) +ifneq ($(LINUX_KERNEL_CUSTOM_LOGO_PATH),) +LINUX_DEPENDENCIES += host-imagemagick +define LINUX_KERNEL_CUSTOM_LOGO_CONVERT + $(HOST_DIR)/bin/convert $(LINUX_KERNEL_CUSTOM_LOGO_PATH) \ + -dither None -colors 224 -compress none \ + $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm +endef +LINUX_PRE_BUILD_HOOKS += LINUX_KERNEL_CUSTOM_LOGO_CONVERT +endif + +ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) +LINUX_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig +else ifeq ($(BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG),y) +LINUX_KCONFIG_DEFCONFIG = defconfig +else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) +LINUX_KCONFIG_FILE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)) +endif +LINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES)) +LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find +# our host-openssl and host-libelf. However, this triggers a bug in +# the kconfig build script that causes it to build with +# /usr/include/ncurses.h (which is typically wchar) but link with +# $(HOST_DIR)/lib/libncurses.so (which is not). We don't actually +# need any host-package for kconfig, so remove the HOSTCC override +# again. In addition, even though linux depends on the toolchain and +# therefore host-ccache would be ready, we use HOSTCC_NOCCACHE for +# consistency with other kconfig packages. +LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC_NOCCACHE)" + +# If no package has yet set it, set it from the Kconfig option +LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES) + +# Make sure the Linux kernel is built with the right endianness. Not +# all architectures support +# CONFIG_CPU_BIG_ENDIAN/CONFIG_CPU_LITTLE_ENDIAN in Linux, but the +# option will be thrown away and ignored if it doesn't exist. +ifeq ($(BR2_ENDIAN),"BIG") +define LINUX_FIXUP_CONFIG_ENDIANNESS + $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_BIG_ENDIAN,$(@D)/.config) +endef +else +define LINUX_FIXUP_CONFIG_ENDIANNESS + $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_LITTLE_ENDIAN,$(@D)/.config) +endef +endif + +define LINUX_KCONFIG_FIXUP_CMDS + $(if $(LINUX_NEEDS_MODULES), + $(call KCONFIG_ENABLE_OPT,CONFIG_MODULES,$(@D)/.config)) + $(call KCONFIG_ENABLE_OPT,$(strip $(LINUX_COMPRESSION_OPT_y)),$(@D)/.config) + $(foreach opt, $(LINUX_COMPRESSION_OPT_), + $(call KCONFIG_DISABLE_OPT,$(opt),$(@D)/.config) + ) + $(LINUX_FIXUP_CONFIG_ENDIANNESS) + $(if $(BR2_arm)$(BR2_armeb), + $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config)) + $(if $(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le), + $(call KCONFIG_ENABLE_OPT,CONFIG_PPC_DISABLE_WERROR,$(@D)/.config)) + $(if $(BR2_TARGET_ROOTFS_CPIO), + $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD,$(@D)/.config)) + # As the kernel gets compiled before root filesystems are + # built, we create a fake cpio file. It'll be + # replaced later by the real cpio archive, and the kernel will be + # rebuilt using the linux-rebuild-with-initramfs target. + $(if $(BR2_TARGET_ROOTFS_INITRAMFS), + mkdir -p $(BINARIES_DIR) + touch $(BINARIES_DIR)/rootfs.cpio + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio",$(@D)/.config) + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0,$(@D)/.config) + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),, + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV), + $(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV), + $(call KCONFIG_ENABLE_OPT,CONFIG_NET,$(@D)/.config)) + $(if $(BR2_PACKAGE_AUDIT), + $(call KCONFIG_ENABLE_OPT,CONFIG_NET,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT,$(@D)/.config)) + $(if $(BR2_PACKAGE_INTEL_MICROCODE), + $(call KCONFIG_ENABLE_OPT,CONFIG_MICROCODE,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_MICROCODE_INTEL,$(@D)/.config)) + $(if $(BR2_PACKAGE_KTAP), + $(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_ENABLE_DEFAULT_TRACERS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER,$(@D)/.config)) + $(if $(BR2_PACKAGE_LINUX_TOOLS_PERF), + $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config)) + $(if $(BR2_PACKAGE_PCM_TOOLS), + $(call KCONFIG_ENABLE_OPT,CONFIG_X86_MSR,$(@D)/.config)) + $(if $(BR2_PACKAGE_SYSTEMD), + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_XATTR,$(@D)/.config)) + $(if $(BR2_PACKAGE_SMACK), + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK,$(@D)/.config)) + $(if $(BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER), + $(call KCONFIG_ENABLE_OPT,CONFIG_CMA,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_DMA_CMA,$(@D)/.config)) + $(if $(BR2_PACKAGE_IPTABLES), + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES,$(@D)/.config)) + $(if $(BR2_PACKAGE_XTABLES_ADDONS), + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK,$(@D)/.config)) + $(if $(BR2_PACKAGE_WIREGUARD), + $(call KCONFIG_ENABLE_OPT,CONFIG_INET,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_FOU,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_MANAGER,$(@D)/.config)) + $(if $(BR2_LINUX_KERNEL_APPENDED_DTB), + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB,$(@D)/.config)) + $(if $(BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV), + $(call KCONFIG_DISABLE_OPT,CONFIG_MXC_GPU_VIV,$(@D)/.config)) + $(if $(LINUX_KERNEL_CUSTOM_LOGO_PATH), + $(call KCONFIG_ENABLE_OPT,CONFIG_FB,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_LOGO,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_LOGO_LINUX_CLUT224,$(@D)/.config)) +endef + +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y) +# Starting with 4.17, the generated dtc parser code is no longer +# shipped with the kernel sources, so we need flex and bison. For +# reproducibility, we use our owns rather than the host ones. +LINUX_DEPENDENCIES += host-bison host-flex + +ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),) +define LINUX_BUILD_DTB + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_DTBS) +endef +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),) +define LINUX_INSTALL_DTB + # dtbs moved from arch//boot to arch//boot/dts since 3.8-rc1 + cp $(addprefix \ + $(LINUX_ARCH_PATH)/boot/$(if $(wildcard \ + $(addprefix $(LINUX_ARCH_PATH)/boot/dts/,$(LINUX_DTBS))),dts/),$(LINUX_DTBS)) \ + $(1) +endef +endif # BR2_LINUX_KERNEL_APPENDED_DTB +endif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT +endif # BR2_LINUX_KERNEL_DTS_SUPPORT + +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) +# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1 +define LINUX_APPEND_DTB + (cd $(LINUX_ARCH_PATH)/boot; \ + for dtb in $(LINUX_DTS_NAME); do \ + if test -e $${dtb}.dtb ; then \ + dtbpath=$${dtb}.dtb ; \ + else \ + dtbpath=dts/$${dtb}.dtb ; \ + fi ; \ + cat zImage $${dtbpath} > zImage.$${dtb} || exit 1; \ + done) +endef +ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) +# We need to generate a new u-boot image that takes into +# account the extra-size added by the device tree at the end +# of the image. To do so, we first need to retrieve both load +# address and entry point for the kernel from the already +# generate uboot image before using mkimage -l. +LINUX_APPEND_DTB += ; \ + MKIMAGE_ARGS=`$(MKIMAGE) -l $(LINUX_IMAGE_PATH) |\ + sed -n -e 's/Image Name:[ ]*\(.*\)/-n \1/p' -e 's/Load Address:/-a/p' -e 's/Entry Point:/-e/p'`; \ + for dtb in $(LINUX_DTS_NAME); do \ + $(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \ + -T kernel -C none $${MKIMAGE_ARGS} \ + -d $(LINUX_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \ + done +endif +endif + +# Compilation. We make sure the kernel gets rebuilt when the +# configuration has changed. We call the 'all' and +# '$(LINUX_TARGET_NAME)' targets separately because calling them in +# the same $(MAKE) invocation has shown to cause parallel build +# issues. +define LINUX_BUILD_CMDS + $(foreach dts,$(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)), \ + cp -f $(dts) $(LINUX_ARCH_PATH)/boot/dts/ + ) + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) all + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME) + $(LINUX_BUILD_DTB) + $(LINUX_APPEND_DTB) +endef + +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) +# When a DTB was appended, install the potential several images with +# appended DTBs. +define LINUX_INSTALL_IMAGE + mkdir -p $(1) + cp $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1) +endef +else +# Otherwise, just install the unique image generated by the kernel +# build process. +define LINUX_INSTALL_IMAGE + $(INSTALL) -m 0644 -D $(LINUX_IMAGE_PATH) $(1)/$(LINUX_IMAGE_NAME) +endef +endif + +ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y) +define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET + $(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot) + $(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot) +endef +endif + +define LINUX_INSTALL_HOST_TOOLS + # Installing dtc (device tree compiler) as host tool, if selected + if grep -q "CONFIG_DTC=y" $(@D)/.config; then \ + $(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/bin/linux-dtc ; \ + $(if $(BR2_PACKAGE_HOST_DTC),,ln -sf linux-dtc $(HOST_DIR)/bin/dtc;) \ + fi +endef + +define LINUX_INSTALL_IMAGES_CMDS + $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) + $(call LINUX_INSTALL_DTB,$(BINARIES_DIR)) +endef + +ifeq ($(BR2_STRIP_strip),y) +LINUX_MAKE_FLAGS += INSTALL_MOD_STRIP=1 +endif + +define LINUX_INSTALL_TARGET_CMDS + $(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET) + # Install modules and remove symbolic links pointing to build + # directories, not relevant on the target + @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ + $(LINUX_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \ + rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \ + rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \ + fi + $(LINUX_INSTALL_HOST_TOOLS) +endef + +# Include all our extensions. +# +# Note: our package infrastructure uses the full-path of the last-scanned +# Makefile to determine what package we're currently defining, using the +# last directory component in the path. As such, including other Makefile, +# like below, before we call one of the *-package macro is usally not +# working. +# However, since the files we include here are in the same directory as +# the current Makefile, we are OK. But this is a hard requirement: files +# included here *must* be in the same directory! +include $(sort $(wildcard linux/linux-ext-*.mk)) + +LINUX_PATCH_DEPENDENCIES += $(foreach ext,$(LINUX_EXTENSIONS),\ + $(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),$(ext))) + +LINUX_PRE_PATCH_HOOKS += $(foreach ext,$(LINUX_EXTENSIONS),\ + $(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),\ + $(call UPPERCASE,$(ext))_PREPARE_KERNEL)) + +# Checks to give errors that the user can understand + +# When a custom repository has been set, check for the repository version +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN)$(BR2_LINUX_KERNEL_CUSTOM_GIT)$(BR2_LINUX_KERNEL_CUSTOM_HG),y) +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION)),) +$(error No custom repository version set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION setting) +endif +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)),) +$(error No custom repo URL set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_URL setting) +endif +endif + +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) +# We must use the user-supplied kconfig value, because +# LINUX_KCONFIG_DEFCONFIG will at least contain the +# trailing _defconfig +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),) +$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) +ifeq ($(LINUX_KCONFIG_FILE),) +$(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT):$(strip $(LINUX_DTS_NAME)),y:) +$(error No kernel device tree source specified, check your \ + BR2_LINUX_KERNEL_INTREE_DTS_NAME / BR2_LINUX_KERNEL_CUSTOM_DTS_PATH settings) +endif + +endif # BR_BUILDING + +$(eval $(kconfig-package)) + +# Support for rebuilding the kernel after the cpio archive has +# been generated. +.PHONY: linux-rebuild-with-initramfs +linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_target_installed +linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_images_installed +linux-rebuild-with-initramfs: rootfs-cpio +linux-rebuild-with-initramfs: + @$(call MESSAGE,"Rebuilding kernel with initramfs") + # Build the kernel. + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) $(LINUX_TARGET_NAME) + $(LINUX_APPEND_DTB) + # Copy the kernel image(s) to its(their) final destination + $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) + # If there is a .ub file copy it to the final destination + test ! -f $(LINUX_IMAGE_PATH).ub || cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR) diff --git a/features/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash b/features/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash new file mode 100644 index 00000000..faa23d0b --- /dev/null +++ b/features/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9ce2c7228dd0ac8d3cc530a32bb92b532bdbc5dfb6a405c245abee678d878697 18xx-ti-utils-R8.7_SP3.tar.gz +sha256 363cef40b276a7a91ebcff3f78626d9cfe5e5a51927c725236007259403d5fc4 COPYING diff --git a/features/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk b/features/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk new file mode 100644 index 00000000..d1f0388c --- /dev/null +++ b/features/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# 18xx-ti-utils +# +################################################################################ + +18XX_TI_UTILS_VERSION = R8.7_SP3 +18XX_TI_UTILS_SITE = git://git.ti.com/wilink8-wlan/18xx-ti-utils +18XX_TI_UTILS_DEPENDENCIES = libnl +18XX_TI_UTILS_LICENSE = BSD-3-Clause +18XX_TI_UTILS_LICENSE_FILES = COPYING + +18XX_TI_UTILS_CFLAGS = -I$(STAGING_DIR)/usr/include/libnl3 -DCONFIG_LIBNL32 + +ifeq ($(BR2_STATIC_LIBS),y) +18XX_TI_UTILS_BUILD_TARGET = static +endif + +define 18XX_TI_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) CROSS_COMPILE=$(TARGET_CROSS) \ + NFSROOT="$(STAGING_DIR)" NLVER=3 $(MAKE) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS) $(18XX_TI_UTILS_CFLAGS)" \ + $(18XX_TI_UTILS_BUILD_TARGET) +endef + +define 18XX_TI_UTILS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/calibrator $(TARGET_DIR)/usr/bin/calibrator +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/18xx-ti-utils/Config.in b/features/buildroot/package/18xx-ti-utils/Config.in new file mode 100644 index 00000000..571d196e --- /dev/null +++ b/features/buildroot/package/18xx-ti-utils/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_18XX_TI_UTILS + bool "18xx-ti-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + TI Wilink calibration utilities. + + CONFIG_NL80211_TESTMODE must be enabled in the kernel + configuration for this package to work. + + http://processors.wiki.ti.com/index.php/WL18xx_TX_Testing + +comment "18xx-ti-utils needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/4th/0001-avoid-regen-during-install.patch b/features/buildroot/package/4th/0001-avoid-regen-during-install.patch new file mode 100644 index 00000000..436cff1f --- /dev/null +++ b/features/buildroot/package/4th/0001-avoid-regen-during-install.patch @@ -0,0 +1,17 @@ +avoid regen during install + +Signed-off-by: Francois Perrad + +--- a/sources/Makefile ++++ b/sources/Makefile +@@ -120,7 +120,7 @@ + ln -sf $(SHARED_LIB) $(LIBRARIES)/lib4th.so + endif + +-mostlyinstall: libinstall all ++mostlyinstall: libinstall + cp 4th 4tsh pp4th $(BINARIES) + + install: mostlyinstall +-- + diff --git a/features/buildroot/package/4th/4th.hash b/features/buildroot/package/4th/4th.hash new file mode 100644 index 00000000..97083da8 --- /dev/null +++ b/features/buildroot/package/4th/4th.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 1c7adbb1a56dad4c4c781e6e023d77ac862842560c05246b691d07e9a4460ab2 4th-3.62.4-unix.tar.gz diff --git a/features/buildroot/package/4th/4th.mk b/features/buildroot/package/4th/4th.mk new file mode 100644 index 00000000..f272e028 --- /dev/null +++ b/features/buildroot/package/4th/4th.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# 4th +# +################################################################################ + +4TH_VERSION = 3.62.4 +4TH_SOURCE = 4th-$(4TH_VERSION)-unix.tar.gz +4TH_SITE = http://downloads.sourceforge.net/project/forth-4th/4th-$(4TH_VERSION) +4TH_LICENSE = GPL-3.0+, LGPL-3.0+ +# The COPYING file only contains the text of the LGPL-3.0, but the +# source code really contains parts under GPL-3.0+. +4TH_LICENSE_FILES = COPYING +4TH_DEPENDENCIES = host-4th +4TH_INSTALL_STAGING = YES + +4TH_CFLAGS = $(TARGET_CFLAGS) -DUNIX -fsigned-char + +ifeq ($(BR2_STATIC_LIBS),y) +4TH_MAKE_ENV = $(TARGET_MAKE_ENV) STATIC=1 +else +4TH_MAKE_ENV = $(TARGET_MAKE_ENV) SHARED=1 +4TH_CFLAGS += -fPIC +endif + +define 4TH_BUILD_CMDS + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources all \ + CROSS="$(TARGET_CROSS)" \ + CFLAGS="$(4TH_CFLAGS)" \ + FOURTH=$(HOST_DIR)/bin/4th +endef + +define 4TH_INSTALL_STAGING_CMDS + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources libinstall \ + LIBRARIES=$(STAGING_DIR)/usr/lib + $(INSTALL) -D -m 0644 $(@D)/sources/4th.h \ + $(STAGING_DIR)/usr/include/4th.h +endef + +define 4TH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/bin + mkdir -p $(TARGET_DIR)/usr/lib + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \ + BINARIES=$(TARGET_DIR)/usr/bin \ + LIBRARIES=$(TARGET_DIR)/usr/lib + mkdir -p $(TARGET_DIR)/usr/share/4th/lib + cp -dpf $(@D)/4th/*.4th $(TARGET_DIR)/usr/share/4th + cp -dpf $(@D)/4th/lib/*.4th $(TARGET_DIR)/usr/share/4th/lib + mkdir -p $(TARGET_DIR)/usr/share/4th/demo + cp -dpf $(@D)/4th/demo/*.4th $(TARGET_DIR)/usr/share/4th/demo + mkdir -p $(TARGET_DIR)/usr/share/4th/4pp/lib + cp -dpf $(@D)/4th/4pp/*.4pp $(TARGET_DIR)/usr/share/4th/4pp + cp -dpf $(@D)/4th/4pp/lib/*.4pp $(TARGET_DIR)/usr/share/4th/4pp/lib +endef + +define HOST_4TH_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources all \ + CFLAGS="$(HOST_CFLAGS) -DUNIX -fsigned-char" +endef + +define HOST_4TH_INSTALL_CMDS + mkdir -p $(HOST_DIR)/bin + mkdir -p $(HOST_DIR)/lib + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \ + BINARIES=$(HOST_DIR)/bin \ + LIBRARIES=$(HOST_DIR)/lib +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/4th/Config.in b/features/buildroot/package/4th/Config.in new file mode 100644 index 00000000..4554664a --- /dev/null +++ b/features/buildroot/package/4th/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_4TH + bool "4th" + help + 4tH is a Forth compiler that can create bytecode, + C-embeddable bytecode, standalone executables, but also + works fine as a scripting language + + http://thebeez.home.xs4all.nl/4tH/ diff --git a/features/buildroot/package/Config.in b/features/buildroot/package/Config.in new file mode 100644 index 00000000..c7b097e8 --- /dev/null +++ b/features/buildroot/package/Config.in @@ -0,0 +1,2277 @@ +menu "Target packages" + + source "package/busybox/Config.in" + source "package/skeleton/Config.in" + source "package/skeleton-custom/Config.in" + source "package/skeleton-init-common/Config.in" + source "package/skeleton-init-none/Config.in" + source "package/skeleton-init-openrc/Config.in" + source "package/skeleton-init-systemd/Config.in" + source "package/skeleton-init-sysv/Config.in" + +menu "Audio and video applications" + source "package/alsa-utils/Config.in" + source "package/atest/Config.in" + source "package/aumix/Config.in" + source "package/bellagio/Config.in" + source "package/bluez-alsa/Config.in" + source "package/dvblast/Config.in" + source "package/dvdauthor/Config.in" + source "package/dvdrw-tools/Config.in" + source "package/espeak/Config.in" + source "package/faad2/Config.in" + source "package/ffmpeg/Config.in" + source "package/flac/Config.in" + source "package/flite/Config.in" + source "package/gmrender-resurrect/Config.in" + source "package/gstreamer/Config.in" + source "package/gstreamer1/Config.in" + source "package/jack2/Config.in" + source "package/kodi/Config.in" + source "package/lame/Config.in" + source "package/madplay/Config.in" + source "package/mimic/Config.in" + source "package/miraclecast/Config.in" + source "package/mjpegtools/Config.in" + source "package/modplugtools/Config.in" + source "package/motion/Config.in" + source "package/mpd/Config.in" + source "package/mpd-mpc/Config.in" + source "package/mpg123/Config.in" + source "package/mpv/Config.in" + source "package/multicat/Config.in" + source "package/musepack/Config.in" + source "package/ncmpc/Config.in" + source "package/omxplayer/Config.in" + source "package/on2-8170-libs/Config.in" + source "package/opus-tools/Config.in" + source "package/pulseaudio/Config.in" + source "package/sox/Config.in" + source "package/squeezelite/Config.in" + source "package/tovid/Config.in" + source "package/tstools/Config.in" + source "package/twolame/Config.in" + source "package/udpxy/Config.in" + source "package/upmpdcli/Config.in" + source "package/v4l2grab/Config.in" + source "package/v4l2loopback/Config.in" + source "package/vlc/Config.in" + source "package/vorbis-tools/Config.in" + source "package/wavpack/Config.in" + source "package/yavta/Config.in" + source "package/ympd/Config.in" +endmenu + +menu "Conan" + source "package/conan/Config.in" + source "package/conan-zlib/Config.in" + source "package/conan-gtest/Config.in" +endmenu + +menu "Compressors and decompressors" + source "package/brotli/Config.in" + source "package/bzip2/Config.in" + source "package/gzip/Config.in" + source "package/lz4/Config.in" + source "package/lzip/Config.in" + source "package/lzop/Config.in" + source "package/p7zip/Config.in" + source "package/pigz/Config.in" + source "package/pixz/Config.in" + source "package/unrar/Config.in" + source "package/unzip/Config.in" + source "package/xz/Config.in" + source "package/zip/Config.in" + source "package/zstd/Config.in" +endmenu + +menu "Debugging, profiling and benchmark" + source "package/blktrace/Config.in" + source "package/bonnie/Config.in" + source "package/cache-calibrator/Config.in" + source "package/clinfo/Config.in" + source "package/dacapo/Config.in" + source "package/dhrystone/Config.in" + source "package/dieharder/Config.in" + source "package/dmalloc/Config.in" + source "package/dropwatch/Config.in" + source "package/dstat/Config.in" + source "package/dt/Config.in" + source "package/duma/Config.in" + source "package/fio/Config.in" + source "package/fwts/Config.in" + source "package/gdb/Config.in" + source "package/google-breakpad/Config.in" + source "package/iozone/Config.in" + source "package/kexec/Config.in" + source "package/kexec-lite/Config.in" + source "package/ktap/Config.in" + source "package/kvm-unit-tests/Config.in" + source "package/kyua/Config.in" + source "package/latencytop/Config.in" + source "package/lmbench/Config.in" + source "package/lsof/Config.in" + source "package/ltp-testsuite/Config.in" + source "package/ltrace/Config.in" + source "package/lttng-babeltrace/Config.in" + source "package/lttng-modules/Config.in" + source "package/lttng-tools/Config.in" + source "package/mcelog/Config.in" + source "package/memstat/Config.in" + source "package/netperf/Config.in" + source "package/netsniff-ng/Config.in" + source "package/nmon/Config.in" + source "package/oprofile/Config.in" + source "package/pax-utils/Config.in" + source "package/pcm-tools/Config.in" + source "package/pv/Config.in" + source "package/racehound/Config.in" + source "package/ramsmp/Config.in" + source "package/ramspeed/Config.in" + source "package/rt-tests/Config.in" + source "package/spidev_test/Config.in" + source "package/strace/Config.in" + source "package/stress/Config.in" + source "package/stress-ng/Config.in" + source "package/sysdig/Config.in" + source "package/sysprof/Config.in" + source "package/tcf-agent/Config.in" + source "package/tinymembench/Config.in" + source "package/trace-cmd/Config.in" + source "package/trinity/Config.in" + source "package/uclibc-ng-test/Config.in" + source "package/valgrind/Config.in" + source "package/vmtouch/Config.in" + source "package/whetstone/Config.in" +endmenu + +menu "Development tools" + source "package/bats-core/Config.in" + source "package/binutils/Config.in" + source "package/bsdiff/Config.in" + source "package/bustle/Config.in" + source "package/check/Config.in" + source "package/cmake/Config.in" + source "package/cppunit/Config.in" + source "package/cunit/Config.in" + source "package/cvs/Config.in" + source "package/cxxtest/Config.in" + source "package/diffutils/Config.in" + source "package/dos2unix/Config.in" + source "package/findutils/Config.in" + source "package/flex/Config.in" + source "package/gawk/Config.in" + source "package/gettext/Config.in" + source "package/gettext-gnu/Config.in" + source "package/gettext-tiny/Config.in" + source "package/git/Config.in" + source "package/git-crypt/Config.in" + source "package/gperf/Config.in" + source "package/grep/Config.in" + source "package/jo/Config.in" + source "package/jq/Config.in" + source "package/libtool/Config.in" + source "package/make/Config.in" + source "package/patch/Config.in" + source "package/pkgconf/Config.in" + source "package/sed/Config.in" + source "package/subversion/Config.in" + source "package/tree/Config.in" + source "package/yasm/Config.in" +endmenu + +menu "Filesystem and flash utilities" + source "package/abootimg/Config.in" + source "package/aufs/Config.in" + source "package/aufs-util/Config.in" + source "package/autofs/Config.in" + source "package/btrfs-progs/Config.in" + source "package/cifs-utils/Config.in" + source "package/cpio/Config.in" + source "package/cramfs/Config.in" + source "package/curlftpfs/Config.in" + source "package/davfs2/Config.in" + source "package/dosfstools/Config.in" + source "package/e2fsprogs/Config.in" + source "package/e2tools/Config.in" + source "package/ecryptfs-utils/Config.in" + source "package/exfat/Config.in" + source "package/exfat-utils/Config.in" + source "package/f2fs-tools/Config.in" + source "package/flashbench/Config.in" + source "package/fscryptctl/Config.in" + source "package/fwup/Config.in" + source "package/genext2fs/Config.in" + source "package/genpart/Config.in" + source "package/genromfs/Config.in" + source "package/imx-usb-loader/Config.in" + source "package/mmc-utils/Config.in" + source "package/mtd/Config.in" + source "package/mtools/Config.in" + source "package/nfs-utils/Config.in" + source "package/nilfs-utils/Config.in" + source "package/ntfs-3g/Config.in" + source "package/sp-oops-extract/Config.in" + source "package/squashfs/Config.in" + source "package/sshfs/Config.in" + source "package/sunxi-tools/Config.in" + source "package/udftools/Config.in" + source "package/unionfs/Config.in" + source "package/xfsprogs/Config.in" +endmenu + +menu "Fonts, cursors, icons, sounds and themes" + +comment "Cursors" + source "package/comix-cursors/Config.in" + source "package/obsidian-cursors/Config.in" + +comment "Fonts" + source "package/bitstream-vera/Config.in" + source "package/cantarell/Config.in" + source "package/dejavu/Config.in" + source "package/font-awesome/Config.in" + source "package/ghostscript-fonts/Config.in" + source "package/inconsolata/Config.in" + source "package/liberation/Config.in" + +comment "Icons" + source "package/adwaita-icon-theme/Config.in" + source "package/google-material-design-icons/Config.in" + source "package/hicolor-icon-theme/Config.in" + +comment "Sounds" + source "package/sound-theme-borealis/Config.in" + source "package/sound-theme-freedesktop/Config.in" + +comment "Themes" + source "package/gtk2-engines/Config.in" + +endmenu + +menu "Games" + source "package/chocolate-doom/Config.in" + source "package/doom-wad/Config.in" + source "package/flare-engine/Config.in" + source "package/flare-game/Config.in" + source "package/gnuchess/Config.in" + source "package/lbreakout2/Config.in" + source "package/ltris/Config.in" + source "package/lugaru/Config.in" + source "package/minetest/Config.in" + source "package/minetest-game/Config.in" + source "package/opentyrian/Config.in" + source "package/opentyrian-data/Config.in" + source "package/prboom/Config.in" + source "package/rubix/Config.in" + source "package/sl/Config.in" + source "package/solarus/Config.in" + source "package/stella/Config.in" + source "package/supertux/Config.in" + source "package/supertuxkart/Config.in" +endmenu + +menu "Graphic libraries and applications (graphic/text)" + +comment "Graphic applications" + source "package/cog/Config.in" + source "package/fswebcam/Config.in" + source "package/ghostscript/Config.in" + source "package/glmark2/Config.in" + source "package/gnuplot/Config.in" + source "package/jhead/Config.in" + source "package/kmscube/Config.in" + source "package/libva-utils/Config.in" + source "package/mesa3d-demos/Config.in" + source "package/netsurf/Config.in" + source "package/pngquant/Config.in" + source "package/qt5cinex/Config.in" + source "package/rrdtool/Config.in" + source "package/tesseract-ocr/Config.in" + +comment "Graphic libraries" + source "package/cegui06/Config.in" + source "package/directfb/Config.in" + source "package/directfb-examples/Config.in" + source "package/efl/Config.in" + source "package/fb-test-app/Config.in" + source "package/fbdump/Config.in" + source "package/fbgrab/Config.in" + source "package/fbset/Config.in" + source "package/fbterm/Config.in" + source "package/fbv/Config.in" + source "package/freerdp/Config.in" + source "package/imagemagick/Config.in" + source "package/linux-fusion/Config.in" + source "package/lite/Config.in" + source "package/mesa3d/Config.in" + source "package/mesa3d-headers/Config.in" + source "package/ocrad/Config.in" + source "package/psplash/Config.in" + source "package/sdl/Config.in" + source "package/sdl_gfx/Config.in" + source "package/sdl_image/Config.in" + source "package/sdl_mixer/Config.in" + source "package/sdl_net/Config.in" + source "package/sdl_sound/Config.in" + source "package/sdl_ttf/Config.in" + source "package/sdl2/Config.in" + source "package/sdl2_gfx/Config.in" + source "package/sdl2_image/Config.in" + source "package/sdl2_mixer/Config.in" + source "package/sdl2_net/Config.in" + source "package/sdl2_ttf/Config.in" + source "package/tk/Config.in" + +comment "Other GUIs" + source "package/qt5/Config.in" +if BR2_PACKAGE_QT5 +comment "QT libraries and helper libraries" + source "package/cutelyst/Config.in" + source "package/grantlee/Config.in" + source "package/kf5/Config.in" + source "package/qextserialport/Config.in" + source "package/qjson/Config.in" + source "package/quazip/Config.in" + source "package/qwt/Config.in" +endif + source "package/tekui/Config.in" + source "package/weston/Config.in" + source "package/x11r7/Config.in" + +comment "X applications" + depends on BR2_PACKAGE_XORG7 + + source "package/alsamixergui/Config.in" + source "package/apitrace/Config.in" + source "package/dillo/Config.in" + source "package/docker/Config.in" + source "package/feh/Config.in" + source "package/gmpc/Config.in" + source "package/gqview/Config.in" + source "package/gtkperf/Config.in" + source "package/leafpad/Config.in" + source "package/midori/Config.in" + source "package/nodm/Config.in" + source "package/pcmanfm/Config.in" + source "package/qt-webkit-kiosk/Config.in" + source "package/rdesktop/Config.in" + source "package/synergy/Config.in" + source "package/vte/Config.in" + source "package/wmctrl/Config.in" + source "package/x11vnc/Config.in" + source "package/xdotool/Config.in" + source "package/xscreensaver/Config.in" + source "package/xterm/Config.in" + source "package/xvkbd/Config.in" + source "package/yad/Config.in" + +comment "X libraries and helper libraries" + depends on BR2_PACKAGE_XORG7 + + source "package/libsexy/Config.in" + source "package/x11r7/xkeyboard-config/Config.in" + +comment "X window managers" + depends on BR2_PACKAGE_XORG7 + + source "package/enlightenment/Config.in" + source "package/fluxbox/Config.in" + source "package/matchbox/Config.in" + source "package/metacity/Config.in" + source "package/openbox/Config.in" + source "package/ratpoison/Config.in" +endmenu + +menu "Hardware handling" +menu "Firmware" + source "package/am33x-cm3/Config.in" + source "package/armbian-firmware/Config.in" + source "package/b43-firmware/Config.in" + source "package/linux-firmware/Config.in" + source "package/murata-cyw-fw/Config.in" + source "package/rpi-bt-firmware/Config.in" + source "package/rpi-firmware/Config.in" + source "package/rpi-wifi-firmware/Config.in" + source "package/sunxi-boards/Config.in" + source "package/ts4900-fpga/Config.in" + source "package/ux500-firmware/Config.in" + source "package/wilc1000-firmware/Config.in" + source "package/wilink-bt-firmware/Config.in" + source "package/zd1211-firmware/Config.in" +endmenu + source "package/18xx-ti-utils/Config.in" + source "package/a10disp/Config.in" + source "package/acpica/Config.in" + source "package/acpid/Config.in" + source "package/acpitool/Config.in" + source "package/aer-inject/Config.in" + source "package/am335x-pru-package/Config.in" + source "package/amd-catalyst/Config.in" + source "package/avrdude/Config.in" + source "package/bcache-tools/Config.in" + source "package/biosdevname/Config.in" + source "package/brickd/Config.in" + source "package/brltty/Config.in" + source "package/cbootimage/Config.in" + source "package/cc-tool/Config.in" + source "package/cdrkit/Config.in" + source "package/cryptsetup/Config.in" + source "package/cwiid/Config.in" + source "package/dahdi-linux/Config.in" + source "package/dahdi-tools/Config.in" + source "package/dbus/Config.in" + source "package/dbus-cpp/Config.in" + source "package/dbus-glib/Config.in" + source "package/dbus-python/Config.in" + source "package/dbus-triggerd/Config.in" + source "package/devmem2/Config.in" + source "package/dfu-util/Config.in" + source "package/dmidecode/Config.in" + source "package/dmraid/Config.in" + source "package/dt-utils/Config.in" + source "package/dtv-scan-tables/Config.in" + source "package/dump1090/Config.in" + source "package/dvb-apps/Config.in" + source "package/dvbsnoop/Config.in" + source "package/edid-decode/Config.in" + source "package/eudev/Config.in" + source "package/ev3dev-linux-drivers/Config.in" + source "package/evemu/Config.in" + source "package/evtest/Config.in" + source "package/fan-ctrl/Config.in" + source "package/fbtft/Config.in" + source "package/fconfig/Config.in" + source "package/fis/Config.in" + source "package/flashrom/Config.in" + source "package/fmtools/Config.in" + source "package/freescale-imx/Config.in" + source "package/fxload/Config.in" + source "package/gadgetfs-test/Config.in" + source "package/gpm/Config.in" + source "package/gpsd/Config.in" + source "package/gptfdisk/Config.in" + source "package/gvfs/Config.in" + source "package/hdparm/Config.in" + source "package/hwdata/Config.in" + source "package/hwloc/Config.in" + source "package/i2c-tools/Config.in" + source "package/i7z/Config.in" + source "package/input-event-daemon/Config.in" + source "package/intel-microcode/Config.in" + source "package/iostat/Config.in" + source "package/ipmitool/Config.in" + source "package/ipmiutil/Config.in" + source "package/irda-utils/Config.in" + source "package/iucode-tool/Config.in" + source "package/kbd/Config.in" + source "package/lcdproc/Config.in" + source "package/libubootenv/Config.in" + source "package/libuio/Config.in" + source "package/linux-backports/Config.in" + source "package/linuxconsoletools/Config.in" + source "package/lirc-tools/Config.in" + source "package/lm-sensors/Config.in" + source "package/lshw/Config.in" + source "package/lsscsi/Config.in" + source "package/lsuio/Config.in" + source "package/luksmeta/Config.in" + source "package/lvm2/Config.in" + source "package/mali-t76x/Config.in" + source "package/mdadm/Config.in" + source "package/memtest86/Config.in" + source "package/memtester/Config.in" + source "package/memtool/Config.in" + source "package/minicom/Config.in" + source "package/msr-tools/Config.in" + source "package/nanocom/Config.in" + source "package/neard/Config.in" + source "package/nvidia-driver/Config.in" + source "package/nvidia-tegra23/Config.in" + source "package/nvme/Config.in" + source "package/odroid-mali/Config.in" + source "package/odroid-scripts/Config.in" + source "package/ofono/Config.in" + source "package/on2-8170-modules/Config.in" + source "package/open2300/Config.in" + source "package/openipmi/Config.in" + source "package/openocd/Config.in" + source "package/openpowerlink/Config.in" + source "package/owl-linux/Config.in" + source "package/parted/Config.in" + source "package/pciutils/Config.in" + source "package/pdbg/Config.in" + source "package/picocom/Config.in" + source "package/pifmrds/Config.in" + source "package/pigpio/Config.in" + source "package/powertop/Config.in" + source "package/pps-tools/Config.in" + source "package/pru-software-support/Config.in" + source "package/pulseview/Config.in" + source "package/read-edid/Config.in" + source "package/rng-tools/Config.in" + source "package/rpi-userland/Config.in" + source "package/rs485conf/Config.in" + source "package/rtc-tools/Config.in" + source "package/rtl8188eu/Config.in" + source "package/rtl8189fs/Config.in" + source "package/rtl8723bs/Config.in" + source "package/rtl8723bu/Config.in" + source "package/rtl8821au/Config.in" + source "package/sane-backends/Config.in" + source "package/sdparm/Config.in" + source "package/sedutil/Config.in" + source "package/setserial/Config.in" + source "package/sg3_utils/Config.in" + source "package/sigrok-cli/Config.in" + source "package/sispmctl/Config.in" + source "package/smartmontools/Config.in" + source "package/smstools3/Config.in" + source "package/spi-tools/Config.in" + source "package/sredird/Config.in" + source "package/statserial/Config.in" + source "package/stm32flash/Config.in" + source "package/sunxi-cedarx/Config.in" + source "package/sunxi-mali-mainline/Config.in" + source "package/sunxi-mali-mainline-driver/Config.in" + source "package/sysstat/Config.in" + source "package/targetcli-fb/Config.in" + source "package/ti-gfx/Config.in" + source "package/ti-sgx-demos/Config.in" + source "package/ti-sgx-km/Config.in" + source "package/ti-sgx-um/Config.in" + source "package/ti-uim/Config.in" + source "package/ti-utils/Config.in" + source "package/triggerhappy/Config.in" + source "package/uboot-tools/Config.in" + source "package/ubus/Config.in" + source "package/uccp420wlan/Config.in" + source "package/udev/Config.in" + source "package/udisks/Config.in" + source "package/uhubctl/Config.in" + source "package/upower/Config.in" + source "package/usb_modeswitch/Config.in" + source "package/usb_modeswitch_data/Config.in" + source "package/usbmount/Config.in" + source "package/usbutils/Config.in" + source "package/w_scan/Config.in" + source "package/wf111/Config.in" + source "package/wipe/Config.in" + source "package/xorriso/Config.in" + source "package/xr819-xradio/Config.in" +endmenu + +menu "Interpreter languages and scripting" + source "package/4th/Config.in" + source "package/enscript/Config.in" + source "package/erlang/Config.in" +if BR2_PACKAGE_ERLANG +menu "Erlang libraries/modules" + source "package/erlang-eimp/Config.in" + source "package/erlang-goldrush/Config.in" + source "package/erlang-jiffy/Config.in" + source "package/erlang-lager/Config.in" + source "package/erlang-p1-cache-tab/Config.in" + source "package/erlang-p1-iconv/Config.in" + source "package/erlang-p1-oauth2/Config.in" + source "package/erlang-p1-sip/Config.in" + source "package/erlang-p1-stringprep/Config.in" + source "package/erlang-p1-stun/Config.in" + source "package/erlang-p1-tls/Config.in" + source "package/erlang-p1-utils/Config.in" + source "package/erlang-p1-xml/Config.in" + source "package/erlang-p1-xmpp/Config.in" + source "package/erlang-p1-yaml/Config.in" + source "package/erlang-p1-zlib/Config.in" +endmenu +endif + source "package/execline/Config.in" + source "package/ficl/Config.in" + source "package/gauche/Config.in" + source "package/guile/Config.in" + source "package/haserl/Config.in" + source "package/jamvm/Config.in" + source "package/jimtcl/Config.in" + source "package/lua/Config.in" + source "package/luainterpreter/Config.in" + source "package/luajit/Config.in" +if BR2_PACKAGE_HAS_LUAINTERPRETER && !BR2_STATIC_LIBS +# lua modules are dynamically loaded, so not available on static builds +menu "Lua libraries/modules" +# When adding lua packages, make sure the name start with "lua". If the +# upstream package is "luafoo", call it "luafoo" in Buildroot; if the upstream +# package is "foo", call it "lua-foo". Many packages currently don't follow +# this convention, but that's historical accident. + source "package/argparse/Config.in" + source "package/cgilua/Config.in" + source "package/copas/Config.in" + source "package/coxpcall/Config.in" + source "package/dado/Config.in" + source "package/easydbus/Config.in" + source "package/lbase64/Config.in" + source "package/ljlinenoise/Config.in" + source "package/ljsyscall/Config.in" + source "package/lpeg/Config.in" + source "package/lpty/Config.in" + source "package/lrandom/Config.in" + source "package/lsqlite3/Config.in" + source "package/lua-basexx/Config.in" + source "package/lua-binaryheap/Config.in" + source "package/lua-bit32/Config.in" + source "package/lua-cjson/Config.in" + source "package/lua-coat/Config.in" + source "package/lua-coatpersistent/Config.in" + source "package/lua-compat53/Config.in" + source "package/lua-cqueues/Config.in" + source "package/lua-csnappy/Config.in" + source "package/lua-curl/Config.in" + source "package/lua-datafile/Config.in" + source "package/lua-ev/Config.in" + source "package/lua-fifo/Config.in" + source "package/lua-flu/Config.in" + source "package/lua-gd/Config.in" + source "package/lua-http/Config.in" + source "package/lua-iconv/Config.in" + source "package/lua-lpeg-patterns/Config.in" + source "package/lua-lunitx/Config.in" + source "package/lua-markdown/Config.in" + source "package/lua-messagepack/Config.in" + source "package/lua-msgpack-native/Config.in" + source "package/lua-periphery/Config.in" + source "package/lua-resty-http/Config.in" + source "package/lua-sailor/Config.in" + source "package/lua-sdl2/Config.in" + source "package/lua-std-debug/Config.in" + source "package/lua-std-normalize/Config.in" + source "package/lua-stdlib/Config.in" + source "package/lua-testmore/Config.in" + source "package/lua-utf8/Config.in" + source "package/lua-valua/Config.in" + source "package/luabitop/Config.in" + source "package/luadbi/Config.in" + source "package/luadbi-sqlite3/Config.in" + source "package/luaexpat/Config.in" + source "package/luaexpatutils/Config.in" + source "package/luafilesystem/Config.in" + source "package/luajson/Config.in" + source "package/lualogging/Config.in" + source "package/luaossl/Config.in" + source "package/luaposix/Config.in" + source "package/luasec/Config.in" + source "package/luasocket/Config.in" + source "package/luasql-sqlite3/Config.in" + source "package/luasyslog/Config.in" + source "package/lutok/Config.in" + source "package/luv/Config.in" + source "package/luvi/Config.in" + source "package/lzlib/Config.in" + source "package/orbit/Config.in" + source "package/rings/Config.in" + source "package/turbolua/Config.in" + source "package/wsapi/Config.in" + source "package/wsapi-fcgi/Config.in" + source "package/wsapi-xavante/Config.in" + source "package/xavante/Config.in" +endmenu +endif + source "package/micropython/Config.in" + source "package/micropython-lib/Config.in" + source "package/moarvm/Config.in" + source "package/mono/Config.in" +if BR2_PACKAGE_MONO +menu "Mono libraries/modules" + source "package/mono-gtksharp3/Config.in" +endmenu +endif + source "package/nodejs/Config.in" + source "package/openjdk/Config.in" + source "package/perl/Config.in" +if BR2_PACKAGE_PERL +menu "Perl libraries/modules" + source "package/perl-apache-logformat-compiler/Config.in" + source "package/perl-appconfig/Config.in" + source "package/perl-astro-suntime/Config.in" + source "package/perl-class-inspector/Config.in" + source "package/perl-class-load/Config.in" + source "package/perl-class-method-modifiers/Config.in" + source "package/perl-class-std/Config.in" + source "package/perl-class-std-fast/Config.in" + source "package/perl-convert-asn1/Config.in" + source "package/perl-cookie-baker/Config.in" + source "package/perl-crypt-blowfish/Config.in" + source "package/perl-crypt-cbc/Config.in" + source "package/perl-crypt-openssl-random/Config.in" + source "package/perl-crypt-openssl-rsa/Config.in" + source "package/perl-data-dump/Config.in" + source "package/perl-data-optlist/Config.in" + source "package/perl-data-uuid/Config.in" + source "package/perl-date-manip/Config.in" + source "package/perl-datetime-tiny/Config.in" + source "package/perl-dbd-mysql/Config.in" + source "package/perl-dbi/Config.in" + source "package/perl-devel-globaldestruction/Config.in" + source "package/perl-devel-stacktrace/Config.in" + source "package/perl-devel-stacktrace-ashtml/Config.in" + source "package/perl-device-serialport/Config.in" + source "package/perl-digest-hmac/Config.in" + source "package/perl-digest-md5/Config.in" + source "package/perl-digest-sha1/Config.in" + source "package/perl-dist-checkconflicts/Config.in" + source "package/perl-encode-detect/Config.in" + source "package/perl-encode-locale/Config.in" + source "package/perl-exporter-tiny/Config.in" + source "package/perl-file-listing/Config.in" + source "package/perl-file-sharedir/Config.in" + source "package/perl-file-slurp/Config.in" + source "package/perl-file-util/Config.in" + source "package/perl-filesys-notify-simple/Config.in" + source "package/perl-gd/Config.in" + source "package/perl-gdgraph/Config.in" + source "package/perl-gdtextutil/Config.in" + source "package/perl-hash-multivalue/Config.in" + source "package/perl-html-parser/Config.in" + source "package/perl-html-tagset/Config.in" + source "package/perl-http-cookies/Config.in" + source "package/perl-http-daemon/Config.in" + source "package/perl-http-date/Config.in" + source "package/perl-http-entity-parser/Config.in" + source "package/perl-http-headers-fast/Config.in" + source "package/perl-http-message/Config.in" + source "package/perl-http-multipartparser/Config.in" + source "package/perl-http-negotiate/Config.in" + source "package/perl-io-html/Config.in" + source "package/perl-io-interface/Config.in" + source "package/perl-io-socket-multicast/Config.in" + source "package/perl-io-socket-ssl/Config.in" + source "package/perl-json-maybexs/Config.in" + source "package/perl-json-tiny/Config.in" + source "package/perl-libwww-perl/Config.in" + source "package/perl-lwp-mediatypes/Config.in" + source "package/perl-mail-dkim/Config.in" + source "package/perl-mailtools/Config.in" + source "package/perl-mime-base64/Config.in" + source "package/perl-mime-base64-urlsafe/Config.in" + source "package/perl-mime-tools/Config.in" + source "package/perl-module-implementation/Config.in" + source "package/perl-module-runtime/Config.in" + source "package/perl-mojolicious/Config.in" + source "package/perl-mojolicious-plugin-authentication/Config.in" + source "package/perl-moo/Config.in" + source "package/perl-net-dns/Config.in" + source "package/perl-net-http/Config.in" + source "package/perl-net-ping/Config.in" + source "package/perl-net-snmp/Config.in" + source "package/perl-net-ssh2/Config.in" + source "package/perl-net-ssleay/Config.in" + source "package/perl-net-telnet/Config.in" + source "package/perl-netaddr-ip/Config.in" + source "package/perl-number-bytes-human/Config.in" + source "package/perl-package-stash/Config.in" + source "package/perl-params-util/Config.in" + source "package/perl-path-tiny/Config.in" + source "package/perl-plack/Config.in" + source "package/perl-posix-strftime-compiler/Config.in" + source "package/perl-role-tiny/Config.in" + source "package/perl-stream-buffered/Config.in" + source "package/perl-sub-exporter-progressive/Config.in" + source "package/perl-sub-install/Config.in" + source "package/perl-sub-quote/Config.in" + source "package/perl-sys-cpu/Config.in" + source "package/perl-sys-meminfo/Config.in" + source "package/perl-sys-mmap/Config.in" + source "package/perl-time-parsedate/Config.in" + source "package/perl-timedate/Config.in" + source "package/perl-try-tiny/Config.in" + source "package/perl-type-tiny/Config.in" + source "package/perl-uri/Config.in" + source "package/perl-www-form-urlencoded/Config.in" + source "package/perl-www-robotrules/Config.in" + source "package/perl-x10/Config.in" + source "package/perl-xml-libxml/Config.in" + source "package/perl-xml-namespacesupport/Config.in" + source "package/perl-xml-sax/Config.in" + source "package/perl-xml-sax-base/Config.in" +endmenu +endif + source "package/php/Config.in" +if BR2_PACKAGE_PHP +if !BR2_STATIC_LIBS +menu "External php extensions" + source "package/php-amqp/Config.in" + source "package/php-geoip/Config.in" + source "package/php-gnupg/Config.in" + source "package/php-imagick/Config.in" + source "package/php-memcached/Config.in" + source "package/php-ssh2/Config.in" + source "package/php-yaml/Config.in" + source "package/php-zmq/Config.in" +endmenu +endif +if BR2_STATIC_LIBS +comment "External PHP extensions need a toolchain w/ dynamic library" +endif +endif + source "package/python/Config.in" + source "package/python3/Config.in" +if BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 +menu "External python modules" + source "package/python-aioblescan/Config.in" + source "package/python-aiocoap/Config.in" + source "package/python-aioconsole/Config.in" + source "package/python-aiodns/Config.in" + source "package/python-aiohttp/Config.in" + source "package/python-aiohttp-cors/Config.in" + source "package/python-aiohttp-jinja2/Config.in" + source "package/python-aiohttp-remotes/Config.in" + source "package/python-aiohttp-security/Config.in" + source "package/python-aiohttp-session/Config.in" + source "package/python-aiohttp-sse/Config.in" + source "package/python-aiojobs/Config.in" + source "package/python-aiomonitor/Config.in" + source "package/python-aiorwlock/Config.in" + source "package/python-alsaaudio/Config.in" + source "package/python-argh/Config.in" + source "package/python-arrow/Config.in" + source "package/python-asn1crypto/Config.in" + source "package/python-async-timeout/Config.in" + source "package/python-attrs/Config.in" + source "package/python-autobahn/Config.in" + source "package/python-automat/Config.in" + source "package/python-babel/Config.in" + source "package/python-backcall/Config.in" + source "package/python-backports-abc/Config.in" + source "package/python-backports-shutil-get-terminal-size/Config.in" + source "package/python-backports-ssl-match-hostname/Config.in" + source "package/python-bcrypt/Config.in" + source "package/python-beautifulsoup4/Config.in" + source "package/python-bitstring/Config.in" + source "package/python-bottle/Config.in" + source "package/python-cached-property/Config.in" + source "package/python-can/Config.in" + source "package/python-cbor/Config.in" + source "package/python-cchardet/Config.in" + source "package/python-certifi/Config.in" + source "package/python-cffi/Config.in" + source "package/python-characteristic/Config.in" + source "package/python-chardet/Config.in" + source "package/python-cheetah/Config.in" + source "package/python-cheroot/Config.in" + source "package/python-cherrypy/Config.in" + source "package/python-click/Config.in" + source "package/python-coherence/Config.in" + source "package/python-colorama/Config.in" + source "package/python-configobj/Config.in" + source "package/python-configshell-fb/Config.in" + source "package/python-constantly/Config.in" + source "package/python-couchdb/Config.in" + source "package/python-crc16/Config.in" + source "package/python-crcmod/Config.in" + source "package/python-crossbar/Config.in" + source "package/python-cryptography/Config.in" + source "package/python-cssselect/Config.in" + source "package/python-cssutils/Config.in" + source "package/python-cycler/Config.in" + source "package/python-daemon/Config.in" + source "package/python-daemonize/Config.in" + source "package/python-dataproperty/Config.in" + source "package/python-dateutil/Config.in" + source "package/python-decorator/Config.in" + source "package/python-dialog/Config.in" + source "package/python-dialog3/Config.in" + source "package/python-dicttoxml/Config.in" + source "package/python-django/Config.in" + source "package/python-docker/Config.in" + source "package/python-docker-pycreds/Config.in" + source "package/python-dockerpty/Config.in" + source "package/python-docopt/Config.in" + source "package/python-docutils/Config.in" + source "package/python-dominate/Config.in" + source "package/python-dpkt/Config.in" + source "package/python-ecdsa/Config.in" + source "package/python-engineio/Config.in" + source "package/python-enum/Config.in" + source "package/python-enum34/Config.in" + source "package/python-falcon/Config.in" + source "package/python-fire/Config.in" + source "package/python-flask/Config.in" + source "package/python-flask-babel/Config.in" + source "package/python-flask-cors/Config.in" + source "package/python-flask-jsonrpc/Config.in" + source "package/python-flask-login/Config.in" + source "package/python-flask-sqlalchemy/Config.in" + source "package/python-flup/Config.in" + source "package/python-functools32/Config.in" + source "package/python-futures/Config.in" + source "package/python-gobject/Config.in" + source "package/python-gunicorn/Config.in" + source "package/python-h2/Config.in" + source "package/python-hpack/Config.in" + source "package/python-html5lib/Config.in" + source "package/python-httplib2/Config.in" + source "package/python-humanize/Config.in" + source "package/python-hyperframe/Config.in" + source "package/python-hyperlink/Config.in" + source "package/python-ibmiotf/Config.in" + source "package/python-id3/Config.in" + source "package/python-idna/Config.in" + source "package/python-incremental/Config.in" + source "package/python-inflection/Config.in" + source "package/python-influxdb/Config.in" + source "package/python-iniparse/Config.in" + source "package/python-iowait/Config.in" + source "package/python-ipaddr/Config.in" + source "package/python-ipaddress/Config.in" + source "package/python-iptables/Config.in" + source "package/python-ipy/Config.in" + source "package/python-ipython/Config.in" + source "package/python-ipython-genutils/Config.in" + source "package/python-iso8601/Config.in" + source "package/python-itsdangerous/Config.in" + source "package/python-jaraco-classes/Config.in" + source "package/python-jedi/Config.in" + source "package/python-jinja2/Config.in" + source "package/python-json-schema-validator/Config.in" + source "package/python-jsonmodels/Config.in" + source "package/python-jsonschema/Config.in" + source "package/python-keyring/Config.in" + source "package/python-libconfig/Config.in" + source "package/python-libusb1/Config.in" + source "package/python-lmdb/Config.in" + source "package/python-logbook/Config.in" + source "package/python-lxml/Config.in" + source "package/python-m2r/Config.in" + source "package/python-mad/Config.in" + source "package/python-mako/Config.in" + source "package/python-markdown/Config.in" + source "package/python-markdown2/Config.in" + source "package/python-markupsafe/Config.in" + source "package/python-matplotlib/Config.in" + source "package/python-mbstrdecoder/Config.in" + source "package/python-meld3/Config.in" + source "package/python-mimeparse/Config.in" + source "package/python-mistune/Config.in" + source "package/python-more-itertools/Config.in" + source "package/python-msgpack/Config.in" + source "package/python-multidict/Config.in" + source "package/python-mutagen/Config.in" + source "package/python-mwclient/Config.in" + source "package/python-mwscrape/Config.in" + source "package/python-mwscrape2slob/Config.in" + source "package/python-netaddr/Config.in" + source "package/python-netifaces/Config.in" + source "package/python-networkmanager/Config.in" + source "package/python-networkx/Config.in" + source "package/python-nfc/Config.in" + source "package/python-numpy/Config.in" + source "package/python-oauthlib/Config.in" + source "package/python-paho-mqtt/Config.in" + source "package/python-pam/Config.in" + source "package/python-paramiko/Config.in" + source "package/python-parso/Config.in" + source "package/python-passlib/Config.in" + source "package/python-pathlib2/Config.in" + source "package/python-patch/Config.in" + source "package/python-pathpy/Config.in" + source "package/python-pathtools/Config.in" + source "package/python-pathvalidate/Config.in" + source "package/python-periphery/Config.in" + source "package/python-pexpect/Config.in" + source "package/python-pickleshare/Config.in" + source "package/python-pigpio/Config.in" + source "package/python-pillow/Config.in" + source "package/python-pip/Config.in" + source "package/python-pluginbase/Config.in" + source "package/python-ply/Config.in" + source "package/python-portend/Config.in" + source "package/python-posix-ipc/Config.in" + source "package/python-priority/Config.in" + source "package/python-prompt-toolkit/Config.in" + source "package/python-protobuf/Config.in" + source "package/python-psutil/Config.in" + source "package/python-psycopg2/Config.in" + source "package/python-ptyprocess/Config.in" + source "package/python-pudb/Config.in" + source "package/python-py/Config.in" + source "package/python-pyasn/Config.in" + source "package/python-pyasn-modules/Config.in" + source "package/python-pyasn1/Config.in" + source "package/python-pyasn1-modules/Config.in" + source "package/python-pycairo/Config.in" + source "package/python-pycares/Config.in" + source "package/python-pycli/Config.in" + source "package/python-pycparser/Config.in" + source "package/python-pycrypto/Config.in" + source "package/python-pycryptodomex/Config.in" + source "package/python-pydal/Config.in" + source "package/python-pyelftools/Config.in" + source "package/python-pyftpdlib/Config.in" + source "package/python-pygame/Config.in" + source "package/python-pygments/Config.in" + source "package/python-pyhamcrest/Config.in" + source "package/python-pyicu/Config.in" + source "package/python-pyinotify/Config.in" + source "package/python-pyjwt/Config.in" + source "package/python-pylibftdi/Config.in" + source "package/python-pylru/Config.in" + source "package/python-pymodbus/Config.in" + source "package/python-pymysql/Config.in" + source "package/python-pynacl/Config.in" + source "package/python-pyopenssl/Config.in" + source "package/python-pyparsing/Config.in" + source "package/python-pyparted/Config.in" + source "package/python-pypcap/Config.in" + source "package/python-pyqrcode/Config.in" + source "package/python-pyqt5/Config.in" + source "package/python-pyratemp/Config.in" + source "package/python-pyro/Config.in" + source "package/python-pyroute2/Config.in" + source "package/python-pysendfile/Config.in" + source "package/python-pysmb/Config.in" + source "package/python-pysmi/Config.in" + source "package/python-pysnmp/Config.in" + source "package/python-pysnmp-apps/Config.in" + source "package/python-pysnmp-mibs/Config.in" + source "package/python-pysocks/Config.in" + source "package/python-pytablereader/Config.in" + source "package/python-pytablewriter/Config.in" + source "package/python-pytrie/Config.in" + source "package/python-pytz/Config.in" + source "package/python-pyudev/Config.in" + source "package/python-pyusb/Config.in" + source "package/python-pyxb/Config.in" + source "package/python-pyyaml/Config.in" + source "package/python-pyzmq/Config.in" + source "package/python-raven/Config.in" + source "package/python-reentry/Config.in" + source "package/python-remi/Config.in" + source "package/python-request-id/Config.in" + source "package/python-requests/Config.in" + source "package/python-requests-oauthlib/Config.in" + source "package/python-requests-toolbelt/Config.in" + source "package/python-rpi-gpio/Config.in" + source "package/python-rtslib-fb/Config.in" + source "package/python-scandir/Config.in" + source "package/python-scapy/Config.in" + source "package/python-scapy3k/Config.in" + source "package/python-schedule/Config.in" + source "package/python-sdnotify/Config.in" + source "package/python-secretstorage/Config.in" + source "package/python-see/Config.in" + source "package/python-semver/Config.in" + source "package/python-sentry-sdk/Config.in" + source "package/python-serial/Config.in" + source "package/python-serial-asyncio/Config.in" + source "package/python-service-identity/Config.in" + source "package/python-setproctitle/Config.in" + source "package/python-setuptools/Config.in" + source "package/python-sh/Config.in" + source "package/python-shutilwhich/Config.in" + source "package/python-simpleaudio/Config.in" + source "package/python-simplegeneric/Config.in" + source "package/python-simplejson/Config.in" + source "package/python-simplesqlite/Config.in" + source "package/python-singledispatch/Config.in" + source "package/python-sip/Config.in" + source "package/python-six/Config.in" + source "package/python-slob/Config.in" + source "package/python-smbus-cffi/Config.in" + source "package/python-socketio/Config.in" + source "package/python-sortedcontainers//Config.in" + source "package/python-spidev/Config.in" + source "package/python-sqlalchemy/Config.in" + source "package/python-subprocess32/Config.in" + source "package/python-systemd/Config.in" + source "package/python-tabledata/Config.in" + source "package/python-tempora/Config.in" + source "package/python-termcolor/Config.in" + source "package/python-terminaltables/Config.in" + source "package/python-texttable/Config.in" + source "package/python-thrift/Config.in" + source "package/python-tinyrpc/Config.in" + source "package/python-tomako/Config.in" + source "package/python-toml/Config.in" + source "package/python-tornado/Config.in" + source "package/python-traitlets/Config.in" + source "package/python-treq/Config.in" + source "package/python-twisted/Config.in" + source "package/python-txaio/Config.in" + source "package/python-txdbus/Config.in" + source "package/python-txtorcon/Config.in" + source "package/python-typepy/Config.in" + source "package/python-typing/Config.in" + source "package/python-u-msgpack/Config.in" + source "package/python-ubjson/Config.in" + source "package/python-ujson/Config.in" + source "package/python-urllib3/Config.in" + source "package/python-urwid/Config.in" + source "package/python-uvloop/Config.in" + source "package/python-validators/Config.in" + source "package/python-versiontools/Config.in" + source "package/python-visitor/Config.in" + source "package/python-watchdog/Config.in" + source "package/python-wcwidth/Config.in" + source "package/python-web2py/Config.in" + source "package/python-webob/Config.in" + source "package/python-webpy/Config.in" + source "package/python-websocket-client/Config.in" + source "package/python-websockets/Config.in" + source "package/python-werkzeug/Config.in" + source "package/python-whoosh/Config.in" + source "package/python-wrapt/Config.in" + source "package/python-ws4py/Config.in" + source "package/python-wsaccel/Config.in" + source "package/python-wtforms/Config.in" + source "package/python-xlib/Config.in" + source "package/python-xlrd/Config.in" + source "package/python-xlsxwriter/Config.in" + source "package/python-xlutils/Config.in" + source "package/python-xlwt/Config.in" + source "package/python-xmltodict/Config.in" + source "package/python-yarl/Config.in" + source "package/python-yieldfrom/Config.in" + source "package/python-zeroconf/Config.in" + source "package/python-zope-interface/Config.in" +endmenu +endif + source "package/ruby/Config.in" + source "package/tcl/Config.in" +if BR2_PACKAGE_TCL +menu "Tcl libraries/modules" + source "package/expect/Config.in" + source "package/tcllib/Config.in" +endmenu +endif +endmenu + +menu "Libraries" + +menu "Audio/Sound" + source "package/alsa-lib/Config.in" + source "package/aubio/Config.in" + source "package/audiofile/Config.in" + source "package/bcg729/Config.in" + source "package/celt051/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" + source "package/libcdio/Config.in" + source "package/libcdio-paranoia/Config.in" + source "package/libcodec2/Config.in" + source "package/libcue/Config.in" + source "package/libcuefile/Config.in" + source "package/libebur128/Config.in" + source "package/libg7221/Config.in" + source "package/libgsm/Config.in" + source "package/libid3tag/Config.in" + source "package/libilbc/Config.in" + source "package/liblo/Config.in" + source "package/libmad/Config.in" + source "package/libmodplug/Config.in" + source "package/libmpd/Config.in" + source "package/libmpdclient/Config.in" + source "package/libreplaygain/Config.in" + source "package/libsamplerate/Config.in" + source "package/libsidplay2/Config.in" + source "package/libsilk/Config.in" + source "package/libsndfile/Config.in" + source "package/libsoundtouch/Config.in" + source "package/libsoxr/Config.in" + source "package/libvorbis/Config.in" + source "package/mp4v2/Config.in" + source "package/openal/Config.in" + source "package/opencore-amr/Config.in" + source "package/opus/Config.in" + source "package/opusfile/Config.in" + source "package/portaudio/Config.in" + source "package/sbc/Config.in" + source "package/spandsp/Config.in" + source "package/speex/Config.in" + source "package/speexdsp/Config.in" + source "package/taglib/Config.in" + source "package/tinyalsa/Config.in" + source "package/tremor/Config.in" + source "package/vo-aacenc/Config.in" + source "package/webrtc-audio-processing/Config.in" +endmenu + +menu "Compression and decompression" + source "package/libarchive/Config.in" + source "package/libsquish/Config.in" + source "package/libzip/Config.in" + source "package/lzo/Config.in" + source "package/minizip/Config.in" + source "package/snappy/Config.in" + source "package/szip/Config.in" + source "package/zlib/Config.in" + source "package/zziplib/Config.in" +endmenu + +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/gcr/Config.in" + source "package/gnutls/Config.in" + source "package/libassuan/Config.in" + source "package/libgcrypt/Config.in" + source "package/libgpg-error/Config.in" + source "package/libgpgme/Config.in" + source "package/libkcapi/Config.in" + source "package/libksba/Config.in" + source "package/libmcrypt/Config.in" + source "package/libmhash/Config.in" + source "package/libnss/Config.in" + source "package/libp11/Config.in" + source "package/libscrypt/Config.in" + source "package/libsecret/Config.in" + source "package/libsha1/Config.in" + source "package/libsodium/Config.in" + source "package/libssh/Config.in" + source "package/libssh2/Config.in" + source "package/libtomcrypt/Config.in" + source "package/libuecc/Config.in" + source "package/mbedtls/Config.in" + source "package/nettle/Config.in" + source "package/openssl/Config.in" + source "package/rhash/Config.in" + source "package/tinydtls/Config.in" + source "package/tpm2-tss/Config.in" + source "package/trousers/Config.in" + source "package/ustream-ssl/Config.in" + source "package/wolfssl/Config.in" +endmenu + +menu "Database" + source "package/berkeleydb/Config.in" + source "package/cppdb/Config.in" + source "package/gdbm/Config.in" + source "package/hiredis/Config.in" + source "package/kompexsqlite/Config.in" + source "package/leveldb/Config.in" + source "package/libgit2/Config.in" + source "package/libpqxx/Config.in" + source "package/mongodb/Config.in" + source "package/mysql/Config.in" + source "package/postgresql/Config.in" + source "package/redis/Config.in" + source "package/sqlcipher/Config.in" + source "package/sqlite/Config.in" + source "package/unixodbc/Config.in" +endmenu + +menu "Filesystem" + source "package/gamin/Config.in" + source "package/libconfig/Config.in" + source "package/libconfuse/Config.in" + source "package/libfuse/Config.in" + source "package/liblockfile/Config.in" + source "package/libnfs/Config.in" + source "package/libsysfs/Config.in" + source "package/lockdev/Config.in" + source "package/physfs/Config.in" +endmenu + +menu "Graphics" + source "package/assimp/Config.in" + source "package/at-spi2-atk/Config.in" + source "package/at-spi2-core/Config.in" + source "package/atk/Config.in" + source "package/atkmm/Config.in" + source "package/bayer2rgb-neon/Config.in" + source "package/bullet/Config.in" + source "package/cairo/Config.in" + source "package/cairomm/Config.in" + source "package/chipmunk/Config.in" + source "package/exempi/Config.in" + source "package/exiv2/Config.in" + source "package/fltk/Config.in" + source "package/fontconfig/Config.in" + source "package/freetype/Config.in" + source "package/gd/Config.in" + source "package/gdk-pixbuf/Config.in" + source "package/giblib/Config.in" + source "package/giflib/Config.in" + source "package/granite/Config.in" + source "package/graphite2/Config.in" + source "package/gtkmm3/Config.in" + source "package/gtksourceview/Config.in" + source "package/harfbuzz/Config.in" + source "package/ijs/Config.in" + source "package/imlib2/Config.in" + source "package/intel-gmmlib/Config.in" + source "package/intel-mediadriver/Config.in" + source "package/intel-mediasdk/Config.in" + source "package/irrlicht/Config.in" + source "package/jasper/Config.in" + source "package/jpeg/Config.in" + source "package/kmsxx/Config.in" + source "package/lcms2/Config.in" + source "package/lensfun/Config.in" + source "package/leptonica/Config.in" + source "package/lesstif/Config.in" + source "package/libart/Config.in" + source "package/libdmtx/Config.in" + source "package/libdri2/Config.in" + source "package/libdrm/Config.in" + source "package/libepoxy/Config.in" + source "package/libexif/Config.in" + source "package/libfm/Config.in" + source "package/libfm-extra/Config.in" + source "package/libfreeglut/Config.in" + source "package/libfreeimage/Config.in" + source "package/libgdiplus/Config.in" + source "package/libgeotiff/Config.in" + source "package/libglade/Config.in" + source "package/libglew/Config.in" + source "package/libglfw/Config.in" + source "package/libglu/Config.in" + source "package/libgta/Config.in" + source "package/libgtk2/Config.in" + source "package/libgtk3/Config.in" + source "package/libmediaart/Config.in" + source "package/libmng/Config.in" + source "package/libpng/Config.in" + source "package/libqrencode/Config.in" + source "package/libraw/Config.in" + source "package/librsvg/Config.in" + source "package/libsoil/Config.in" + source "package/libsvg/Config.in" + source "package/libsvg-cairo/Config.in" + source "package/libsvgtiny/Config.in" + source "package/libva/Config.in" + source "package/libva-intel-driver/Config.in" + source "package/libvdpau/Config.in" + source "package/libvips/Config.in" + source "package/libwpe/Config.in" + source "package/menu-cache/Config.in" + source "package/opencv/Config.in" + source "package/opencv3/Config.in" + source "package/opengl/Config.in" + source "package/openjpeg/Config.in" + source "package/pango/Config.in" + source "package/pangomm/Config.in" + source "package/pixman/Config.in" + source "package/poppler/Config.in" + source "package/powervr/Config.in" + source "package/tiff/Config.in" + source "package/waffle/Config.in" + source "package/wayland/Config.in" + source "package/wayland-protocols/Config.in" + source "package/waylandpp/Config.in" + source "package/webkitgtk/Config.in" + source "package/webp/Config.in" + source "package/woff2/Config.in" + source "package/wpebackend-fdo/Config.in" + source "package/wpewebkit/Config.in" + source "package/zbar/Config.in" + source "package/zxing-cpp/Config.in" +endmenu + +menu "Hardware handling" + source "package/acsccid/Config.in" + source "package/bcm2835/Config.in" + source "package/c-periphery/Config.in" + source "package/ccid/Config.in" + source "package/dtc/Config.in" + source "package/gnu-efi/Config.in" + source "package/hackrf/Config.in" + source "package/hidapi/Config.in" + source "package/lcdapi/Config.in" + source "package/let-me-create/Config.in" + source "package/libaio/Config.in" + source "package/libatasmart/Config.in" + source "package/libcec/Config.in" + source "package/libfreefare/Config.in" + source "package/libftdi/Config.in" + source "package/libftdi1/Config.in" + source "package/libgphoto2/Config.in" + source "package/libgpiod/Config.in" + source "package/libgudev/Config.in" + source "package/libhid/Config.in" + source "package/libiio/Config.in" + source "package/libinput/Config.in" + source "package/libiqrf/Config.in" + source "package/libllcp/Config.in" + source "package/libmbim/Config.in" + source "package/libnfc/Config.in" + source "package/libpciaccess/Config.in" + source "package/libphidget/Config.in" + source "package/libpri/Config.in" + source "package/libqmi/Config.in" + source "package/libraw1394/Config.in" + source "package/librtas/Config.in" + source "package/librtlsdr/Config.in" + source "package/libserial/Config.in" + source "package/libserialport/Config.in" + source "package/libsigrok/Config.in" + source "package/libsigrokdecode/Config.in" + source "package/libsoc/Config.in" + source "package/libss7/Config.in" + source "package/libusb/Config.in" + source "package/libusb-compat/Config.in" + source "package/libusbgx/Config.in" + source "package/libv4l/Config.in" + source "package/libxkbcommon/Config.in" + source "package/mraa/Config.in" + source "package/mtdev/Config.in" + source "package/ne10/Config.in" + source "package/neardal/Config.in" + source "package/owfs/Config.in" + source "package/pcsc-lite/Config.in" + source "package/tslib/Config.in" + source "package/urg/Config.in" + source "package/wiringpi/Config.in" +endmenu + +menu "Javascript" + source "package/angularjs/Config.in" +if BR2_PACKAGE_ANGULARJS +menu "External AngularJS plugins" + source "package/angular-websocket/Config.in" +endmenu +endif + source "package/bootstrap/Config.in" + source "package/duktape/Config.in" + source "package/explorercanvas/Config.in" + source "package/flot/Config.in" + source "package/jquery/Config.in" +if BR2_PACKAGE_JQUERY +menu "External jQuery plugins" + source "package/jquery-datetimepicker/Config.in" + source "package/jquery-keyboard/Config.in" + source "package/jquery-mobile/Config.in" + source "package/jquery-sidebar/Config.in" + source "package/jquery-sparkline/Config.in" + source "package/jquery-ui/Config.in" + source "package/jquery-ui-themes/Config.in" + source "package/jquery-validation/Config.in" +endmenu +endif + source "package/jsmin/Config.in" + source "package/json-javascript/Config.in" +endmenu + +menu "JSON/XML" + source "package/benejson/Config.in" + source "package/cjson/Config.in" + source "package/expat/Config.in" + source "package/ezxml/Config.in" + source "package/jansson/Config.in" + source "package/jose/Config.in" + source "package/jsmn/Config.in" + source "package/json-c/Config.in" + source "package/json-for-modern-cpp/Config.in" + source "package/json-glib/Config.in" + source "package/jsoncpp/Config.in" + source "package/libbson/Config.in" + source "package/libfastjson/Config.in" + source "package/libjson/Config.in" + source "package/libroxml/Config.in" + source "package/libucl/Config.in" + source "package/libxml2/Config.in" + source "package/libxmlpp/Config.in" + source "package/libxmlrpc/Config.in" + source "package/libxslt/Config.in" + source "package/libyaml/Config.in" + source "package/mxml/Config.in" + source "package/pugixml/Config.in" + source "package/rapidjson/Config.in" + source "package/rapidxml/Config.in" + source "package/raptor/Config.in" + source "package/tinyxml/Config.in" + source "package/tinyxml2/Config.in" + source "package/valijson/Config.in" + source "package/xerces/Config.in" + source "package/yajl/Config.in" + source "package/yaml-cpp/Config.in" +endmenu + +menu "Logging" + source "package/eventlog/Config.in" + source "package/glog/Config.in" + source "package/liblog4c-localtime/Config.in" + source "package/liblogging/Config.in" + source "package/log4cplus/Config.in" + source "package/log4cpp/Config.in" + source "package/log4cxx/Config.in" + source "package/opentracing-cpp/Config.in" + source "package/zlog/Config.in" +endmenu + +menu "Multimedia" + source "package/bitstream/Config.in" + source "package/kvazaar/Config.in" + source "package/libaacs/Config.in" + source "package/libamcodec/Config.in" + source "package/libass/Config.in" + source "package/libbdplus/Config.in" + source "package/libbluray/Config.in" + source "package/libcamera/Config.in" + source "package/libdcadec/Config.in" + source "package/libdvbcsa/Config.in" + source "package/libdvbpsi/Config.in" + source "package/libdvbsi/Config.in" + source "package/libdvdcss/Config.in" + source "package/libdvdnav/Config.in" + source "package/libdvdread/Config.in" + source "package/libebml/Config.in" + source "package/libhdhomerun/Config.in" + source "package/libimxvpuapi/Config.in" + source "package/libmatroska/Config.in" + source "package/libmms/Config.in" + source "package/libmpeg2/Config.in" + source "package/libogg/Config.in" + source "package/libopenh264/Config.in" + source "package/libopusenc/Config.in" + source "package/libplayer/Config.in" + source "package/libtheora/Config.in" + source "package/libvpx/Config.in" + source "package/libyuv/Config.in" + source "package/live555/Config.in" + source "package/mediastreamer/Config.in" + source "package/x264/Config.in" + source "package/x265/Config.in" +endmenu + +menu "Networking" + source "package/agentpp/Config.in" + source "package/alljoyn/Config.in" + source "package/alljoyn-base/Config.in" + source "package/alljoyn-tcl/Config.in" + source "package/alljoyn-tcl-base/Config.in" + source "package/azmq/Config.in" + source "package/azure-iot-sdk-c/Config.in" + source "package/batman-adv/Config.in" + source "package/bluez5_utils-headers/Config.in" + source "package/c-ares/Config.in" + source "package/canfestival/Config.in" + source "package/cgic/Config.in" + source "package/cppzmq/Config.in" + source "package/curlpp/Config.in" + source "package/czmq/Config.in" + source "package/daq/Config.in" + source "package/davici/Config.in" + source "package/enet/Config.in" + source "package/filemq/Config.in" + source "package/flickcurl/Config.in" + source "package/fmlib/Config.in" + source "package/freeradius-client/Config.in" + source "package/geoip/Config.in" + source "package/glib-networking/Config.in" + source "package/grpc/Config.in" + source "package/gssdp/Config.in" + source "package/gupnp/Config.in" + source "package/gupnp-av/Config.in" + source "package/gupnp-dlna/Config.in" + source "package/ibrcommon/Config.in" + source "package/ibrdtn/Config.in" + source "package/libcgi/Config.in" + source "package/libcgicc/Config.in" + source "package/libcoap/Config.in" + source "package/libcpprestsdk/Config.in" + source "package/libcurl/Config.in" + source "package/libdnet/Config.in" + source "package/libeXosip2/Config.in" + source "package/libfcgi/Config.in" + source "package/libgsasl/Config.in" + source "package/libhtp/Config.in" + source "package/libhttpparser/Config.in" + source "package/libidn/Config.in" + source "package/libidn2/Config.in" + source "package/libiscsi/Config.in" + source "package/libkrb5/Config.in" + source "package/libldns/Config.in" + source "package/libmaxminddb/Config.in" + source "package/libmbus/Config.in" + source "package/libmemcached/Config.in" + source "package/libmicrohttpd/Config.in" + source "package/libminiupnpc/Config.in" + source "package/libmnl/Config.in" + source "package/libmodbus/Config.in" + source "package/libnatpmp/Config.in" + source "package/libndp/Config.in" + source "package/libnet/Config.in" + source "package/libnetfilter_acct/Config.in" + source "package/libnetfilter_conntrack/Config.in" + source "package/libnetfilter_cthelper/Config.in" + source "package/libnetfilter_cttimeout/Config.in" + source "package/libnetfilter_log/Config.in" + source "package/libnetfilter_queue/Config.in" + source "package/libnfnetlink/Config.in" + source "package/libnftnl/Config.in" + source "package/libnice/Config.in" + source "package/libnl/Config.in" + source "package/liboauth/Config.in" + source "package/liboping/Config.in" + source "package/libosip2/Config.in" + source "package/libpagekite/Config.in" + source "package/libpcap/Config.in" + source "package/libpjsip/Config.in" + source "package/librsync/Config.in" + source "package/libshairplay/Config.in" + source "package/libshout/Config.in" + source "package/libsocketcan/Config.in" + source "package/libsoup/Config.in" + source "package/libsrtp/Config.in" + source "package/libstrophe/Config.in" + source "package/libtirpc/Config.in" + source "package/libtorrent/Config.in" + source "package/libtorrent-rasterbar/Config.in" + source "package/libupnp/Config.in" + source "package/libupnp18/Config.in" + source "package/libupnpp/Config.in" + source "package/liburiparser/Config.in" + source "package/libvncserver/Config.in" + source "package/libwebsock/Config.in" + source "package/libwebsockets/Config.in" + source "package/lksctp-tools/Config.in" + source "package/mongoose/Config.in" + source "package/nanomsg/Config.in" + source "package/neon/Config.in" + source "package/nghttp2/Config.in" + source "package/norm/Config.in" + source "package/nss-mdns/Config.in" + source "package/nss-myhostname/Config.in" + source "package/nss-pam-ldapd/Config.in" + source "package/omniorb/Config.in" + source "package/openldap/Config.in" + source "package/openmpi/Config.in" + source "package/openpgm/Config.in" + source "package/openzwave/Config.in" + source "package/ortp/Config.in" + source "package/paho-mqtt-c/Config.in" + source "package/paho-mqtt-cpp/Config.in" + source "package/qdecoder/Config.in" + source "package/qpid-proton/Config.in" + source "package/rabbitmq-c/Config.in" + source "package/rtmpdump/Config.in" + source "package/slirp/Config.in" + source "package/snmppp/Config.in" + source "package/sofia-sip/Config.in" + source "package/thrift/Config.in" + source "package/usbredir/Config.in" + source "package/wampcc/Config.in" + source "package/websocketpp/Config.in" + source "package/zeromq/Config.in" + source "package/zmqpp/Config.in" + source "package/zyre/Config.in" +endmenu + +menu "Other" + source "package/apr/Config.in" + source "package/apr-util/Config.in" + source "package/argp-standalone/Config.in" + source "package/armadillo/Config.in" + source "package/atf/Config.in" + source "package/bctoolbox/Config.in" + source "package/bdwgc/Config.in" + source "package/boost/Config.in" + source "package/c-capnproto/Config.in" + source "package/capnproto/Config.in" + source "package/clang/Config.in" + source "package/clapack/Config.in" + source "package/classpath/Config.in" + source "package/cmocka/Config.in" + source "package/cppcms/Config.in" + source "package/cracklib/Config.in" + source "package/dawgdic/Config.in" + source "package/ding-libs/Config.in" + source "package/eigen/Config.in" + source "package/elfutils/Config.in" + source "package/ell/Config.in" + source "package/fftw/Config.in" + source "package/flann/Config.in" + source "package/flatbuffers/Config.in" + source "package/flatcc/Config.in" + source "package/gconf/Config.in" + source "package/gflags/Config.in" + source "package/gli/Config.in" + source "package/glibmm/Config.in" + source "package/glm/Config.in" + source "package/gmp/Config.in" + source "package/gsl/Config.in" + source "package/gtest/Config.in" + source "package/jemalloc/Config.in" + source "package/lapack/Config.in" + source "package/libargtable2/Config.in" + source "package/libatomic_ops/Config.in" + source "package/libb64/Config.in" + source "package/libbsd/Config.in" + source "package/libcap/Config.in" + source "package/libcap-ng/Config.in" + source "package/libcgroup/Config.in" + source "package/libclc/Config.in" + source "package/libcofi/Config.in" + source "package/libcorrect/Config.in" + source "package/libcroco/Config.in" + source "package/libcrossguid/Config.in" + source "package/libcsv/Config.in" + source "package/libdaemon/Config.in" + source "package/libeastl/Config.in" + source "package/libee/Config.in" + source "package/libev/Config.in" + source "package/libevdev/Config.in" + source "package/libevent/Config.in" + source "package/libffi/Config.in" + source "package/libgee/Config.in" + source "package/libglib2/Config.in" + source "package/libglob/Config.in" + source "package/libical/Config.in" + source "package/libite/Config.in" + source "package/liblinear/Config.in" + source "package/libloki/Config.in" + source "package/libnpth/Config.in" + source "package/libnspr/Config.in" + source "package/libpfm4/Config.in" + source "package/libplatform/Config.in" + source "package/libplist/Config.in" + source "package/libpthread-stubs/Config.in" + source "package/libpthsem/Config.in" + source "package/libpwquality/Config.in" + source "package/libseccomp/Config.in" + source "package/libsigc/Config.in" + source "package/libsigsegv/Config.in" + source "package/libspatialindex/Config.in" + source "package/libtasn1/Config.in" + source "package/libtommath/Config.in" + source "package/libtpl/Config.in" + source "package/libubox/Config.in" + source "package/libuci/Config.in" + source "package/libunwind/Config.in" + source "package/liburcu/Config.in" + source "package/libuv/Config.in" + source "package/lightning/Config.in" + source "package/linux-pam/Config.in" +if BR2_PACKAGE_LINUX_PAM +comment "linux-pam plugins" + source "package/libpam-radius-auth/Config.in" + source "package/libpam-tacplus/Config.in" +endif + source "package/liquid-dsp/Config.in" + source "package/llvm/Config.in" + source "package/lttng-libust/Config.in" + source "package/mpc/Config.in" + source "package/mpdecimal/Config.in" + source "package/mpfr/Config.in" + source "package/mpir/Config.in" + source "package/msgpack/Config.in" + source "package/mtdev2tuio/Config.in" + source "package/musl-compat-headers/Config.in" + source "package/openblas/Config.in" + source "package/orc/Config.in" + source "package/p11-kit/Config.in" + source "package/poco/Config.in" + source "package/protobuf/Config.in" + source "package/protobuf-c/Config.in" + source "package/qhull/Config.in" + source "package/qlibc/Config.in" + source "package/riemann-c-client/Config.in" + source "package/shapelib/Config.in" + source "package/skalibs/Config.in" + source "package/sphinxbase/Config.in" + source "package/startup-notification/Config.in" + source "package/tinycbor/Config.in" + source "package/tz/Config.in" + source "package/tzdata/Config.in" + source "package/xapian/Config.in" +endmenu + +menu "Security" + source "package/libselinux/Config.in" + source "package/libsemanage/Config.in" + source "package/libsepol/Config.in" + source "package/safeclib/Config.in" +endmenu + +menu "Text and terminal handling" + source "package/augeas/Config.in" + source "package/enchant/Config.in" + source "package/fmt/Config.in" + source "package/icu/Config.in" + source "package/libcli/Config.in" + source "package/libedit/Config.in" + source "package/libenca/Config.in" + source "package/libestr/Config.in" + source "package/libfribidi/Config.in" + source "package/libiconv/Config.in" + source "package/libunistring/Config.in" + source "package/linenoise/Config.in" + source "package/ncurses/Config.in" + source "package/newt/Config.in" + source "package/oniguruma/Config.in" + source "package/pcre/Config.in" + source "package/pcre2/Config.in" + source "package/popt/Config.in" + source "package/readline/Config.in" + source "package/slang/Config.in" + source "package/tclap/Config.in" + source "package/ustr/Config.in" +endmenu + +endmenu + +menu "Mail" + source "package/dovecot/Config.in" + source "package/exim/Config.in" + source "package/fetchmail/Config.in" + source "package/heirloom-mailx/Config.in" + source "package/libesmtp/Config.in" + source "package/msmtp/Config.in" + source "package/mutt/Config.in" + source "package/sylpheed/Config.in" +endmenu + +menu "Miscellaneous" + source "package/aespipe/Config.in" + source "package/bc/Config.in" + source "package/clamav/Config.in" + source "package/collectd/Config.in" + source "package/domoticz/Config.in" + source "package/empty/Config.in" + source "package/gnuradio/Config.in" + source "package/googlefontdirectory/Config.in" + source "package/gqrx/Config.in" + source "package/gr-osmosdr/Config.in" + source "package/gsettings-desktop-schemas/Config.in" + source "package/haveged/Config.in" + source "package/hello-world/Config.in" + source "package/linux-syscall-support/Config.in" + source "package/mcrypt/Config.in" + source "package/mobile-broadband-provider-info/Config.in" + source "package/proj/Config.in" + source "package/qemu/Config.in" + source "package/qpdf/Config.in" + source "package/shared-mime-info/Config.in" + source "package/taskd/Config.in" + source "package/wine/Config.in" + source "package/xutil_util-macros/Config.in" +endmenu + +menu "Networking applications" + source "package/aircrack-ng/Config.in" + source "package/aoetools/Config.in" + source "package/apache/Config.in" + source "package/argus/Config.in" + source "package/arp-scan/Config.in" + source "package/arptables/Config.in" + source "package/asterisk/Config.in" + source "package/atftp/Config.in" + source "package/autossh/Config.in" + source "package/avahi/Config.in" + source "package/axel/Config.in" + source "package/babeld/Config.in" + source "package/bandwidthd/Config.in" + source "package/batctl/Config.in" + source "package/bcusdk/Config.in" + source "package/bind/Config.in" + source "package/bird/Config.in" + source "package/bluez-tools/Config.in" + source "package/bluez_utils/Config.in" + source "package/bluez5_utils/Config.in" + source "package/bmon/Config.in" + source "package/boa/Config.in" + source "package/boinc/Config.in" + source "package/brcm-patchram-plus/Config.in" + source "package/bridge-utils/Config.in" + source "package/bwm-ng/Config.in" + source "package/c-icap/Config.in" + source "package/c-icap-modules/Config.in" + source "package/can-utils/Config.in" + source "package/cannelloni/Config.in" + source "package/chrony/Config.in" + source "package/civetweb/Config.in" + source "package/connman/Config.in" + source "package/connman-gtk/Config.in" + source "package/conntrack-tools/Config.in" + source "package/corkscrew/Config.in" + source "package/crda/Config.in" + source "package/ctorrent/Config.in" + source "package/cups/Config.in" + source "package/cups-filters/Config.in" + source "package/dante/Config.in" + source "package/darkhttpd/Config.in" + source "package/dehydrated/Config.in" + source "package/dhcp/Config.in" + source "package/dhcpcd/Config.in" + source "package/dhcpdump/Config.in" + source "package/dnsmasq/Config.in" + source "package/drbd-utils/Config.in" + source "package/dropbear/Config.in" + source "package/ebtables/Config.in" + source "package/ejabberd/Config.in" + source "package/ethtool/Config.in" + source "package/faifa/Config.in" + source "package/fail2ban/Config.in" + source "package/fastd/Config.in" + source "package/fcgiwrap/Config.in" + source "package/flannel/Config.in" + source "package/fmc/Config.in" + source "package/fping/Config.in" + source "package/freeswitch/Config.in" + source "package/freeswitch-mod-bcg729/Config.in" + source "package/gerbera/Config.in" + source "package/gesftpserver/Config.in" + source "package/glorytun/Config.in" + source "package/gupnp-tools/Config.in" + source "package/gutenprint/Config.in" + source "package/hans/Config.in" + source "package/haproxy/Config.in" + source "package/hiawatha/Config.in" + source "package/hostapd/Config.in" + source "package/hplip/Config.in" + source "package/httping/Config.in" + source "package/i2pd/Config.in" + source "package/ibrdtn-tools/Config.in" + source "package/ibrdtnd/Config.in" + source "package/ifenslave/Config.in" + source "package/ifmetric/Config.in" + source "package/ifplugd/Config.in" + source "package/iftop/Config.in" + source "package/ifupdown/Config.in" + source "package/ifupdown-scripts/Config.in" + source "package/igd2-for-linux/Config.in" + source "package/igh-ethercat/Config.in" + source "package/igmpproxy/Config.in" + source "package/inadyn/Config.in" + source "package/iodine/Config.in" + source "package/iperf/Config.in" + source "package/iperf3/Config.in" + source "package/iproute2/Config.in" + source "package/ipsec-tools/Config.in" + source "package/ipset/Config.in" + source "package/iptables/Config.in" + source "package/iptraf-ng/Config.in" + source "package/iputils/Config.in" + source "package/irssi/Config.in" + source "package/iw/Config.in" + source "package/iwd/Config.in" + source "package/janus-gateway/Config.in" + source "package/keepalived/Config.in" + source "package/kismet/Config.in" + source "package/knock/Config.in" + source "package/leafnode2/Config.in" + source "package/lft/Config.in" + source "package/lftp/Config.in" + source "package/lighttpd/Config.in" + source "package/linknx/Config.in" + source "package/links/Config.in" + source "package/linphone/Config.in" + source "package/linux-zigbee/Config.in" + source "package/linuxptp/Config.in" + source "package/lldpd/Config.in" + source "package/lrzsz/Config.in" + source "package/lynx/Config.in" + source "package/macchanger/Config.in" + source "package/memcached/Config.in" + source "package/mii-diag/Config.in" + source "package/mini-snmpd/Config.in" + source "package/minidlna/Config.in" + source "package/minissdpd/Config.in" + source "package/mjpg-streamer/Config.in" + source "package/modem-manager/Config.in" + source "package/mongrel2/Config.in" + source "package/monkey/Config.in" + source "package/mosh/Config.in" + source "package/mosquitto/Config.in" + source "package/mrouted/Config.in" + source "package/mtr/Config.in" + source "package/nbd/Config.in" + source "package/ncftp/Config.in" + source "package/ndisc6/Config.in" + source "package/net-tools/Config.in" + source "package/netatalk/Config.in" + source "package/netcat/Config.in" + source "package/netcat-openbsd/Config.in" + source "package/netplug/Config.in" + source "package/netsnmp/Config.in" + source "package/netstat-nat/Config.in" + source "package/network-manager/Config.in" + source "package/nfacct/Config.in" + source "package/nftables/Config.in" + source "package/nginx/Config.in" +if BR2_PACKAGE_NGINX +menu "External nginx modules" + source "package/nginx-dav-ext/Config.in" + source "package/nginx-naxsi/Config.in" + source "package/nginx-upload/Config.in" +endmenu +endif + source "package/ngircd/Config.in" + source "package/ngrep/Config.in" + source "package/nload/Config.in" + source "package/nmap/Config.in" + source "package/noip/Config.in" + source "package/ntp/Config.in" + source "package/nuttcp/Config.in" + source "package/odhcp6c/Config.in" + source "package/odhcploc/Config.in" + source "package/olsr/Config.in" + source "package/open-lldp/Config.in" + source "package/open-plc-utils/Config.in" + source "package/openntpd/Config.in" + source "package/openobex/Config.in" + source "package/openresolv/Config.in" + source "package/openssh/Config.in" + source "package/openswan/Config.in" + source "package/openvpn/Config.in" + source "package/p910nd/Config.in" + source "package/phidgetwebservice/Config.in" + source "package/phytool/Config.in" + source "package/pimd/Config.in" + source "package/pixiewps/Config.in" + source "package/pound/Config.in" + source "package/pppd/Config.in" + source "package/pptp-linux/Config.in" + source "package/privoxy/Config.in" + source "package/proftpd/Config.in" + source "package/prosody/Config.in" + source "package/proxychains-ng/Config.in" + source "package/ptpd/Config.in" + source "package/ptpd2/Config.in" + source "package/pure-ftpd/Config.in" + source "package/putty/Config.in" + source "package/quagga/Config.in" + source "package/rabbitmq-server/Config.in" + source "package/radvd/Config.in" + source "package/reaver/Config.in" + source "package/rp-pppoe/Config.in" + source "package/rpcbind/Config.in" + source "package/rsh-redone/Config.in" + source "package/rsync/Config.in" + source "package/rtorrent/Config.in" + source "package/rtptools/Config.in" + source "package/rygel/Config.in" + source "package/s6-dns/Config.in" + source "package/s6-networking/Config.in" + source "package/samba4/Config.in" + source "package/sconeserver/Config.in" + source "package/ser2net/Config.in" + source "package/shadowsocks-libev/Config.in" + source "package/shairport-sync/Config.in" + source "package/shellinabox/Config.in" + source "package/smcroute/Config.in" + source "package/sngrep/Config.in" + source "package/snort/Config.in" + source "package/socat/Config.in" + source "package/socketcand/Config.in" + source "package/softether/Config.in" + source "package/spawn-fcgi/Config.in" + source "package/spice/Config.in" + source "package/spice-protocol/Config.in" + source "package/squid/Config.in" + source "package/sshpass/Config.in" + source "package/sslh/Config.in" + source "package/strongswan/Config.in" + source "package/stunnel/Config.in" + source "package/suricata/Config.in" + source "package/tcpdump/Config.in" + source "package/tcping/Config.in" + source "package/tcpreplay/Config.in" + source "package/tftpd/Config.in" + source "package/thttpd/Config.in" + source "package/tinc/Config.in" + source "package/tinyhttpd/Config.in" + source "package/tor/Config.in" + source "package/traceroute/Config.in" + source "package/transmission/Config.in" + source "package/tunctl/Config.in" + source "package/tvheadend/Config.in" + source "package/udpcast/Config.in" + source "package/uftp/Config.in" + source "package/uhttpd/Config.in" + source "package/ulogd/Config.in" + source "package/ushare/Config.in" + source "package/ussp-push/Config.in" + source "package/vde2/Config.in" + source "package/vdr/Config.in" + source "package/vdr-plugin-vnsiserver/Config.in" + source "package/vnstat/Config.in" + source "package/vpnc/Config.in" + source "package/vsftpd/Config.in" + source "package/vtun/Config.in" + source "package/wavemon/Config.in" + source "package/wget/Config.in" + source "package/whois/Config.in" + source "package/wireguard/Config.in" + source "package/wireless-regdb/Config.in" + source "package/wireless_tools/Config.in" + source "package/wireshark/Config.in" + source "package/wpa_supplicant/Config.in" + source "package/wpan-tools/Config.in" + source "package/xinetd/Config.in" + source "package/xl2tp/Config.in" + source "package/xtables-addons/Config.in" + source "package/znc/Config.in" + +endmenu + +menu "Package managers" +comment "-------------------------------------------------------" +comment "Please note: " +comment "- Buildroot does *not* generate binary packages, " +comment "- Buildroot does *not* install any package database. " +comment "* " +comment "It is up to you to provide those by yourself if you " +comment "want to use any of those package managers. " +comment "* " +comment "See the manual: " +comment "http://buildroot.org/manual.html#faq-no-binary-packages" +comment "-------------------------------------------------------" + source "package/opkg/Config.in" + source "package/rpm/Config.in" +endmenu + +menu "Real-Time" + source "package/rtai/Config.in" + source "package/xenomai/Config.in" +endmenu + +menu "Security" + source "package/checkpolicy/Config.in" + source "package/optee-benchmark/Config.in" + source "package/optee-client/Config.in" + source "package/optee-examples/Config.in" + source "package/optee-test/Config.in" + source "package/paxtest/Config.in" + source "package/policycoreutils/Config.in" + source "package/refpolicy/Config.in" + source "package/restorecond/Config.in" + source "package/selinux-python/Config.in" + source "package/semodule-utils/Config.in" + source "package/setools/Config.in" +endmenu + +menu "Shell and utilities" +comment "Shells" + source "package/bash/Config.in" + source "package/dash/Config.in" + source "package/mksh/Config.in" + source "package/zsh/Config.in" +comment "Utilities" + source "package/at/Config.in" + source "package/bash-completion/Config.in" + source "package/ccrypt/Config.in" + source "package/crudini/Config.in" + source "package/dialog/Config.in" + source "package/dtach/Config.in" + source "package/easy-rsa/Config.in" + source "package/file/Config.in" + source "package/gnupg/Config.in" + source "package/gnupg2/Config.in" + source "package/inotify-tools/Config.in" + source "package/lockfile-progs/Config.in" + source "package/logrotate/Config.in" + source "package/logsurfer/Config.in" + source "package/pdmenu/Config.in" + source "package/pinentry/Config.in" + source "package/ranger/Config.in" + source "package/screen/Config.in" + source "package/sudo/Config.in" + source "package/terminology/Config.in" + source "package/time/Config.in" + source "package/tini/Config.in" + source "package/tmux/Config.in" + source "package/which/Config.in" + source "package/xmlstarlet/Config.in" + source "package/xxhash/Config.in" +endmenu + +menu "System tools" + source "package/acl/Config.in" + source "package/android-tools/Config.in" + source "package/atop/Config.in" + source "package/attr/Config.in" + source "package/audit/Config.in" + source "package/cgroupfs-mount/Config.in" + source "package/circus/Config.in" + source "package/coreutils/Config.in" + source "package/cpuload/Config.in" + source "package/daemon/Config.in" + source "package/dc3dd/Config.in" + source "package/dcron/Config.in" + source "package/ddrescue/Config.in" + source "package/debianutils/Config.in" + source "package/docker-cli/Config.in" + source "package/docker-compose/Config.in" + source "package/docker-containerd/Config.in" + source "package/docker-engine/Config.in" + source "package/docker-proxy/Config.in" + source "package/efibootmgr/Config.in" + source "package/efivar/Config.in" + source "package/emlog/Config.in" + source "package/ftop/Config.in" + source "package/getent/Config.in" + source "package/htop/Config.in" + source "package/initscripts/Config.in" + source "package/iotop/Config.in" + source "package/iprutils/Config.in" + source "package/irqbalance/Config.in" + source "package/jailhouse/Config.in" + source "package/keyutils/Config.in" + source "package/kmod/Config.in" + source "package/kvmtool/Config.in" + source "package/libostree/Config.in" + source "package/lxc/Config.in" + source "package/mender/Config.in" + source "package/mender-grubenv/Config.in" + source "package/monit/Config.in" + source "package/ncdu/Config.in" + source "package/numactl/Config.in" + source "package/nut/Config.in" + source "package/openrc/Config.in" + source "package/openvmtools/Config.in" + source "package/pamtester/Config.in" + source "package/polkit/Config.in" + source "package/powerpc-utils/Config.in" + source "package/procps-ng/Config.in" + source "package/procrank_linux/Config.in" + source "package/psmisc/Config.in" + source "package/pwgen/Config.in" + source "package/quota/Config.in" + source "package/quotatool/Config.in" + source "package/rauc/Config.in" + source "package/rsyslog/Config.in" + source "package/runc/Config.in" + source "package/s6/Config.in" + source "package/s6-linux-init/Config.in" + source "package/s6-linux-utils/Config.in" + source "package/s6-portable-utils/Config.in" + source "package/s6-rc/Config.in" + source "package/scrub/Config.in" + source "package/scrypt/Config.in" + source "package/smack/Config.in" + source "package/start-stop-daemon/Config.in" + source "package/supervisor/Config.in" + source "package/swupdate/Config.in" + source "package/sysklogd/Config.in" + source "package/syslog-ng/Config.in" + source "package/systemd/Config.in" + source "package/systemd-bootchart/Config.in" + source "package/sysvinit/Config.in" + source "package/tar/Config.in" + source "package/tpm-tools/Config.in" + source "package/tpm2-abrmd/Config.in" + source "package/tpm2-tools/Config.in" + source "package/tpm2-totp/Config.in" + source "package/unscd/Config.in" + source "package/util-linux/Config.in" + source "package/xen/Config.in" + source "package/xvisor/Config.in" +endmenu + +menu "Text editors and viewers" + source "package/ed/Config.in" + source "package/joe/Config.in" + source "package/less/Config.in" + source "package/mc/Config.in" + source "package/most/Config.in" + source "package/nano/Config.in" + source "package/uemacs/Config.in" + source "package/vim/Config.in" +endmenu + +endmenu diff --git a/features/buildroot/package/Config.in.host b/features/buildroot/package/Config.in.host new file mode 100644 index 00000000..b2e211eb --- /dev/null +++ b/features/buildroot/package/Config.in.host @@ -0,0 +1,80 @@ +menu "Host utilities" + + source "package/aespipe/Config.in.host" + source "package/android-tools/Config.in.host" + source "package/btrfs-progs/Config.in.host" + source "package/cargo/Config.in.host" + source "package/cbootimage/Config.in.host" + source "package/checkpolicy/Config.in.host" + source "package/checksec/Config.in.host" + source "package/cmake/Config.in.host" + source "package/cramfs/Config.in.host" + source "package/cryptsetup/Config.in.host" + source "package/dbus-python/Config.in.host" + source "package/dfu-util/Config.in.host" + source "package/dos2unix/Config.in.host" + source "package/dosfstools/Config.in.host" + source "package/dtc/Config.in.host" + source "package/e2fsprogs/Config.in.host" + source "package/e2tools/Config.in.host" + source "package/f2fs-tools/Config.in.host" + source "package/faketime/Config.in.host" + source "package/fatcat/Config.in.host" + source "package/fwup/Config.in.host" + source "package/genext2fs/Config.in.host" + source "package/genimage/Config.in.host" + 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/google-breakpad/Config.in.host" + source "package/gptfdisk/Config.in.host" + source "package/imagemagick/Config.in.host" + source "package/imx-mkimage/Config.in.host" + source "package/imx-usb-loader/Config.in.host" + source "package/jq/Config.in.host" + source "package/jsmin/Config.in.host" + source "package/libp11/Config.in.host" + source "package/lpc3250loader/Config.in.host" + source "package/lttng-babeltrace/Config.in.host" + source "package/mender-artifact/Config.in.host" + source "package/mfgtools/Config.in.host" + source "package/mkpasswd/Config.in.host" + source "package/mtd/Config.in.host" + source "package/mtools/Config.in.host" + source "package/mxsldr/Config.in.host" + source "package/omap-u-boot-utils/Config.in.host" + source "package/openocd/Config.in.host" + source "package/opkg-utils/Config.in.host" + source "package/parted/Config.in.host" + source "package/patchelf/Config.in.host" + source "package/pkgconf/Config.in.host" + source "package/pru-software-support/Config.in.host" + source "package/pwgen/Config.in.host" + source "package/python-conan/Config.in.host" + source "package/python-cython/Config.in.host" + source "package/python-lxml/Config.in.host" + source "package/python-pluginbase/Config.in.host" + source "package/python-six/Config.in.host" + source "package/python-xlrd/Config.in.host" + source "package/qemu/Config.in.host" + source "package/raspberrypi-usbboot/Config.in.host" + source "package/rauc/Config.in.host" + source "package/rcw/Config.in.host" + source "package/rustc/Config.in.host" + source "package/s6-rc/Config.in.host" + source "package/sam-ba/Config.in.host" + source "package/squashfs/Config.in.host" + source "package/sunxi-tools/Config.in.host" + source "package/swig/Config.in.host" + source "package/tegrarcm/Config.in.host" + source "package/ti-cgt-pru/Config.in.host" + source "package/uboot-tools/Config.in.host" + source "package/util-linux/Config.in.host" + source "package/utp_com/Config.in.host" + source "package/vboot-utils/Config.in.host" + source "package/xorriso/Config.in.host" + source "package/zip/Config.in.host" + source "package/zstd/Config.in.host" + +endmenu diff --git a/features/buildroot/package/Makefile.in b/features/buildroot/package/Makefile.in new file mode 100644 index 00000000..c956e189 --- /dev/null +++ b/features/buildroot/package/Makefile.in @@ -0,0 +1,450 @@ +ifndef MAKE +MAKE := make +endif +ifndef HOSTMAKE +HOSTMAKE = $(MAKE) +endif +HOSTMAKE := $(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make) + +# If BR2_JLEVEL is 0, scale the maximum concurrency with the number of +# CPUs. An additional job is used in order to keep processors busy +# while waiting on I/O. +# If the number of processors is not available, assume one. +ifeq ($(BR2_JLEVEL),0) +PARALLEL_JOBS := $(shell echo \ + $$((1 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`))) +else +PARALLEL_JOBS := $(BR2_JLEVEL) +endif + +MAKE1 := $(HOSTMAKE) -j1 +override MAKE = $(HOSTMAKE) \ + $(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS)) + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_VENDOR = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR)) +else +TARGET_VENDOR = buildroot +endif + +# Sanity checks +ifeq ($(TARGET_VENDOR),) +$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR is not allowed to be empty) +endif +ifeq ($(TARGET_VENDOR),unknown) +$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR cannot be 'unknown'. \ + It might be confused with the native toolchain) +endif + +# Compute GNU_TARGET_NAME +GNU_TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI) + +# FLAT binary format needs uclinux +ifeq ($(BR2_BINFMT_FLAT),y) +TARGET_OS = uclinux +else +TARGET_OS = linux +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +LIBC = uclibc +else ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBC = musl +else +LIBC = gnu +endif + +# The ABI suffix is a bit special on ARM, as it needs to be +# -uclibcgnueabi for uClibc EABI, and -gnueabi for glibc EABI. +# This means that the LIBC and ABI aren't strictly orthogonal, +# which explains why we need the test on LIBC below. +ifeq ($(BR2_arm)$(BR2_armeb),y) +ifeq ($(LIBC),uclibc) +ABI = gnueabi +else +ABI = eabi +endif + +ifeq ($(BR2_ARM_EABIHF),y) +ABI := $(ABI)hf +endif +endif + +# For C-SKY abiv1 & abiv2 +ifeq ($(BR2_csky),y) +ifeq ($(BR2_ck610),y) +ABI = abiv1 +else +ABI = abiv2 +endif +endif + +# For FSL PowerPC there's SPE +ifeq ($(BR2_powerpc_SPE),y) +ABI = spe +# MPC8540s are e500v1 with single precision FP +ifeq ($(BR2_powerpc_8540),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=single -Wa,-me500 +endif +ifeq ($(BR2_powerpc_8548),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500x2 +endif +ifeq ($(BR2_powerpc_e500mc),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500mc +endif +endif + +# Use longcalls option for Xtensa globally. +# The 'longcalls' option allows calls across a greater range of addresses, +# and is required for some packages. While this option can degrade both +# code size and performance, the linker can usually optimize away the +# overhead when a call ends up within a certain range. +# +# Use auto-litpools for Xtensa globally. +# Collecting literals into separate section can be advantageous if that +# section is placed into DTCM at link time. This is applicable for code +# running on bare metal, but makes no sense under linux, where userspace +# is isolated from the physical memory details. OTOH placing literals into +# separate section breaks build of huge source files, because l32r +# instruction can only access literals in 256 KBytes range. +# +ifeq ($(BR2_xtensa),y) +TARGET_ABI += -mlongcalls -mauto-litpools +endif + +STAGING_SUBDIR = $(GNU_TARGET_NAME)/sysroot +STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR) + +ifeq ($(BR2_OPTIMIZE_0),y) +TARGET_OPTIMIZATION = -O0 +endif +ifeq ($(BR2_OPTIMIZE_1),y) +TARGET_OPTIMIZATION = -O1 +endif +ifeq ($(BR2_OPTIMIZE_2),y) +TARGET_OPTIMIZATION = -O2 +endif +ifeq ($(BR2_OPTIMIZE_3),y) +TARGET_OPTIMIZATION = -O3 +endif +ifeq ($(BR2_OPTIMIZE_G),y) +TARGET_OPTIMIZATION = -Og +endif +ifeq ($(BR2_OPTIMIZE_S),y) +TARGET_OPTIMIZATION = -Os +endif +ifeq ($(BR2_OPTIMIZE_FAST),y) +TARGET_OPTIMIZATION = -Ofast +endif +ifeq ($(BR2_DEBUG_1),y) +TARGET_DEBUGGING = -g1 +endif +ifeq ($(BR2_DEBUG_2),y) +TARGET_DEBUGGING = -g2 +endif +ifeq ($(BR2_DEBUG_3),y) +TARGET_DEBUGGING = -g3 +endif + +TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS)) + +# By design, _FORTIFY_SOURCE requires gcc optimization to be enabled. +# Therefore, we need to pass _FORTIFY_SOURCE and the optimization level +# through the same mechanism, i.e currently through CFLAGS. Passing +# _FORTIFY_SOURCE through the wrapper and the optimization level +# through CFLAGS would not work, because CFLAGS are sometimes +# ignored/overridden by packages, but the flags passed by the wrapper +# are enforced: this would cause _FORTIFY_SOURCE to be used without any +# optimization level, leading to a build / configure failure. So we keep +# passing _FORTIFY_SOURCE and the optimization level both through CFLAGS. +ifeq ($(BR2_FORTIFY_SOURCE_1),y) +TARGET_HARDENED += -D_FORTIFY_SOURCE=1 +else ifeq ($(BR2_FORTIFY_SOURCE_2),y) +TARGET_HARDENED += -D_FORTIFY_SOURCE=2 +endif + +TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_HARDENED) +TARGET_CXXFLAGS = $(TARGET_CFLAGS) +TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +TARGET_CFLAGS += -fno-dwarf2-cfi-asm +TARGET_CXXFLAGS += -fno-dwarf2-cfi-asm +endif + +ifeq ($(BR2_BINFMT_FLAT),y) +TARGET_CFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) +TARGET_CXXFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) +TARGET_FCFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) +TARGET_LDFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt) +endif + +ifeq ($(BR2_BINFMT_FLAT_SHARED),y) +TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0 +endif + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_CROSS = $(HOST_DIR)/bin/$(GNU_TARGET_NAME)- +else +TARGET_CROSS = $(HOST_DIR)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)- +endif + +# Define TARGET_xx variables for all common binutils/gcc +TARGET_AR = $(TARGET_CROSS)ar +TARGET_AS = $(TARGET_CROSS)as +TARGET_CC = $(TARGET_CROSS)gcc +TARGET_CPP = $(TARGET_CROSS)cpp +TARGET_CXX = $(TARGET_CROSS)g++ +TARGET_FC = $(TARGET_CROSS)gfortran +TARGET_LD = $(TARGET_CROSS)ld +TARGET_NM = $(TARGET_CROSS)nm +TARGET_RANLIB = $(TARGET_CROSS)ranlib +TARGET_READELF = $(TARGET_CROSS)readelf +TARGET_OBJCOPY = $(TARGET_CROSS)objcopy +TARGET_OBJDUMP = $(TARGET_CROSS)objdump + +ifeq ($(BR2_STRIP_strip),y) +STRIP_STRIP_DEBUG := --strip-debug +TARGET_STRIP = $(TARGET_CROSS)strip +STRIPCMD = $(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note +else +TARGET_STRIP = /bin/true +STRIPCMD = $(TARGET_STRIP) +endif +INSTALL := $(shell which install || type -p install) +UNZIP := $(shell which unzip || type -p unzip) -q + +APPLY_PATCHES = PATH=$(HOST_DIR)/bin:$$PATH support/scripts/apply-patches.sh $(if $(QUIET),-s) + +HOST_CPPFLAGS = -I$(HOST_DIR)/include +HOST_CFLAGS ?= -O2 +HOST_CFLAGS += $(HOST_CPPFLAGS) +HOST_CXXFLAGS += $(HOST_CFLAGS) +HOST_LDFLAGS += -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib + +# The macros below are taken from linux 4.11 and adapted slightly. +# Copy more when needed. + +# try-run +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) +# Exit code chooses option. "$$TMP" is can be used as temporary file and +# is automatically cleaned up. +try-run = $(shell set -e; \ + TMP="$$(mktemp)"; \ + if ($(1)) >/dev/null 2>&1; \ + then echo "$(2)"; \ + else echo "$(3)"; \ + fi; \ + rm -f "$$TMP") + +# host-cc-option +# Usage: HOST_FOO_CFLAGS += $(call host-cc-option,-no-pie,) +host-cc-option = $(call try-run,\ + $(HOSTCC) $(HOST_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) + + +# host-intltool should be executed with the system perl, so we save +# the path to the system perl, before a host-perl built by Buildroot +# might get installed into $(HOST_DIR)/bin and therefore appears +# in our PATH. This system perl will be used as INTLTOOL_PERL. +export PERL=$(shell which perl) + +# host-intltool needs libxml-parser-perl, which Buildroot installs in +# $(HOST_DIR)/lib/perl, so we must make sure that the system perl +# finds this perl module by exporting the proper value for PERL5LIB. +export PERL5LIB=$(HOST_DIR)/lib/perl + +TARGET_MAKE_ENV = PATH=$(BR_PATH) + +TARGET_CONFIGURE_OPTS = \ + $(TARGET_MAKE_ENV) \ + AR="$(TARGET_AR)" \ + AS="$(TARGET_AS)" \ + LD="$(TARGET_LD)" \ + NM="$(TARGET_NM)" \ + CC="$(TARGET_CC)" \ + GCC="$(TARGET_CC)" \ + CPP="$(TARGET_CPP)" \ + CXX="$(TARGET_CXX)" \ + FC="$(TARGET_FC)" \ + F77="$(TARGET_FC)" \ + RANLIB="$(TARGET_RANLIB)" \ + READELF="$(TARGET_READELF)" \ + STRIP="$(TARGET_STRIP)" \ + OBJCOPY="$(TARGET_OBJCOPY)" \ + OBJDUMP="$(TARGET_OBJDUMP)" \ + AR_FOR_BUILD="$(HOSTAR)" \ + AS_FOR_BUILD="$(HOSTAS)" \ + CC_FOR_BUILD="$(HOSTCC)" \ + GCC_FOR_BUILD="$(HOSTCC)" \ + CXX_FOR_BUILD="$(HOSTCXX)" \ + LD_FOR_BUILD="$(HOSTLD)" \ + CPPFLAGS_FOR_BUILD="$(HOST_CPPFLAGS)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + CXXFLAGS_FOR_BUILD="$(HOST_CXXFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + FCFLAGS_FOR_BUILD="$(HOST_FCFLAGS)" \ + DEFAULT_ASSEMBLER="$(TARGET_AS)" \ + DEFAULT_LINKER="$(TARGET_LD)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + FCFLAGS="$(TARGET_FCFLAGS)" \ + FFLAGS="$(TARGET_FCFLAGS)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + STAGING_DIR="$(STAGING_DIR)" \ + INTLTOOL_PERL=$(PERL) + + +HOST_MAKE_ENV = \ + PATH=$(BR_PATH) \ + 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" + +HOST_CONFIGURE_OPTS = \ + $(HOST_MAKE_ENV) \ + AR="$(HOSTAR)" \ + AS="$(HOSTAS)" \ + LD="$(HOSTLD)" \ + NM="$(HOSTNM)" \ + CC="$(HOSTCC)" \ + GCC="$(HOSTCC)" \ + CXX="$(HOSTCXX)" \ + CPP="$(HOSTCPP)" \ + OBJCOPY="$(HOSTOBJCOPY)" \ + RANLIB="$(HOSTRANLIB)" \ + CPPFLAGS="$(HOST_CPPFLAGS)" \ + CFLAGS="$(HOST_CFLAGS)" \ + CXXFLAGS="$(HOST_CXXFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + INTLTOOL_PERL=$(PERL) + +# This is extra environment we can not export ourselves (eg. because some +# packages use that variable internally, eg. uboot), so we have to +# explicitly pass it to user-supplied external hooks (eg. post-build, +# post-images) +EXTRA_ENV = \ + PATH=$(BR_PATH) \ + BR2_DL_DIR=$(BR2_DL_DIR) \ + BUILD_DIR=$(BUILD_DIR) \ + O=$(CANONICAL_O) + +################################################################################ +# settings we need to pass to configure + +# does unaligned access trap? +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=yes +ifeq ($(BR2_i386),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_x86_64),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_m68k),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif + +ifeq ($(BR2_ENDIAN),"BIG") +BR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=yes +else +BR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=no +endif + +# AM_GNU_GETTEXT misdetects musl gettext support. +# musl currently implements api level 1 and 2 (basic + ngettext) +# http://www.openwall.com/lists/musl/2015/04/16/3 +# +# These autoconf variables should only be pre-seeded when the minimal +# gettext implementation of musl is used. When the full blown +# implementation provided by gettext libintl is used, auto-detection +# works fine, and pre-seeding those values is actually wrong. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y:) +BR2_GT_CV_FUNC_GNUGETTEXT_LIBC = \ + gt_cv_func_gnugettext1_libc=yes \ + gt_cv_func_gnugettext2_libc=yes +endif + +TARGET_CONFIGURE_ARGS = \ + $(BR2_AC_CV_TRAP_CHECK) \ + ac_cv_func_mmap_fixed_mapped=yes \ + ac_cv_func_memcmp_working=yes \ + ac_cv_have_decl_malloc=yes \ + gl_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_calloc_0_nonnull=yes \ + ac_cv_func_realloc_0_nonnull=yes \ + lt_cv_sys_lib_search_path_spec="" \ + $(BR2_AC_CV_C_BIGENDIAN) \ + $(BR2_GT_CV_FUNC_GNUGETTEXT_LIBC) + +################################################################################ + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +NLS_OPTS = --enable-nls +TARGET_NLS_DEPENDENCIES = host-gettext +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +TARGET_NLS_DEPENDENCIES += gettext +TARGET_NLS_LIBS += -lintl +endif +else +NLS_OPTS = --disable-nls +endif + +# We need anything that is invalid. Traditionally, we'd have used 'false' (and +# we did so in the past). However, that breaks libtool for packages that have +# optional C++ support (e.g. gnutls), because libtool will *require* a *valid* +# C++ preprocessor as long as CXX is not 'no'. +# Now, whether we use 'no' or 'false' for CXX as the same side effect: it is an +# invalid C++ compiler, and thus will cause detection of C++ to fail (which is +# expected and what we want), while at the same time taming libtool into +# silence. +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +TARGET_CONFIGURE_OPTS += CXX=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared +TARGET_CFLAGS += -static +TARGET_CXXFLAGS += -static +TARGET_FCFLAGS += -static +TARGET_LDFLAGS += -static +else ifeq ($(BR2_SHARED_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --enable-static --enable-shared +endif + +ifeq ($(BR2_COMPILER_PARANOID_UNSAFE_PATH),y) +export BR_COMPILER_PARANOID_UNSAFE_PATH=enabled +endif + +include package/pkg-download.mk +include package/pkg-autotools.mk +include package/pkg-cmake.mk +include package/pkg-conan.mk +include package/pkg-luarocks.mk +include package/pkg-perl.mk +include package/pkg-python.mk +include package/pkg-virtual.mk +include package/pkg-generic.mk +include package/pkg-kconfig.mk +include package/pkg-rebar.mk +include package/pkg-kernel-module.mk +include package/pkg-waf.mk +include package/pkg-golang.mk +include package/pkg-meson.mk diff --git a/features/buildroot/package/a10disp/Config.in b/features/buildroot/package/a10disp/Config.in new file mode 100644 index 00000000..99ae0aad --- /dev/null +++ b/features/buildroot/package/a10disp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_A10DISP + bool "a10disp" + depends on BR2_arm + depends on BR2_LINUX_KERNEL + help + Program to change the display mode of Allwinner ARM SOCs + running the linux-sunxi kernel (and not the mainline kernel.) + + http://github.com/hglm/a10disp + +comment "a10disp needs a Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL diff --git a/features/buildroot/package/a10disp/a10disp.hash b/features/buildroot/package/a10disp/a10disp.hash new file mode 100644 index 00000000..f1bddec5 --- /dev/null +++ b/features/buildroot/package/a10disp/a10disp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5077405030e8f97a1edd4b86d469466abbc4d32b4a4609e58459347fcd1ba35b a10disp-0.6.1.tar.gz diff --git a/features/buildroot/package/a10disp/a10disp.mk b/features/buildroot/package/a10disp/a10disp.mk new file mode 100644 index 00000000..4c2ee14e --- /dev/null +++ b/features/buildroot/package/a10disp/a10disp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# a10disp +# +################################################################################ + +A10DISP_VERSION = 0.6.1 +A10DISP_SITE = $(call github,hglm,a10disp,v$(A10DISP_VERSION)) +A10DISP_LICENSE = MIT + +A10DISP_DEPENDENCIES = linux + +define A10DISP_BUILD_CMDS + cp -f $(LINUX_DIR)/include/video/sunxi_disp_ioctl.h $(@D)/ + $(TARGET_CC) $(TARGET_CFLAGS) $(@D)/a10disp.c -o $(@D)/a10disp +endef + +define A10DISP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/a10disp $(TARGET_DIR)/usr/bin/a10disp +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/abootimg/Config.in b/features/buildroot/package/abootimg/Config.in new file mode 100644 index 00000000..30e5bd1f --- /dev/null +++ b/features/buildroot/package/abootimg/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ABOOTIMG + bool "abootimg" + depends on BR2_USE_MMU # libblkid + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Tool to manipulate Android Boot Images, either on files + or directly on /dev block devices. + + https://github.com/ggrandou/abootimg diff --git a/features/buildroot/package/abootimg/abootimg.hash b/features/buildroot/package/abootimg/abootimg.hash new file mode 100644 index 00000000..fa5282c6 --- /dev/null +++ b/features/buildroot/package/abootimg/abootimg.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eb8d912bc7b5454c2afd3385fd86f4917d3587c48a6f5ae45df7856d88502cab abootimg-7e127fee6a3981f6b0a50ce9910267cd501e09d4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/features/buildroot/package/abootimg/abootimg.mk b/features/buildroot/package/abootimg/abootimg.mk new file mode 100644 index 00000000..e9065469 --- /dev/null +++ b/features/buildroot/package/abootimg/abootimg.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# abootimg +# +################################################################################ + +ABOOTIMG_VERSION = 7e127fee6a3981f6b0a50ce9910267cd501e09d4 +ABOOTIMG_SITE = $(call github,ggrandou,abootimg,$(ABOOTIMG_VERSION)) +ABOOTIMG_LICENSE = GPL-2.0+ +ABOOTIMG_LICENSE_FILES = LICENSE + +# depends on libblkid from util-linux +ABOOTIMG_DEPENDENCIES = util-linux + +define ABOOTIMG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define ABOOTIMG_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/abootimg $(TARGET_DIR)/usr/bin/abootimg +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/acl/0001-Build-with-old-GCC-versions.patch b/features/buildroot/package/acl/0001-Build-with-old-GCC-versions.patch new file mode 100644 index 00000000..a05ff5d9 --- /dev/null +++ b/features/buildroot/package/acl/0001-Build-with-old-GCC-versions.patch @@ -0,0 +1,32 @@ +From a42519dceef0493ece45538375ae1791313f16d3 Mon Sep 17 00:00:00 2001 +From: Hollis Blanchard +Date: Mon, 30 Jul 2018 14:29:46 -0700 +Subject: [PATCH] Remove pragmas inside functions + +GCC 4.4.7, as found in RHEL6, reports: + libacl/acl_from_text.c:307: error: #pragma GCC diagnostic not allowed inside functions + +Signed-off-by: Hollis Blanchard +--- + libacl/acl_from_text.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c +index 09790c9..fb6bc07 100644 +--- a/libacl/acl_from_text.c ++++ b/libacl/acl_from_text.c +@@ -304,11 +304,8 @@ parse_acl_entry(const char **text_p, acl_t *acl_p) + create_entry: + if (acl_create_entry(acl_p, &entry_d) != 0) + return -1; +-#pragma GCC diagnostic push +-#pragma GCC diagnostic ignored "-Waddress" + if (acl_copy_entry(entry_d, int2ext(&entry_obj)) != 0) + return -1; +-#pragma GCC diagnostic pop + return 0; + + fail: +-- +2.13.0 + diff --git a/features/buildroot/package/acl/Config.in b/features/buildroot/package/acl/Config.in new file mode 100644 index 00000000..92f22518 --- /dev/null +++ b/features/buildroot/package/acl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ACL + bool "acl" + select BR2_PACKAGE_ATTR + help + POSIX Access Control Lists, which are used to define more + fine-grained discretionary access rights for files and + directories. + This package also provides libacl. + + http://savannah.nongnu.org/projects/acl diff --git a/features/buildroot/package/acl/acl.hash b/features/buildroot/package/acl/acl.hash new file mode 100644 index 00000000..50c32d77 --- /dev/null +++ b/features/buildroot/package/acl/acl.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 06be9865c6f418d851ff4494e12406568353b891ffe1f596b34693c387af26c7 acl-2.2.53.tar.gz + +# Locally calculated +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 doc/COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL diff --git a/features/buildroot/package/acl/acl.mk b/features/buildroot/package/acl/acl.mk new file mode 100644 index 00000000..8dce2741 --- /dev/null +++ b/features/buildroot/package/acl/acl.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# acl +# +################################################################################ + +ACL_VERSION = 2.2.53 +ACL_SITE = http://download.savannah.gnu.org/releases/acl +ACL_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +ACL_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL + +ACL_DEPENDENCIES = attr +HOST_ACL_DEPENDENCIES = host-attr + +ACL_INSTALL_STAGING = YES + +ACL_CONF_OPTS = --disable-nls + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/acpica/0001-build-do-not-use-Werror.patch b/features/buildroot/package/acpica/0001-build-do-not-use-Werror.patch new file mode 100644 index 00000000..e7449e98 --- /dev/null +++ b/features/buildroot/package/acpica/0001-build-do-not-use-Werror.patch @@ -0,0 +1,67 @@ +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] + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: "Vicente Olivert Riera" +--- + generate/unix/Makefile.config | 1 - + generate/unix/iasl/Makefile | 12 ++++++------ + 2 files changed, 6 insertions(+), 7 deletions(-) + +diff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config +index 4d4f182..a7120e3 100644 +--- a/generate/unix/Makefile.config ++++ b/generate/unix/Makefile.config +@@ -194,7 +194,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 156c23a..28ffc06 100644 +--- a/generate/unix/iasl/Makefile ++++ b/generate/unix/iasl/Makefile +@@ -335,24 +335,24 @@ $(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)/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$@ $< diff --git a/features/buildroot/package/acpica/Config.in b/features/buildroot/package/acpica/Config.in new file mode 100644 index 00000000..c5ffb005 --- /dev/null +++ b/features/buildroot/package/acpica/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ACPICA + bool "acpica" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The ACPI Component Architecture (ACPICA) project provides an + operating system (OS)-independent reference implementation + of the Advanced Configuration and Power Interface + Specification (ACPI). + + https://www.acpica.org + +comment "acpica needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/acpica/acpica.hash b/features/buildroot/package/acpica/acpica.hash new file mode 100644 index 00000000..20d7e0fd --- /dev/null +++ b/features/buildroot/package/acpica/acpica.hash @@ -0,0 +1,3 @@ +# locally computed hash +sha256 9f539986b91749947dfc32b3b00d338ba565ee1a394b95c049dd393aac8ae34e acpica-unix2-20190703.tar.gz +sha256 65464cea6ee2f7a5d38e2b5f1050a4b39a15358a09b8e36119416d4e2c5031b8 source/include/acpi.h diff --git a/features/buildroot/package/acpica/acpica.mk b/features/buildroot/package/acpica/acpica.mk new file mode 100644 index 00000000..03d1c45e --- /dev/null +++ b/features/buildroot/package/acpica/acpica.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# acpica +# +################################################################################ + +ACPICA_VERSION = 20190703 +ACPICA_SOURCE = acpica-unix2-$(ACPICA_VERSION).tar.gz +ACPICA_SITE = https://acpica.org/sites/acpica/files +ACPICA_LICENSE = BSD-3-Clause or GPL-2.0 +ACPICA_LICENSE_FILES = source/include/acpi.h +ACPICA_DEPENDENCIES = host-bison host-flex +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)" \ + all +endef + +define HOST_ACPICA_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + all +endef + +define ACPICA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + HARDWARE_NAME=$(BR2_ARCH) DESTDIR="$(TARGET_DIR)" \ + INSTALLFLAGS=-m755 install +endef + +define HOST_ACPICA_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX="$(HOST_DIR)" \ + INSTALLFLAGS=-m755 install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/acpid/0001-dont-use-isfdtype.patch b/features/buildroot/package/acpid/0001-dont-use-isfdtype.patch new file mode 100644 index 00000000..2fe6c218 --- /dev/null +++ b/features/buildroot/package/acpid/0001-dont-use-isfdtype.patch @@ -0,0 +1,20 @@ +Partially roll back upstream commit 4711119089e1ad08dad206f4fded68f1972fdeed +since released versions of uClibc don't support isfdtype(). + +Signed-off-by: Gustavo Zaarias + +diff -Nura acpid-2.0.22.orig/sock.c acpid-2.0.22/sock.c +--- acpid-2.0.22.orig/sock.c 2014-04-22 18:04:19.706841764 -0300 ++++ acpid-2.0.22/sock.c 2014-04-22 18:05:08.285479625 -0300 +@@ -53,7 +53,10 @@ + int + is_socket(int fd) + { +- return (isfdtype(fd, S_IFSOCK) == 1); ++ int v; ++ socklen_t l = sizeof(int); ++ ++ return (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0); + } + + /* accept a new client connection */ diff --git a/features/buildroot/package/acpid/0002-add-missing-defines.patch b/features/buildroot/package/acpid/0002-add-missing-defines.patch new file mode 100644 index 00000000..a8531591 --- /dev/null +++ b/features/buildroot/package/acpid/0002-add-missing-defines.patch @@ -0,0 +1,40 @@ +Add missing MSG_CMSG_CLOEXEC + +Unpatched uClibc toolchains, even using the latest 0.9.33.2, do not +have the MSG_CMSG_CLOEXEC definition. Even though the Buildroot +internal toolchain backend has a uClibc patch to provide it, it +doesn't apply to external toolchains. This patch provides the +definition of MSG_CMSG_CLOEXEC. + +Signed-off-by: Thomas Petazzoni + +Index: b/libnetlink.h +=================================================================== +--- a/libnetlink.h ++++ b/libnetlink.h +@@ -7,6 +7,10 @@ + #include + #include + ++#ifndef MSG_CMSG_CLOEXEC ++#define MSG_CMSG_CLOEXEC 0x40000000 ++#endif ++ + struct rtnl_handle + { + int fd; +Index: b/kacpimon/libnetlink.h +=================================================================== +--- a/kacpimon/libnetlink.h ++++ b/kacpimon/libnetlink.h +@@ -7,6 +7,10 @@ + #include + #include + ++#ifndef MSG_CMSG_CLOEXEC ++#define MSG_CMSG_CLOEXEC 0x40000000 ++#endif ++ + struct rtnl_handle + { + int fd; diff --git a/features/buildroot/package/acpid/Config.in b/features/buildroot/package/acpid/Config.in new file mode 100644 index 00000000..0c8ecf24 --- /dev/null +++ b/features/buildroot/package/acpid/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ACPID + bool "acpid" + depends on BR2_USE_MMU # fork() + help + Advanced Configuration and Power Interface event daemon. + + Acpid is designed to notify user-space programs of ACPI + events, and allows you to configure specific actions for + specific events. + + http://sourceforge.net/projects/acpid2/ diff --git a/features/buildroot/package/acpid/S02acpid b/features/buildroot/package/acpid/S02acpid new file mode 100644 index 00000000..e8d36616 --- /dev/null +++ b/features/buildroot/package/acpid/S02acpid @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting acpid: " + start-stop-daemon -S -q -m -b -p /var/run/acpid.pid --exec /usr/sbin/acpid -- -n + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping acpid: " + start-stop-daemon -K -q -p /var/run/acpid.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/features/buildroot/package/acpid/acpid.hash b/features/buildroot/package/acpid/acpid.hash new file mode 100644 index 00000000..02862196 --- /dev/null +++ b/features/buildroot/package/acpid/acpid.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/acpid2/files/ +md5 1528040b5d34f8c24ebabd97befbf913 acpid-2.0.30.tar.xz +sha1 680bbb3fa9cdabb78fb19c6d24bb57224fbbbaed acpid-2.0.30.tar.xz diff --git a/features/buildroot/package/acpid/acpid.mk b/features/buildroot/package/acpid/acpid.mk new file mode 100644 index 00000000..adcc1757 --- /dev/null +++ b/features/buildroot/package/acpid/acpid.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# acpid +# +################################################################################ + +ACPID_VERSION = 2.0.30 +ACPID_SOURCE = acpid-$(ACPID_VERSION).tar.xz +ACPID_SITE = http://downloads.sourceforge.net/project/acpid2 +ACPID_LICENSE = GPL-2.0+ +ACPID_LICENSE_FILES = COPYING + +define ACPID_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/acpid/acpid.service \ + $(TARGET_DIR)/usr/lib/systemd/system/acpid.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/acpid.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/acpid.service +endef + +define ACPID_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/acpid/S02acpid \ + $(TARGET_DIR)/etc/init.d/S02acpid +endef + +ifeq ($(BR2_INIT_SYSV)$(BR2_INIT_SYSTEMD),y) +ACPID_POWEROFF_CMD = /sbin/shutdown -hP now +else +ACPID_POWEROFF_CMD = /sbin/poweroff +endif + +define ACPID_SET_EVENTS + mkdir -p $(TARGET_DIR)/etc/acpi/events + printf 'event=button[ /]power\naction=%s\n' '$(ACPID_POWEROFF_CMD)' \ + >$(TARGET_DIR)/etc/acpi/events/powerbtn +endef + +ACPID_POST_INSTALL_TARGET_HOOKS += ACPID_SET_EVENTS + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/acpid/acpid.service b/features/buildroot/package/acpid/acpid.service new file mode 100644 index 00000000..5252b52f --- /dev/null +++ b/features/buildroot/package/acpid/acpid.service @@ -0,0 +1,9 @@ +[Unit] +Description=ACPI event daemon +Documentation=man:acpid(8) + +[Service] +ExecStart=/usr/sbin/acpid --foreground --netlink + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/acpitool/Config.in b/features/buildroot/package/acpitool/Config.in new file mode 100644 index 00000000..2600a789 --- /dev/null +++ b/features/buildroot/package/acpitool/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ACPITOOL + bool "acpitool" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + help + A small, convenient command-line ACPI client with a lot of + features for Linux + + http://acpitool.sourceforge.net + +comment "acpitool needs a toolchain w/ threads, C++, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/acpitool/acpitool.hash b/features/buildroot/package/acpitool/acpitool.hash new file mode 100644 index 00000000..e25dc546 --- /dev/null +++ b/features/buildroot/package/acpitool/acpitool.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 004fb6cd43102918b6302cf537a2db7ceadda04aef2e0906ddf230f820dad34f acpitool-0.5.1.tar.bz2 diff --git a/features/buildroot/package/acpitool/acpitool.mk b/features/buildroot/package/acpitool/acpitool.mk new file mode 100644 index 00000000..547da375 --- /dev/null +++ b/features/buildroot/package/acpitool/acpitool.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# acpitool +# +################################################################################ + +ACPITOOL_VERSION = 0.5.1 +ACPITOOL_SOURCE = acpitool-$(ACPITOOL_VERSION).tar.bz2 +ACPITOOL_SITE = http://downloads.sourceforge.net/sourceforge/acpitool +ACPITOOL_LICENSE = GPL-2.0+ +ACPITOOL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/acsccid/Config.in b/features/buildroot/package/acsccid/Config.in new file mode 100644 index 00000000..90624ee7 --- /dev/null +++ b/features/buildroot/package/acsccid/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_ACSCCID + bool "acsccid" + depends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite, libusb + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + # Even though there is a --disable-libusb option, it has in + # fact no effect, and acsccid really requires libusb. + select BR2_PACKAGE_LIBUSB + help + acsccid is a PC/SC driver for Linux/Mac OS X and it supports + ACS CCID smart card readers. + + http://acsccid.sourceforge.net/ + +comment "acsccid needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/features/buildroot/package/acsccid/acsccid.hash b/features/buildroot/package/acsccid/acsccid.hash new file mode 100644 index 00000000..24d2fa73 --- /dev/null +++ b/features/buildroot/package/acsccid/acsccid.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/acsccid/files/acsccid/1.1.4/ +sha1 8c0b42ff79032289731916d18a2698b258dfd6a2 acsccid-1.1.4.tar.bz2 +md5 ac77b3aeae0a11723c96c7f98769490e acsccid-1.1.4.tar.bz2 diff --git a/features/buildroot/package/acsccid/acsccid.mk b/features/buildroot/package/acsccid/acsccid.mk new file mode 100644 index 00000000..a59a16d7 --- /dev/null +++ b/features/buildroot/package/acsccid/acsccid.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# acsccid +# +################################################################################ + +ACSCCID_VERSION = 1.1.4 +ACSCCID_SOURCE = acsccid-$(ACSCCID_VERSION).tar.bz2 +ACSCCID_SITE = http://downloads.sourceforge.net/acsccid +ACSCCID_LICENSE = LGPL-2.1+ +ACSCCID_LICENSE_FILES = COPYING +ACSCCID_INSTALL_STAGING = YES +ACSCCID_DEPENDENCIES = pcsc-lite host-flex host-pkgconf libusb +ACSCCID_CONF_OPTS = --enable-usbdropdir=/usr/lib/pcsc/drivers + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/adwaita-icon-theme/Config.in b/features/buildroot/package/adwaita-icon-theme/Config.in new file mode 100644 index 00000000..d200570e --- /dev/null +++ b/features/buildroot/package/adwaita-icon-theme/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_ADWAITA_ICON_THEME + bool "adwaita icon theme" + depends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3 + help + Adwaita icon theme diff --git a/features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash b/features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash new file mode 100644 index 00000000..61b5f14d --- /dev/null +++ b/features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/3.22/adwaita-icon-theme-3.22.0.sha256sum +sha256 c18bf6e26087d9819a962c77288b291efab25d0419b73d909dd771716a45dcb7 adwaita-icon-theme-3.22.0.tar.xz diff --git a/features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk b/features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk new file mode 100644 index 00000000..8c9dec14 --- /dev/null +++ b/features/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# adwaita-icon-theme +# +################################################################################ + +ADWAITA_ICON_THEME_VERSION_MAJOR = 3.22 +ADWAITA_ICON_THEME_VERSION = $(ADWAITA_ICON_THEME_VERSION_MAJOR).0 +ADWAITA_ICON_THEME_SITE = http://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/$(ADWAITA_ICON_THEME_VERSION_MAJOR) +ADWAITA_ICON_THEME_SOURCE = adwaita-icon-theme-$(ADWAITA_ICON_THEME_VERSION).tar.xz +ADWAITA_ICON_THEME_INSTALL_STAGING = YES +ADWAITA_ICON_THEME_LICENSE = LGPL-3.0 or CC-BY-SA-3.0 +ADWAITA_ICON_THEME_LICENSE_FILES = COPYING COPYING_LGPL COPYING_CCBYSA3 +ADWAITA_ICON_THEME_DEPENDENCIES = host-intltool host-libgtk3 + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/aer-inject/Config.in b/features/buildroot/package/aer-inject/Config.in new file mode 100644 index 00000000..7c737d42 --- /dev/null +++ b/features/buildroot/package/aer-inject/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AER_INJECT + bool "aer-inject" + help + aer-inject allows to inject PCIE AER errors on the software + level into a running Linux kernel. This is intended for + validation of the PCIE driver error recovery handler and + PCIE AER core handler. + + Requires a new Linux kernel with PCIE AER error injection + patches. + + https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/ diff --git a/features/buildroot/package/aer-inject/aer-inject.hash b/features/buildroot/package/aer-inject/aer-inject.hash new file mode 100644 index 00000000..6329de6d --- /dev/null +++ b/features/buildroot/package/aer-inject/aer-inject.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 49a44b7a9e3983dc15fdc5bacd0e095df650296024f43f9d6c080ad54de0b07f aer-inject-9bd5e2c7886fca72f139cd8402488a2235957d41.tar.gz diff --git a/features/buildroot/package/aer-inject/aer-inject.mk b/features/buildroot/package/aer-inject/aer-inject.mk new file mode 100644 index 00000000..72495bbe --- /dev/null +++ b/features/buildroot/package/aer-inject/aer-inject.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# aer-inject +# +################################################################################ + +AER_INJECT_VERSION = 9bd5e2c7886fca72f139cd8402488a2235957d41 +AER_INJECT_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git +AER_INJECT_LICENSE = GPL-2.0 +AER_INJECT_LICENSE_FILES = README +AER_INJECT_DEPENDENCIES = host-flex host-bison + +define AER_INJECT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define AER_INJECT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr/bin install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/aespipe/Config.in b/features/buildroot/package/aespipe/Config.in new file mode 100644 index 00000000..2c2ff5cd --- /dev/null +++ b/features/buildroot/package/aespipe/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_AESPIPE + bool "aespipe" + depends on BR2_USE_MMU # fork() + help + aespipe program is AES encrypting or decrypting pipe. It reads + from standard input and writes to standard output. It can be + used to create and restore encrypted tar or cpio archives. + It can be used to encrypt and decrypt loop-AES compatible + encrypted disk images. + + http://koti.tnnet.fi/jari.ruusu/linux/ diff --git a/features/buildroot/package/aespipe/Config.in.host b/features/buildroot/package/aespipe/Config.in.host new file mode 100644 index 00000000..b64868ce --- /dev/null +++ b/features/buildroot/package/aespipe/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_AESPIPE + bool "host aespipe" + help + aespipe program is AES encrypting or decrypting pipe. It + reads from standard input and writes to standard output. It + can be used to create and restore encrypted tar or cpio + archives. It can be used to encrypt and decrypt loop-AES + compatible encrypted disk images. + + http://koti.tnnet.fi/jari.ruusu/linux/ diff --git a/features/buildroot/package/aespipe/aespipe.hash b/features/buildroot/package/aespipe/aespipe.hash new file mode 100644 index 00000000..cc7640a0 --- /dev/null +++ b/features/buildroot/package/aespipe/aespipe.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 c5ce656e0ade49b93e1163ec7b35450721d5743d8d804ad3a9e39add0389e50f aespipe-v2.4d.tar.bz2 diff --git a/features/buildroot/package/aespipe/aespipe.mk b/features/buildroot/package/aespipe/aespipe.mk new file mode 100644 index 00000000..5ef95d52 --- /dev/null +++ b/features/buildroot/package/aespipe/aespipe.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# aespipe +# +################################################################################ + +AESPIPE_VERSION = 2.4d +AESPIPE_SOURCE = aespipe-v$(AESPIPE_VERSION).tar.bz2 +AESPIPE_SITE = http://loop-aes.sourceforge.net/aespipe +AESPIPE_LICENSE = GPL + +# Recent Debian, Gentoo and Ubuntu enable -fPIE by default, breaking the build: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837393 +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835148 +# Older gcc versions however don't support the -no-pie flag, so we have to +# check its availability. +HOST_AESPIPE_NO_PIE_FLAG = $(call host-cc-option,-no-pie) +HOST_AESPIPE_CONF_ENV = \ + CFLAGS="$(HOST_CFLAGS) $(HOST_AESPIPE_NO_PIE_FLAG)" \ + LDFLAGS="$(HOST_LDFLAGS) $(HOST_AESPIPE_NO_PIE_FLAG)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/agentpp/Config.in b/features/buildroot/package/agentpp/Config.in new file mode 100644 index 00000000..8c6b11d6 --- /dev/null +++ b/features/buildroot/package/agentpp/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_AGENTPP + bool "agent++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # snmp++ + depends on !BR2_STATIC_LIBS # snmp++ + select BR2_PACKAGE_SNMPPP + help + AGENT++ is a set of C++ classes which provides a complete + protocol engine and dispatch table for the development of + SNMP agents. AGENT++ is a multilingual API which supports + SNMPv1, SNMPv2c, and SNMPv3. It provides various C++ classes + implementing prototypes for scalar and table SNMP managed + objects that can be customized by derivation. Additional + classes support the development of proxy agents as well as + sending notifications. + + SNMPv3 support is enabled if SNMP++ enables it. + + http://www.agentpp.com/agentpp3_5/agentpp3_5.html + +comment "agent++ needs a toolchain w/ threads, C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/features/buildroot/package/agentpp/agentpp.hash b/features/buildroot/package/agentpp/agentpp.hash new file mode 100644 index 00000000..131edc4a --- /dev/null +++ b/features/buildroot/package/agentpp/agentpp.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 6775fa2a038801edddedc148d7846427ddc4d438e3bb33362d9eec6074918a88 agent++-4.0.7.tar.gz diff --git a/features/buildroot/package/agentpp/agentpp.mk b/features/buildroot/package/agentpp/agentpp.mk new file mode 100644 index 00000000..12cf2089 --- /dev/null +++ b/features/buildroot/package/agentpp/agentpp.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# agentpp +# +################################################################################ + +AGENTPP_VERSION = 4.0.7 +AGENTPP_SOURCE = agent++-$(AGENTPP_VERSION).tar.gz +AGENTPP_SITE = http://www.agentpp.com/download +AGENTPP_LICENSE = Apache-2.0 +AGENTPP_LICENSE_FILES = LICENSE-2_0.txt +AGENTPP_INSTALL_STAGING = YES +AGENTPP_DEPENDENCIES = host-pkgconf snmppp +AGENTPP_CONF_OPTS += \ + --disable-proxy \ + --disable-forwarder \ + --disable-rpath + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/aircrack-ng/Config.in b/features/buildroot/package/aircrack-ng/Config.in new file mode 100644 index 00000000..f3e2bc4e --- /dev/null +++ b/features/buildroot/package/aircrack-ng/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_AIRCRACK_NG + bool "aircrack-ng" + depends on BR2_USE_MMU # uses fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBGCRYPT + help + A set of tools for auditing wireless networks + + For complete functionality, also select ethtool, iw, + util-linux (utilities and rfkill), and wireless_tools. + + http://www.aircrack-ng.org/ + +comment "aircrack-ng needs a toolchain w/ dynamic library, threads, C++" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/aircrack-ng/aircrack-ng.hash b/features/buildroot/package/aircrack-ng/aircrack-ng.hash new file mode 100644 index 00000000..d8a171dc --- /dev/null +++ b/features/buildroot/package/aircrack-ng/aircrack-ng.hash @@ -0,0 +1,6 @@ +# From http://www.aircrack-ng.org/downloads.html +sha1 7b63c7ce01cb65a4775833c6cadf7ddd82bf46d5 aircrack-ng-1.5.2.tar.gz +md5 2648c192d206e953c67dca64967d2982 aircrack-ng-1.5.2.tar.gz + +# Hash for license file: +sha256 fc51fd3a97223f2fd47b057202d4a6b0daaedf23b5a1f5ff8723c192fc1e021d LICENSE diff --git a/features/buildroot/package/aircrack-ng/aircrack-ng.mk b/features/buildroot/package/aircrack-ng/aircrack-ng.mk new file mode 100644 index 00000000..a6db384b --- /dev/null +++ b/features/buildroot/package/aircrack-ng/aircrack-ng.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# aircrack-ng +# +################################################################################ + +AIRCRACK_NG_VERSION = 1.5.2 +AIRCRACK_NG_SITE = http://download.aircrack-ng.org +AIRCRACK_NG_LICENSE = GPL-2.0+ +AIRCRACK_NG_LICENSE_FILES = LICENSE +AIRCRACK_NG_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_CMOCKA),cmocka) \ + $(if $(BR2_PACKAGE_LIBNL),libnl) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_PCRE),pcre) \ + $(if $(BR2_PACKAGE_ZLIB),zlib) \ + host-pkgconf +AIRCRACK_NG_AUTORECONF = YES +# Enable buddy-ng, easside-ng, tkiptun-ng, wesside-ng +AIRCRACK_NG_CONF_OPTS = --with-experimental + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +AIRCRACK_NG_CONF_OPTS += --with-opt +else +AIRCRACK_NG_CONF_OPTS += --without-opt +endif + +ifeq ($(BR2_PACKAGE_DUMA),y) +AIRCRACK_NG_DEPENDENCIES += duma +AIRCRACK_NG_CONF_OPTS += --with-duma +else +AIRCRACK_NG_CONF_OPTS += --without-duma +endif + +ifeq ($(BR2_PACKAGE_HWLOC),y) +AIRCRACK_NG_DEPENDENCIES += hwloc +AIRCRACK_NG_CONF_OPTS += --enable-hwloc +else +AIRCRACK_NG_CONF_OPTS += --disable-hwloc +endif + +ifeq ($(BR2_PACKAGE_JEMALLOC),y) +AIRCRACK_NG_DEPENDENCIES += jemalloc +AIRCRACK_NG_CONF_OPTS += --with-jemalloc +else +AIRCRACK_NG_CONF_OPTS += --without-jemalloc +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +AIRCRACK_NG_DEPENDENCIES += libgcrypt +AIRCRACK_NG_CONF_OPTS += \ + --with-gcrypt \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr +else +AIRCRACK_NG_CONF_OPTS += --without-gcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +AIRCRACK_NG_DEPENDENCIES += libpcap +AIRCRACK_NG_CONF_OPTS += \ + --with-libpcap-include=$(STAGING_DIR)/usr/include \ + --with-libpcap-lib=$(STAGING_DIR)/usr/lib +ifeq ($(BR2_STATIC_LIBS),y) +AIRCRACK_NG_CONF_ENV += \ + LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +AIRCRACK_NG_DEPENDENCIES += sqlite +AIRCRACK_NG_CONF_OPTS += --with-sqlite3 +else +AIRCRACK_NG_CONF_OPTS += --without-sqlite3 +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/alljoyn-base/Config.in b/features/buildroot/package/alljoyn-base/Config.in new file mode 100644 index 00000000..8556d66c --- /dev/null +++ b/features/buildroot/package/alljoyn-base/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_ALLJOYN_BASE + bool "alljoyn-base" + depends on BR2_USE_MMU # alljoyn + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # alljoyn + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # alljoyn + select BR2_PACKAGE_ALLJOYN + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL if \ + !BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION && \ + !BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING + help + + AllJoyn Base Services are common services used by many + devices, providing a set of interfaces for different devices + to interact and interoperate with one another. + + https://allseenalliance.org + +if BR2_PACKAGE_ALLJOYN_BASE + +config BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL + bool "controlpanel" + help + Enable AllJoyn Control Panel base service which allows + devices to advertise a virtual control panel to be + controlled remotely. + +config BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION + bool "notification" + help + Enable AllJoyn Notification base service which allows + text-based notifications to be sent and received by devices + on the AllJoyn network. Also supports audio and images via + URLs. + +config BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING + bool "onboarding" + help + Enable AllJoyn Onboarding base service which provides a + consistent way to bring a new device onto the Wi-Fi network. + +endif # BR2_PACKAGE_ALLJOYN_BASE + +comment "alljoyn-base needs a toolchain w/ C++, threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/features/buildroot/package/alljoyn-base/alljoyn-base.hash b/features/buildroot/package/alljoyn-base/alljoyn-base.hash new file mode 100644 index 00000000..dbec3a35 --- /dev/null +++ b/features/buildroot/package/alljoyn-base/alljoyn-base.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 742f724b3a06c8fc4039591dba24871755728221ca5dc4afb78ebd9a7e3beb44 alljoyn-base-16.04.00.tar.gz diff --git a/features/buildroot/package/alljoyn-base/alljoyn-base.mk b/features/buildroot/package/alljoyn-base/alljoyn-base.mk new file mode 100644 index 00000000..64ba647a --- /dev/null +++ b/features/buildroot/package/alljoyn-base/alljoyn-base.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# alljoyn-base +# +################################################################################ + +ALLJOYN_BASE_REV = 16.04 +ALLJOYN_BASE_VERSION = $(ALLJOYN_BASE_REV).00 +ALLJOYN_BASE_SITE = \ + https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_BASE_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_BASE_LICENSE = ISC + +ALLJOYN_BASE_DEPENDENCIES = host-python host-scons alljoyn openssl +ALLJOYN_BASE_INSTALL_STAGING = YES + +ALLJOYN_BASE_CRYPTO = openssl + +# AllJoyn can be compiled in debug or release mode. By default, +# AllJoyn is built in debug mode. +ALLJOYN_BASE_VARIANT = release + +ALLJOYN_BASE_BINDINGS = c,cpp + +# By setting openwrt for OS and CPU, AllJoyn cross-compilation can be finely +# tuned through TARGET_xxx options. All TARGET_xxx variables must be defined +# otherwise compilation will fail. +# CROSS_COMPILE option should not be used as it works only for linux/ARM. +ALLJOYN_BASE_OS = openwrt +ALLJOYN_BASE_CPU = openwrt + +# AllJoyn install everything in this relative path +ALLJOYN_BASE_DISTDIR = \ + build/$(ALLJOYN_OS)/$(ALLJOYN_CPU)/$(ALLJOYN_VARIANT)/dist + +ALLJOYN_BASE_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + OS=$(ALLJOYN_BASE_OS) \ + CPU=$(ALLJOYN_BASE_CPU) \ + VARIANT=$(ALLJOYN_BASE_VARIANT) \ + BR=off \ + CRYPTO=$(ALLJOYN_BASE_CRYPTO) \ + BINDINGS=$(ALLJOYN_BASE_BINDINGS) \ + ALLJOYN_DISTDIR="$(STAGING_DIR)"\ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \ + TARGET_LINKFLAGS="$(TARGET_LINKFLAGS)" \ + TARGET_CC="$(TARGET_CC)" \ + TARGET_CXX="$(TARGET_CXX)" \ + TARGET_LD="$(TARGET_LD)" \ + TARGET_LINK="$(TARGET_CXX)" \ + TARGET_AR="$(TARGET_AR)" \ + TARGET_RANLIB="$(TARGET_RANLIB)" \ + TARGET_PATH="$(BR_PATH)" + +ifeq ($(BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL), y) +ALLJOYN_BASE_TARGETS += controlpanel +endif + +ifeq ($(BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION), y) +ALLJOYN_BASE_TARGETS += notification +endif + +ifeq ($(BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING), y) +ALLJOYN_BASE_TARGETS += onboarding +endif + +define ALLJOYN_BASE_BUILD_CMDS + $(foreach target,$(ALLJOYN_BASE_TARGETS),\ + cd $(@D)/$(target); $(HOST_DIR)/bin/python2 $(SCONS) $(ALLJOYN_BASE_SCONS_OPTS) + ) +endef + +define ALLJOYN_BASE_INSTALL_STAGING_CMDS + $(foreach target,$(ALLJOYN_BASE_TARGETS),\ + cp -a $(@D)/$(target)/$(ALLJOYN_BASE_DISTDIR)/*/lib/lib* \ + $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/$(target)/$(ALLJOYN_BASE_DISTDIR)/*/inc/* \ + $(STAGING_DIR)/usr/include/ + ) +endef + +define ALLJOYN_BASE_INSTALL_TARGET_CMDS + $(foreach target,$(ALLJOYN_BASE_TARGETS),\ + cp -a $(@D)/$(target)/$(ALLJOYN_BASE_DISTDIR)/*/lib/lib* \ + $(TARGET_DIR)/usr/lib/ + ) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/alljoyn-tcl-base/Config.in b/features/buildroot/package/alljoyn-tcl-base/Config.in new file mode 100644 index 00000000..ebc3370a --- /dev/null +++ b/features/buildroot/package/alljoyn-tcl-base/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ALLJOYN_TCL_BASE + bool "alljoyn-tcl-base" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS # alljoyn-tcl + select BR2_PACKAGE_ALLJOYN_TCL + help + AllJoyn Base Services are common services used by many + devices, providing a set of interfaces for different devices + to interact and interoperate with one another. + + Thin Client Library is designed to bring the benefits of the + AllJoyn distributed programming environment to embedded + systems. + + https://allseenalliance.org + +comment "alljoyn-tcl-base needs a toolchain w/ threads and dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash b/features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash new file mode 100644 index 00000000..882839d7 --- /dev/null +++ b/features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 741f7a71929ccd6a66bf75d2b03affc62411e229b70bb89399be9b1b2ce40629 alljoyn-base_tcl-16.04.00.tar.gz diff --git a/features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk b/features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk new file mode 100644 index 00000000..f8ef5a3e --- /dev/null +++ b/features/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# alljoyn-tcl-base +# +################################################################################ + +ALLJOYN_TCL_BASE_REV = 16.04 +ALLJOYN_TCL_BASE_VERSION = $(ALLJOYN_TCL_BASE_REV).00 +ALLJOYN_TCL_BASE_SOURCE = alljoyn-base_tcl-$(ALLJOYN_TCL_BASE_VERSION).tar.gz +ALLJOYN_TCL_BASE_SITE = \ + https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_TCL_BASE_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_TCL_BASE_LICENSE = ISC + +ALLJOYN_TCL_BASE_DEPENDENCIES = host-python host-scons alljoyn-tcl +ALLJOYN_TCL_BASE_INSTALL_STAGING = YES + +# AllJoyn Base Thin Core can be compiled in debug or release mode. By default, +# AllJoyn Base Thin Core is built in debug mode. +ALLJOYN_TCL_BASE_VARIANT = release + +ALLJOYN_TCL_BASE_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + VARIANT=$(ALLJOYN_TCL_BASE_VARIANT) \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + AJTCL_DIST=$(STAGING_DIR) \ + WS=off + +define ALLJOYN_TCL_BASE_BUILD_CMDS + cd $(@D); $(HOST_DIR)/bin/python2 $(SCONS) $(ALLJOYN_TCL_BASE_SCONS_OPTS) +endef + +define ALLJOYN_TCL_BASE_INSTALL_STAGING_CMDS + cp -a $(@D)/dist/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/dist/include/* $(STAGING_DIR)/usr/include/ +endef + +# Only install AllJoyn Base Thin Core dynamic libraries into target directory +define ALLJOYN_TCL_BASE_INSTALL_TARGET_CMDS + cp -a $(@D)/dist/lib/lib*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/alljoyn-tcl/Config.in b/features/buildroot/package/alljoyn-tcl/Config.in new file mode 100644 index 00000000..fe54af08 --- /dev/null +++ b/features/buildroot/package/alljoyn-tcl/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ALLJOYN_TCL + bool "alljoyn-tcl" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The AllJoyn framework defines a common way for devices and + apps to communicate with one another regardless of brands, + categories, transports, and OSes. Developers write + applications that discover nearby devices, and communicate + with each other directly and through the cloud, unleashing + new possibilities in the Internet of Things. + + AllJoyn Thin Core Library (AJTCL) is designed to bring the + benefits of the AllJoyn distributed programming environment + to embedded systems. + + https://allseenalliance.org + +comment "alljoyn-tcl needs a toolchain w/ threads and dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/features/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash b/features/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash new file mode 100644 index 00000000..208d676c --- /dev/null +++ b/features/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 da13614a9db79067937b744a87328fed84d99ba62e3de19b0ddc4a83e4b2447e ajtcl-16.04.00a-src.tar.gz diff --git a/features/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk b/features/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk new file mode 100644 index 00000000..8981ead3 --- /dev/null +++ b/features/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# alljoyn-tcl +# +################################################################################ + +ALLJOYN_TCL_REV = 16.04 +ALLJOYN_TCL_VERSION = $(ALLJOYN_TCL_REV).00a +ALLJOYN_TCL_SOURCE = ajtcl-$(ALLJOYN_TCL_VERSION)-src.tar.gz +ALLJOYN_TCL_SITE = \ + https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_TCL_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_TCL_LICENSE = ISC + +ALLJOYN_TCL_DEPENDENCIES = host-python host-scons +ALLJOYN_TCL_INSTALL_STAGING = YES + +# AllJoyn Thin Core can be compiled in debug or release mode. By default, +# AllJoyn Thin Core is built in debug mode. +ALLJOYN_TCL_VARIANT = release + +ALLJOYN_TCL_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + VARIANT=$(ALLJOYN_TCL_VARIANT) \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" + +define ALLJOYN_TCL_BUILD_CMDS + cd $(@D); $(HOST_DIR)/bin/python2 $(SCONS) $(ALLJOYN_TCL_SCONS_OPTS) +endef + +define ALLJOYN_TCL_INSTALL_STAGING_CMDS + cp -a $(@D)/dist/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/dist/include/* $(STAGING_DIR)/usr/include/ +endef + +# Only install AllJoyn Thin Core dynamic libraries into target directory +define ALLJOYN_TCL_INSTALL_TARGET_CMDS + cp -a $(@D)/dist/lib/lib*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch b/features/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch new file mode 100644 index 00000000..efca67fe --- /dev/null +++ b/features/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch @@ -0,0 +1,56 @@ +From b8e35cf95184ff18bcf923f900439f56c93609db Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 16 Jul 2016 15:23:41 +0200 +Subject: [PATCH] UARTStreamLinux: fix build on sparc + +Some of the serial port highest speed are not defined on SPARC, so +alljoyn should not use them, so we add a patch to fix that. + +From: +https://git.buildroot.org/buildroot/commit/?id=c5e96d8935016456bea342db170ae6a139a8470f + +Fixes: +http://autobuild.buildroot.net/results/e5b/e5b30b5e0d86b44b97410d434b771e1fb7b18de0 + +Signed-off-by: Romain Naour +--- + common/os/posix/UARTStreamLinux.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/common/os/posix/UARTStreamLinux.cc b/common/os/posix/UARTStreamLinux.cc +index c193b70..ae81d9d 100644 +--- a/common/os/posix/UARTStreamLinux.cc ++++ b/common/os/posix/UARTStreamLinux.cc +@@ -111,21 +111,29 @@ QStatus UART(const qcc::String& devName, uint32_t baud, uint8_t databits, const + speed = B2000000; + break; + ++#ifdef B2500000 + case 2500000: + speed = B2500000; + break; ++#endif + ++#ifdef B3000000 + case 3000000: + speed = B3000000; + break; ++#endif + ++#ifdef B3500000 + case 3500000: + speed = B3500000; + break; ++#endif + ++#ifdef B4000000 + case 4000000: + speed = B4000000; + break; ++#endif + + default: + QCC_LogError(ER_BAD_ARG_2, ("Invalid baud %d", baud)); +-- +2.5.5 + diff --git a/features/buildroot/package/alljoyn/Config.in b/features/buildroot/package/alljoyn/Config.in new file mode 100644 index 00000000..781d91bb --- /dev/null +++ b/features/buildroot/package/alljoyn/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_ALLJOYN + bool "alljoyn" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBCAP + help + The AllJoyn framework defines a common way for devices and + apps to communicate with one another regardless of brands, + categories, transports, and OSes. Developers write + applications that discover nearby devices, and communicate + with each other directly and through the cloud, unleashing + new possibilities in the Internet of Things. + + https://allseenalliance.org + +comment "alljoyn needs a toolchain w/ C++, threads, wchar and dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/features/buildroot/package/alljoyn/alljoyn.hash b/features/buildroot/package/alljoyn/alljoyn.hash new file mode 100644 index 00000000..47dd0d4d --- /dev/null +++ b/features/buildroot/package/alljoyn/alljoyn.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 fc437d96cf1213f18048240b5d12a374b31894d21830a0a6ccf562ffa13425d5 alljoyn-16.04.00a-src.tar.gz diff --git a/features/buildroot/package/alljoyn/alljoyn.mk b/features/buildroot/package/alljoyn/alljoyn.mk new file mode 100644 index 00000000..d05705c4 --- /dev/null +++ b/features/buildroot/package/alljoyn/alljoyn.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# alljoyn +# +################################################################################ + +ALLJOYN_REV = 16.04 +ALLJOYN_VERSION = $(ALLJOYN_REV).00a +ALLJOYN_SOURCE = alljoyn-$(ALLJOYN_VERSION)-src.tar.gz +ALLJOYN_SITE = https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_LICENSE = ISC + +ALLJOYN_DEPENDENCIES = host-python host-scons libcap +ALLJOYN_INSTALL_STAGING = YES + +# AllJoyn can be compiled in debug or release mode. By default, AllJoyn is built +# in debug mode. +ALLJOYN_VARIANT = release + +ALLJOYN_BINDINGS = c,cpp + +# By setting openwrt for OS and CPU, AllJoyn cross-compilation can be finely +# tuned through TARGET_xxx options. All TARGET_xxx variables must be defined +# otherwise compilation will fail. +# CROSS_COMPILE option should not be used as it works only for linux/ARM. +ALLJOYN_OS = openwrt +ALLJOYN_CPU = openwrt + +# AllJoyn installs everything in this relative path +ALLJOYN_DISTDIR = build/$(ALLJOYN_OS)/$(ALLJOYN_CPU)/$(ALLJOYN_VARIANT)/dist/ + +ALLJOYN_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + OS=$(ALLJOYN_OS) \ + CPU=$(ALLJOYN_CPU) \ + VARIANT=$(ALLJOYN_VARIANT) \ + BR=off \ + CRYPTO=builtin \ + BINDINGS=$(ALLJOYN_BINDINGS) \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \ + TARGET_LINKFLAGS="$(TARGET_LINKFLAGS)" \ + TARGET_CC="$(TARGET_CC)" \ + TARGET_CXX="$(TARGET_CXX)" \ + TARGET_LD="$(TARGET_LD)" \ + TARGET_LINK="$(TARGET_CXX)" \ + TARGET_AR="$(TARGET_AR)" \ + TARGET_RANLIB="$(TARGET_RANLIB)" \ + TARGET_PATH="$(BR_PATH)" + +define ALLJOYN_BUILD_CMDS + cd $(@D); $(HOST_DIR)/bin/python2 $(SCONS) $(ALLJOYN_SCONS_OPTS) +endef + +define ALLJOYN_INSTALL_STAGING_CMDS + cp -a $(@D)/$(ALLJOYN_DISTDIR)/*/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/$(ALLJOYN_DISTDIR)/*/inc/* $(STAGING_DIR)/usr/include/ +endef + +# Only install alljoyn dynamic libraries into target directory +define ALLJOYN_INSTALL_TARGET_CMDS + cp -a $(@D)/$(ALLJOYN_DISTDIR)/*/lib/lib*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch b/features/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch new file mode 100644 index 00000000..5bf9dd20 --- /dev/null +++ b/features/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch @@ -0,0 +1,60 @@ +From 41c029755502acf01ed634db437ac06d09be6c41 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 13 Apr 2018 09:02:37 +0200 +Subject: [PATCH] Don't use fork() on noMMU platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Thomas Petazzoni +[Jörg: update patch for 1.1.6] +Signed-off-by: Jörg Krause +Upstream: http://mailman.alsa-project.org/pipermail/alsa-devel/2018-November/141376.html +--- + configure.ac | 2 ++ + src/pcm/pcm_direct.c | 10 +++++++++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index cce195ae..0c852434 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -51,6 +51,8 @@ dnl Checks for library functions. + AC_PROG_GCC_TRADITIONAL + AC_CHECK_FUNCS([uselocale]) + ++AC_CHECK_FUNC([fork]) ++ + SAVE_LIBRARY_VERSION + AC_SUBST(LIBTOOL_VERSION_INFO) + +diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c +index 2b07eff9..4dc3ea26 100644 +--- a/src/pcm/pcm_direct.c ++++ b/src/pcm/pcm_direct.c +@@ -431,13 +431,21 @@ int snd_pcm_direct_server_create(snd_pcm_direct_t *dmix) + close(dmix->server_fd); + return ret; + } +- ++ ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret < 0) { + close(dmix->server_fd); + return ret; + } else if (ret == 0) { ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret == 0) + server_job(dmix); + _exit(EXIT_SUCCESS); +-- +2.14.3 + diff --git a/features/buildroot/package/alsa-lib/Config.in b/features/buildroot/package/alsa-lib/Config.in new file mode 100644 index 00000000..995d3791 --- /dev/null +++ b/features/buildroot/package/alsa-lib/Config.in @@ -0,0 +1,78 @@ +comment "alsa-lib needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +menuconfig BR2_PACKAGE_ALSA_LIB + bool "alsa-lib" + # Even though some parts of alsa-lib use threads only when + # available, some PCM plugins use them unconditionally. Since + # the usage of alsa-lib on no-thread systems is pretty + # unlikely, just require thread support globally for alsa-lib. + depends on BR2_TOOLCHAIN_HAS_THREADS + # Temporary until + # https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4913 + # is fixed + select BR2_PACKAGE_ALSA_LIB_PCM + help + The Advanced Linux Sound Architecture (ALSA) provides audio + and MIDI functionality to the Linux operating system. + + http://www.alsa-project.org/ + +if BR2_PACKAGE_ALSA_LIB + +config BR2_PACKAGE_ALSA_LIB_PYTHON + bool "Python support for alsa-lib" + depends on BR2_PACKAGE_PYTHON + help + Add python support for alsa-lib. + Python will be built and libpython will be installed + in the target directory + http://www.alsa-project.org/ + +config BR2_PACKAGE_ALSA_LIB_DEVDIR + string "directory with ALSA device files" + default "/dev/snd" + +config BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS + string "built PCM plugins" + default "all" if BR2_USE_MMU + default "copy linear route mulaw alaw adpcm rate plug multi file null empty share meter hooks lfloat ladspa dmix dshare dsnoop asym iec958 softvol extplug ioplug mmap_emul" if !BR2_USE_MMU + +config BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS + string "built control plugins" + default "all" + +config BR2_PACKAGE_ALSA_LIB_ALOAD + bool "aload" + default y + +config BR2_PACKAGE_ALSA_LIB_MIXER + bool "mixer" + default y + +config BR2_PACKAGE_ALSA_LIB_PCM + bool "pcm" + default y + +config BR2_PACKAGE_ALSA_LIB_RAWMIDI + bool "rawmidi" + default y + +config BR2_PACKAGE_ALSA_LIB_HWDEP + bool "hwdep" + default y + +config BR2_PACKAGE_ALSA_LIB_SEQ + bool "seq" + default y + +config BR2_PACKAGE_ALSA_LIB_ALISP + bool "alisp" + default y + depends on BR2_USE_MMU + +config BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS + bool "old-symbols" + default y + +endif diff --git a/features/buildroot/package/alsa-lib/alsa-lib.hash b/features/buildroot/package/alsa-lib/alsa-lib.hash new file mode 100644 index 00000000..54b2a27d --- /dev/null +++ b/features/buildroot/package/alsa-lib/alsa-lib.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 488373aef5396682f3a411a6d064ae0ad196b9c96269d0bb912fbdeec94b994b alsa-lib-1.1.9.tar.bz2 +sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING +sha256 bfe16cf823bcff261fc6a062c07ee96660e3c39678f42f39a788a68dbc234ced aserver/COPYING diff --git a/features/buildroot/package/alsa-lib/alsa-lib.mk b/features/buildroot/package/alsa-lib/alsa-lib.mk new file mode 100644 index 00000000..fecf7d7c --- /dev/null +++ b/features/buildroot/package/alsa-lib/alsa-lib.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# alsa-lib +# +################################################################################ + +ALSA_LIB_VERSION = 1.1.9 +ALSA_LIB_SOURCE = alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 +ALSA_LIB_SITE = ftp://ftp.alsa-project.org/pub/lib +ALSA_LIB_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (aserver) +ALSA_LIB_LICENSE_FILES = COPYING aserver/COPYING +ALSA_LIB_INSTALL_STAGING = YES +ALSA_LIB_CFLAGS = $(TARGET_CFLAGS) +ALSA_LIB_AUTORECONF = YES +ALSA_LIB_CONF_OPTS = \ + --with-alsa-devdir=$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_DEVDIR)) \ + --with-pcm-plugins="$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS))" \ + --with-ctl-plugins="$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS))" \ + --without-versioned + +# Can't build with static & shared at the same time (1.0.25+) +ifeq ($(BR2_STATIC_LIBS),y) +ALSA_LIB_CONF_OPTS += \ + --enable-shared=no \ + --without-libdl +else +ALSA_LIB_CONF_OPTS += --enable-static=no +endif + +ifneq ($(BR2_PACKAGE_ALSA_LIB_ALOAD),y) +ALSA_LIB_CONF_OPTS += --disable-aload +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) +ALSA_LIB_CONF_OPTS += --disable-mixer +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +ALSA_LIB_CONF_OPTS += --disable-pcm +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_RAWMIDI),y) +ALSA_LIB_CONF_OPTS += --disable-rawmidi +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_HWDEP),y) +ALSA_LIB_CONF_OPTS += --disable-hwdep +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y) +ALSA_LIB_CONF_OPTS += --disable-seq +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_ALISP),y) +ALSA_LIB_CONF_OPTS += --disable-alisp +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS),y) +ALSA_LIB_CONF_OPTS += --disable-old-symbols +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PYTHON),y) +ALSA_LIB_CONF_OPTS += \ + --with-pythonlibs=-lpython$(PYTHON_VERSION_MAJOR) \ + --with-pythonincludes=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +ALSA_LIB_CFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +ALSA_LIB_DEPENDENCIES = python +else +ALSA_LIB_CONF_OPTS += --disable-python +endif + +ALSA_LIB_CONF_ENV = \ + CFLAGS="$(ALSA_LIB_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/alsa-utils/Config.in b/features/buildroot/package/alsa-utils/Config.in new file mode 100644 index 00000000..012f28ae --- /dev/null +++ b/features/buildroot/package/alsa-utils/Config.in @@ -0,0 +1,94 @@ +comment "alsa-utils needs a toolchain w/ threads" + depends on BR2_USE_MMU # fork + depends on !BR2_TOOLCHAIN_HAS_THREADS + +menuconfig BR2_PACKAGE_ALSA_UTILS + bool "alsa-utils" + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + This package contains the command line utilities for the ALSA + project. + + http://www.alsa-project.org/ + +if BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ALSACONF + bool "alsaconf" + +config BR2_PACKAGE_ALSA_UTILS_ACONNECT + bool "aconnect" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ALSACTL + bool "alsactl" + default y + +config BR2_PACKAGE_ALSA_UTILS_ALSALOOP + bool "alsaloop" + +config BR2_PACKAGE_ALSA_UTILS_ALSAMIXER + bool "alsamixer" + default y + depends on BR2_USE_WCHAR + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ALSA_LIB_MIXER + +comment "alsamixer needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_ALSA_UTILS_ALSAUCM + bool "alsaucm" + +config BR2_PACKAGE_ALSA_UTILS_ALSATPLG + bool "alsatplg" + +config BR2_PACKAGE_ALSA_UTILS_AMIDI + bool "amidi" + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + +config BR2_PACKAGE_ALSA_UTILS_AMIXER + bool "amixer" + select BR2_PACKAGE_ALSA_LIB_MIXER + +config BR2_PACKAGE_ALSA_UTILS_APLAY + bool "aplay/arecord" + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_ALSA_UTILS_APLAYMIDI + bool "aplaymidi" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI + bool "arecordmidi" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ASEQDUMP + bool "aseqdump" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ASEQNET + bool "aseqnet" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_BAT + bool "bat" + help + ALSABAT (ALSA Basic Audio Tester) is a simple command-line + utility intended to help automate audio driver and sound + server testing with little human interaction. + + Note that analysis support in alsabat requires fftw single + precision. + +config BR2_PACKAGE_ALSA_UTILS_IECSET + bool "iecset" + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST + bool "speaker-test" + select BR2_PACKAGE_ALSA_LIB_PCM + +endif diff --git a/features/buildroot/package/alsa-utils/alsa-utils.hash b/features/buildroot/package/alsa-utils/alsa-utils.hash new file mode 100644 index 00000000..d354e3cf --- /dev/null +++ b/features/buildroot/package/alsa-utils/alsa-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5ddf2cbddb4bd1a4a2a6492a09c25898b08c3ad64893c3655be14194cf0a213a alsa-utils-1.1.9.tar.bz2 +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/features/buildroot/package/alsa-utils/alsa-utils.mk b/features/buildroot/package/alsa-utils/alsa-utils.mk new file mode 100644 index 00000000..b5d0d752 --- /dev/null +++ b/features/buildroot/package/alsa-utils/alsa-utils.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# alsa-utils +# +################################################################################ + +ALSA_UTILS_VERSION = 1.1.9 +ALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 +ALSA_UTILS_SITE = ftp://ftp.alsa-project.org/pub/utils +ALSA_UTILS_LICENSE = GPL-2.0 +ALSA_UTILS_LICENSE_FILES = COPYING +ALSA_UTILS_INSTALL_STAGING = YES +ALSA_UTILS_DEPENDENCIES = host-pkgconf alsa-lib \ + $(if $(BR2_PACKAGE_NCURSES),ncurses) \ + $(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) \ + $(TARGET_NLS_DEPENDENCIES) +# Regenerate aclocal.m4 to pick the patched +# version of alsa.m4 from alsa-lib +ALSA_UTILS_AUTORECONF = YES +ALSA_UTILS_GETTEXTIZE = YES + +ALSA_UTILS_CONF_ENV = \ + ac_cv_prog_ncurses5_config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) \ + LIBS=$(TARGET_NLS_LIBS) + +ALSA_UTILS_CONF_OPTS = \ + --disable-xmlto \ + --disable-rst2man \ + --with-curses=$(if $(BR2_PACKAGE_NCURSES_WCHAR),ncursesw,ncurses) + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSALOOP),y) +ALSA_UTILS_CONF_OPTS += --enable-alsaloop +else +ALSA_UTILS_CONF_OPTS += --disable-alsaloop +endif + +ifneq ($(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER),y) +ALSA_UTILS_CONF_OPTS += --disable-alsamixer --disable-alsatest +endif + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) +ALSA_UTILS_CONF_OPTS += --enable-bat +# Analysis support requires fftw single precision +ALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_SINGLE),fftw-single) +else +ALSA_UTILS_CONF_OPTS += --disable-bat +endif + +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSALOOP) += usr/bin/alsaloop +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER) += usr/bin/alsamixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSATPLG) += usr/bin/alsatplg +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIDI) += usr/bin/amidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIXER) += usr/bin/amixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAY) += usr/bin/aplay usr/bin/arecord +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_BAT) += usr/bin/alsabat +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_IECSET) += usr/bin/iecset +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ACONNECT) += usr/bin/aconnect +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAUCM) += usr/bin/alsaucm +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAYMIDI) += usr/bin/aplaymidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test + +define ALSA_UTILS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/var/lib/alsa + for i in $(ALSA_UTILS_TARGETS_y); do \ + $(INSTALL) -D -m 755 $(STAGING_DIR)/$$i $(TARGET_DIR)/$$i || exit 1; \ + done + if [ -x "$(TARGET_DIR)/usr/bin/speaker-test" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \ + mkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/speaker-test/* $(TARGET_DIR)/usr/share/alsa/speaker-test/; \ + cp -rdpf $(STAGING_DIR)/usr/share/sounds/alsa/* $(TARGET_DIR)/usr/share/sounds/alsa/; \ + fi + if [ -x "$(TARGET_DIR)/usr/sbin/alsactl" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/; \ + rm -rf $(TARGET_DIR)/usr/share/alsa/; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/ $(TARGET_DIR)/usr/share/alsa/; \ + fi +endef + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSACTL)$(BR2_INIT_SYSTEMD),yy) +ALSA_UTILS_DEPENDENCIES += systemd +ALSA_UTILS_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +define ALSA_UTILS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/alsactl/alsa-restore.service \ + $(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service + $(INSTALL) -D -m 0644 $(@D)/alsactl/alsa-state.service \ + $(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/sound.target.wants + ln -sf ../../../../lib/systemd/system/alsa-restore.service \ + $(TARGET_DIR)/etc/systemd/system/sound.target.wants/alsa-restore.service + ln -sf ../../../../lib/systemd/system/alsa-state.service \ + $(TARGET_DIR)/etc/systemd/system/sound.target.wants/alsa-state.service +endef +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/alsamixergui/0001-misc-fixes.patch b/features/buildroot/package/alsamixergui/0001-misc-fixes.patch new file mode 100644 index 00000000..6b498dad --- /dev/null +++ b/features/buildroot/package/alsamixergui/0001-misc-fixes.patch @@ -0,0 +1,40 @@ +--- a/configure.in ++++ b/configure.in +@@ -11,7 +11,10 @@ + AC_PROG_LN_S + + dnl Checks for libraries. +-AC_CHECK_LIB(fltk,numericsort,,AC_MSG_ERROR("missing fltk")) ++AC_CHECK_LIB(fltk,numericsort,, ++AC_CHECK_LIB(fltk,fl_numericsort,, ++AC_MSG_ERROR("missing fltk")) ++) + AM_PATH_ALSA(0.9.0) + + dnl Checks for header files. +--- a/src/alsamixer.cxx 2007-10-21 12:39:11.000000000 -0400 ++++ b/src/alsamixer.cxx 2007-10-21 12:49:10.000000000 -0400 +@@ -2081,8 +2081,8 @@ static void + mixer_signal_handler (int signal) + { + if (signal != SIGSEGV) +- mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0); +- else ++ // mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0); ++ //else + { + fprintf (stderr, "\nSegmentation fault.\n"); + _exit (11); +--- a/src/alsamixer.cxx 2006-01-16 12:41:54.000000000 -0600 ++++ b/src/alsamixer.cxx 2006-01-16 12:45:44.000000000 -0600 +@@ -653,8 +653,8 @@ + if (vleft >= 0 && vright >= 0) { + if (joined) { + #ifdef ALSAMIXER_GUI +- for (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; +- snd_mixer_selem_channel_id_t(int(chn)++)) ++ for (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; ++ snd_mixer_selem_channel_id_t(int(chn)+1)) + #else + for (chn = 0; chn < SND_MIXER_SCHN_LAST; chn++) + #endif diff --git a/features/buildroot/package/alsamixergui/Config.in b/features/buildroot/package/alsamixergui/Config.in new file mode 100644 index 00000000..2016a28a --- /dev/null +++ b/features/buildroot/package/alsamixergui/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ALSAMIXERGUI + bool "alsamixergui" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fltk fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_FLTK + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + A nice GUI mixer for Alsa using fltk + + http://www.iua.upf.es/~mdeboer/projects/alsamixergui/ + +comment "alsamixergui needs a toolchain w/ C++, threads" + depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/alsamixergui/alsamixergui.hash b/features/buildroot/package/alsamixergui/alsamixergui.hash new file mode 100644 index 00000000..5cea490a --- /dev/null +++ b/features/buildroot/package/alsamixergui/alsamixergui.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui/alsamixergui_0.9.0rc2-1-9.dsc +md5 af942a41b81ba27e2e4d0a1e1ab0decb alsamixergui_0.9.0rc2-1.orig.tar.gz diff --git a/features/buildroot/package/alsamixergui/alsamixergui.mk b/features/buildroot/package/alsamixergui/alsamixergui.mk new file mode 100644 index 00000000..24e2497f --- /dev/null +++ b/features/buildroot/package/alsamixergui/alsamixergui.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# alsamixergui +# +################################################################################ + +ALSAMIXERGUI_VERSION = 0.9.0rc2-1 +ALSAMIXERGUI_SOURCE = alsamixergui_$(ALSAMIXERGUI_VERSION).orig.tar.gz +ALSAMIXERGUI_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui +ALSAMIXERGUI_LICENSE = GPL-2.0+ +ALSAMIXERGUI_LICENSE_FILES = debian/copyright +ALSAMIXERGUI_AUTORECONF = YES + +ALSAMIXERGUI_CONF_ENV = \ + ac_cv_lib_fltk_numericsort=yes \ + ac_cv_lib_fltk_fl_numericsort=yes \ + ac_cv_lib_asound_snd_ctl_open=yes + +ALSAMIXERGUI_DEPENDENCIES = fltk alsa-lib + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch b/features/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch new file mode 100644 index 00000000..e2f29284 --- /dev/null +++ b/features/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch @@ -0,0 +1,23 @@ +Makefile: do not force the release build on install + +If we did build any of the other targets, and are just interested +in those and not the release one, we still want to use the 'install' +rule, but not build (and install) the release libraries. + +So, remove the dependency on the 'release' target from the 'install' +rule. + +Signed-off-by: "Yann E. MORIN" + +diff -durN am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile +--- am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile 2014-08-18 00:24:36.000000000 +0200 ++++ am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile 2014-10-12 11:39:17.144682697 +0200 +@@ -38,7 +38,7 @@ + + all: debug release sodebug sorelease + +-install: release ++install: + install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + install -m 0755 -d $(DESTDIR)$(PREFIX)/include + install -m 0644 $(LIBDIR)/* $(DESTDIR)$(PREFIX)/lib diff --git a/features/buildroot/package/am335x-pru-package/Config.in b/features/buildroot/package/am335x-pru-package/Config.in new file mode 100644 index 00000000..66d77733 --- /dev/null +++ b/features/buildroot/package/am335x-pru-package/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_AM335X_PRU_PACKAGE + bool "am335x-pru-package" + depends on BR2_arm # only relevant for TI am335x + help + TI AM335X PRU program loader + + https://github.com/beagleboard/am335x_pru_package diff --git a/features/buildroot/package/am335x-pru-package/am335x-pru-package.hash b/features/buildroot/package/am335x-pru-package/am335x-pru-package.hash new file mode 100644 index 00000000..36671b48 --- /dev/null +++ b/features/buildroot/package/am335x-pru-package/am335x-pru-package.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2a902f825ccc1885c5dccd83e1ccee104aa30e601c9964a24f49459f76f674b9 am335x-pru-package-5f374ad57cc195f28bf5e585c3d446aba6ee7096.tar.gz diff --git a/features/buildroot/package/am335x-pru-package/am335x-pru-package.mk b/features/buildroot/package/am335x-pru-package/am335x-pru-package.mk new file mode 100644 index 00000000..24a5df48 --- /dev/null +++ b/features/buildroot/package/am335x-pru-package/am335x-pru-package.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# am335x-pru-package +# +################################################################################ + +AM335X_PRU_PACKAGE_VERSION = 5f374ad57cc195f28bf5e585c3d446aba6ee7096 +AM335X_PRU_PACKAGE_SITE = $(call github,beagleboard,am335x_pru_package,$(AM335X_PRU_PACKAGE_VERSION)) +AM335X_PRU_PACKAGE_LICENSE = BSD-3-Clause +AM335X_PRU_PACKAGE_LICENSE_FILES = pru_sw/utils/LICENCE.txt +AM335X_PRU_PACKAGE_DEPENDENCIES = host-am335x-pru-package +AM335X_PRU_PACKAGE_INSTALL_STAGING = YES + +# The default 'all' rule builds everything, when we just need the library +ifeq ($(BR2_ENABLE_DEBUG),y) +AM335X_PRU_PACKAGE_MAKE_TARGET = debug $(if $(BR2_STATIC_LIBS),,sodebug) +else +AM335X_PRU_PACKAGE_MAKE_TARGET = release $(if $(BR2_STATIC_LIBS),,sorelease) +endif + +define AM335X_PRU_PACKAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" \ + -C $(@D)/pru_sw/app_loader/interface $(AM335X_PRU_PACKAGE_MAKE_TARGET) +endef + +# 'install' installs whatever was built, and our patch removes the dependency +# on the release build, so we can use it to install whatever we built above. +define AM335X_PRU_PACKAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) DESTDIR="$(STAGING_DIR)" PREFIX="/usr" \ + -C $(@D)/pru_sw/app_loader/interface install +endef + +define AM335X_PRU_PACKAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" \ + -C $(@D)/pru_sw/app_loader/interface install +endef + +# The debug libraries are named differently than the release ones, +# so we must provide a symlink to still be able to link with them. +ifeq ($(BR2_ENABLE_DEBUG),y) + +define AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC + ln -sf libprussdrvd.a $(STAGING_DIR)/usr/lib/libprussdrv.a +endef +AM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC + +ifeq ($(BR2_STATIC_LIBS),) + +define AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED + ln -sf libprussdrvd.so $(STAGING_DIR)/usr/lib/libprussdrv.so +endef +AM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED + +define AM335X_PRU_PACKAGE_LN_DEBUG_TARGET + ln -sf libprussdrvd.so $(TARGET_DIR)/usr/lib/libprussdrv.so +endef +AM335X_PRU_PACKAGE_POST_INSTALL_TARGET_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_TARGET + +endif # !STATIC + +endif # DEBUG + +define HOST_AM335X_PRU_PACKAGE_BUILD_CMDS + cd $(@D)/pru_sw/utils/pasm_source; \ + $(HOSTCC) -Wall -D_UNIX_ pasm.c pasmpp.c pasmexp.c pasmop.c \ + pasmdot.c pasmstruct.c pasmmacro.c path_utils.c -o ../pasm +endef + +define HOST_AM335X_PRU_PACKAGE_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/pru_sw/utils/pasm $(HOST_DIR)/bin/pasm +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/am33x-cm3/0001-fix-makefile.patch b/features/buildroot/package/am33x-cm3/0001-fix-makefile.patch new file mode 100644 index 00000000..f3cdb5e2 --- /dev/null +++ b/features/buildroot/package/am33x-cm3/0001-fix-makefile.patch @@ -0,0 +1,30 @@ +Enforce correct -march option + +Buildroot uses a normal ARM compiler to build the AM33X CM3 firmware +(which runs on a Cortex-M3 processor), but Buildroot will have a +default -march value that doesn't necessarily match the one needed for +Cortex-M3, leading to build failures (gcc complains that the +-mcpu=cortex-m3 option being passed is not compatible with the +selected -march). + +Fix this by explicitly indicating -march=armv7-m. + +Signed-off-by: Thomas Petazzoni + +Updated the patch to the latest version of the Makefile + +Signed-off-by: Anders Darander + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -13,7 +13,7 @@ SRCDIR = src + BINDIR = bin + + INCLUDES = $(SRCDIR)/include +-CFLAGS =-mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ ++CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ + -Werror-implicit-function-declaration -Wstrict-prototypes \ + -Wdeclaration-after-statement -fno-delete-null-pointer-checks \ + -Wempty-body -fno-strict-overflow -g -I$(INCLUDES) -O2 diff --git a/features/buildroot/package/am33x-cm3/Config.in b/features/buildroot/package/am33x-cm3/Config.in new file mode 100644 index 00000000..d33dfaa6 --- /dev/null +++ b/features/buildroot/package/am33x-cm3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_AM33X_CM3 + bool "am33x-cm3" + depends on BR2_arm # only relevant for TI am335x + depends on BR2_BINFMT_ELF # assumes the compiler builds ELF file + help + Cortex-M3 binary blob for suspend-resume on am335x + + http://arago-project.org/git/projects/am33x-cm3.git diff --git a/features/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load b/features/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load new file mode 100644 index 00000000..56c17b33 --- /dev/null +++ b/features/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load @@ -0,0 +1,6 @@ +#!/bin/sh + +# Load the PM CM3 firmware +echo 1 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading +cat /lib/firmware/am335x-pm-firmware.bin > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/data +echo 0 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading diff --git a/features/buildroot/package/am33x-cm3/am33x-cm3.hash b/features/buildroot/package/am33x-cm3/am33x-cm3.hash new file mode 100644 index 00000000..bb8c2f66 --- /dev/null +++ b/features/buildroot/package/am33x-cm3/am33x-cm3.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a722098b362f58f4dfb2a7c30afd604424d435b3d5ebe6ebf5d76ad942f796d0 am33x-cm3-11107db2f1e9e58ee75d4fe9cc38423c9a6e4365.tar.gz diff --git a/features/buildroot/package/am33x-cm3/am33x-cm3.mk b/features/buildroot/package/am33x-cm3/am33x-cm3.mk new file mode 100644 index 00000000..629a8323 --- /dev/null +++ b/features/buildroot/package/am33x-cm3/am33x-cm3.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# am33x-cm3 +# +################################################################################ + +# This should correpsond to v05.00.00.02 +AM33X_CM3_VERSION = 11107db2f1e9e58ee75d4fe9cc38423c9a6e4365 +AM33X_CM3_SITE = http://arago-project.org/git/projects/am33x-cm3.git +AM33X_CM3_SITE_METHOD = git +AM33X_CM3_LICENSE = TI Publicly Available Software License +AM33X_CM3_LICENSE_FILES = License.txt + +# The build command below will use the standard cross-compiler (normally +# build for Cortex-A8, to build the FW for the Cortex-M3. +define AM33X_CM3_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all +endef + +# Not all of the firmware files are used +define AM33X_CM3_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/bin/am335x-pm-firmware.bin \ + $(TARGET_DIR)/lib/firmware/am335x-pm-firmware.bin +endef + +define AM33X_CM3_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/am33x-cm3/S93-am335x-pm-firmware-load \ + $(TARGET_DIR)/etc/init.d/S93-am335x-pm-firmware-load +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch b/features/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch new file mode 100644 index 00000000..a0db9621 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch @@ -0,0 +1,45 @@ +From c35482bc0cc56b40263b74c3e58e42be867fd9f2 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:41:46 +0200 +Subject: [PATCH] Add support for Linux 4.0 + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 5 +++++ + common/lib/modules/fglrx/build_mod/kcl_str.c | 4 ++++ + 2 files changed, 9 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 677565d..6017e89 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -285,6 +285,11 @@ MODULE_DEVICE_TABLE(pci, fglrx_pci_table); + + MODULE_INFO(supported, "external"); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) ++#define read_cr4() __read_cr4() ++#define write_cr4(cr4) __write_cr4(cr4) ++#endif ++ + /* globals constants */ + const char* KCL_SYSINFO_OsVersionString = UTS_RELEASE; + const unsigned int KCL_SYSINFO_PageSize = PAGE_SIZE; +diff --git a/common/lib/modules/fglrx/build_mod/kcl_str.c b/common/lib/modules/fglrx/build_mod/kcl_str.c +index 2d89eb0..bacdb69 100755 +--- a/common/lib/modules/fglrx/build_mod/kcl_str.c ++++ b/common/lib/modules/fglrx/build_mod/kcl_str.c +@@ -42,6 +42,10 @@ + #include "kcl_type.h" + #include "kcl_str.h" + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) ++#define strnicmp strncasecmp ++#endif ++ + /** \brief Fill memory with a constant byte + * \param s Pointer to memory + * \param c Initializing value +-- +2.8.1 + diff --git a/features/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch b/features/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch new file mode 100644 index 00000000..cc95916e --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch @@ -0,0 +1,31 @@ +From e9c8ccb4c8c842042542b792c51f9a7ec6c85e06 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:44:59 +0200 +Subject: [PATCH] Add support for Linux 4.1 + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 6017e89..94778f1 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -3508,10 +3508,12 @@ int ATI_API_CALL KCL_InstallInterruptHandler( + KCL_PUB_InterruptHandlerWrap, + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) + ((useMSI) ? (SA_INTERRUPT) : (SA_SHIRQ)), +-#else ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) + //when MSI enabled. keep irq disabled when calling the action handler, + //exclude this IRQ from irq balancing (only on one CPU) + ((useMSI) ? (IRQF_DISABLED) : (IRQF_SHARED)), ++#else ++ ((useMSI) ? (0x0) : (IRQF_SHARED)), + #endif + dev_name, + context); +-- +2.8.1 + diff --git a/features/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch b/features/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch new file mode 100644 index 00000000..74581629 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch @@ -0,0 +1,121 @@ +From e2e6c2dac2a0311a022208dd289374b832538329 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Tue, 14 Jul 2015 12:56:37 +0200 +Subject: [PATCH] Add support for Linux 4.2 + +Deal with the FPU code renaming + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 38 ++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 94778f1..749ea51 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -191,9 +191,17 @@ + #include + #include + #include ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + #include "asm/i387.h" ++#else ++#include ++#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + #include ++#else ++#include ++#endif + #endif + + #include "firegl_public.h" +@@ -1711,6 +1719,9 @@ void ATI_API_CALL KCL_SetCurrentProcessState(KCL_ENUM_ProcessState state) + + #if defined(__i386__) + #ifndef __HAVE_ARCH_CMPXCHG ++#ifndef __xg ++#define __xg(x) ((volatile long *)(x)) ++#endif + static inline + unsigned long __fgl_cmpxchg(volatile void *ptr, unsigned long old, + unsigned long new, int size) +@@ -1747,7 +1758,11 @@ unsigned long ATI_API_CALL kcl__cmpxchg(volatile void *ptr, unsigned long old, + unsigned long new, int size) + { + #ifndef __HAVE_ARCH_CMPXCHG ++#if defined(__i386__) + return __fgl_cmpxchg(ptr,old,new,size); ++#elif defined(__x86_64__) ++ return cmpxchg((unsigned long*)ptr,old,new); ++#endif + #else + /* On kernel version 2.6.34 passing a variable or unsupported size + * argument to the __cmpxchg macro causes the default-clause of a +@@ -6443,21 +6458,36 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + struct fpu *fpu = &tsk->thread.fpu; + + if(static_cpu_has(X86_FEATURE_XSAVE)) { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + fpu_xsave(fpu); + if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP)) ++#else ++ copy_xregs_to_kernel(&fpu->state.xsave); ++ if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP)) ++#endif + return 1; + } else if (static_cpu_has(X86_FEATURE_FXSR)) { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + fpu_fxsave(fpu); ++#else ++ copy_fxregs_to_kernel(fpu); ++#endif + } else { + asm volatile("fnsave %[fx]; fwait" ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + : [fx] "=m" (fpu->state->fsave)); ++#else ++ : [fx] "=m" (fpu->state.fsave)); ++#endif + return 0; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES)) { + asm volatile("fnclex"); + return 0; + } ++#endif + return 1; + } + #endif +@@ -6469,8 +6499,12 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + void ATI_API_CALL KCL_fpu_begin(void) + { + #ifdef CONFIG_X86_64 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + kernel_fpu_begin(); + #else ++ __kernel_fpu_begin(); ++#endif ++#else + #ifdef TS_USEDFPU + struct thread_info *cur_thread = current_thread_info(); + struct task_struct *cur_task = get_current(); +@@ -6515,7 +6549,11 @@ void ATI_API_CALL KCL_fpu_begin(void) + */ + void ATI_API_CALL KCL_fpu_end(void) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + kernel_fpu_end(); ++#else ++ __kernel_fpu_end(); ++#endif + } + + /** Create new directory entry under "/proc/...." +-- +2.8.1 + diff --git a/features/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch b/features/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch new file mode 100644 index 00000000..4d375b8a --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch @@ -0,0 +1,33 @@ +From 7120f00015570a2e4d9b6532731960d509c71cba Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:48:30 +0200 +Subject: [PATCH] Use fpregs_active instead of has_fpu + +This is for Linux 4.2 + +Thanks to Tim Gardner for the patch. + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 749ea51..4c1f9a5 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -6528,7 +6528,11 @@ void ATI_API_CALL KCL_fpu_begin(void) + /* The thread structure is changed with the commit below for kernel 3.3: + * https://github.com/torvalds/linux/commit/7e16838d94b566a17b65231073d179bc04d590c8 + */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) ++ if (cur_task->thread.fpu.fpregs_active) ++#else + if (cur_task->thread.fpu.has_fpu) ++#endif + #else + if (cur_task->thread.has_fpu) + #endif +-- +2.8.1 + diff --git a/features/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch b/features/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch new file mode 100644 index 00000000..c9513ef1 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch @@ -0,0 +1,79 @@ +From eb703737be5c91c1a0817351db8ec152c523c85d Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:49:46 +0200 +Subject: [PATCH] Use a local copy of copy_xregs_to_kernel + +This is needed for Linux 4.2. + +Thanks to Tim Gardner for the patch. + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 44 +++++++++++++++++++++- + 1 file changed, 43 insertions(+), 1 deletion(-) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 4c1f9a5..bb67bba 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -6443,6 +6443,48 @@ int ATI_API_CALL kcl_sscanf(const char * buf, const char * fmt, ...) + return i; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) ++/* ++ * Save processor xstate to xsave area. ++ */ ++static void _copy_xregs_to_kernel(struct xregs_state *xstate) ++{ ++ u64 mask = -1; ++ u32 lmask = mask; ++ u32 hmask = mask >> 32; ++ int err = 0; ++ ++ /*WARN_ON(!alternatives_patched);*/ ++ ++ /* ++ * If xsaves is enabled, xsaves replaces xsaveopt because ++ * it supports compact format and supervisor states in addition to ++ * modified optimization in xsaveopt. ++ * ++ * Otherwise, if xsaveopt is enabled, xsaveopt replaces xsave ++ * because xsaveopt supports modified optimization which is not ++ * supported by xsave. ++ * ++ * If none of xsaves and xsaveopt is enabled, use xsave. ++ */ ++ alternative_input_2( ++ "1:"XSAVE, ++ XSAVEOPT, ++ X86_FEATURE_XSAVEOPT, ++ XSAVES, ++ X86_FEATURE_XSAVES, ++ [xstate] "D" (xstate), "a" (lmask), "d" (hmask) : ++ "memory"); ++ asm volatile("2:\n\t" ++ xstate_fault(err) ++ : "0" (err) ++ : "memory"); ++ ++ /* We should never fault when copying to a kernel buffer: */ ++ WARN_ON_FPU(err); ++} ++#endif ++ + /** \brief Generate UUID + * \param buf pointer to the generated UUID + * \return None +@@ -6462,7 +6504,7 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + fpu_xsave(fpu); + if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP)) + #else +- copy_xregs_to_kernel(&fpu->state.xsave); ++ _copy_xregs_to_kernel(&fpu->state.xsave); + if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP)) + #endif + return 1; +-- +2.8.1 + diff --git a/features/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch b/features/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch new file mode 100644 index 00000000..104e2c59 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch @@ -0,0 +1,78 @@ +From 54b230e26a1889c08507e791ab043f8a4b4ff771 Mon Sep 17 00:00:00 2001 +From: Romain Perier +Date: Thu, 7 Jul 2016 14:40:53 +0200 +Subject: [PATCH] Add support for Linux 4.4 + +It fixes various things like the use of seq_printf because its API +changed. It also replaces the call to mtrr_add and mtrr_del by +arch_phys_wc_add and arch_phys_wc_del because these symbols are +no longer exported for Linux >= 4.3.x. + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index bb67bba..b4b2d30 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -636,9 +636,16 @@ static int firegl_major_proc_read(struct seq_file *m, void* data) + + len = snprintf(buf, request, "%d\n", major); + #else ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0) ++ seq_printf(m, "%d\n", major); ++ len = 0; ++#else + len = seq_printf(m, "%d\n", major); + #endif + ++#endif ++ + KCL_DEBUG1(FN_FIREGL_PROC, "return len=%i\n",len); + + return len; +@@ -3432,7 +3439,11 @@ int ATI_API_CALL KCL_MEM_MTRR_Support(void) + int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size) + { + #ifdef CONFIG_MTRR ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0) ++ return arch_phys_wc_add(base, size); ++#else + return mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1); ++#endif + #else /* !CONFIG_MTRR */ + return -EPERM; + #endif /* !CONFIG_MTRR */ +@@ -3441,7 +3452,12 @@ int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size + int ATI_API_CALL KCL_MEM_MTRR_DeleteRegion(int reg, unsigned long base, unsigned long size) + { + #ifdef CONFIG_MTRR ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0) ++ arch_phys_wc_del(reg); ++ return 0; ++#else + return mtrr_del(reg, base, size); ++#endif + #else /* !CONFIG_MTRR */ + return -EPERM; + #endif /* !CONFIG_MTRR */ +@@ -6505,8 +6521,13 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP)) + #else + _copy_xregs_to_kernel(&fpu->state.xsave); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0) ++ if (!(fpu->state.xsave.header.xfeatures & XFEATURE_MASK_FP)) ++#else + if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP)) + #endif ++ ++#endif + return 1; + } else if (static_cpu_has(X86_FEATURE_FXSR)) { + #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) +-- +2.8.1 + diff --git a/features/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch b/features/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch new file mode 100644 index 00000000..d0094b09 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch @@ -0,0 +1,54 @@ +Author: Manuel Rüger +Date: Sat, 2 Jan 2016 17:24:30 +0100 +URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/x11-drivers/ati-drivers/files?id=179aa11ed2f1bd79cf1b190263c3a7a07279fc50 + +Signed-off-by: Romain Perier +--- +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-09-18 23:57:02.000000000 -0400 ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-09-18 23:57:11.000000000 -0400 +@@ -136,7 +136,6 @@ + #include + #include + #include +-#include // for flush_tlb_page + #include + #ifdef CONFIG_MTRR + #include +@@ -251,6 +250,26 @@ + #define WRITE_CR4(x) write_cr4(x) + #endif + ++#define __flush_tlb_one(addr) asm volatile("invlpg (%0)" ::"r" (addr) : "memory") ++#define __flush_tlb() native_write_cr3(native_read_cr3()) ++ ++static inline void __flush_tlb_all(void) ++{ ++ if (cpu_has_pge) ++ { ++ unsigned long flags, cr4; ++ raw_local_irq_save(flags); ++ cr4 = native_read_cr4(); ++ native_write_cr4(cr4 & ~X86_CR4_PGE); ++ native_write_cr4(cr4); ++ raw_local_irq_restore(flags); ++ } ++ else ++ { ++ __flush_tlb(); ++ } ++} ++ + // ============================================================ + /* globals */ + +--- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2015-09-19 00:43:35.000000000 -0400 ++++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2015-09-19 00:43:48.000000000 -0400 +@@ -868,7 +868,7 @@ void ATI_API_CALL KCL_ACPI_No_Hotplug(vo + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0) + if(pdev) + { +-#if (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8)) ++#if 0 && (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8)) + pci_ignore_hotplug(pdev); + #else + pdev->ignore_hotplug = 1; diff --git a/features/buildroot/package/amd-catalyst/20-fglrx.conf b/features/buildroot/package/amd-catalyst/20-fglrx.conf new file mode 100644 index 00000000..d83ff582 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/20-fglrx.conf @@ -0,0 +1,4 @@ +Section "Device" + Identifier "AMD Radeon GPU" + Driver "fglrx" +EndSection diff --git a/features/buildroot/package/amd-catalyst/Config.in b/features/buildroot/package/amd-catalyst/Config.in new file mode 100644 index 00000000..1a5bf029 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/Config.in @@ -0,0 +1,65 @@ +comment "amd-catalyst needs a glibc toolchain" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_AMD_CATALYST + bool "amd-catalyst" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The binary-only driver blob for AMD cards. + This driver supports AMD Radeon HD 5xxx and newer graphics + cards. + + http://www.amd.com/ + +if BR2_PACKAGE_AMD_CATALYST + +comment "amd-catalyst X.org drivers needs a modular Xorg server <= 1.17" + depends on !BR2_PACKAGE_XORG7 \ + || !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR \ + || !BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + +config BR2_PACKAGE_AMD_CATALYST_XORG + bool "X.org drivers" + default y + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + select BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX + select BR2_PACKAGE_ACPID # runtime + select BR2_PACKAGE_XLIB_LIBX11 # runtime + select BR2_PACKAGE_XLIB_LIBXEXT # runtime + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE # runtime + # This package does not have standard GL headers + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_HAS_LIBGL + +if BR2_PACKAGE_AMD_CATALYST_XORG + +config BR2_PACKAGE_PROVIDES_LIBGL + default "amd-catalyst" + +config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS + bool "command-line configuration tools" + help + Build and install the AMD command line tools. + +endif + +comment "amd-catalyst kernel module needs a kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_AMD_CATALYST_MODULE + bool "fglrx kernel module" + depends on BR2_LINUX_KERNEL + help + Builds and install the fglrx kernel module + +config BR2_PACKAGE_AMD_CATALYST_OPENCL + bool "OpenCL support" + help + Installs the OpenCL binary blobs and the ICD profile + for GPGPU computing. + +endif # BR2_PACKAGE_AMD_CATALYST diff --git a/features/buildroot/package/amd-catalyst/amd-catalyst.hash b/features/buildroot/package/amd-catalyst/amd-catalyst.hash new file mode 100644 index 00000000..9f9b0a31 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/amd-catalyst.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 bf3e6e7d5c51db3d075410a3f116f865b82823debc1d66698d187249feec6a91 amd-catalyst-15.9-linux-installer-15.201.1151-x86.x86_64.zip diff --git a/features/buildroot/package/amd-catalyst/amd-catalyst.mk b/features/buildroot/package/amd-catalyst/amd-catalyst.mk new file mode 100644 index 00000000..fe8aa850 --- /dev/null +++ b/features/buildroot/package/amd-catalyst/amd-catalyst.mk @@ -0,0 +1,162 @@ +################################################################################ +# +# amd-catalyst +# +################################################################################ + +AMD_CATALYST_VERSION = 15.9 +AMD_CATALYST_VERBOSE_VER = 15.201.1151 +AMD_CATALYST_SITE = http://www2.ati.com/drivers/linux +AMD_CATALYST_DL_OPTS = --referer='http://support.amd.com' +AMD_CATALYST_SOURCE = amd-catalyst-$(AMD_CATALYST_VERSION)-linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.zip +AMD_CATALYST_LICENSE = AMD Software License +AMD_CATALYST_LICENSE_FILES = LICENSE.TXT +AMD_CATALYST_INSTALL_STAGING = YES +AMD_CATALYST_SUFFIX = $(if $(BR2_x86_64),_64) +AMD_CATALYST_ARCH_DIR = $(@D)/arch/x86$(AMD_CATALYST_SUFFIX) +AMD_CATALYST_LIB_SUFFIX = $(if $(BR2_x86_64),64) + +define AMD_CATALYST_EXTRACT_CMDS + unzip -q $(AMD_CATALYST_DL_DIR)/$(AMD_CATALYST_SOURCE) -d $(@D) + $(SHELL) $(@D)/AMD-Catalyst-$(AMD_CATALYST_VERSION)-Linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.run --extract $(@D) +endef + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_MODULE),y) +AMD_CATALYST_MODULE_SUBDIRS = common/lib/modules/fglrx/build_mod/2.6.x +AMD_CATALYST_MODULE_MAKE_OPTS = \ + CFLAGS_MODULE="-DCOMPAT_ALLOC_USER_SPACE=arch_compat_alloc_user_space" + +define AMD_CATALYST_PREPARE_MODULE + # The Makefile expects to have source in the folder 2.6.x + cp $(@D)/common/lib/modules/fglrx/build_mod/*.{c,h} \ + $(@D)/common/lib/modules/fglrx/build_mod/2.6.x + # This static lib is required during the link + cp $(@D)/arch/x86$(AMD_CATALYST_SUFFIX)/lib/modules/fglrx/build_mod/libfglrx_ip.a \ + $(@D)/common/lib/modules/fglrx/build_mod/2.6.x +endef + +AMD_CATALYST_POST_PATCH_HOOKS += AMD_CATALYST_PREPARE_MODULE + +$(eval $(kernel-module)) +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_OPENCL),y) + +AMD_CATALYST_OCL_SUFFIX = $(if $(BR2_x86_64),64,32) +AMD_CATALYST_OPENCL_FILES = \ + libOpenCL.so.1 \ + libaticalcl.so \ + libamdocl$(AMD_CATALYST_OCL_SUFFIX).so \ + libamdocl12cl$(AMD_CATALYST_OCL_SUFFIX).so + +define AMD_CATALYST_INSTALL_OPENCL + $(foreach f,$(AMD_CATALYST_OPENCL_FILES), \ + $(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/$(f) $(TARGET_DIR)/usr/lib/$(f) + ) + ln -sf libOpenCL.so.1 \ + $(TARGET_DIR)/usr/lib/libOpenCL.so + $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/bin/clinfo \ + $(TARGET_DIR)/usr/bin/clinfo + $(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd \ + $(TARGET_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd +endef + +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_XORG), y) + +# GL headers are needed by any package that wants to use libgl, so they need to +# be installed before any user of it. The only way to do so is to have this +# package depends on mesa3d-headers. +AMD_CATALYST_DEPENDENCIES += mesa3d-headers +AMD_CATALYST_PROVIDES = libgl +AMD_CATALYST_X11R6_LIB = $(@D)/xpic$(if $(BR2_x86_64),_64a)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX) + +define AMD_CATALYST_INSTALL_GL_LIBS + $(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/fglrx/fglrx-libGL.so.1.2 \ + $(1)/usr/lib + ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1.2 + ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1 + ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so +endef + +define AMD_CATALYST_INSTALL_STAGING_XORG + $(call AMD_CATALYST_INSTALL_GL_LIBS,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 package/amd-catalyst/gl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/gl.pc +endef + +AMD_CATALYST_XORG_DRIVERS_FILES = modules/amdxmm.so \ + modules/drivers/fglrx_drv.so \ + modules/linux/libfglrxdrm.so + +define AMD_CATALYST_INSTALL_XORG + # Xorg drivers + $(foreach f,$(AMD_CATALYST_XORG_DRIVERS_FILES), \ + $(INSTALL) -D -m 0755 $(AMD_CATALYST_X11R6_LIB)/$(f) \ + $(TARGET_DIR)/usr/lib/xorg/$(f) + ) + + # Xorg is not able to detect the driver automatically + $(INSTALL) -D -m 0644 package/amd-catalyst/20-fglrx.conf \ + $(TARGET_DIR)/etc/X11/xorg.conf.d/20-fglrx.conf + + # Common files: containing binary profiles about GPUs, + # required by the fglrx_drv xorg driver + $(INSTALL) -d $(TARGET_DIR)/etc/ati + $(INSTALL) -m 0644 $(@D)/common/etc/ati/* $(TARGET_DIR)/etc/ati/ + + # DRI and GLX xorg modules: by default DRI is activated, + # these modules are required by the fglrx_drv.so xorg driver + $(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/dri/fglrx_dri.so \ + $(TARGET_DIR)/usr/lib/dri/fglrx_dri.so + $(INSTALL) -D -m 0644 $(AMD_CATALYST_X11R6_LIB)/modules/extensions/fglrx/fglrx-libglx.so \ + $(TARGET_DIR)/usr/lib/xorg/modules/extensions/libglx.so + $(INSTALL) -D -m 0644 $(AMD_CATALYST_X11R6_LIB)/modules/glesx.so \ + $(TARGET_DIR)/usr/lib/xorg/modules/glesx.so + + # Userspace GL libraries, also runtime dependency of most of the cmdline + # tools + $(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/*.so \ + $(TARGET_DIR)/usr/lib/ + $(call AMD_CATALYST_INSTALL_GL_LIBS,$(TARGET_DIR)) + + # Runtime dependency required by libfglrxdrm.so + $(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libatiuki.so.1.0 \ + $(TARGET_DIR)/usr/lib/ + ln -sf libatiuki.so.1.0 \ + $(TARGET_DIR)/usr/lib/libatiuki.so.1 +endef + +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS), y) +AMD_CATALYST_CMDLINE_TOOLS_FILES = \ + atiode \ + atiodcli \ + fgl_glxgears \ + aticonfig \ + amd-console-helper \ + fglrxinfo + +define AMD_CATALYST_INSTALL_CMDLINE_TOOLS + $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/atieventsd \ + $(TARGET_DIR)/usr/sbin + $(foreach f,$(AMD_CATALYST_CMDLINE_TOOLS_FILES), \ + $(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/$(f) \ + $(TARGET_DIR)/usr/bin/$(f) + ) +endef +endif + +define AMD_CATALYST_INSTALL_STAGING_CMDS + $(call AMD_CATALYST_INSTALL_STAGING_XORG) +endef + +define AMD_CATALYST_INSTALL_TARGET_CMDS + $(call AMD_CATALYST_INSTALL_XORG) + $(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS) + $(call AMD_CATALYST_INSTALL_OPENCL) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/amd-catalyst/gl.pc b/features/buildroot/package/amd-catalyst/gl.pc new file mode 100644 index 00000000..8729271f --- /dev/null +++ b/features/buildroot/package/amd-catalyst/gl.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: gl +Description: AMD Catalyst OpenGL library +Version: 15.9 +Libs: -L${libdir} -lGL -lm -lXext -lX11 -ldl +Cflags: -I${includedir} +glx_tls: no + diff --git a/features/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch b/features/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch new file mode 100644 index 00000000..af072362 --- /dev/null +++ b/features/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch @@ -0,0 +1,162 @@ +[PATCH] Fix makefiles for out-of-tree build + +Signed-off-by: Gary Bisson +--- + debian/makefiles/adb.mk | 10 +++++----- + debian/makefiles/adbd.mk | 33 ++++++++++++++++----------------- + debian/makefiles/fastboot.mk | 17 +++++++++-------- + 3 files changed, 30 insertions(+), 30 deletions(-) + +diff --git a/debian/makefiles/adb.mk b/debian/makefiles/adb.mk +index d9d4feb..654b9f1 100644 +--- a/debian/makefiles/adb.mk ++++ b/debian/makefiles/adb.mk +@@ -1,5 +1,6 @@ + # Makefile for adb; from https://heiher.info/2227.html + ++VPATH+= $(SRCDIR)/core/adb + SRCS+= adb.c + SRCS+= adb_client.c + SRCS+= adb_auth_host.c +@@ -17,7 +18,7 @@ SRCS+= usb_linux.c + SRCS+= usb_vendors.c + SRCS+= utils.c + +-VPATH+= ../libcutils ++VPATH+= $(SRCDIR)/core/libcutils + SRCS+= abort_socket.c + SRCS+= socket_inaddr_any_server.c + SRCS+= socket_local_client.c +@@ -28,7 +29,7 @@ SRCS+= socket_network_client.c + SRCS+= list.c + SRCS+= load_file.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +@@ -37,9 +38,8 @@ CPPFLAGS+= -DADB_HOST=1 + CPPFLAGS+= -DHAVE_FORKEXEC=1 + CPPFLAGS+= -DHAVE_SYMLINKS + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../../../external/zlib ++CPPFLAGS+= -I$(SRCDIR)/core/adb ++CPPFLAGS+= -I$(SRCDIR)/core/include + + LIBS+= -lc -lpthread -lz -lcrypto + +diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk +index 94d3a90..49dab8c 100644 +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -1,18 +1,6 @@ + # Makefile for adbd + +-VPATH+= ../libcutils +-SRCS+= abort_socket.c +-SRCS+= socket_inaddr_any_server.c +-SRCS+= socket_local_client.c +-SRCS+= socket_local_server.c +-SRCS+= socket_loopback_client.c +-SRCS+= socket_loopback_server.c +-SRCS+= socket_network_client.c +-SRCS+= list.c +-SRCS+= load_file.c +-SRCS+= android_reboot.c +- +-#VPATH+= ../adb ++VPATH+= $(SRCDIR)/core/adbd + SRCS+= adb.c + SRCS+= backup_service.c + SRCS+= fdevent.c +@@ -31,7 +19,19 @@ SRCS+= log_service.c + SRCS+= utils.c + SRCS+= base64.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libcutils ++SRCS+= abort_socket.c ++SRCS+= socket_inaddr_any_server.c ++SRCS+= socket_local_client.c ++SRCS+= socket_local_server.c ++SRCS+= socket_loopback_client.c ++SRCS+= socket_loopback_server.c ++SRCS+= socket_network_client.c ++SRCS+= list.c ++SRCS+= load_file.c ++SRCS+= android_reboot.c ++ ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +@@ -40,10 +40,9 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter + CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1 + CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../../../external/zlib + CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0` ++CPPFLAGS+= -I$(SRCDIR)/core/adbd ++CPPFLAGS+= -I$(SRCDIR)/core/include + + LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` + +diff --git a/debian/makefiles/fastboot.mk b/debian/makefiles/fastboot.mk +index 9e8b751..94a069b 100644 +--- a/debian/makefiles/fastboot.mk ++++ b/debian/makefiles/fastboot.mk +@@ -1,5 +1,6 @@ + # Makefile for fastboot; from https://heiher.info/2227.html + ++VPATH+= $(SRCDIR)/core/fastboot + SRCS+= bootimg.c + SRCS+= engine.c + SRCS+= fastboot.c +@@ -7,11 +8,11 @@ SRCS+= protocol.c + SRCS+= usb_linux.c + SRCS+= util_linux.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +-VPATH+= ../libsparse ++VPATH+= $(SRCDIR)/core/libsparse + SRCS+= backed_block.c + SRCS+= sparse_crc32.c + SRCS+= sparse.c +@@ -19,7 +20,7 @@ SRCS+= sparse_read.c + SRCS+= sparse_err.c + SRCS+= output_file.c + +-VPATH+= ../../extras/ext4_utils/ ++VPATH+= $(SRCDIR)/extras/ext4_utils/ + SRCS+= make_ext4fs.c + SRCS+= crc16.c + SRCS+= ext4_utils.c +@@ -31,11 +32,11 @@ SRCS+= extent.c + SRCS+= wipe.c + SRCS+= sha1.c + +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../mkbootimg +-CPPFLAGS+= -I../../extras/ext4_utils/ +-CPPFLAGS+= -I../libsparse/include/ ++CPPFLAGS+= -I$(SRCDIR)/core/fastboot ++CPPFLAGS+= -I$(SRCDIR)/core/include ++CPPFLAGS+= -I$(SRCDIR)/core/mkbootimg ++CPPFLAGS+= -I$(SRCDIR)/extras/ext4_utils/ ++CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/ + + LIBS+= -lz -lselinux + +-- +2.5.1 + diff --git a/features/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch b/features/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch new file mode 100644 index 00000000..35f6c8a3 --- /dev/null +++ b/features/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch @@ -0,0 +1,264 @@ +[PATCH] Fix adbd for non-Ubuntu systems + +Remove glib/dbus dependencies and partially restore services.c to be +closer to the original source code in order to run on systems without +sudo. + +Signed-off-by: Gary Bisson +--- + core/adbd/adb.c | 1 - + core/adbd/services.c | 160 ++++------------------------------------------- + debian/makefiles/adbd.mk | 4 +- + 3 files changed, 14 insertions(+), 151 deletions(-) + +diff --git a/core/adbd/adb.c b/core/adbd/adb.c +index d90e6b8..7fe6445 100644 +--- a/core/adbd/adb.c ++++ b/core/adbd/adb.c +@@ -1165,7 +1165,6 @@ void build_local_name(char* target_str, size_t target_size, int server_port) + + #if !ADB_HOST + static int should_drop_privileges() { +- return 1; + #ifndef ALLOW_ADBD_ROOT + return 1; + #else /* ALLOW_ADBD_ROOT */ +diff --git a/core/adbd/services.c b/core/adbd/services.c +index 05bd0d0..5adcefe 100644 +--- a/core/adbd/services.c ++++ b/core/adbd/services.c +@@ -20,15 +20,6 @@ + #include + #include + #include +-#include +-#include +- +-#define UNITY_SERVICE "com.canonical.UnityGreeter" +-#define GREETER_OBJ "/" +-#define GREETER_INTERFACE "com.canonical.UnityGreeter" +-#define PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" +-#define ACTIVE_PROPERTY "IsActive" +-#define UNLOCK_PATH "/userdata/.adb_onlock" + + #include "sysdeps.h" + +@@ -268,11 +259,11 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) + } + + #if !ADB_HOST +-static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, const char *arg2, const char *arg3, const char *arg4, pid_t *pid) ++static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, pid_t *pid) + { + #ifdef HAVE_WIN32_PROC +- D("create_subprocess(cmd=%s, arg0=%s, arg1=%s, arg2=%s, arg3=%, arg4=%ss)\n", cmd, arg0, arg1, arg2, arg3, arg4); +- fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s %s %s %s)\n", cmd, arg0, arg1, arg2, arg3, arg4); ++ D("create_subprocess(cmd=%s, arg0=%s, arg1=%s)\n", cmd, arg0, arg1); ++ fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s)\n", cmd, arg0, arg1); + return -1; + #else /* !HAVE_WIN32_PROC */ + char *devname; +@@ -327,7 +318,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1 + } else { + D("adb: unable to open %s\n", text); + } +- execl(cmd, cmd, arg0, arg1, arg2, arg3, arg4, NULL); ++ execl(cmd, cmd, arg0, arg1, NULL); + fprintf(stderr, "- exec '%s' failed: %s (%d) -\n", + cmd, strerror(errno), errno); + exit(-1); +@@ -342,7 +333,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1 + } + #endif /* !ABD_HOST */ + +-#if ADB_HOST ++#if ADB_HOST || ADBD_NON_ANDROID + #define SHELL_COMMAND "/bin/sh" + #else + #define SHELL_COMMAND "/system/bin/sh" +@@ -380,139 +371,16 @@ static void subproc_waiter_service(int fd, void *cookie) + } + } + +-int is_phone_locked() { +- GError *error = NULL; +- GVariant *variant = NULL; +- GDBusConnection *connection = NULL; +- +- if (g_file_test(UNLOCK_PATH, G_FILE_TEST_EXISTS)) { +- D("unlock path present."); +- return 0; +- } +- +- // check if the environment variable is present, if not we grab it from +- // the phablet user +- if (g_getenv("DBUS_SESSION_BUS_ADDRESS") == NULL) { +- D("DBUS_SESSION_BUS_ADDRESS missing.\n"); +- struct passwd *pw = getpwuid(AID_SHELL); +- char user_id[15]; +- gchar *path = NULL; +- gchar *contents = NULL; +- gchar *session_path = NULL; +- +- snprintf(user_id, sizeof user_id, "%d", pw->pw_uid); +- +- path = g_build_filename("/run", "user", user_id, "dbus-session", NULL); +- +- g_file_get_contents(path, &contents, NULL, &error); +- session_path = g_strstrip(g_strsplit(contents, "DBUS_SESSION_BUS_ADDRESS=", -1)[1]); +- D("Session bus is %s\n", session_path); +- +- // path is not longer used +- g_free(path); +- +- if (error != NULL) { +- g_clear_error(&error); +- D("Couldn't set session bus\n"); +- return 1; +- } +- +- g_setenv("DBUS_SESSION_BUS_ADDRESS", session_path, TRUE); +- g_free(contents); +- } +- +- // set the uid to be able to connect to the phablet user session bus +- setuid(AID_SHELL); +- connection = g_dbus_connection_new_for_address_sync(g_getenv("DBUS_SESSION_BUS_ADDRESS"), +- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, +- NULL, +- NULL, +- &error); +- if (connection == NULL) { +- D("session bus not available: %s", error->message); +- g_error_free (error); +- return 1; +- } +- +- variant = g_dbus_connection_call_sync(connection, +- UNITY_SERVICE, +- GREETER_OBJ, +- PROPERTIES_INTERFACE, +- "Get", +- g_variant_new("(ss)", GREETER_INTERFACE, ACTIVE_PROPERTY), +- g_variant_type_new("(v)"), +- G_DBUS_CALL_FLAGS_NONE, +- -1, +- NULL, +- &error); +- +- if (error != NULL) { +- D("Could not get property: %s", error->message); +- g_object_unref(connection); +- g_error_free(error); +- return 1; +- } +- +- if (variant == NULL) { +- D("Failed to get property '%s': %s", "IsActive", error->message); +- g_object_unref(connection); +- g_error_free(error); +- return 1; +- } +- +- variant = g_variant_get_variant(g_variant_get_child_value(variant, 0)); +- +- int active = 1; +- if (!g_variant_get_boolean(variant)) { +- active = 0; +- } +- +- // get back to be root and return the value +- g_object_unref(connection); +- g_variant_unref(variant); +- setuid(0); +- return active; +-} +- + static int create_subproc_thread(const char *name) + { +- if (is_phone_locked() ) { +- fprintf(stderr, "device is locked\n"); +- return -1; +- } +- + stinfo *sti; + adb_thread_t t; + int ret_fd; + pid_t pid; +- +- struct passwd *user = getpwuid(getuid()); +- char *shell; +- char *shellopts = "-c"; +- char *home; +- char *sudo = "/usr/bin/sudo"; +- char useropt[256] = "-u"; +- +- if (user->pw_name) +- strcat(useropt, user->pw_name); +- +- if (user && user->pw_shell) { +- shell = user->pw_shell; +- shellopts = "-cl"; +- } else { +- shell = SHELL_COMMAND; +- } +- +- if (user->pw_dir) +- home = user->pw_dir; +- if(chdir(home) < 0 ) +- return 1; +- + if(name) { +- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, name, &pid); ++ ret_fd = create_subprocess(SHELL_COMMAND, "-c", name, &pid); + } else { +- shellopts = "-l"; +- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, 0, &pid); ++ ret_fd = create_subprocess(SHELL_COMMAND, "-", 0, &pid); + } + D("create_subprocess() ret_fd=%d pid=%d\n", ret_fd, pid); + +@@ -585,17 +453,13 @@ int service_to_fd(const char *name) + } else if (!strncmp(name, "log:", 4)) { + ret = create_service_thread(log_service, get_log_file_path(name + 4)); + } else if(!HOST && !strncmp(name, "shell:", 6)) { +- if (!is_phone_locked() ) { +- if(name[6]) { +- ret = create_subproc_thread(name + 6); +- } else { +- ret = create_subproc_thread(0); +- } ++ if(name[6]) { ++ ret = create_subproc_thread(name + 6); ++ } else { ++ ret = create_subproc_thread(0); + } + } else if(!strncmp(name, "sync:", 5)) { +- if (!is_phone_locked() ) { +- ret = create_service_thread(file_sync_service, NULL); +- } ++ ret = create_service_thread(file_sync_service, NULL); + } else if(!strncmp(name, "remount:", 8)) { + ret = create_service_thread(remount_service, NULL); + } else if(!strncmp(name, "reboot:", 7)) { +diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk +index 49dab8c..22c1816 100644 +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -40,11 +40,11 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter + CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1 + CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0` ++CPPFLAGS+= -DADBD_NON_ANDROID + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` ++LIBS+= -lc -lpthread -lz -lcrypto -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + +-- +2.5.1 + diff --git a/features/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch b/features/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch new file mode 100644 index 00000000..95517c30 --- /dev/null +++ b/features/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch @@ -0,0 +1,36 @@ +[PATCH] Fix build issue with uclibc + +Signed-off-by: Gary Bisson +--- + core/adbd/adb_auth_client.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/core/adb/adb_auth_client.c b/core/adb/adb_auth_client.c +index 0b4913e..068d837 100644 +--- a/core/adb/adb_auth_client.c ++++ b/core/adb/adb_auth_client.c +@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +diff --git a/core/adbd/adb_auth_client.c b/core/adbd/adb_auth_client.c +index 0b4913e..068d837 100644 +--- a/core/adbd/adb_auth_client.c ++++ b/core/adbd/adb_auth_client.c +@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +-- +2.6.1 + diff --git a/features/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch b/features/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch new file mode 100644 index 00000000..964eb87a --- /dev/null +++ b/features/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch @@ -0,0 +1,54 @@ +[PATCH] Fix build issue with musl + +arpa/nameser.h doesn't use the same macro name to avoid several +inclusions. + +Finally had an issue with framebuffer_service.c since it was missing the +TEMP_FAILURE_RETRY macro. + +Signed-off-by: Gary Bisson +--- + core/adbd/arpa_nameser.h | 12 +++++++++--- + core/adbd/base64.c | 1 - + core/adbd/framebuffer_service.c | 1 + + core/adbd/qemu_pipe.h | 1 - + core/include/cutils/android_reboot.h | 8 ++++++-- + core/include/cutils/bitops.h | 10 ++++++---- + core/include/cutils/partition_utils.h | 8 ++++++-- + extras/ext4_utils/sha1.c | 3 --- + extras/ext4_utils/sha1.h | 13 ++++++------- + 9 files changed, 34 insertions(+), 23 deletions(-) + +diff --git a/core/adbd/arpa_nameser.h b/core/adbd/arpa_nameser.h +index 438dc04..b2a28d6 100644 +--- a/core/adbd/arpa_nameser.h ++++ b/core/adbd/arpa_nameser.h +@@ -52,6 +52,8 @@ + + #ifndef _ARPA_NAMESER_H_ + #define _ARPA_NAMESER_H_ ++#ifndef _ARPA_NAMESER_H ++#define _ARPA_NAMESER_H + + #define BIND_4_COMPAT + +@@ -574,4 +579,5 @@ __END_DECLS + #define XLOG(...) do {} while (0) + #endif + ++#endif /* !_ARPA_NAMESER_H */ + #endif /* !_ARPA_NAMESER_H_ */ +diff --git a/core/adbd/framebuffer_service.c b/core/adbd/framebuffer_service.c +index 20c08d2..48e0241 100644 +--- a/core/adbd/framebuffer_service.c ++++ b/core/adbd/framebuffer_service.c +@@ -26,6 +26,7 @@ + #include "fdevent.h" + #include "adb.h" + ++#include + #include + #include + #include +-- +2.6.1 diff --git a/features/buildroot/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch b/features/buildroot/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch new file mode 100644 index 00000000..63ea1fb6 --- /dev/null +++ b/features/buildroot/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch @@ -0,0 +1,35 @@ +makefiles: use pkgconf to get libs deps + +LIBS lists library dependencies without taking into account static linking +that need ordered listing and more libraries listed since differently from +shared linking dependency is not transparent(i.e. -lcrypto could need +-latomic etc.). + +Replace -lcrypto with `pkg-config --libs libcrypto` command to be sure all +needed libraries are listed during linking. + +Signed-off-by: Giulio Benetti +--- +diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk +--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk 2019-04-08 16:05:02.967710428 +0200 ++++ android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk 2019-04-08 16:30:42.463084426 +0200 +@@ -44,7 +44,7 @@ CPPFLAGS+= -DADBD_NON_ANDROID + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt ++LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + +diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk android-tools-4.2.2+git20130218/debian/makefiles/adb.mk +--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk 2019-04-08 16:05:02.959701400 +0200 ++++ android-tools-4.2.2+git20130218/debian/makefiles/adb.mk 2019-04-08 16:31:06.529426250 +0200 +@@ -41,7 +41,7 @@ CPPFLAGS+= -DHAVE_TERMIO_H + CPPFLAGS+= -I$(SRCDIR)/core/adb + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto ++LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` + + OBJS= $(SRCS:.c=.o) diff --git a/features/buildroot/package/android-tools/0006-fix-big-endian-build.patch b/features/buildroot/package/android-tools/0006-fix-big-endian-build.patch new file mode 100644 index 00000000..c35fdcb8 --- /dev/null +++ b/features/buildroot/package/android-tools/0006-fix-big-endian-build.patch @@ -0,0 +1,61 @@ +Fix build on big endian systems + +The usb_linux_client.c file defines cpu_to_le16/32 by using the C +library htole16/32 function calls. However, cpu_to_le16/32 are used +when initializing structures, i.e in a context where a function call +is not allowed. + +It works fine on little endian systems because htole16/32 are defined +by the C library as no-ops. But on big-endian systems, they are +actually doing something, which might involve calling a function, +causing build failures. + +To solve this, we simply open-code cpu_to_le16/32 in a way that allows +them to be used when initializing structures. + +Signed-off-by: Thomas Petazzoni + +Index: b/core/adb/usb_linux_client.c +=================================================================== +--- a/core/adb/usb_linux_client.c ++++ b/core/adb/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { +Index: b/core/adbd/usb_linux_client.c +=================================================================== +--- a/core/adbd/usb_linux_client.c ++++ b/core/adbd/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { diff --git a/features/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch b/features/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch new file mode 100644 index 00000000..da4ee13a --- /dev/null +++ b/features/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch @@ -0,0 +1,41 @@ +Include cdefs.h wherever it is needed + +cdefs.h is included from within a lot of glibc headers, so it almost +invariably and automagically gets pulled in with glibc. + +However, this might not be the case with other C libraries. musl does +not provide cdefs.h so it does not include it from its own headers +(cdefs.h must be provided separately). + +So we must include it when we are going to use macros it provides. + +Signed-off-by: "Yann E. MORIN" +--- + core/adbd/services.c | 1 + + core/libcutils/android_reboot.c | 1 + + 2 files changed, 2 insertions(+), 0 deletion(-) + +diff --git a/core/adbd/services.c b/core/adbd/services.c +index 20c08d2..48e0241 100644 +--- a/core/adbd/services.c ++++ b/core/adbd/services.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + #include "sysdeps.h" + +diff --git a/core/libcutils/android_reboot.c b/core/libcutils/android_reboot.c +index 20c08d2..48e0241 100644 +--- a/core/libcutils/android_reboot.c ++++ b/core/libcutils/android_reboot.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include + diff --git a/features/buildroot/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch b/features/buildroot/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch new file mode 100644 index 00000000..77b457f6 --- /dev/null +++ b/features/buildroot/package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch @@ -0,0 +1,42 @@ +usb_linux.c: fix minor()/major() build failure due to glibc 2.28 + +glibc 2.28 no longer includes from , +and therefore must be included explicitly when +major()/minor() are used. + +This commit adds a patch to directly include into +all usb_linux.c files where minor() and major() macros are used. + +diff -urpN host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c +--- host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c 2013-02-18 15:49:03.000000000 +0100 ++++ host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c 2018-09-09 11:47:16.476292546 +0200 +@@ -20,6 +20,7 @@ + #include + + #include ++#include + #include + #include + #include +diff -urpN host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c +--- host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c 2018-09-09 02:32:57.154503866 +0200 ++++ host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c 2018-09-09 11:47:28.148353880 +0200 +@@ -20,6 +20,7 @@ + #include + + #include ++#include + #include + #include + #include +diff -urpN host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c +--- host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c 2013-02-18 15:49:03.000000000 +0100 ++++ host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c 2018-09-09 11:46:53.028169154 +0200 +@@ -33,6 +33,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/features/buildroot/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch b/features/buildroot/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch new file mode 100644 index 00000000..80ea1ec1 --- /dev/null +++ b/features/buildroot/package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch @@ -0,0 +1,48 @@ +From d24abbec201975a5eb7f8589614cfb424b8c80b6 Mon Sep 17 00:00:00 2001 +From: Alex Kaplan +Date: Sat, 10 Nov 2018 19:50:51 -0800 +Subject: [PATCH] Fix makefiles for out-of-tree ext4_utils build + +Signed-off-by: Alex Kaplan +--- + debian/makefiles/ext4_utils.mk | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/debian/makefiles/ext4_utils.mk b/debian/makefiles/ext4_utils.mk +index cb64916..c5904bf 100644 +--- a/debian/makefiles/ext4_utils.mk ++++ b/debian/makefiles/ext4_utils.mk +@@ -1,6 +1,7 @@ + # Makefile for ext4_utils; based on https://heiher.info/2227.html + # Author: Dmitrijs Ledkovs + ++VPATH+=$(SRCDIR)/extras/ext4_utils + SRCS+=make_ext4fs.c + SRCS+=ext4fixup.c + SRCS+=ext4_utils.c +@@ -13,7 +14,7 @@ SRCS+=sha1.c + SRCS+=wipe.c + SRCS+=crc16.c + +-VPATH+=../../core/libsparse ++VPATH+=$(SRCDIR)/core/libsparse + SRCS+= backed_block.c + SRCS+= sparse_crc32.c + SRCS+= sparse.c +@@ -31,10 +32,9 @@ SRCS+=img2simg.c + SRCS+=simg2img.c + SRCS+=simg2simg.c + +-CPPFLAGS+= -I. +-CPPFLAGS+= -I/usr/include +-CPPFLAGS+= -I../../core/include +-CPPFLAGS+= -I../../core/libsparse/include/ ++CPPFLAGS+= -I$(SRCDIR) ++CPPFLAGS+= -I$(SRCDIR)/core/include ++CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/ + + LIBS+= -lz -lselinux + +-- +2.7.4 + diff --git a/features/buildroot/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch b/features/buildroot/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch new file mode 100644 index 00000000..2de33836 --- /dev/null +++ b/features/buildroot/package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch @@ -0,0 +1,47 @@ +From bb3da0e32be4f2260940edf3ee0f88103dfd0dcc Mon Sep 17 00:00:00 2001 +From: Eneas U de Queiroz +Date: Tue, 5 Feb 2019 01:12:19 +0200 +Subject: [PATCH] adb: added patch for openssl 1.1.0 compatibility + +Signed-off-by: Eneas U de Queiroz + +[Vadim: took only adb related part from +https://github.com/lede-project/source/commit/f63f20fb93c7e67775cb01d97fc88b5b29452b81] +Signed-off-by: Vadim Kochan +--- + core/adb/adb_auth_host.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/core/adb/adb_auth_host.c b/core/adb/adb_auth_host.c +index 9039d42..debd2ef 100644 +--- a/core/adb/adb_auth_host.c ++++ b/core/adb/adb_auth_host.c +@@ -79,7 +79,13 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey) + } + + BN_set_bit(r32, 32); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ const BIGNUM *rsa_n, *rsa_e; ++ RSA_get0_key(rsa, &rsa_n, &rsa_e, NULL); ++ BN_copy(n, rsa_n); ++#else + BN_copy(n, rsa->n); ++#endif + BN_set_bit(r, RSANUMWORDS * 32); + BN_mod_sqr(rr, r, n, ctx); + BN_div(NULL, rem, n, r32, ctx); +@@ -93,7 +99,11 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey) + BN_div(n, rem, n, r32, ctx); + pkey->n[i] = BN_get_word(rem); + } ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ pkey->exponent = BN_get_word(rsa_e); ++#else + pkey->exponent = BN_get_word(rsa->e); ++#endif + + out: + BN_free(n0inv); +-- +2.14.1 + diff --git a/features/buildroot/package/android-tools/Config.in b/features/buildroot/package/android-tools/Config.in new file mode 100644 index 00000000..478f1392 --- /dev/null +++ b/features/buildroot/package/android-tools/Config.in @@ -0,0 +1,84 @@ +config BR2_PACKAGE_ANDROID_TOOLS + bool "android-tools" + # Technically, fastboot could build on noMMU systems. But + # since we need at least one of the three sub-options enabled, + # and adb/adbd can't be built on noMMU systems, and fastboot + # has some complicated dependencies, we simply make the whole + # package not available on noMMU platforms. + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ANDROID_TOOLS_ADBD if \ + !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT && \ + !BR2_PACKAGE_ANDROID_TOOLS_ADB + help + This package contains the fastboot and adb utilities, that + can be used to interact with target devices using of these + protocols. + + https://wiki.debian.org/AndroidTools#Original_android-tools_package + +if BR2_PACKAGE_ANDROID_TOOLS + +# We need kernel headers that support the __SANE_USERSPACE_TYPES__ +# mechanism for 64 bits architectures, so that u64 gets defined as +# "unsigned long long" and not "unsigned long". We know that >= 3.16 +# is needed for MIPS64 (kernel commit +# f4b3aa7cd9d32407670e67238c5ee752bb98f481) and >= 3.10 is needed for +# PowerPC64 (kernel commit +# 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0). Without this, the build +# fails with a bad redefinition of u64 (the android-tools fastboot +# code defines it as "unsigned long long"). +config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + bool + default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 && (BR2_powerpc64 || BR2_powerpc64le) + default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 && (BR2_mips64 || BR2_mips64el) + default y if !BR2_powerpc64 && !BR2_powerpc64le && !BR2_mips64 && !BR2_mips64el + +config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT + bool "fastboot" + depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_USES_GLIBC # libselinux + depends on !BR2_arc # libselinux + depends on BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_ZLIB + help + This option will build and install the fastboot utility for + the target, which can be used to reflash other target devices + implementing the fastboot protocol. + +comment "fastboot needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_USES_GLIBC + +comment "fastboot needs headers >= 3.10 (PowerPC64), headers >= 3.16 (MIPS64)" + depends on !BR2_arc + depends on !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + +config BR2_PACKAGE_ANDROID_TOOLS_ADB + bool "adb" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + This option will build and install the adb utility for the + target, which can be used to interact with other target + devices implementing the ADB protocol. + +config BR2_PACKAGE_ANDROID_TOOLS_ADBD + bool "adbd" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + This option will build and install the adbd utility for the + target, which can be used to interact with a host machine + implementing the ADB protocol. + +endif + +comment "android-tools needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/android-tools/Config.in.host b/features/buildroot/package/android-tools/Config.in.host new file mode 100644 index 00000000..433f4e38 --- /dev/null +++ b/features/buildroot/package/android-tools/Config.in.host @@ -0,0 +1,33 @@ +config BR2_PACKAGE_HOST_ANDROID_TOOLS + bool "host android-tools" + select BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB if \ + !BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT + help + This package contains the fastboot and adb utilities, that + can be used to interact with target devices using of these + protocols. + +if BR2_PACKAGE_HOST_ANDROID_TOOLS + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT + bool "fastboot" + help + This option will build and install the fastboot utility for + the host, which can be used to reflash target devices + implementing the fastboot protocol. + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB + bool "adb" + help + This option will build and install the adb utility for the + host, which can be used to interact with target devices + implementing the ADB protocol. + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS + bool "ext4 utils" + help + This option will build and install the ext4 utils for the + host, i.e. make_ext4fs, ext4fixup, ext2simg, img2simg, + simg2img and simg2simg. + +endif diff --git a/features/buildroot/package/android-tools/android-tools.hash b/features/buildroot/package/android-tools/android-tools.hash new file mode 100644 index 00000000..7afa0443 --- /dev/null +++ b/features/buildroot/package/android-tools/android-tools.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 9bfba987e1351b12aa983787b9ae4424ab752e9e646d8e93771538dc1e5d932f android-tools_4.2.2+git20130218.orig.tar.xz +sha256 73c3078de3e44d8a3cadf7a360863c63155d9d558c2f0933cf38ad901a3f5998 android-tools_4.2.2+git20130218-3ubuntu41.debian.tar.gz diff --git a/features/buildroot/package/android-tools/android-tools.mk b/features/buildroot/package/android-tools/android-tools.mk new file mode 100644 index 00000000..3d5c76a3 --- /dev/null +++ b/features/buildroot/package/android-tools/android-tools.mk @@ -0,0 +1,96 @@ +################################################################################ +# +# android-tools +# +################################################################################ + +ANDROID_TOOLS_SITE = https://launchpad.net/ubuntu/+archive/primary/+files +ANDROID_TOOLS_VERSION = 4.2.2+git20130218 +ANDROID_TOOLS_SOURCE = android-tools_$(ANDROID_TOOLS_VERSION).orig.tar.xz +ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41.debian.tar.gz +HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS) +ANDROID_TOOLS_LICENSE = Apache-2.0 +ANDROID_TOOLS_LICENSE_FILES = debian/copyright +ANDROID_TOOLS_DEPENDENCIES = host-pkgconf +HOST_ANDROID_TOOLS_DEPENDENCIES = host-pkgconf + +# Extract the Debian tarball inside the sources +define ANDROID_TOOLS_DEBIAN_EXTRACT + $(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \ + $(ANDROID_TOOLS_DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \ + $(TAR) -C $(@D) $(TAR_OPTIONS) - +endef + +HOST_ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT +ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT + +# Apply the Debian patches before applying the Buildroot patches +define ANDROID_TOOLS_DEBIAN_PATCH + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \* +endef + +HOST_ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH +ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT),y) +HOST_ANDROID_TOOLS_BUILD_TARGETS += fastboot +HOST_ANDROID_TOOLS_INSTALL_TARGETS += build-fastboot/fastboot +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux +endif + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB),y) +HOST_ANDROID_TOOLS_BUILD_TARGETS += adb +HOST_ANDROID_TOOLS_INSTALL_TARGETS += build-adb/adb +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-openssl +endif + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS),y) +HOST_ANDROID_TOOLS_BUILD_TARGETS += ext4_utils +HOST_ANDROID_TOOLS_INSTALL_TARGETS += \ + $(addprefix build-ext4_utils/,make_ext4fs ext4fixup ext2simg img2simg simg2img simg2simg) +HOST_ANDROID_TOOLS_DEPENDENCIES += host-libselinux +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT),y) +ANDROID_TOOLS_TARGETS += fastboot +ANDROID_TOOLS_DEPENDENCIES += zlib libselinux +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADB),y) +ANDROID_TOOLS_TARGETS += adb +ANDROID_TOOLS_DEPENDENCIES += zlib openssl +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADBD),y) +ANDROID_TOOLS_TARGETS += adbd +ANDROID_TOOLS_DEPENDENCIES += zlib openssl +endif + +# Build each tool in its own directory not to share object files + +define HOST_ANDROID_TOOLS_BUILD_CMDS + $(foreach t,$(HOST_ANDROID_TOOLS_BUILD_TARGETS),\ + mkdir -p $(@D)/build-$(t) && \ + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \ + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep)) +endef + +define ANDROID_TOOLS_BUILD_CMDS + $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + mkdir -p $(@D)/build-$(t) && \ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \ + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep)) +endef + +define HOST_ANDROID_TOOLS_INSTALL_CMDS + $(foreach t,$(HOST_ANDROID_TOOLS_INSTALL_TARGETS),\ + $(INSTALL) -D -m 0755 $(@D)/$(t) $(HOST_DIR)/bin/$(notdir $(t))$(sep)) +endef + +define ANDROID_TOOLS_INSTALL_TARGET_CMDS + $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep)) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/angular-websocket/Config.in b/features/buildroot/package/angular-websocket/Config.in new file mode 100644 index 00000000..0981bd0d --- /dev/null +++ b/features/buildroot/package/angular-websocket/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ANGULAR_WEBSOCKET + bool "angular-websocket" + help + An AngularJS WebSocket service for connecting client + applications to servers. + + https://github.com/AngularClass/angular-websocket diff --git a/features/buildroot/package/angular-websocket/angular-websocket.hash b/features/buildroot/package/angular-websocket/angular-websocket.hash new file mode 100644 index 00000000..550101e3 --- /dev/null +++ b/features/buildroot/package/angular-websocket/angular-websocket.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 69d752896bc17c08750a2fda24b5eb3c6d653afc6f406dd90a6b7c920b22a14a angular-websocket-2.0.0.tar.gz diff --git a/features/buildroot/package/angular-websocket/angular-websocket.mk b/features/buildroot/package/angular-websocket/angular-websocket.mk new file mode 100644 index 00000000..d45bfdf9 --- /dev/null +++ b/features/buildroot/package/angular-websocket/angular-websocket.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# angular-websocket +# +################################################################################ + +ANGULAR_WEBSOCKET_VERSION = 2.0.0 +ANGULAR_WEBSOCKET_SITE = $(call github,AngularClass,angular-websocket,v$(ANGULAR_WEBSOCKET_VERSION)) +ANGULAR_WEBSOCKET_LICENSE = MIT +ANGULAR_WEBSOCKET_LICENSE_FILES = LICENSE + +# install .min.js as .js +define ANGULAR_WEBSOCKET_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/angular-websocket.min.js \ + $(TARGET_DIR)/var/www/angular-websocket.js +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/angularjs/Config.in b/features/buildroot/package/angularjs/Config.in new file mode 100644 index 00000000..f0d2015a --- /dev/null +++ b/features/buildroot/package/angularjs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ANGULARJS + bool "angularjs" + help + AngularJS web application framework. + + http://angularjs.org diff --git a/features/buildroot/package/angularjs/angularjs.hash b/features/buildroot/package/angularjs/angularjs.hash new file mode 100644 index 00000000..81ef5c16 --- /dev/null +++ b/features/buildroot/package/angularjs/angularjs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 4d1e5755d7722fed1fa223d854f209251bfee042c72ffe5cca63c4c1a7a19d78 angular-1.7.8.zip +sha256 e3b0100b35fa76ace389c29ee0f69b68126d2e759f7e5df82d4f56254ba53688 angular.js diff --git a/features/buildroot/package/angularjs/angularjs.mk b/features/buildroot/package/angularjs/angularjs.mk new file mode 100644 index 00000000..cb5ec7c1 --- /dev/null +++ b/features/buildroot/package/angularjs/angularjs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# angularjs +# +################################################################################ + +ANGULARJS_VERSION = 1.7.8 +ANGULARJS_SOURCE = angular-$(ANGULARJS_VERSION).zip +ANGULARJS_SITE = https://code.angularjs.org/$(ANGULARJS_VERSION) +ANGULARJS_LICENSE = MIT +# There's no separate license file in the archive, so use angular.js instead. +ANGULARJS_LICENSE_FILES = angular.js + +define ANGULARJS_EXTRACT_CMDS + unzip $(ANGULARJS_DL_DIR)/$(ANGULARJS_SOURCE) -d $(@D) + mv $(@D)/angular-$(ANGULARJS_VERSION)/* $(@D) + rmdir $(@D)/angular-$(ANGULARJS_VERSION) +endef + +# install .min.js as .js +define ANGULARJS_INSTALL_TARGET_CMDS + $(foreach f,$(notdir $(wildcard $(@D)/*.min.js)), + $(INSTALL) -m 0644 -D $(@D)/$(f) \ + $(TARGET_DIR)/var/www/$(f:.min.js=.js)$(sep)) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch b/features/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch new file mode 100644 index 00000000..00b24c89 --- /dev/null +++ b/features/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch @@ -0,0 +1,26 @@ +From 4ef42740538cefd3c1554aa4df5bcb1388ac927b Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Tue, 16 Jan 2018 22:28:32 -0200 +Subject: [PATCH] Change shell script interpreter from /bin/bash to /bin/sh + +This will make the script more portable, making it possible to run on +systems that do not have bash. + +Signed-off-by: Sergio Prado +--- + aoe-stat.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/aoe-stat.in b/aoe-stat.in +index 50e6ac674169..0c1d6f5ebe1e 100755 +--- a/aoe-stat.in ++++ b/aoe-stat.in +@@ -1,4 +1,4 @@ +-#! /bin/bash ++#! /bin/sh + # aoe-stat - collate and present information about AoE storage + # Copyright 2012, CORAID, Inc., and licensed under GPL v.2. + +-- +1.9.1 + diff --git a/features/buildroot/package/aoetools/Config.in b/features/buildroot/package/aoetools/Config.in new file mode 100644 index 00000000..70a838f6 --- /dev/null +++ b/features/buildroot/package/aoetools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AOETOOLS + bool "aoetools" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The aoetools are programs for users of the ATA over Ethernet + (AoE) network storage protocol, a simple protocol for using + storage over an ethernet LAN. + + http://aoetools.sourceforge.net/ + +comment "aoetools needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/aoetools/aoetools.hash b/features/buildroot/package/aoetools/aoetools.hash new file mode 100644 index 00000000..76c30562 --- /dev/null +++ b/features/buildroot/package/aoetools/aoetools.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 477e796f5c18e8c0e61b5d88e1759c68249e8e0210c2f3de2b98680e2cc63e32 aoetools-37.tar.gz + +# Hash for license files: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/features/buildroot/package/aoetools/aoetools.mk b/features/buildroot/package/aoetools/aoetools.mk new file mode 100644 index 00000000..3f6340ff --- /dev/null +++ b/features/buildroot/package/aoetools/aoetools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# aoetools +# +################################################################################ + +AOETOOLS_VERSION = 37 +AOETOOLS_SITE = $(call github,OpenAoE,aoetools,aoetools-$(AOETOOLS_VERSION)) +AOETOOLS_LICENSE = GPL-2.0 +AOETOOLS_LICENSE_FILES = COPYING + +define AOETOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define AOETOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/apache/0001-cross-compile.patch b/features/buildroot/package/apache/0001-cross-compile.patch new file mode 100644 index 00000000..790b7a04 --- /dev/null +++ b/features/buildroot/package/apache/0001-cross-compile.patch @@ -0,0 +1,63 @@ +Fix cross-compilation + +Fetched httpd-2.4.x-cross_compile.diff from upstream bugtracker: +https://issues.apache.org/bugzilla/show_bug.cgi?id=51257#c6 + +which is a bundle of upstream revisions: + http://svn.apache.org/viewvc?view=revision&revision=1327907 + http://svn.apache.org/viewvc?view=revision&revision=1328390 + http://svn.apache.org/viewvc?view=revision&revision=1328714 + +Signed-off-by: Bernd Kuhls + +Index: server/Makefile.in +=================================================================== +--- a/server/Makefile.in (revision 1328714) ++++ b/server/Makefile.in (working copy) +@@ -22,9 +22,14 @@ + include $(top_builddir)/build/rules.mk + include $(top_srcdir)/build/library.mk + ++ifdef CC_FOR_BUILD ++gen_test_char: gen_test_char.c ++ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $< ++else + gen_test_char_OBJECTS = gen_test_char.lo + gen_test_char: $(gen_test_char_OBJECTS) + $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) ++endif + + test_char.h: gen_test_char + ./gen_test_char > test_char.h +Index: configure.in +=================================================================== +--- a/configure.in (revision 1328714) ++++ b/configure.in (working copy) +@@ -193,6 +193,14 @@ + dnl Try to get c99 support for variadic macros + ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99]) + ++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless ++dnl we got already CC_FOR_BUILD from environment. ++if test "x${build_alias}" != "x${host_alias}"; then ++ if test "x${CC_FOR_BUILD}" = "x"; then ++ CC_FOR_BUILD=cc ++ fi ++fi ++ + if test "x${cache_file}" = "x/dev/null"; then + # Likewise, ensure that CC and CPP are passed through to the pcre + # configure script iff caching is disabled (the autoconf 2.5x default). +Index: acinclude.m4 +=================================================================== +--- a/acinclude.m4 (revision 1328714) ++++ ab/cinclude.m4 (working copy) +@@ -53,6 +53,8 @@ + APACHE_SUBST(CPPFLAGS) + APACHE_SUBST(CFLAGS) + APACHE_SUBST(CXXFLAGS) ++ APACHE_SUBST(CC_FOR_BUILD) ++ APACHE_SUBST(CFLAGS_FOR_BUILD) + APACHE_SUBST(LTFLAGS) + APACHE_SUBST(LDFLAGS) + APACHE_SUBST(LT_LDFLAGS) diff --git a/features/buildroot/package/apache/0002-nios2_is_not_os2.patch b/features/buildroot/package/apache/0002-nios2_is_not_os2.patch new file mode 100644 index 00000000..9da8ccac --- /dev/null +++ b/features/buildroot/package/apache/0002-nios2_is_not_os2.patch @@ -0,0 +1,18 @@ +Fix nios2 detection. + +Apache treats nios2 as OS/2. + +Signed-off-by: Bernd Kuhls + +diff -uNr httpd-2.4.12.org/configure.in httpd-2.4.12/configure.in +--- httpd-2.4.12.org/configure.in 2015-01-22 18:33:07.000000000 +0100 ++++ httpd-2.4.12/configure.in 2015-04-02 22:01:32.851102219 +0200 +@@ -268,7 +268,7 @@ + AC_MSG_NOTICE([]) + + case $host in +- *os2*) ++ *-os2*) + # Use a custom made libtool replacement + echo "using aplibtool" + LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool" diff --git a/features/buildroot/package/apache/Config.in b/features/buildroot/package/apache/Config.in new file mode 100644 index 00000000..693ee20a --- /dev/null +++ b/features/buildroot/package/apache/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_APACHE + bool "apache" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR_UTIL + select BR2_PACKAGE_PCRE + help + The Apache HTTP Server Project is an effort to develop and + maintain an open-source HTTP server for modern operating + systems including UNIX and Windows NT. The goal of this + project is to provide a secure, efficient and extensible + server that provides HTTP services in sync with the current + HTTP standards. + + http://httpd.apache.org + +if BR2_PACKAGE_APACHE + +choice + prompt "Multi-Processing Module (MPM)" + default BR2_PACKAGE_APACHE_MPM_WORKER + help + Select the Multi-Processing Module (MPM). + +config BR2_PACKAGE_APACHE_MPM_EVENT + bool "event" + help + A variant of the worker MPM with the goal of consuming threads + only for connections with active processing + +config BR2_PACKAGE_APACHE_MPM_PREFORK + bool "prefork" + help + Implements a non-threaded, pre-forking web server + +config BR2_PACKAGE_APACHE_MPM_WORKER + bool "worker" + help + Implements a hybrid multi-threaded multi-process web server + +endchoice + +endif + +comment "apache needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/apache/S50apache b/features/buildroot/package/apache/S50apache new file mode 100644 index 00000000..b6874190 --- /dev/null +++ b/features/buildroot/package/apache/S50apache @@ -0,0 +1,15 @@ +#!/bin/sh + +case "$1" in + start|restart|graceful|graceful-stop|stop) + apachectl -k $1 + ;; + reload) + apachectl -k restart + ;; + *) + echo "Usage: $0 {start|restart|reload|graceful|graceful-stop|stop}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/apache/apache.hash b/features/buildroot/package/apache/apache.hash new file mode 100644 index 00000000..0c3a1d53 --- /dev/null +++ b/features/buildroot/package/apache/apache.hash @@ -0,0 +1,4 @@ +# From http://archive.apache.org/dist/httpd/httpd-2.4.39.tar.bz2.sha256 +sha256 b4ca9d05773aa59b54d66cd8f4744b945289f084d3be17d7981d1783a5decfa2 httpd-2.4.39.tar.bz2 +# Locally computed +sha256 c49c0819a726b70142621715dae3159c47b0349c2bc9db079070f28dadac0229 LICENSE diff --git a/features/buildroot/package/apache/apache.mk b/features/buildroot/package/apache/apache.mk new file mode 100644 index 00000000..ebb28b65 --- /dev/null +++ b/features/buildroot/package/apache/apache.mk @@ -0,0 +1,117 @@ +################################################################################ +# +# apache +# +################################################################################ + +APACHE_VERSION = 2.4.39 +APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2 +APACHE_SITE = http://archive.apache.org/dist/httpd +APACHE_LICENSE = Apache-2.0 +APACHE_LICENSE_FILES = LICENSE +# Needed for mod_php +APACHE_INSTALL_STAGING = YES +# We have a patch touching configure.in and Makefile.in, +# so we need to autoreconf: +APACHE_AUTORECONF = YES +APACHE_DEPENDENCIES = apr apr-util pcre + +APACHE_CONF_ENV= \ + ap_cv_void_ptr_lt_long=no \ + PCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre-config + +ifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT),y) +APACHE_MPM = event +else ifeq ($(BR2_PACKAGE_APACHE_MPM_PREFORK),y) +APACHE_MPM = prefork +else ifeq ($(BR2_PACKAGE_APACHE_MPM_WORKER),y) +APACHE_MPM = worker +endif + +APACHE_CONF_OPTS = \ + --sysconfdir=/etc/apache2 \ + --with-apr=$(STAGING_DIR)/usr \ + --with-apr-util=$(STAGING_DIR)/usr \ + --with-pcre=$(STAGING_DIR)/usr/bin/pcre-config \ + --enable-http \ + --enable-dbd \ + --enable-proxy \ + --enable-mime-magic \ + --without-suexec-bin \ + --enable-mods-shared=all \ + --with-mpm=$(APACHE_MPM) \ + --disable-luajit + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +APACHE_DEPENDENCIES += libxml2 +# Apache wants the path to the header file, where it can find +# . +APACHE_CONF_OPTS += \ + --enable-xml2enc \ + --enable-proxy-html \ + --with-libxml2=$(STAGING_DIR)/usr/include/libxml2 +else +APACHE_CONF_OPTS += \ + --disable-xml2enc \ + --disable-proxy-html +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +APACHE_CONF_OPTS += --enable-lua +APACHE_DEPENDENCIES += lua +else +APACHE_CONF_OPTS += --disable-lua +endif + +ifeq ($(BR2_PACKAGE_NGHTTP2),y) +APACHE_CONF_OPTS += \ + --enable-http2 \ + --with-nghttp2=$(STAGING_DIR)/usr +APACHE_DEPENDENCIES += nghttp2 +else +APACHE_CONF_OPTS += --disable-http2 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +APACHE_DEPENDENCIES += openssl +APACHE_CONF_OPTS += \ + --enable-ssl \ + --with-ssl=$(STAGING_DIR)/usr +else +APACHE_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +APACHE_DEPENDENCIES += zlib +APACHE_CONF_OPTS += \ + --enable-deflate \ + --with-z=$(STAGING_DIR)/usr +else +APACHE_CONF_OPTS += --disable-deflate +endif + +define APACHE_FIX_STAGING_APACHE_CONFIG + $(SED) 's%/usr/build%$(STAGING_DIR)/usr/build%' $(STAGING_DIR)/usr/bin/apxs + $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' $(STAGING_DIR)/usr/build/config_vars.mk +endef +APACHE_POST_INSTALL_STAGING_HOOKS += APACHE_FIX_STAGING_APACHE_CONFIG + +define APACHE_CLEANUP_TARGET + $(RM) -rf $(TARGET_DIR)/usr/manual $(TARGET_DIR)/usr/build +endef +APACHE_POST_INSTALL_TARGET_HOOKS += APACHE_CLEANUP_TARGET + +define APACHE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/apache/S50apache \ + $(TARGET_DIR)/etc/init.d/S50apache +endef + +define APACHE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/apache/apache.service \ + $(TARGET_DIR)/usr/lib/systemd/system/apache.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/apache.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/apache.service +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/apache/apache.service b/features/buildroot/package/apache/apache.service new file mode 100644 index 00000000..b8747e26 --- /dev/null +++ b/features/buildroot/package/apache/apache.service @@ -0,0 +1,13 @@ +[Unit] +Description=Apache HTTP Server +After=network.target + +[Service] +Type=forking +ExecStart=/usr/bin/apachectl start +ExecReload=/usr/bin/apachectl graceful +ExecStop=/usr/bin/apachectl stop +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/apitrace/Config.in b/features/buildroot/package/apitrace/Config.in new file mode 100644 index 00000000..b622823c --- /dev/null +++ b/features/buildroot/package/apitrace/Config.in @@ -0,0 +1,19 @@ +comment "apitrace needs a glibc toolchain w/ C++, gcc >= 4.9" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_APITRACE + bool "apitrace" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_USES_GLIBC # uses glibc specific __libc_dlsym + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBPNG + help + Trace and replay OpenGL and OpenGL ES APIs calls to/from a + file. You may install apitrace GUI from your distribution to + inspect generated traces. + + http://apitrace.github.io/ diff --git a/features/buildroot/package/apitrace/apitrace.hash b/features/buildroot/package/apitrace/apitrace.hash new file mode 100644 index 00000000..1daaa46e --- /dev/null +++ b/features/buildroot/package/apitrace/apitrace.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0aae8902696ad23ba91d61c57007861a3f6e3c2d4f0f43b783b4b7a58e3f9172 apitrace-15d7f975f9688372467ebd63d2a57d3957823f93.tar.gz diff --git a/features/buildroot/package/apitrace/apitrace.mk b/features/buildroot/package/apitrace/apitrace.mk new file mode 100644 index 00000000..c66f6b3e --- /dev/null +++ b/features/buildroot/package/apitrace/apitrace.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# apitrace +# +################################################################################ + +APITRACE_VERSION = 15d7f975f9688372467ebd63d2a57d3957823f93 +APITRACE_SITE = $(call github,apitrace,apitrace,$(APITRACE_VERSION)) +APITRACE_LICENSE = MIT +APITRACE_LICENSE_FILES = LICENSE + +APITRACE_DEPENDENCIES = xlib_libX11 host-python libpng + +# Gui was never tested, so we prefer to explicitly disable it +APITRACE_CONF_OPTS += -DENABLE_GUI=false + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/apr-util/0001-remove-checkapr.patch b/features/buildroot/package/apr-util/0001-remove-checkapr.patch new file mode 100644 index 00000000..42ad12fc --- /dev/null +++ b/features/buildroot/package/apr-util/0001-remove-checkapr.patch @@ -0,0 +1,21 @@ +remove check apr + +this patch removes the check of apr which fails the build + +Signed-off-by: Rico Bachmann +--- +v1: disable the check for APU_FIND_APR because the check only looks into folders +named apr, and our source-tree is called apr-versionnumber (e.g. apr-1.4.6) + +diff -rupN apr-util-1.4.1/configure.in apr-util-1.4.1-fix/configure.in +--- apr-util-1.4.1/configure.in 2009-12-17 20:15:19.000000000 +0100 ++++ apr-util-1.4.1-fix/configure.in 2012-04-24 10:10:32.000000000 +0200 +@@ -99,7 +99,7 @@ fi + dnl + dnl Find the APR includes directory and (possibly) the source (base) dir. + dnl +-APU_FIND_APR ++dnl APU_FIND_APR + + dnl + dnl even though we use apr_rules.mk for building apr-util, we need diff --git a/features/buildroot/package/apr-util/Config.in b/features/buildroot/package/apr-util/Config.in new file mode 100644 index 00000000..6c5e3bbd --- /dev/null +++ b/features/buildroot/package/apr-util/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_APR_UTIL + bool "apr-util" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR + select BR2_PACKAGE_EXPAT + help + The utility library for the apache runtime project + + http://apr.apache.org/ + +comment "apr-util needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/features/buildroot/package/apr-util/apr-util.hash b/features/buildroot/package/apr-util/apr-util.hash new file mode 100644 index 00000000..82ad4756 --- /dev/null +++ b/features/buildroot/package/apr-util/apr-util.hash @@ -0,0 +1,4 @@ +# From http://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2.sha256 +sha256 d3e12f7b6ad12687572a3a39475545a072608f4ba03a6ce8a3778f607dd0035b apr-util-1.6.1.tar.bz2 +# Locally calculated +sha256 ef5609d18601645ad6fe22c6c122094be40e976725c1d0490778abacc836e7a2 LICENSE diff --git a/features/buildroot/package/apr-util/apr-util.mk b/features/buildroot/package/apr-util/apr-util.mk new file mode 100644 index 00000000..b006964c --- /dev/null +++ b/features/buildroot/package/apr-util/apr-util.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# apr-util +# +################################################################################ + +APR_UTIL_VERSION = 1.6.1 +APR_UTIL_SOURCE = apr-util-$(APR_UTIL_VERSION).tar.bz2 +APR_UTIL_SITE = http://archive.apache.org/dist/apr +APR_UTIL_LICENSE = Apache-2.0 +APR_UTIL_LICENSE_FILES = LICENSE +APR_UTIL_INSTALL_STAGING = YES +APR_UTIL_DEPENDENCIES = apr expat +APR_UTIL_CONF_OPTS = \ + --with-apr=$(STAGING_DIR)/usr/bin/apr-1-config +APR_UTIL_CONFIG_SCRIPTS = apu-1-config + +# When iconv is available, then use it to provide charset conversion +# features. +APR_UTIL_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +APR_UTIL_CONF_OPTS += --with-dbm=db53 --with-berkeley-db="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += berkeleydb +else +APR_UTIL_CONF_OPTS += --without-berkeley-db +endif + +ifeq ($(BR2_PACKAGE_GDBM),y) +APR_UTIL_CONF_OPTS += --with-gdbm="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += gdbm +else +APR_UTIL_CONF_OPTS += --without-gdbm +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +APR_UTIL_CONF_OPTS += --with-mysql="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += mysql +else +APR_UTIL_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +APR_UTIL_CONF_OPTS += --with-sqlite3="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += sqlite +else +APR_UTIL_CONF_OPTS += --without-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +APR_UTIL_CONF_ENV += ac_cv_ldap_set_rebind_proc_style=three +APR_UTIL_CONF_OPTS += \ + --with-ldap \ + --with-ldap-include="$(STAGING_DIR)/usr/include/" \ + --with-ldap-lib="$(STAGING_DIR)/usr/lib" +APR_UTIL_DEPENDENCIES += openldap +else +APR_UTIL_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +APR_UTIL_CONF_OPTS += --with-crypto --with-openssl="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += openssl +else +APR_UTIL_CONF_OPTS += --without-crypto +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +APR_UTIL_CONF_OPTS += --with-pgsql="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += postgresql +else +APR_UTIL_CONF_OPTS += --without-pgsql +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +APR_UTIL_CONF_OPTS += --with-odbc="$(STAGING_DIR)/usr" +# avoid using target binary $(STAGING_DIR)/usr/bin/odbc_config +APR_UTIL_CONF_ENV += ac_cv_path_ODBC_CONFIG="" +APR_UTIL_DEPENDENCIES += unixodbc +else +APR_UTIL_CONF_OPTS += --without-odbc +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/apr/0001-cross-compile.patch b/features/buildroot/package/apr/0001-cross-compile.patch new file mode 100644 index 00000000..559ebb74 --- /dev/null +++ b/features/buildroot/package/apr/0001-cross-compile.patch @@ -0,0 +1,58 @@ +Fix cross-compilation + +Patch was backported from Apache httpd: +http://svn.apache.org/viewvc?view=revision&revision=1327907 +http://svn.apache.org/viewvc?view=revision&revision=1328390 +http://svn.apache.org/viewvc?view=revision&revision=1328714 + +Patch submitted upstream: +https://issues.apache.org/bugzilla/show_bug.cgi?id=57058 + +Signed-off-by: Bernd Kuhls + +diff -uNr apr-1.5.1.org/configure.in apr-1.5.1/configure.in +--- apr-1.5.1.org/configure.in 2014-01-25 16:17:29.000000000 +0100 ++++ apr-1.5.1/configure.in 2014-10-05 11:20:40.080746760 +0200 +@@ -118,6 +118,16 @@ + echo "Configuring APR library" + echo "Platform: $host" + ++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless ++dnl we got already CC_FOR_BUILD from environment. ++if test "x${build_alias}" != "x${host_alias}"; then ++ if test "x${CC_FOR_BUILD}" = "x"; then ++ CC_FOR_BUILD=cc ++ fi ++fi ++AC_SUBST(CC_FOR_BUILD) ++AC_SUBST(CFLAGS_FOR_BUILD) ++ + dnl Some initial steps for configuration. We setup the default directory + dnl and which files are to be configured. + +diff -uNr apr-1.5.1.org/Makefile.in apr-1.5.1/Makefile.in +--- apr-1.5.1.org/Makefile.in 2014-03-17 16:10:26.000000000 +0100 ++++ apr-1.5.1/Makefile.in 2014-10-05 11:22:53.031070519 +0200 +@@ -8,6 +8,8 @@ + # APR (Apache Portable Runtime) library Makefile. + # + CPP = @CPP@ ++CC_FOR_BUILD = @CC_FOR_BUILD@ ++CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ + + # get substituted into some targets + APR_MAJOR_VERSION=@APR_MAJOR_VERSION@ +@@ -134,8 +134,13 @@ + $(APR_MKDIR) tools + $(LT_COMPILE) + ++ifdef CC_FOR_BUILD ++tools/gen_test_char@EXEEXT@: tools/gen_test_char.c $(LOCAL_LIBS) ++ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $< ++else + tools/gen_test_char@EXEEXT@: $(OBJECTS_gen_test_char) + $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS) ++endif + + include/private/apr_escape_test_char.h: tools/gen_test_char@EXEEXT@ + $(APR_MKDIR) include/private diff --git a/features/buildroot/package/apr/Config.in b/features/buildroot/package/apr/Config.in new file mode 100644 index 00000000..67de9254 --- /dev/null +++ b/features/buildroot/package/apr/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_APR + bool "apr" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() in apr_proc_fork() + help + The mission of the Apache Portable Runtime (APR) project is to + create and maintain software libraries that provide a + predictable and consistent interface to underlying + platform-specific implementations + + http://apr.apache.org/ + +comment "apr needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/features/buildroot/package/apr/apr.hash b/features/buildroot/package/apr/apr.hash new file mode 100644 index 00000000..be130a5d --- /dev/null +++ b/features/buildroot/package/apr/apr.hash @@ -0,0 +1,4 @@ +# From http://www.apache.org/dist/apr/apr-1.6.3.tar.bz2.sha256 +sha256 131f06d16d7aabd097fa992a33eec2b6af3962f93e6d570a9bd4d85e95993172 apr-1.6.3.tar.bz2 +# Locally calculated +sha256 f854aeef66ecd55a126226e82b3f26793fc3b1c584647f6a0edc5639974c38ad LICENSE diff --git a/features/buildroot/package/apr/apr.mk b/features/buildroot/package/apr/apr.mk new file mode 100644 index 00000000..8f29e57c --- /dev/null +++ b/features/buildroot/package/apr/apr.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# apr +# +################################################################################ + +APR_VERSION = 1.6.3 +APR_SOURCE = apr-$(APR_VERSION).tar.bz2 +APR_SITE = http://archive.apache.org/dist/apr +APR_LICENSE = Apache-2.0 +APR_LICENSE_FILES = LICENSE +APR_INSTALL_STAGING = YES +# We have a patch touching configure.in and Makefile.in, +# so we need to autoreconf: +APR_AUTORECONF = YES + +APR_CONF_ENV = \ + CC_FOR_BUILD="$(HOSTCC)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + ac_cv_file__dev_zero=yes \ + ac_cv_func_setpgrp_void=yes \ + apr_cv_process_shared_works=yes \ + apr_cv_mutex_robust_shared=no \ + apr_cv_tcp_nodelay_with_cork=yes \ + ac_cv_sizeof_struct_iovec=8 \ + ac_cv_sizeof_pid_t=4 \ + ac_cv_struct_rlimit=yes \ + ac_cv_o_nonblock_inherited=no \ + apr_cv_mutex_recursive=yes \ + apr_cv_epoll=yes \ + apr_cv_epoll_create1=yes \ + apr_cv_dup3=yes \ + apr_cv_sock_cloexec=yes \ + apr_cv_accept4=yes +APR_CONFIG_SCRIPTS = apr-1-config + +# Doesn't even try to guess when cross compiling +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +APR_CONF_ENV += apr_cv_pthreads_lib="-lpthread" +endif + +# Fix lfs detection when cross compiling +APR_CONF_ENV += apr_cv_use_lfs64=yes + +# Use non-portable atomics when available: 8 bytes atomics are used on +# 64-bits architectures, 4 bytes atomics on 32-bits architectures. We +# have to override ap_cv_atomic_builtins because the test used to +# check for atomic builtins uses AC_TRY_RUN, which doesn't work when +# cross-compiling. +ifeq ($(BR2_ARCH_IS_64):$(BR2_TOOLCHAIN_HAS_SYNC_8),y:y) +APR_CONF_OPTS += --enable-nonportable-atomics +APR_CONF_ENV += ap_cv_atomic_builtins=yes +else ifeq ($(BR2_ARCH_IS_64):$(BR2_TOOLCHAIN_HAS_SYNC_4),:y) +APR_CONF_OPTS += --enable-nonportable-atomics +APR_CONF_ENV += ap_cv_atomic_builtins=yes +else +APR_CONF_OPTS += --disable-nonportable-atomics +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +APR_DEPENDENCIES += util-linux +endif + +define APR_CLEANUP_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/build-1/ +endef + +APR_POST_INSTALL_TARGET_HOOKS += APR_CLEANUP_UNNEEDED_FILES + +define APR_FIXUP_RULES_MK + $(SED) 's%apr_builddir=%apr_builddir=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk + $(SED) 's%apr_builders=%apr_builders=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk + $(SED) 's%top_builddir=%top_builddir=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk +endef + +APR_POST_INSTALL_STAGING_HOOKS += APR_FIXUP_RULES_MK + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch b/features/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch new file mode 100644 index 00000000..4a90751e --- /dev/null +++ b/features/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch @@ -0,0 +1,79 @@ +# --- T2-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# T2 SDE: package/.../rng-tools/throw-in-funcdef.patch.argp-standalone +# Copyright (C) 2006 The T2 SDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- T2-COPYRIGHT-NOTE-END --- + + +No __THROW in function implementation. + --jsaw + +--- argp-standalone-1.4-test2/argp.h.orig 2006-01-06 02:29:59.000000000 +0100 ++++ argp-standalone-1.4-test2/argp.h 2006-01-06 02:41:10.000000000 +0100 +@@ -560,17 +560,17 @@ + # endif + + # ifndef ARGP_EI +-# define ARGP_EI extern __inline__ ++# define ARGP_EI extern inline + # endif + + ARGP_EI void +-__argp_usage (__const struct argp_state *__state) __THROW ++__argp_usage (__const struct argp_state *__state) + { + __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); + } + + ARGP_EI int +-__option_is_short (__const struct argp_option *__opt) __THROW ++__option_is_short (__const struct argp_option *__opt) + { + if (__opt->flags & OPTION_DOC) + return 0; +@@ -582,7 +582,7 @@ + } + + ARGP_EI int +-__option_is_end (__const struct argp_option *__opt) __THROW ++__option_is_end (__const struct argp_option *__opt) + { + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; + } +--- argp-standalone-1.4-test2/argp-parse.c.orig 2006-01-06 02:47:48.000000000 +0100 ++++ argp-standalone-1.4-test2/argp-parse.c 2006-01-06 02:48:16.000000000 +0100 +@@ -1290,13 +1290,13 @@ + /* Defined here, in case a user is not inlining the definitions in + * argp.h */ + void +-__argp_usage (__const struct argp_state *__state) __THROW ++__argp_usage (__const struct argp_state *__state) + { + __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); + } + + int +-__option_is_short (__const struct argp_option *__opt) __THROW ++__option_is_short (__const struct argp_option *__opt) + { + if (__opt->flags & OPTION_DOC) + return 0; +@@ -1310,7 +1310,7 @@ + } + + int +-__option_is_end (__const struct argp_option *__opt) __THROW ++__option_is_end (__const struct argp_option *__opt) + { + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; + } diff --git a/features/buildroot/package/argp-standalone/0002-isprint.patch b/features/buildroot/package/argp-standalone/0002-isprint.patch new file mode 100644 index 00000000..9c08366f --- /dev/null +++ b/features/buildroot/package/argp-standalone/0002-isprint.patch @@ -0,0 +1,45 @@ +Subject: restrict value range passed to isprint function + +According to C standards isprint argument shall be representable as an +unsigned char or be equal to EOF, otherwise the behaviour is undefined. + +Passing arbitrary ints leads to segfault in nm program from elfutils. + +Restrict isprint argument range to values representable by unsigned char. + +Signed-off-by: Max Filippov +--- +Index: b/argp.h +=================================================================== +--- a/argp.h ++++ b/argp.h +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #define __need_error_t + #include +@@ -577,7 +578,7 @@ + else + { + int __key = __opt->key; +- return __key > 0 && isprint (__key); ++ return __key > 0 && __key <= UCHAR_MAX && isprint (__key); + } + } + +Index: b/argp-parse.c +=================================================================== +--- a/argp-parse.c ++++ b/argp-parse.c +@@ -1292,7 +1292,7 @@ + int __key = __opt->key; + /* FIXME: whether or not a particular key implies a short option + * ought not to be locale dependent. */ +- return __key > 0 && isprint (__key); ++ return __key > 0 && __key <= UCHAR_MAX && isprint (__key); + } + } + diff --git a/features/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch b/features/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch new file mode 100644 index 00000000..56b753b6 --- /dev/null +++ b/features/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch @@ -0,0 +1,68 @@ +From b2dfa011a3fdcb7d22764d143517d0fbd1c2a201 Mon Sep 17 00:00:00 2001 +From: Emmanuel Dreyfus +Date: Wed, 22 Jan 2014 14:47:23 +0100 +Subject: [PATCH] Fix build with c99 compilers + +BUG: 764655 +Change-Id: If5dfdc9c7427bd3d39d8da8f79e33ae2da6a3137 +Signed-off-by: Emmanuel Dreyfus +Reviewed-on: http://review.gluster.org/6034 +Reviewed-by: Harshavardhana +Tested-by: Gluster Build System +--- + +diff --git a/argp-fmtstream.c b/argp-fmtstream.c +index 7f79285..494b6b3 100644 +--- a/argp-fmtstream.c ++++ b/argp-fmtstream.c +@@ -389,6 +389,7 @@ + weak_alias (__argp_fmtstream_printf, argp_fmtstream_printf) + #endif + ++#if __STDC_VERSION__ - 199900L < 1 + /* Duplicate the inline definitions in argp-fmtstream.h, for compilers + * that don't do inlining. */ + size_t +@@ -471,5 +472,6 @@ + __argp_fmtstream_update (__fs); + return __fs->point_col >= 0 ? __fs->point_col : 0; + } ++#endif /* __STDC_VERSION__ - 199900L < 1 */ + + #endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */ +diff --git a/argp-fmtstream.h b/argp-fmtstream.h +index e797b11..828f435 100644 +--- a/argp-fmtstream.h ++++ b/argp-fmtstream.h +@@ -153,6 +153,7 @@ + __const char *__fmt, ...) + PRINTF_STYLE(2,3); + ++#if __STDC_VERSION__ - 199900L < 1 + extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); + extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); + +@@ -163,6 +164,7 @@ + __const char *__str, size_t __len); + extern size_t argp_fmtstream_write (argp_fmtstream_t __fs, + __const char *__str, size_t __len); ++#endif /* __STDC_VERSION__ - 199900L < 1 */ + + /* Access macros for various bits of state. */ + #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin) +@@ -172,6 +174,7 @@ + #define __argp_fmtstream_rmargin argp_fmtstream_rmargin + #define __argp_fmtstream_wmargin argp_fmtstream_wmargin + ++#if __STDC_VERSION__ - 199900L < 1 + /* Set __FS's left margin to LMARGIN and return the old value. */ + extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, + size_t __lmargin); +@@ -193,6 +196,7 @@ + /* Return the column number of the current output point in __FS. */ + extern size_t argp_fmtstream_point (argp_fmtstream_t __fs); + extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs); ++#endif /* __STDC_VERSION__ - 199900L < 1 */ + + /* Internal routines. */ + extern void _argp_fmtstream_update (argp_fmtstream_t __fs); diff --git a/features/buildroot/package/argp-standalone/Config.in b/features/buildroot/package/argp-standalone/Config.in new file mode 100644 index 00000000..3319dd94 --- /dev/null +++ b/features/buildroot/package/argp-standalone/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ARGP_STANDALONE + bool "argp-standalone" + # glibc provides its own argp implementation. + depends on !BR2_TOOLCHAIN_USES_GLIBC + help + Glibc hierarchical argument parsing standalone library. + + http://www.lysator.liu.se/~nisse/misc/ diff --git a/features/buildroot/package/argp-standalone/argp-standalone.hash b/features/buildroot/package/argp-standalone/argp-standalone.hash new file mode 100644 index 00000000..57982144 --- /dev/null +++ b/features/buildroot/package/argp-standalone/argp-standalone.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 dec79694da1319acd2238ce95df57f3680fea2482096e483323fddf3d818d8be argp-standalone-1.3.tar.gz diff --git a/features/buildroot/package/argp-standalone/argp-standalone.mk b/features/buildroot/package/argp-standalone/argp-standalone.mk new file mode 100644 index 00000000..977b9547 --- /dev/null +++ b/features/buildroot/package/argp-standalone/argp-standalone.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# argp-standalone +# +################################################################################ + +ARGP_STANDALONE_VERSION = 1.3 +ARGP_STANDALONE_SITE = http://www.lysator.liu.se/~nisse/archive +ARGP_STANDALONE_INSTALL_STAGING = YES +ARGP_STANDALONE_LICENSE = LGPL-2.0+ + +ARGP_STANDALONE_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -fPIC -fgnu89-inline" + +define ARGP_STANDALONE_INSTALL_STAGING_CMDS + $(INSTALL) -D $(@D)/libargp.a $(STAGING_DIR)/usr/lib/libargp.a + $(INSTALL) -D $(@D)/argp.h $(STAGING_DIR)/usr/include/argp.h +endef + +define ARGP_STANDALONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/libargp.a $(TARGET_DIR)/usr/lib/libargp.a + $(INSTALL) -D $(@D)/argp.h $(TARGET_DIR)/usr/include/argp.h +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/argparse/Config.in b/features/buildroot/package/argparse/Config.in new file mode 100644 index 00000000..d207b048 --- /dev/null +++ b/features/buildroot/package/argparse/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ARGPARSE + bool "argparse" + help + Argparse is a feature-rich command line parser for Lua + inspired by argparse for Python. Argparse supports + positional arguments, options, flags, optional arguments, + subcommands and more. Argparse automatically generates + usage, help and error messages. + + https://github.com/mpeterv/argparse diff --git a/features/buildroot/package/argparse/argparse.hash b/features/buildroot/package/argparse/argparse.hash new file mode 100644 index 00000000..fa99609c --- /dev/null +++ b/features/buildroot/package/argparse/argparse.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 e4029f42d61cbdde1540e0a098a24b1fed0bc8a2803efe2a0d0d3e7f2f2f2c82 argparse-0.6.0-1.src.rock +sha256 c9b9a9667934d50f028a99b2617469db66663dc3b09d289b82e73e950b2b85eb argparse/LICENSE diff --git a/features/buildroot/package/argparse/argparse.mk b/features/buildroot/package/argparse/argparse.mk new file mode 100644 index 00000000..04c46b52 --- /dev/null +++ b/features/buildroot/package/argparse/argparse.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# argparse +# +################################################################################ + +ARGPARSE_VERSION = 0.6.0-1 +ARGPARSE_SUBDIR = argparse +ARGPARSE_LICENSE = MIT +ARGPARSE_LICENSE_FILES = $(ARGPARSE_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/features/buildroot/package/argus/Config.in b/features/buildroot/package/argus/Config.in new file mode 100644 index 00000000..7a7d2b65 --- /dev/null +++ b/features/buildroot/package/argus/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ARGUS + bool "argus" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + A Real Time Flow Monitor-based audit engine. + + http://qosient.com/argus/ + +comment "argus needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/features/buildroot/package/argus/argus.hash b/features/buildroot/package/argus/argus.hash new file mode 100644 index 00000000..84edce61 --- /dev/null +++ b/features/buildroot/package/argus/argus.hash @@ -0,0 +1,2 @@ +# From http://qosient.com/argus/src/argus-3.0.8.tar.gz.md5 +md5 84daae71a502e4f6d088c279de3aa36b argus-3.0.8.tar.gz diff --git a/features/buildroot/package/argus/argus.mk b/features/buildroot/package/argus/argus.mk new file mode 100644 index 00000000..941f439f --- /dev/null +++ b/features/buildroot/package/argus/argus.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# argus +# +################################################################################ + +ARGUS_VERSION = 3.0.8 +ARGUS_SITE = http://qosient.com/argus/src +ARGUS_DEPENDENCIES = libpcap +ARGUS_CONF_ENV = arg_cv_sys_errlist=yes +# Code is really v2+ though COPYING is v3 so ship README to avoid confusion +ARGUS_LICENSE = GPL-2.0+ +ARGUS_LICENSE_FILES = README + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +ARGUS_DEPENDENCIES += libtirpc host-pkgconf +ARGUS_CONF_ENV += \ + CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/armadillo/Config.in b/features/buildroot/package/armadillo/Config.in new file mode 100644 index 00000000..b2b61a32 --- /dev/null +++ b/features/buildroot/package/armadillo/Config.in @@ -0,0 +1,20 @@ +comment "armadillo needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on !BR2_powerpc + depends on !BR2_m68k_cf + +comment "armadillo needs a glibc toolchain w/ C++" + depends on BR2_powerpc + depends on !BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_ARMADILLO + bool "armadillo" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC # clapack + depends on !BR2_m68k_cf # clapack + select BR2_PACKAGE_CLAPACK + help + Armadillo: An Open Source C++ Linear Algebra Library for + Fast Prototyping and Computationally Intensive Experiments. + + http://arma.sourceforge.net/ diff --git a/features/buildroot/package/armadillo/armadillo.hash b/features/buildroot/package/armadillo/armadillo.hash new file mode 100644 index 00000000..6b3c4a85 --- /dev/null +++ b/features/buildroot/package/armadillo/armadillo.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/arma/files/?source=navbar +md5 5ef71763bd429a3d481499878351f3be armadillo-7.900.1.tar.xz +sha1 8118faf1c6a7a39c55a1103a1f90e85e613cc377 armadillo-7.900.1.tar.xz +# Locally computed: +sha256 33eec7013990b5477ccc5ad3abc68bc2326c7a7a2790014d625cfcf37c0e07d3 armadillo-7.900.1.tar.xz +# License files, locally calculated +sha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5 LICENSE.txt diff --git a/features/buildroot/package/armadillo/armadillo.mk b/features/buildroot/package/armadillo/armadillo.mk new file mode 100644 index 00000000..b5fe403a --- /dev/null +++ b/features/buildroot/package/armadillo/armadillo.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# armadillo +# +################################################################################ + +ARMADILLO_VERSION = 7.900.1 +ARMADILLO_SOURCE = armadillo-$(ARMADILLO_VERSION).tar.xz +ARMADILLO_SITE = https://downloads.sourceforge.net/project/arma +ARMADILLO_DEPENDENCIES = clapack +ARMADILLO_INSTALL_STAGING = YES +ARMADILLO_LICENSE = MPL-2.0 +ARMADILLO_LICENSE_FILES = LICENSE.txt + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/armbian-firmware/Config.in b/features/buildroot/package/armbian-firmware/Config.in new file mode 100644 index 00000000..761c3166 --- /dev/null +++ b/features/buildroot/package/armbian-firmware/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_ARMBIAN_FIRMWARE + bool "armbian-firmware" + help + This package enables access to various firmware + blobs from the Armbian firmware repository. + + https://github.com/armbian/firmware + +if BR2_PACKAGE_ARMBIAN_FIRMWARE + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819 + bool "XR819 WiFi" + help + Firmware files for XR819 WiFi SDIO chip. + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212 + bool "AP6212 WiFi/BT" + help + Firmware files for AP6212 WiFi/BT combo chip. + +endif diff --git a/features/buildroot/package/armbian-firmware/armbian-firmware.hash b/features/buildroot/package/armbian-firmware/armbian-firmware.hash new file mode 100644 index 00000000..0f3858de --- /dev/null +++ b/features/buildroot/package/armbian-firmware/armbian-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 876958ce6ba8a4a01a424f2b4455208b7a989eaba96015649c774340553f0c35 armbian-firmware-455d6b6701178dafe7fd0168eb4a4ef78a8d24a3.tar.gz diff --git a/features/buildroot/package/armbian-firmware/armbian-firmware.mk b/features/buildroot/package/armbian-firmware/armbian-firmware.mk new file mode 100644 index 00000000..77e51854 --- /dev/null +++ b/features/buildroot/package/armbian-firmware/armbian-firmware.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# armbian-firmware +# +################################################################################ + +ARMBIAN_FIRMWARE_VERSION = 455d6b6701178dafe7fd0168eb4a4ef78a8d24a3 +ARMBIAN_FIRMWARE_SITE = https://github.com/armbian/firmware +ARMBIAN_FIRMWARE_SITE_METHOD = git + +# XR819 WiFi firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819),y) +ARMBIAN_FIRMWARE_FILES += \ + xr819/boot_xr819.bin \ + xr819/fw_xr819.bin \ + xr819/sdd_xr819.bin +endif + +# AP6212 WiFi/BT combo firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212),y) +ARMBIAN_FIRMWARE_DIRS += ap6212 +endif + +ifneq ($(ARMBIAN_FIRMWARE_FILES),) +define ARMBIAN_FIRMWARE_INSTALL_FILES + cd $(@D) && \ + $(TAR) cf install.tar $(sort $(ARMBIAN_FIRMWARE_FILES)) && \ + $(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware +endef +endif + +ifneq ($(ARMBIAN_FIRMWARE_DIRS),) +# We need to rm -rf the destination directory to avoid copying +# into it in itself, should we re-install the package. +define ARMBIAN_FIRMWARE_INSTALL_DIRS + $(foreach d,$(ARMBIAN_FIRMWARE_DIRS), \ + rm -rf $(TARGET_DIR)/lib/firmware/$(d); \ + cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep)) +endef +endif + +ifneq ($(ARMBIAN_FIRMWARE_FILES)$(ARMBIAN_FIRMWARE_DIRS),) +ARMBIAN_FIRMWARE_LICENSE = PROPRIETARY +ARMBIAN_FIRMWARE_REDISTRIBUTE = NO +endif + +define ARMBIAN_FIRMWARE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware + $(ARMBIAN_FIRMWARE_INSTALL_FILES) + $(ARMBIAN_FIRMWARE_INSTALL_DIRS) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch b/features/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch new file mode 100644 index 00000000..8eb9d6ef --- /dev/null +++ b/features/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch @@ -0,0 +1,39 @@ +From f406041b58eadc716d6227408d3af553d566ffeb Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 4 Apr 2017 17:31:29 +0200 +Subject: [PATCH] configure: try linking to detect stack-protector support + +Even if gcc accepts the -fstack-protector argument, it is possible that +the libssp support library is missing. Detect this by linking instead +of just compiling. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + acinclude.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 3c84118..4725154 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -243,7 +243,7 @@ AC_DEFUN([GCC_STACK_PROTECT_CC],[ + AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector]) + ssp_old_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fstack-protector" +- AC_TRY_COMPILE(,,, ssp_cc=no) ++ AC_TRY_LINK(,,, ssp_cc=no) + echo $ssp_cc + if test "X$ssp_cc" = "Xno"; then + CFLAGS="$ssp_old_cflags" +@@ -259,7 +259,7 @@ AC_DEFUN([GCC_STACK_PROTECT_CXX],[ + AC_MSG_CHECKING([whether ${CXX} accepts -fstack-protector]) + ssp_old_cxxflags="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fstack-protector" +- AC_TRY_COMPILE(,,, ssp_cxx=no) ++ AC_TRY_LINK(,,, ssp_cxx=no) + echo $ssp_cxx + if test "X$ssp_cxx" = "Xno"; then + CXXFLAGS="$ssp_old_cxxflags" +-- +2.11.0 + diff --git a/features/buildroot/package/arp-scan/Config.in b/features/buildroot/package/arp-scan/Config.in new file mode 100644 index 00000000..ed70b395 --- /dev/null +++ b/features/buildroot/package/arp-scan/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ARP_SCAN + bool "arp-scan" + select BR2_PACKAGE_LIBPCAP + help + The ARP scanner + + arp-scan is a command-line tool that uses the ARP protocol to + discover and fingerprint IP hosts on the local network. + + https://github.com/royhills/arp-scan diff --git a/features/buildroot/package/arp-scan/arp-scan.hash b/features/buildroot/package/arp-scan/arp-scan.hash new file mode 100644 index 00000000..62f12d3d --- /dev/null +++ b/features/buildroot/package/arp-scan/arp-scan.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 aa9498af84158a315b7e0ea6c2cddfa746660ca3987cbe7e32c0c90f5382d9d2 arp-scan-1.9.5.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/features/buildroot/package/arp-scan/arp-scan.mk b/features/buildroot/package/arp-scan/arp-scan.mk new file mode 100644 index 00000000..a87fa351 --- /dev/null +++ b/features/buildroot/package/arp-scan/arp-scan.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# arp-scan +# +################################################################################ + +ARP_SCAN_VERSION = 1.9.5 +ARP_SCAN_SITE = $(call github,royhills,arp-scan,$(ARP_SCAN_VERSION)) +ARP_SCAN_LICENSE = GPL-3.0+ +ARP_SCAN_LICENSE_FILES = COPYING +ARP_SCAN_DEPENDENCIES = libpcap + +# 0001-configure-try-linking-to-detect-stack-protector-supp.patch touches acinclude.m4 +ARP_SCAN_AUTORECONF = YES + +ifeq ($(BR2_STATIC_LIBS),y) +ARP_SCAN_CONF_OPTS = LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +ARP_SCAN_CONF_ENV = pgac_cv_snprintf_long_long_int_format='%lld' + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch b/features/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch new file mode 100644 index 00000000..a5d56d22 --- /dev/null +++ b/features/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch @@ -0,0 +1,32 @@ +From 948a96d710f377fb0ed8d78c7fb85b299c80ef13 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 8 Nov 2014 10:12:54 -0300 +Subject: [PATCH] arptables: disable dlfcn.h include + +The relevant code is disabled in libarptc_incl.c so it's not required +and breaks the ability to build it in a pure-static toolchain. + +Status: sent upstream. + +Signed-off-by: Gustavo Zacarias +--- + arptables.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arptables.c b/arptables.c +index 64ac3aa..fe270bc 100644 +--- a/arptables.c ++++ b/arptables.c +@@ -35,7 +35,9 @@ + #include + #include + #include ++#if 0 + #include ++#endif + #include + #include + #include +-- +2.0.4 + diff --git a/features/buildroot/package/arptables/0002-src-Use-stdint-types.patch b/features/buildroot/package/arptables/0002-src-Use-stdint-types.patch new file mode 100644 index 00000000..8a85e705 --- /dev/null +++ b/features/buildroot/package/arptables/0002-src-Use-stdint-types.patch @@ -0,0 +1,134 @@ +From 24957c135eaacd718f3c788285de33d64316b32e Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 10:31:24 +0200 +Subject: [PATCH 1/2] src: Use stdint types + +Backport of upstream commit 047f37b1d5d865084a435fd7594b8c5c332ccb8d + +Please note that the backported patch does not include two changes +to arptables.h from the upstream - these modified lines added in commit +dbbe9f7de36aa3c7dd61dc89092c03f7902e474e which was committed after +the 0.0.4 release. + +Upstream-status: backport +Signed-off-by: Felix Janda +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Brendan Heading +--- + arptables.c | 8 ++++---- + include/arptables.h | 3 ++- + include/libarptc/libarptc.h | 7 ++++--- + libarptc/libarptc.c | 4 ++-- + libarptc/libarptc_incl.c | 2 +- + 5 files changed, 13 insertions(+), 11 deletions(-) + +diff --git a/arptables.c b/arptables.c +index 5535ab2..6d1377f 100644 +--- a/arptables.c ++++ b/arptables.c +@@ -230,7 +230,7 @@ extern void dump_entries(const arptc_handle_t handle); + /etc/protocols */ + struct pprot { + char *name; +- u_int8_t num; ++ uint8_t num; + }; + + /* Primitive headers... */ +@@ -925,7 +925,7 @@ mask_to_dotted(const struct in_addr *mask) + { + int i; + static char buf[20]; +- u_int32_t maskaddr, bits; ++ uint32_t maskaddr, bits; + + maskaddr = ntohl(mask->s_addr); + +@@ -967,7 +967,7 @@ string_to_number(const char *s, unsigned int min, unsigned int max, + } + + static void +-set_option(unsigned int *options, unsigned int option, u_int16_t *invflg, ++set_option(unsigned int *options, unsigned int option, uint16_t *invflg, + int invert) + { + if (*options & option) +@@ -1107,7 +1107,7 @@ register_target(struct arptables_target *me) + } + + static void +-print_num(u_int64_t number, unsigned int format) ++print_num(uint64_t number, unsigned int format) + { + if (format & FMT_KILOMEGAGIGA) { + if (number > 99999) { +diff --git a/include/arptables.h b/include/arptables.h +index 820b664..e6a6ba6 100644 +--- a/include/arptables.h ++++ b/include/arptables.h +@@ -1,6 +1,7 @@ + #ifndef _ARPTABLES_USER_H + #define _ARPTABLES_USER_H + ++#include + #include "arptables_common.h" + #include "libarptc/libarptc.h" + +@@ -126,7 +127,7 @@ extern char *mask_to_dotted(const struct in_addr *mask); + + extern void parse_hostnetworkmask(const char *name, struct in_addr **addrpp, + struct in_addr *maskp, unsigned int *naddrs); +-extern u_int16_t parse_protocol(const char *s); ++extern uint16_t parse_protocol(const char *s); + + extern int do_command(int argc, char *argv[], char **table, + arptc_handle_t *handle); +diff --git a/include/libarptc/libarptc.h b/include/libarptc/libarptc.h +index e4f1175..76fbfab 100644 +--- a/include/libarptc/libarptc.h ++++ b/include/libarptc/libarptc.h +@@ -6,9 +6,10 @@ + #include + + #ifndef ARPT_MIN_ALIGN +-/* arpt_entry has pointers and u_int64_t's in it, so if you align to +- it, you'll also align to any crazy matches and targets someone +- might write */ ++/* arpt_entry has pointers and uint64_t's in it, so if you align to ++ * it, you'll also align to any crazy matches and targets someone ++ * might write. ++ */ + #define ARPT_MIN_ALIGN (__alignof__(struct arpt_entry)) + #endif + +diff --git a/libarptc/libarptc.c b/libarptc/libarptc.c +index 2dcaaef..701bae0 100644 +--- a/libarptc/libarptc.c ++++ b/libarptc/libarptc.c +@@ -256,8 +256,8 @@ unconditional(const struct arpt_arp *arp) + { + unsigned int i; + +- for (i = 0; i < sizeof(*arp)/sizeof(u_int32_t); i++) +- if (((u_int32_t *)arp)[i]) ++ for (i = 0; i < sizeof(*arp) / sizeof(uint32_t); i++) ++ if (((uint32_t *)arp)[i]) + return 0; + + return 1; +diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c +index 2fa3d43..b41fcb2 100644 +--- a/libarptc/libarptc_incl.c ++++ b/libarptc/libarptc_incl.c +@@ -1706,7 +1706,7 @@ TC_COMMIT(TC_HANDLE_T *handle) + /* Kernel will think that pointer should be 64-bits, and get + padding. So we accomodate here (assumption: alignment of + `counters' is on 64-bit boundary). */ +- u_int64_t *kernptr = (u_int64_t *)&newcounters->counters; ++ uint64_t *kernptr = (uint64_t *)&newcounters->counters; + if ((unsigned long)&newcounters->counters % 8 != 0) { + fprintf(stderr, + "counters alignment incorrect! Mail rusty!\n"); +-- +2.4.3 + diff --git a/features/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch b/features/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch new file mode 100644 index 00000000..15e893dd --- /dev/null +++ b/features/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch @@ -0,0 +1,64 @@ +From 5f1379ff68bfedb56309527bee266a591b27a19e Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 10:31:41 +0200 +Subject: [PATCH 2/2] src: Remove support for libc5 + +Fixes compilation with musl libc + +Backport of upstream commit f4ab8f63f11a72f14687a6646d04ae1bae3fa45f +Upstream status: backport +Signed-off-by: Felix Janda +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Brendan Heading +--- + include/libarptc/arpt_kernel_headers.h | 12 ------------ + libarptc/libarptc.c | 4 ---- + 2 files changed, 16 deletions(-) + +diff --git a/include/libarptc/arpt_kernel_headers.h b/include/libarptc/arpt_kernel_headers.h +index 442cc54..140e999 100644 +--- a/include/libarptc/arpt_kernel_headers.h ++++ b/include/libarptc/arpt_kernel_headers.h +@@ -5,7 +5,6 @@ + + #include + +-#if defined(__GLIBC__) && __GLIBC__ == 2 + #include + #include + #include +@@ -14,16 +13,5 @@ + #include + #include + #include +-#else +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#endif + + #endif +diff --git a/libarptc/libarptc.c b/libarptc/libarptc.c +index 701bae0..9c5a5b0 100644 +--- a/libarptc/libarptc.c ++++ b/libarptc/libarptc.c +@@ -23,10 +23,6 @@ + #define inline + #endif + +-#if !defined(__GLIBC__) || (__GLIBC__ < 2) +-typedef unsigned int socklen_t; +-#endif +- + #include "libarptc/libarptc.h" + + #define IP_VERSION 4 +-- +2.4.3 + diff --git a/features/buildroot/package/arptables/0004-Fix-musl-build-issue.patch b/features/buildroot/package/arptables/0004-Fix-musl-build-issue.patch new file mode 100644 index 00000000..e9419b0a --- /dev/null +++ b/features/buildroot/package/arptables/0004-Fix-musl-build-issue.patch @@ -0,0 +1,71 @@ +From cbf84a0bc377c6a368d30571f37ebfab27784697 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Wed, 2 Dec 2015 04:57:33 +0100 +Subject: [PATCH 4/4] Fix musl build issue +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Due to clashes in the namespace between the Linux Kernel headers and the +netinet headers building arptables with the musl C library fails. + +Best advice from the musl developers is to not include both headers in a +userspace tool (see the thread on the musl mailing list [1], especially [2]). + +Since arptables only requires a few definitions from the Linux Kernel headers +we opt-out the clashing header files and define the needed definitions. + +[1] http://www.openwall.com/lists/musl/2012/10/09/1 +[2] http://www.openwall.com/lists/musl/2012/10/11/1 + +Signed-off-by: Jörg Krause +--- + extensions/arpt_CLASSIFY.c | 7 +++++++ + include/linux/netfilter_arp.h | 11 +++++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/extensions/arpt_CLASSIFY.c b/extensions/arpt_CLASSIFY.c +index cb5770b..c58129f 100644 +--- a/extensions/arpt_CLASSIFY.c ++++ b/extensions/arpt_CLASSIFY.c +@@ -21,7 +21,14 @@ + #include + #include + #include ++ ++#ifdef __KERNEL__ + #include ++#else ++struct xt_classify_target_info { ++ uint32_t priority; ++}; ++#endif + + #define TC_H_MAJ_MASK (0xFFFF0000U) + #define TC_H_MIN_MASK (0x0000FFFFU) +diff --git a/include/linux/netfilter_arp.h b/include/linux/netfilter_arp.h +index 92bc6dd..2a63e82 100644 +--- a/include/linux/netfilter_arp.h ++++ b/include/linux/netfilter_arp.h +@@ -5,7 +5,18 @@ + * (C)2002 Rusty Russell IBM -- This code is GPL. + */ + ++#ifdef __KERNEL__ + #include ++#else ++/* Responses from hook functions. */ ++#define NF_DROP 0 ++#define NF_ACCEPT 1 ++#define NF_STOLEN 2 ++#define NF_QUEUE 3 ++#define NF_REPEAT 4 ++#define NF_STOP 5 ++#define NF_MAX_VERDICT NF_STOP ++#endif + + /* There is no PF_ARP. */ + #define NF_ARP 0 +-- +2.6.2 + diff --git a/features/buildroot/package/arptables/Config.in b/features/buildroot/package/arptables/Config.in new file mode 100644 index 00000000..873e791e --- /dev/null +++ b/features/buildroot/package/arptables/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ARPTABLES + bool "arptables" + depends on BR2_USE_MMU # needs fork() + help + Tool to set up, maintain, and inspect the tables of ARP rules. + + http://ebtables.sourceforge.net diff --git a/features/buildroot/package/arptables/arptables.hash b/features/buildroot/package/arptables/arptables.hash new file mode 100644 index 00000000..95b99975 --- /dev/null +++ b/features/buildroot/package/arptables/arptables.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 277985e29ecd93bd759a58242cad0e02ba9d4a6e1b7795235e3b507661bc0049 arptables-v0.0.4.tar.gz diff --git a/features/buildroot/package/arptables/arptables.mk b/features/buildroot/package/arptables/arptables.mk new file mode 100644 index 00000000..257b636d --- /dev/null +++ b/features/buildroot/package/arptables/arptables.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# arptables +# +################################################################################ + +ARPTABLES_VERSION = 0.0.4 +ARPTABLES_SOURCE = arptables-v$(ARPTABLES_VERSION).tar.gz +ARPTABLES_SITE = http://downloads.sourceforge.net/project/ebtables/arptables/arptables-v$(ARPTABLES_VERSION) +ARPTABLES_LICENSE = GPL-2.0+ + +define ARPTABLES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" COPT_FLAGS="$(TARGET_CFLAGS)" +endef + +define ARPTABLES_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/arptables $(TARGET_DIR)/usr/sbin/arptables +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch b/features/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch new file mode 100644 index 00000000..bfcbeb55 --- /dev/null +++ b/features/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch @@ -0,0 +1,35 @@ +From 30a2ecc7939449f235282eb6de42e367fc5b1867 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 14 Jan 2016 22:13:15 +0100 +Subject: [PATCH] Fix FBXConverter: use proper 64-bit constant + +Use proper 64-bit constant for CONVERT_FBX_TIME(time) conversion, fixes: + + code/FBXConverter.cpp:2025: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2026: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2794: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2868: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2878: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2888: error: integer constant is too large for 'long' type + +Signed-off-by: Peter Seiderer +--- + code/FBXConverter.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp +index e0c6b9c..b1e9a71 100644 +--- a/code/FBXConverter.cpp ++++ b/code/FBXConverter.cpp +@@ -67,7 +67,7 @@ namespace FBX { + + #define MAGIC_NODE_TAG "_$AssimpFbx$" + +-#define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L ++#define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000LL + + // XXX vc9's debugger won't step into anonymous namespaces + //namespace { +-- +2.1.4 + diff --git a/features/buildroot/package/assimp/Config.in b/features/buildroot/package/assimp/Config.in new file mode 100644 index 00000000..630758f3 --- /dev/null +++ b/features/buildroot/package/assimp/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ASSIMP + bool "assimp" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ZLIB + help + Open Asset Import Library (assimp) is a portable Open Source + library to import various well-known 3D model formats in a + uniform manner. The most recent version also knows how to + export 3d files and is therefore suitable as a general-purpose + 3D model converter. + + http://www.assimp.org + +comment "assimp needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/assimp/assimp.hash b/features/buildroot/package/assimp/assimp.hash new file mode 100644 index 00000000..72d367ac --- /dev/null +++ b/features/buildroot/package/assimp/assimp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3520b1e9793b93a2ca3b797199e16f40d61762617e072f2d525fad70f9678a71 assimp-4.1.0.tar.gz +sha256 a26ccc3dbf2f58ea99c100945a8a126fa0f9f4d7fd2b49aa8bdb8e09355864d8 LICENSE diff --git a/features/buildroot/package/assimp/assimp.mk b/features/buildroot/package/assimp/assimp.mk new file mode 100644 index 00000000..ce02ef30 --- /dev/null +++ b/features/buildroot/package/assimp/assimp.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# assimp +# +################################################################################ + +ASSIMP_VERSION = 4.1.0 +ASSIMP_SITE = $(call github,assimp,assimp,v$(ASSIMP_VERSION)) +ASSIMP_LICENSE = BSD-3-Clause +ASSIMP_LICENSE_FILES = LICENSE +ASSIMP_DEPENDENCIES = zlib +ASSIMP_INSTALL_STAGING = YES + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k),y) +ASSIMP_CXXFLAGS += -mxgot +endif + +# workaround SuperH compiler failure when static linking (i.e -fPIC is +# not passed) in gcc versions 5.x or older. The -Os optimization level +# causes a "unable to find a register to spill in class +# 'GENERAL_REGS'" error. -O2 works fine. +ifeq ($(BR2_sh):$(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:y:) +ASSIMP_CXXFLAGS += -O2 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +ASSIMP_CXXFLAGS += -O0 +endif + +ASSIMP_CONF_OPTS += -DASSIMP_BUILD_TESTS=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(ASSIMP_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch b/features/buildroot/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch new file mode 100644 index 00000000..8412843d --- /dev/null +++ b/features/buildroot/package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch @@ -0,0 +1,52 @@ +From 3e8a9e9a1c7eae515eb628778c3c8a04338b3bb3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:21:09 +0100 +Subject: [PATCH] sounds: do not download and check sha1s + +To validate the sound archives, the corresponding sha1s are also +downloaded from the same location, and that download is done at install +time. + +However, that poses at least two problems: + + - in Buildroot, we already have validated the downloads with the sha1s + anyway, and trying to download anything at install time is not + always possible (e.g. for off-line builds); + + - since the download scheme is not secured (plain http), a + man-in-the-middle for the sounds will also be able to MITM the + download of the sha1s, so there is absolutely no additional safety + in doing so. + +So we just do without the sha1 download and checks. + +Signed-off-by: "Yann E. MORIN" +--- + sounds/Makefile | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/sounds/Makefile b/sounds/Makefile +index 84d0f45..7a80d56 100644 +--- a/sounds/Makefile ++++ b/sounds/Makefile +@@ -100,17 +100,7 @@ ifneq ($(SOUNDS_CACHE_DIR),) + if test ! -f "$$(SOUNDS_CACHE_DIR)/$$@"; then \ + (cd "$$(SOUNDS_CACHE_DIR)"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@); \ + fi; \ +- if test ! -f "$$(SOUNDS_CACHE_DIR)/$$@.sha1"; then \ +- (cd "$$(SOUNDS_CACHE_DIR)"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@.sha1); \ +- fi; \ + $$(LN) -sf "$$(SOUNDS_CACHE_DIR)/$$@" .; \ +- $$(LN) -sf "$$(SOUNDS_CACHE_DIR)/$$@.sha1" .; \ +- $$(SHA1SUM) -c --status $$@.sha1 || \ +- ( \ +- rm -f "$$(SOUNDS_CACHE_DIR)/$$@" "$$(SOUNDS_CACHE_DIR)/$$@.sha1" $$@ $$@.sha1; \ +- echo "Bad checksum: $$@" 1>&2; \ +- exit 1; \ +- ) || exit 1; \ + fi + else + $(CMD_PREFIX) \ +-- +2.7.4 + diff --git a/features/buildroot/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch b/features/buildroot/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch new file mode 100644 index 00000000..d82f5084 --- /dev/null +++ b/features/buildroot/package/asterisk/0002-configure-fix-detection-of-libcrypt.patch @@ -0,0 +1,43 @@ +From 8996503f6c55e55f326ab11c18278954ad7abaf3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:21:57 +0100 +Subject: [PATCH] configure: fix detection of libcrypt + +The crypt() function is searched in two locations: -lcrypt and the +standard C library. + +The result of the former is stored in the LIBCRYPT 'scheme' while that +of the latter is stored in the 'SYSCRYPT' scheme. + +However, the check for mandatory modules looks at the CRYPT 'scheme', +and thus concludes that crypt is missing when it was successfully found. + +Fix that by also storing the result of either check in the 'CRYPT' +scheme. + +Signed-off-by: "Yann E. MORIN" +--- + configure | 2 ++ + configure.ac | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 121dd93..d459ff5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2406,10 +2406,12 @@ AC_CHECK_FUNC([crypt], [SYSCRYPT=true], [SYSCRYPT=""]) + if test "x$LIBCRYPT_LIB" != "x" ; then + CRYPT_LIB="$LIBCRYPT_LIB" + CRYPT_INCLUDE="$LIBCRYPT_INCLUDE" ++ PBX_CRYPT=1 + AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.]) + elif test "x$SYSCRYPT" != "x" ; then + CRYPT_LIB="" + CRYPT_INCLUDE="" ++ PBX_CRYPT=1 + AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.]) + fi + +-- +2.7.4 + diff --git a/features/buildroot/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch b/features/buildroot/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch new file mode 100644 index 00000000..20cfc938 --- /dev/null +++ b/features/buildroot/package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch @@ -0,0 +1,32 @@ +From 933b2554a40f932571bdbdbb5217cda3e35fd61f Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 27 Nov 2017 12:52:52 +0100 +Subject: [PATCH] build: ensure target directory for modules exists + +Currently, in highly-parallel builds, it is possible that installing +modules fails because the target directory does not exist yet. + +We fix that by instructing $(INSTALL) to create the destination directory +first. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.moddir_rules | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.moddir_rules b/Makefile.moddir_rules +index 59190bece9..b73153a9a5 100644 +--- a/Makefile.moddir_rules ++++ b/Makefile.moddir_rules +@@ -110,7 +110,7 @@ clean:: + + install:: all + @echo "Installing modules from `basename $(CURDIR)`..." +- @for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done ++ @for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -D -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done + ifneq ($(findstring :,$(XMLSTARLET)$(BASH)),:) + @if [ -f .moduleinfo ] ; then \ + declare -A DISABLED_MODS ;\ +-- +2.11.0 + diff --git a/features/buildroot/package/asterisk/0004-install-samples-need-the-data-files.patch b/features/buildroot/package/asterisk/0004-install-samples-need-the-data-files.patch new file mode 100644 index 00000000..a9560e82 --- /dev/null +++ b/features/buildroot/package/asterisk/0004-install-samples-need-the-data-files.patch @@ -0,0 +1,35 @@ +From 05680ea9899c2246c23d11860c2c8e10aa8f80c7 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 1 Dec 2017 11:08:16 +0100 +Subject: [PATCH] install: samples need the data files + +When installing samples, "sample voicemail" is generated from the +already-installed sound files. + +However, when doing the install and the samples at the same time in a +parallel install, it is possible that the sound files are not already +installed at the time we try to generate the voicemail data. + +Ensure the needed dependency. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index f29c07f680..b58f707b61 100644 +--- a/Makefile ++++ b/Makefile +@@ -779,7 +779,7 @@ adsi: + $(INSTALL) -m 644 "$$x" "$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`" ; \ + done + +-samples: adsi ++samples: adsi datafiles + @echo Installing other config files... + $(call INSTALL_CONFIGS,samples,.sample) + $(INSTALL) -d "$(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX" +-- +2.11.0 + diff --git a/features/buildroot/package/asterisk/0005-configure-fix-detection-of-re-entrant-resolver-funct.patch b/features/buildroot/package/asterisk/0005-configure-fix-detection-of-re-entrant-resolver-funct.patch new file mode 100644 index 00000000..bee8fdbb --- /dev/null +++ b/features/buildroot/package/asterisk/0005-configure-fix-detection-of-re-entrant-resolver-funct.patch @@ -0,0 +1,38 @@ +From 9b4070944578336506cd0a76de6f733c72d0ca74 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 13 Oct 2018 11:11:15 +0200 +Subject: [PATCH] configure: fix detection of re-entrant resolver functions + +Fixes https://issues.asterisk.org/jira/browse/ASTERISK-21795 + +uClibc does not provide res_nsearch: +asterisk-16.0.0/main/dns.c:506: undefined reference to `res_nsearch' + +Patch coded by Yann E. MORIN: +http://lists.busybox.net/pipermail/buildroot/2018-October/232630.html + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index dd0c8edd13..ee1ca9ceb6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1388,7 +1388,11 @@ AC_LINK_IFELSE( + #include + #endif + #include ], +- [int foo = res_ninit(NULL);])], ++ [ ++ int foo; ++ foo = res_ninit(NULL); ++ foo = res_nsearch(NULL, NULL, 0, 0, NULL, 0); ++ ])], + AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.]) + AC_SEARCH_LIBS(res_9_ndestroy, resolv) +-- +2.19.1 + diff --git a/features/buildroot/package/asterisk/Config.in b/features/buildroot/package/asterisk/Config.in new file mode 100644 index 00000000..c52456f8 --- /dev/null +++ b/features/buildroot/package/asterisk/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_ASTERISK + bool "asterisk" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU # libedit + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # libedit + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBEDIT + select BR2_PACKAGE_LIBILBC + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Asterisk is an open source framework for building + communications applications. Asterisk turns an ordinary + computer into a communications server. Asterisk powers IP PBX + systems, VoIP gateways, conference servers and other custom + solutions. It is used by small businesses, large businesses, + call centers, carriers and government agencies, worldwide. + Asterisk is free and open source. + + http://www.asterisk.org/ + +comment "asterisk needs a glibc or uClibc toolchain w/ C++, dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_USES_MUSL || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR diff --git a/features/buildroot/package/asterisk/asterisk.hash b/features/buildroot/package/asterisk/asterisk.hash new file mode 100644 index 00000000..dd1e1db3 --- /dev/null +++ b/features/buildroot/package/asterisk/asterisk.hash @@ -0,0 +1,15 @@ +# Locally computed +sha256 8cabb7a6ad2c35b7fb5c520977f2b2c18b471e5b825b65dc411744c6bed2b9f8 asterisk-16.4.1.tar.gz + +# sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases +# sha256 locally computed +sha1 721c512feaea102700d5bdce952fdc0bb29dc640 asterisk-core-sounds-en-gsm-1.6.1.tar.gz +sha256 d79c3d2044d41da8f363c447dfccc140be86b4fcc41b1ca5a60a80da52f24f2d asterisk-core-sounds-en-gsm-1.6.1.tar.gz +sha1 f40fd6ea03dfe8d72ada2540b2288bfdc006381d asterisk-moh-opsound-wav-2.03.tar.gz +sha256 449fb810d16502c3052fedf02f7e77b36206ac5a145f3dacf4177843a2fcb538 asterisk-moh-opsound-wav-2.03.tar.gz + +# License files, locally computed +sha256 82af40ed7f49c08685360811993d9396320842f021df828801d733e8fdc0312f COPYING +sha256 ac5571f00e558e3b7c9b3f13f421b874cc12cf4250c4f70094c71544cf486312 main/sha1.c +sha256 309462c10e84f46bda22032ebe6359f3e9e3e23afcf1fc2aaed5b59daf800d84 codecs/speex/speex_resampler.h +sha256 1ca2c7a7a1ae7ccd75212a8c1e85dd9ec92bdbc9170aafd97ea60459387755fd utils/db1-ast/include/db.h diff --git a/features/buildroot/package/asterisk/asterisk.mk b/features/buildroot/package/asterisk/asterisk.mk new file mode 100644 index 00000000..53dd5936 --- /dev/null +++ b/features/buildroot/package/asterisk/asterisk.mk @@ -0,0 +1,332 @@ +################################################################################ +# +# asterisk +# +################################################################################ + +ASTERISK_VERSION = 16.4.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)) + +ASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases +ASTERISK_EXTRA_DOWNLOADS = \ + $(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.6.1.tar.gz \ + $(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz + +ASTERISK_LICENSE = GPL-2.0, BSD-3c (SHA1, resample), BSD-4c (db1-ast) +ASTERISK_LICENSE_FILES = \ + COPYING \ + main/sha1.c \ + codecs/speex/speex_resampler.h \ + utils/db1-ast/include/db.h + +# For patches 0002, 0003 and 0005 +ASTERISK_AUTORECONF = YES +ASTERISK_AUTORECONF_OPTS = -Iautoconf -Ithird-party -Ithird-party/pjproject -Ithird-party/jansson + +ASTERISK_DEPENDENCIES = \ + host-asterisk \ + jansson \ + libcurl \ + libedit \ + libxml2 \ + sqlite \ + util-linux + +# Asterisk wants to run its menuselect tool (a highly tweaked derivative of +# kconfig), but builds it using the target tools. So we build it in the host +# variant (see below), and copy the full build tree of menuselect. +define ASTERISK_COPY_MENUSELECT + rm -rf $(@D)/menuselect + cp -a $(HOST_ASTERISK_DIR)/menuselect $(@D)/menuselect +endef +ASTERISK_PRE_CONFIGURE_HOOKS += ASTERISK_COPY_MENUSELECT + +ASTERISK_CONF_OPTS = \ + --disable-xmldoc \ + --disable-internal-poll \ + --disable-asteriskssl \ + --disable-rpath \ + --without-bfd \ + --without-cap \ + --without-cpg \ + --without-curses \ + --without-gtk2 \ + --without-gmime \ + --without-hoard \ + --without-iconv \ + --without-iksemel \ + --without-imap \ + --without-inotify \ + --without-iodbc \ + --without-isdnnet \ + --without-jack \ + --without-uriparser \ + --without-kqueue \ + --without-libedit \ + --without-libxslt \ + --without-lua \ + --without-misdn \ + --without-mysqlclient \ + --without-nbs \ + --without-neon29 \ + --without-newt \ + --without-openr2 \ + --without-osptk \ + --without-oss \ + --without-postgres \ + --without-pjproject \ + --without-pjproject-bundled \ + --without-popt \ + --without-resample \ + --without-sdl \ + --without-SDL_image \ + --without-sqlite \ + --without-suppserv \ + --without-tds \ + --without-termcap \ + --without-timerfd \ + --without-tinfo \ + --without-unbound \ + --without-unixodbc \ + --without-vpb \ + --without-x11 \ + --with-crypt \ + --with-jansson \ + --with-libcurl \ + --with-ilbc \ + --with-libxml2 \ + --with-libedit="$(STAGING_DIR)/usr" \ + --with-sqlite3="$(STAGING_DIR)/usr" \ + --with-sounds-cache=$(ASTERISK_DL_DIR) + +# avcodec are from ffmpeg. There is virtually zero chance this could +# even work; asterisk is looking for ffmpeg/avcodec.h which has not +# been installed in this location since early 2007 (~10 years ago at +# the time of this writing). +ASTERISK_CONF_OPTS += --without-avcodec + +ASTERISK_CONF_ENV = \ + ac_cv_file_bridges_bridge_softmix_include_hrirs_h=true \ + ac_cv_path_CONFIG_LIBXML2=$(STAGING_DIR)/usr/bin/xml2-config + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ASTERISK_CONF_ENV += LIBS="-latomic" +endif + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +ASTERISK_CONF_OPTS += --with-execinfo +else +ASTERISK_CONF_OPTS += --without-execinfo +endif + +ifeq ($(BR2_PACKAGE_LIBGSM),y) +ASTERISK_DEPENDENCIES += libgsm +ASTERISK_CONF_OPTS += --with-gsm +else +ASTERISK_CONF_OPTS += --without-gsm +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +ASTERISK_DEPENDENCIES += alsa-lib +ASTERISK_CONF_OPTS += --with-asound +else +ASTERISK_CONF_OPTS += --without-asound +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +ASTERISK_DEPENDENCIES += bluez_utils +ASTERISK_CONF_OPTS += --with-bluetooth +else +ASTERISK_CONF_OPTS += --without-bluetooth +endif + +ifeq ($(BR2_PACKAGE_LIBICAL),y) +ASTERISK_DEPENDENCIES += libical +ASTERISK_CONF_OPTS += --with-ical +else +ASTERISK_CONF_OPTS += --without-ical +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +ASTERISK_DEPENDENCIES += openldap +ASTERISK_CONF_OPTS += --with-ldap +else +ASTERISK_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_NEON),y) +ASTERISK_DEPENDENCIES += neon +ASTERISK_CONF_OPTS += --with-neon +ASTERISK_CONF_ENV += \ + ac_cv_path_CONFIG_NEON=$(STAGING_DIR)/usr/bin/neon-config +else +ASTERISK_CONF_OPTS += --without-neon +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +ASTERISK_DEPENDENCIES += netsnmp +ASTERISK_CONF_OPTS += --with-netsnmp=$(STAGING_DIR)/usr +else +ASTERISK_CONF_OPTS += --without-netsnmp +endif + +ifeq ($(BR2_PACKAGE_LIBOGG),y) +ASTERISK_DEPENDENCIES += libogg +ASTERISK_CONF_OPTS += --with-ogg +else +ASTERISK_CONF_OPTS += --without-ogg +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +ASTERISK_DEPENDENCIES += opus +ASTERISK_CONF_OPTS += --with-opus +else +ASTERISK_CONF_OPTS += --without-opus +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +ASTERISK_DEPENDENCIES += portaudio +ASTERISK_CONF_OPTS += --with-portaudio +else +ASTERISK_CONF_OPTS += --without-portaudio +endif + +ifeq ($(BR2_PACKAGE_FREERADIUS_CLIENT),y) +ASTERISK_DEPENDENCIES += freeradius-client +ASTERISK_CONF_OPTS += --with-radius +else +ASTERISK_CONF_OPTS += --without-radius +endif + +ifeq ($(BR2_PACKAGE_DAHDI_LINUX)$(BR2_PACKAGE_DAHDI_TOOLS),yy) +ASTERISK_DEPENDENCIES += dahdi-linux dahdi-tools +ASTERISK_CONF_OPTS += --with-dahdi --with-tonezone + +ifeq ($(BR2_PACKAGE_LIBPRI),y) +ASTERISK_DEPENDENCIES += libpri +ASTERISK_CONF_OPTS += --with-pri +else +ASTERISK_CONF_OPTS += --without-pri +endif # PRI + +ifeq ($(BR2_PACKAGE_LIBSS7),y) +ASTERISK_DEPENDENCIES += libss7 +ASTERISK_CONF_OPTS += --with-ss7 +else +ASTERISK_CONF_OPTS += --without-ss7 +endif # SS7 + +else +ASTERISK_CONF_OPTS += \ + --without-dahdi --without-tonezone \ + --without-pri --without-ss7 +endif # DAHDI + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ASTERISK_DEPENDENCIES += openssl +ASTERISK_CONF_OPTS += --with-ssl +else +ASTERISK_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_SPANDSP),y) +ASTERISK_DEPENDENCIES += spandsp +ASTERISK_CONF_OPTS += --with-spandsp +else +ASTERISK_CONF_OPTS += --without-spandsp +endif + +ifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy) +ASTERISK_DEPENDENCIES += speex +ASTERISK_CONF_OPTS += --with-speex --with-speexdsp +else +ASTERISK_CONF_OPTS += --without-speex --without-speexdsp +endif + +# asterisk needs an openssl-enabled libsrtp +ifeq ($(BR2_PACKAGE_LIBSRTP)$(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yyx) +ASTERISK_DEPENDENCIES += libsrtp +ASTERISK_CONF_OPTS += --with-srtp +else +ASTERISK_CONF_OPTS += --without-srtp +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +ASTERISK_DEPENDENCIES += libvorbis +ASTERISK_CONF_OPTS += --with-vorbis +else +ASTERISK_CONF_OPTS += --without-vorbis +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ASTERISK_DEPENDENCIES += zlib +ASTERISK_CONF_OPTS += --with-z +else +ASTERISK_CONF_OPTS += --without-z +endif + +ASTERISK_DIRS = \ + ASTVARLIBDIR="/usr/lib/asterisk" \ + ASTDATADIR="/usr/lib/asterisk" \ + ASTKEYDIR="/usr/lib/asterisk" \ + ASTDBDIR="/usr/lib/asterisk" + +ASTERISK_MAKE_OPTS = $(ASTERISK_DIRS) + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ASTERISK_MAKE_OPTS += ASTLDFLAGS="-latomic" +endif + +# We want to install sample configuration files, too. +ASTERISK_INSTALL_TARGET_OPTS = \ + $(ASTERISK_DIRS) \ + DESTDIR=$(TARGET_DIR) \ + LDCONFIG=true \ + install samples + +$(eval $(autotools-package)) + +#------------------------------------------------------------------------------- +# This part deals with building the menuselect tool as a host package + +HOST_ASTERISK_DEPENDENCIES = host-pkgconf host-libxml2 host-ncurses +HOST_ASTERISK_SUBDIR = menuselect + +HOST_ASTERISK_LICENSE = GPL-2.0 +HOST_ASTERISK_LICENSE_FILES = COPYING + +# No need to autoreconf for the host variant, +# so do not inherit the target setup. +HOST_ASTERISK_AUTORECONF = NO + +HOST_ASTERISK_CONF_ENV = CONFIG_LIBXML2=$(HOST_DIR)/bin/xml2-config + +HOST_ASTERISK_CONF_OPTS = \ + --without-newt \ + --without-curses \ + --with-ncurses=$(HOST_DIR) + +# Not an automake package, so does not inherit LDFLAGS et al. from +# the configure run. +HOST_ASTERISK_MAKE_ENV = $(HOST_CONFIGURE_OPTS) + +# Even though menuselect is an autotools package, it is not an automake +# package and does not have an 'install' rule, as asterisk does expect +# it to be in a sub-directory of its source tree. We do so by copying +# the full menuselect build tree as a pre-configure hook in the target +# variant. +# However, the sanity checks on host packages are not run on menuselect. +# But we still want to catch that menuselect has the proper rpath set, +# for example, as it uses host libraries that we do build, like +# host-libxml2. +# So we do manually install the menuselect tool. +define HOST_ASTERISK_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/menuselect/menuselect \ + $(HOST_DIR)/bin/asterisk-menuselect +endef + +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/at-spi2-atk/Config.in b/features/buildroot/package/at-spi2-atk/Config.in new file mode 100644 index 00000000..9a7cfde0 --- /dev/null +++ b/features/buildroot/package/at-spi2-atk/Config.in @@ -0,0 +1,22 @@ +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/features/buildroot/package/at-spi2-atk/at-spi2-atk.hash b/features/buildroot/package/at-spi2-atk/at-spi2-atk.hash new file mode 100644 index 00000000..77c8f68e --- /dev/null +++ b/features/buildroot/package/at-spi2-atk/at-spi2-atk.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 61891f0abae1689f6617a963105a3f1dcdab5970c4a36ded9c79a7a544b16a6e at-spi2-atk-2.26.2.tar.xz +sha256 c6105b34ab6829ff5c70eba234f40053215fa9f8383ced271b0e370a1923624b COPYING diff --git a/features/buildroot/package/at-spi2-atk/at-spi2-atk.mk b/features/buildroot/package/at-spi2-atk/at-spi2-atk.mk new file mode 100644 index 00000000..4ef681b3 --- /dev/null +++ b/features/buildroot/package/at-spi2-atk/at-spi2-atk.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# at-spi2-atk +# +################################################################################ + +AT_SPI2_ATK_VERSION_MAJOR = 2.26 +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.0+ +AT_SPI2_ATK_LICENSE_FILES = COPYING +AT_SPI2_ATK_INSTALL_STAGING = YES +AT_SPI2_ATK_DEPENDENCIES = atk at-spi2-core libglib2 host-pkgconf + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/at-spi2-core/0001-Fix-meson.build-for-meson-0.50.0.patch b/features/buildroot/package/at-spi2-core/0001-Fix-meson.build-for-meson-0.50.0.patch new file mode 100644 index 00000000..154d7010 --- /dev/null +++ b/features/buildroot/package/at-spi2-core/0001-Fix-meson.build-for-meson-0.50.0.patch @@ -0,0 +1,35 @@ +From 3b154996a27ede1c94cbc590e2db3858389d18c2 Mon Sep 17 00:00:00 2001 +From: Tobias Stoeckmann +Date: Tue, 12 Mar 2019 11:46:24 +0100 +Subject: [PATCH] Fix meson.build for meson 0.50.0. + +Since meson 0.50.0 it is not possible anymore to specify an +absolute directory for subdir. To keep current functionality, +use install_dir instead. + +atspi/meson.build:60:0: ERROR: Subdir keyword must not be an absolute path. + +Signed-off-by: Tobias Stoeckmann + +Upstream: https://github.com/GNOME/at-spi2-core/commit/44a812ea51223d82f21a098a2d45fcc5c329ce7a.patch +Signed-off-by: Peter Seiderer +--- + atspi/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/atspi/meson.build b/atspi/meson.build +index 17bfc45..2e44ffd 100644 +--- a/atspi/meson.build ++++ b/atspi/meson.build +@@ -57,7 +57,7 @@ atspi_headers = [ + + atspi_includedir = join_paths(get_option('prefix'), get_option('includedir'), 'at-spi-2.0', 'atspi') + +-install_headers(atspi_headers, subdir: atspi_includedir) ++install_headers(atspi_headers, install_dir: atspi_includedir) + + atspi_enums = gnome.mkenums('atspi-enum-types', + sources: [ 'atspi-constants.h', 'atspi-types.h' ], +-- +2.21.0 + diff --git a/features/buildroot/package/at-spi2-core/Config.in b/features/buildroot/package/at-spi2-core/Config.in new file mode 100644 index 00000000..f56c5b93 --- /dev/null +++ b/features/buildroot/package/at-spi2-core/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_AT_SPI2_CORE + bool "at-spi2-core" + depends on BR2_PACKAGE_XORG7 # xlib-libxtst + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_XLIB_LIBXTST + help + The At-Spi2 Core package is a part of the GNOME + Accessibility Project. It provides a Service Provider + Interface for the Assistive Technologies available on the + GNOME platform and a library against which applications + can be linked. + + https://wiki.gnome.org/Accessibility + +comment "at-spi2-core needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +comment "at-spi2-core depends on X.org" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_XORG7 diff --git a/features/buildroot/package/at-spi2-core/at-spi2-core.hash b/features/buildroot/package/at-spi2-core/at-spi2-core.hash new file mode 100644 index 00000000..9c96da31 --- /dev/null +++ b/features/buildroot/package/at-spi2-core/at-spi2-core.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 42a2487ab11ce43c288e73b2668ef8b1ab40a0e2b4f94e80fca04ad27b6f1c87 at-spi2-core-2.28.0.tar.xz +sha256 c6105b34ab6829ff5c70eba234f40053215fa9f8383ced271b0e370a1923624b COPYING diff --git a/features/buildroot/package/at-spi2-core/at-spi2-core.mk b/features/buildroot/package/at-spi2-core/at-spi2-core.mk new file mode 100644 index 00000000..3a5197eb --- /dev/null +++ b/features/buildroot/package/at-spi2-core/at-spi2-core.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# at-spi2-core +# +################################################################################ + +AT_SPI2_CORE_VERSION_MAJOR = 2.28 +AT_SPI2_CORE_VERSION = $(AT_SPI2_CORE_VERSION_MAJOR).0 +AT_SPI2_CORE_SOURCE = at-spi2-core-$(AT_SPI2_CORE_VERSION).tar.xz +AT_SPI2_CORE_SITE = http://ftp.gnome.org/pub/gnome/sources/at-spi2-core/$(AT_SPI2_CORE_VERSION_MAJOR) +AT_SPI2_CORE_LICENSE = LGPL-2.0+ +AT_SPI2_CORE_LICENSE_FILES = COPYING +AT_SPI2_CORE_INSTALL_STAGING = YES +AT_SPI2_CORE_DEPENDENCIES = host-pkgconf dbus libglib2 xlib_libXtst \ + $(TARGET_NLS_DEPENDENCIES) +AT_SPI2_CORE_CONF_OPTS = -Ddbus_daemon=/usr/bin/dbus-daemon + +AT_SPI2_CORE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +$(eval $(meson-package)) diff --git a/features/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch b/features/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch new file mode 100644 index 00000000..e4276ac2 --- /dev/null +++ b/features/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch @@ -0,0 +1,34 @@ +From e12c96cccab550eda31cf7bb1dedddd3670ffe69 Mon Sep 17 00:00:00 2001 +From: Marc Kleine-Budde +Date: Tue, 1 Dec 2009 17:22:22 +0100 +Subject: [PATCH 2/5] configure.ac: convert AC_TRY_COMPILE -> AC_COMPILE_IFELSE + +Signed-off-by: Marc Kleine-Budde +--- + configure.ac | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 997a37f..cab80ed 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -40,11 +40,11 @@ case "$host" in + esac + + AC_MSG_CHECKING(__attribute__((noreturn))) +-AC_TRY_COMPILE([], [void __attribute__((noreturn)) panic(void);], +- AC_MSG_RESULT(yes) +- AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, +- [Define to 1 if compiler supports __attribute__((noreturn))]), +- AC_MSG_RESULT(no) ++AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([[]], [[void __attribute__((noreturn)) panic(void);]])], ++ [AC_MSG_RESULT(yes) ++ AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, Define to 1 if compiler supports __attribute__((noreturn)))], ++ [AC_MSG_RESULT(no)] + ) + dnl Checks for libraries. + +-- +1.6.5.3 + diff --git a/features/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch b/features/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch new file mode 100644 index 00000000..856b6c8d --- /dev/null +++ b/features/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch @@ -0,0 +1,108 @@ +From 195d30e2e01fe2f91ed3bdaeec3982aa66b309dd Mon Sep 17 00:00:00 2001 +From: Marc Kleine-Budde +Date: Tue, 1 Dec 2009 20:57:45 +0100 +Subject: [PATCH 5/5] Makefile.in: replace IROOT by DESTDIR + +This patch replaces IROOT by DESTDIR, which is the autotools standard +variable. For backwards compatibilty IROOT overwrites the DESTDIR. + +[Vincent: tweak the patch for the new version] + +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Vicente Olivert Riera +--- + Makefile.in | 68 ++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 36 insertions(+), 32 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 06544f9..1f699d9 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -17,6 +17,10 @@ atdocdir = $(docdir)/at + etcdir = @ETCDIR@ + systemdsystemunitdir = @systemdsystemunitdir@ + ++ifdef IROOT ++DESTDIR = $(DESTDIR) ++endif ++ + DAEMON_USERNAME = @DAEMON_USERNAME@ + DAEMON_GROUPNAME= @DAEMON_GROUPNAME@ + LOADAVG_MX = @LOADAVG_MX@ +@@ -91,41 +95,41 @@ atrun: atrun.in + $(CC) -c $(CFLAGS) $(DEFS) $*.c + + install: all +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir) +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) +- chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) +- touch $(IROOT)$(LFILE) +- chmod 600 $(IROOT)$(LFILE) +- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE) +- test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(IROOT)$(bindir) +- $(LN_S) -f at $(IROOT)$(bindir)/atq +- $(LN_S) -f at $(IROOT)$(bindir)/atrm +- $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir) +- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir) +- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir) +- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir) +- $(INSTALL) -g root -o root -m 755 atd $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/ +- cd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 +- $(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/ ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) ++ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ touch $(DESTDIR)$(LFILE) ++ chmod 600 $(DESTDIR)$(LFILE) ++ chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) ++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ ++ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) ++ $(LN_S) -f at $(DESTDIR)$(bindir)/atq ++ $(LN_S) -f at $(DESTDIR)$(bindir)/atrm ++ $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) ++ $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) ++ $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) ++ $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) ++ $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) ++ $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ ++ cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 ++ $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 ++ $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/ +- cd $(IROOT)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 +- $(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir) +- rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \ +- $(IROOT)$(mandir)/cat1/atq.1* +- rm -f $(IROOT)$(mandir)/cat1/atd.8* ++ $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ ++ cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 ++ $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) ++ rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ ++ $(DESTDIR)$(mandir)/cat1/atq.1* ++ rm -f $(DESTDIR)$(mandir)/cat1/atd.8* + if test x"$(systemdsystemunitdir)" != xno; then \ +- $(INSTALL) -o root -g root -m 755 -d $(IROOT)$(systemdsystemunitdir); \ +- $(INSTALL) -o root -g root -m 644 atd.service $(IROOT)$(systemdsystemunitdir); \ ++ $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ + fi + + dist: checkin $(DIST) $(LIST) Filelist.asc +-- +2.4.10 + diff --git a/features/buildroot/package/at/0003-Makefile.in-make-install-fix.patch b/features/buildroot/package/at/0003-Makefile.in-make-install-fix.patch new file mode 100644 index 00000000..831ea1a3 --- /dev/null +++ b/features/buildroot/package/at/0003-Makefile.in-make-install-fix.patch @@ -0,0 +1,83 @@ +[PATCH]: Makefile.in: fix make install for non-root, don't strip + +Buildroot will ensure all files are owned by root and stripped anyway +(if needed) before the rootfs is created. + +[Vincent: tweak the patch for the new version] + +Signed-off-by: Peter Korsgaard +Signed-off-by: Vicente Olivert Riera +--- + Makefile.in | 43 +++++++++++++++++++++---------------------- + 1 file changed, 21 insertions(+), 22 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 1f699d9..f313f9b 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -95,41 +95,40 @@ atrun: atrun.in + $(CC) -c $(CFLAGS) $(DEFS) $*.c + + install: all +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + touch $(DESTDIR)$(LFILE) + chmod 600 $(DESTDIR)$(LFILE) +- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) +- test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) ++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(DESTDIR)$(etcdir)/ ++ $(INSTALL) -m 6755 at $(DESTDIR)$(bindir) + $(LN_S) -f at $(DESTDIR)$(bindir)/atq + $(LN_S) -f at $(DESTDIR)$(bindir)/atrm +- $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) +- $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ ++ $(INSTALL) -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir) ++ $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/ + cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 +- $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/ ++ $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 ++ $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ ++ $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ + cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 +- $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir) + rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ + $(DESTDIR)$(mandir)/cat1/atq.1* + rm -f $(DESTDIR)$(mandir)/cat1/atd.8* + if test x"$(systemdsystemunitdir)" != xno; then \ +- $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ +- $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ + fi + + dist: checkin $(DIST) $(LIST) Filelist.asc +-- +2.4.10 + diff --git a/features/buildroot/package/at/0004-getloadavg.c-fix.patch b/features/buildroot/package/at/0004-getloadavg.c-fix.patch new file mode 100644 index 00000000..e0739271 --- /dev/null +++ b/features/buildroot/package/at/0004-getloadavg.c-fix.patch @@ -0,0 +1,30 @@ +[PATCH]: fix getloadavg.c compilation, revert to 3.1.10 version + +getloadavg.c shipped with 3.1.13 doesn't compile because it references +headers not shipped. Fix it by simply reverting to the 3.1.10 version. + +Signed-off-by: Peter Korsgaard +--- + getloadavg.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: at-3.1.13/getloadavg.c +=================================================================== +--- at-3.1.13.orig/getloadavg.c ++++ at-3.1.13/getloadavg.c +@@ -66,11 +66,12 @@ Boston, MA 02110-1301 USA */ + + /* This should always be first. */ + #ifdef HAVE_CONFIG_H +-#include ++#include "config.h" + #endif + +-#include "lisp.h" +-#include "sysfile.h" /* for encapsulated open, close, read, write */ ++#include ++#include ++#include + + #ifndef HAVE_GETLOADAVG + diff --git a/features/buildroot/package/at/0005-parsetime.l-include-config-h.patch b/features/buildroot/package/at/0005-parsetime.l-include-config-h.patch new file mode 100644 index 00000000..f4111ebf --- /dev/null +++ b/features/buildroot/package/at/0005-parsetime.l-include-config-h.patch @@ -0,0 +1,16 @@ +Make sure to include config.h so that NEEDS_* macros are properly +taken into account. This was a problem for NEEDS_YYWRAP, which was set +to 1 in config.h, but the corresponding code wasn't compiled in. + +Index: at-3.1.13/parsetime.l +=================================================================== +--- at-3.1.13.orig/parsetime.l ++++ at-3.1.13/parsetime.l +@@ -4,6 +4,7 @@ + #include + #include "y.tab.h" + #include "parsetime.h" ++#include "config.h" + + char *last_token = NULL; + char **my_argv; diff --git a/features/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch b/features/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch new file mode 100644 index 00000000..21522492 --- /dev/null +++ b/features/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch @@ -0,0 +1,59 @@ +From 7f811d9c4ebc9444e613e251c31d6bf537a24dc1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 13 Apr 2015 16:35:30 -0700 +Subject: [PATCH] remove glibc assumption + +glibc time.h header has an undocumented __isleap macro +that we are using anf musl is missing it. +Since it is undocumented & does not appear +on any other libc, stop using it and just define the macro in +locally instead. + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +[patch from: http://patchwork.openembedded.org/patch/91893/ ] +Signed-off-by: "Yann E. MORIN" + +--- + parsetime.y | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/parsetime.y b/parsetime.y +index 7005e88..324e6d3 100644 +--- a/parsetime.y ++++ b/parsetime.y +@@ -8,6 +8,9 @@ + + #define YYDEBUG 1 + ++#define is_leap_year(y) \ ++ ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) ++ + struct tm exectm; + static int isgmt; + static int yearspec; +@@ -217,8 +220,8 @@ date : month_name day_number + mnum == 12) && dnum > 31) + || ((mnum == 4 || mnum == 6 || mnum == 9 || + mnum == 11) && dnum > 30) +- || (mnum == 2 && dnum > 29 && __isleap(ynum+1900)) +- || (mnum == 2 && dnum > 28 && !__isleap(ynum+1900)) ++ || (mnum == 2 && dnum > 29 && is_leap_year(ynum+1900)) ++ || (mnum == 2 && dnum > 28 && !is_leap_year(ynum+1900)) + ) + { + yyerror("Error in day of month"); +@@ -261,8 +264,8 @@ date : month_name day_number + mnum == 12) && dnum > 31) + || ((mnum == 4 || mnum == 6 || mnum == 9 || + mnum == 11) && dnum > 30) +- || (mnum == 2 && dnum > 29 && __isleap(ynum+1900)) +- || (mnum == 2 && dnum > 28 && !__isleap(ynum+1900)) ++ || (mnum == 2 && dnum > 29 && is_leap_year(ynum+1900)) ++ || (mnum == 2 && dnum > 28 && !is_leap_year(ynum+1900)) + ) + { + yyerror("Error in day of month"); +-- +2.1.4 diff --git a/features/buildroot/package/at/Config.in b/features/buildroot/package/at/Config.in new file mode 100644 index 00000000..cbc5be47 --- /dev/null +++ b/features/buildroot/package/at/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AT + bool "at" + depends on BR2_USE_MMU + help + At and batch read shell commands from standard input and + store them as jobs to be scheduled for execution in the + future. + + at - run the job at a specified time + batch - run the job when system load levels permit + + https://salsa.debian.org/debian/at diff --git a/features/buildroot/package/at/S99at b/features/buildroot/package/at/S99at new file mode 100644 index 00000000..f132a46c --- /dev/null +++ b/features/buildroot/package/at/S99at @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Starts at daemon +# + +umask 077 + +start() { + # Since /var/spool can be linked to /tmp (tmpfs) + # /var/spool/cron/atjobs/.SEQ created could be not available + # Check if not exists otherwise create it + if [ ! -f /var/spool/cron/atjobs/.SEQ ]; then + mkdir -p /var/spool/cron/atjobs/ + touch /var/spool/cron/atjobs/.SEQ + printf "atd: created missing .SEQ file (atjobs will be lost on reboot)\n" + fi + + printf "Starting atd: " + start-stop-daemon --start --quiet --make-pidfile --pidfile /var/run/atd.pid --background --exec /usr/sbin/atd -- -f + echo "OK" +} +stop() { + printf "Stopping atd: " + start-stop-daemon --stop --quiet --pidfile /var/run/atd.pid + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/at/at.hash b/features/buildroot/package/at/at.hash new file mode 100644 index 00000000..530b1257 --- /dev/null +++ b/features/buildroot/package/at/at.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 f5c7c8226fab0bc4e2d16a55e04d4026f3452db51fc5cbcc4bb5a3c79a79f7ef at-release_3.1.23.tar.gz + +sha256 01dccc0975aa9ba1a9f83e7c5e04f16077353d3c72a0a759b8846ee7a5b2b616 Copyright +sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42 COPYING diff --git a/features/buildroot/package/at/at.mk b/features/buildroot/package/at/at.mk new file mode 100644 index 00000000..36aa8c7a --- /dev/null +++ b/features/buildroot/package/at/at.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# at +# +################################################################################ + +AT_VERSION = release/3.1.23 +AT_SITE = https://salsa.debian.org/debian/at.git +AT_SITE_METHOD = git +# Tried to add missing deps for parsetime.l but still parallel build fails +# in some case, so at the moment let's keep MAKE1 +AT_MAKE = $(MAKE1) +AT_AUTORECONF = YES +AT_DEPENDENCIES = $(if $(BR2_PACKAGE_FLEX),flex) host-bison host-flex +AT_LICENSE = GPL-2.0+, GPL-3.0+, ISC +AT_LICENSE_FILES = Copyright COPYING + +AT_CONF_OPTS = \ + --with-jobdir=/var/spool/cron/atjobs \ + --with-atspool=/var/spool/cron/atspool \ + --with-daemon_username=root \ + --with-daemon_groupname=root \ + SENDMAIL=/usr/sbin/sendmail + +define AT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/at/S99at $(TARGET_DIR)/etc/init.d/S99at +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/atest/Config.in b/features/buildroot/package/atest/Config.in new file mode 100644 index 00000000..647b2163 --- /dev/null +++ b/features/buildroot/package/atest/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ATEST + bool "atest" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_LIBEV + help + atest is a test software for checking ALSA Asoc drivers + concerning the proper frame generation and capture. + + https://github.com/amouiche/atest + +comment "atest needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/atest/atest.hash b/features/buildroot/package/atest/atest.hash new file mode 100644 index 00000000..78e3ff8e --- /dev/null +++ b/features/buildroot/package/atest/atest.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 91da5a6d4d0b0a8d4bae156a40e91a6dccf62863bfa7acae948efbbd2b4154ca atest-895b0183a89c15f5e2305a6795bb1667753cd3f0.tar.gz diff --git a/features/buildroot/package/atest/atest.mk b/features/buildroot/package/atest/atest.mk new file mode 100644 index 00000000..2effda57 --- /dev/null +++ b/features/buildroot/package/atest/atest.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# atest +# +################################################################################ + +ATEST_VERSION = 895b0183a89c15f5e2305a6795bb1667753cd3f0 +ATEST_SITE = $(call github,amouiche,atest,$(ATEST_VERSION)) +ATEST_LICENSE = GPL-2.0+ +ATEST_LICENSE_FILES = COPYING +ATEST_DEPENDENCIES = host-pkgconf libev alsa-lib +# Fetched from Github, with no configure script +ATEST_AUTORECONF = YES + +# Autoreconf requires an existing m4 directory +define ATEST_PATCH_M4 + mkdir -p $(@D)/m4 +endef +ATEST_POST_PATCH_HOOKS += ATEST_PATCH_M4 + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/atf/Config.in b/features/buildroot/package/atf/Config.in new file mode 100644 index 00000000..43a5d4f2 --- /dev/null +++ b/features/buildroot/package/atf/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ATF + bool "atf" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + ATF, or Automated Testing Framework, is a collection of + libraries to write test programs in C, C++ and POSIX shell. + + https://github.com/jmmv/atf + +comment "atf needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU diff --git a/features/buildroot/package/atf/atf.hash b/features/buildroot/package/atf/atf.hash new file mode 100644 index 00000000..78cd3c68 --- /dev/null +++ b/features/buildroot/package/atf/atf.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 92bc64180135eea8fe84c91c9f894e678767764f6dbc8482021d4dde09857505 atf-0.21.tar.gz diff --git a/features/buildroot/package/atf/atf.mk b/features/buildroot/package/atf/atf.mk new file mode 100644 index 00000000..9630cf1a --- /dev/null +++ b/features/buildroot/package/atf/atf.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# atf +# +################################################################################ + +ATF_VERSION = 0.21 +ATF_SITE = https://github.com/jmmv/atf/releases/download/atf-$(ATF_VERSION) +ATF_INSTALL_STAGING = YES +ATF_LICENSE = BSD-2-Clause, BSD-3-Clause +ATF_LICENSE_FILES = COPYING +# Ships a beta libtool version hence our patch doesn't apply. +ATF_AUTORECONF = YES +# Do not install precompiled tests. +ATF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec + +# ATF_SHELL defaults to the host's bash +ATF_CONF_ENV = \ + kyua_cv_getopt_plus=yes \ + kyua_cv_attribute_noreturn=yes \ + kyua_cv_getcwd_works=yes \ + ATF_SHELL=/bin/sh + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch b/features/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch new file mode 100644 index 00000000..e879df5b --- /dev/null +++ b/features/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch @@ -0,0 +1,26 @@ +Makefile.am: link against libpthread for atftp + +atftp client needs to link against libpthread as static builds do not +work otherwise. + +Signed-off-by: Ryan Barnett +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index e59592f..200829a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -28,7 +28,7 @@ noinst_HEADERS = argz.h logger.h options.h stats.h tftp.h tftp_def.h tftp_io.h + tftpd.h tftpd_pcre.h tftpd_mtftp.h + + bin_PROGRAMS = atftp +-atftp_LDADD = $(LIBTERMCAP) $(LIBREADLINE) ++atftp_LDADD = $(LIBTERMCAP) $(LIBREADLINE) $(LIBPTHREAD) + atftp_SOURCES = tftp.c tftp_io.c logger.c options.c tftp_def.c tftp_file.c \ + argz.c tftp_mtftp.c + +-- +1.9.1 + diff --git a/features/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch b/features/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch new file mode 100644 index 00000000..0679ef3b --- /dev/null +++ b/features/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch @@ -0,0 +1,42 @@ +From 543e67919f5cacf309ac88ab091331e41af4224b Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Apr 2015 22:41:57 +0200 +Subject: [PATCH] argz.h: fix musl compile (add missing defines) + +Add __THROW, __BEGIN_DECLS, __END_DECLS and __attribute_pure__ defines. + +Signed-off-by: Peter Seiderer +--- + argz.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/argz.h b/argz.h +index 582be55..bdf9f62 100644 +--- a/argz.h ++++ b/argz.h +@@ -48,6 +48,22 @@ + # define __const const + #endif + ++#ifndef __THROW ++# define __THROW ++#endif ++ ++#ifndef __BEGIN_DECLS ++# define __BEGIN_DECLS ++#endif ++ ++#ifndef __END_DECLS ++# define __END_DECLS ++#endif ++ ++#ifndef __attribute_pure__ ++# define __attribute_pure__ ++#endif ++ + #ifndef __error_t_defined + typedef int error_t; + #endif +-- +2.1.4 + diff --git a/features/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch b/features/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch new file mode 100644 index 00000000..485e71a8 --- /dev/null +++ b/features/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch @@ -0,0 +1,40 @@ +From 77e399899d9d7297d23c321811b628febdf0fd92 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Apr 2015 22:43:49 +0200 +Subject: [PATCH] tftp.h/tftpd.h: fix musl compile (missing include) + +Add sys/types.h include for u_char typedef. + +Signed-off-by: Peter Seiderer +--- + tftp.h | 1 + + tftpd.h | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/tftp.h b/tftp.h +index 12bd6aa..32a3f63 100644 +--- a/tftp.h ++++ b/tftp.h +@@ -19,6 +19,7 @@ + + #include + #include ++#include + #include "tftp_def.h" + #include "config.h" + +diff --git a/tftpd.h b/tftpd.h +index 945065e..60d3a49 100644 +--- a/tftpd.h ++++ b/tftpd.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include "tftp_io.h" + + /* +-- +2.1.4 + diff --git a/features/buildroot/package/atftp/Config.in b/features/buildroot/package/atftp/Config.in new file mode 100644 index 00000000..70747163 --- /dev/null +++ b/features/buildroot/package/atftp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ATFTP + bool "atftp" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + atftp is a client/server implementation of the TFTP + protocol that implements RFCs 1350, 2090, 2347, 2348, + and 2349. The server is multi-threaded and the client + presents a friendly interface using libreadline + (if enabled). + + http://sourceforge.net/projects/atftp/ + +comment "atftp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/atftp/atftp.hash b/features/buildroot/package/atftp/atftp.hash new file mode 100644 index 00000000..3e5e783c --- /dev/null +++ b/features/buildroot/package/atftp/atftp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1ad080674e9f974217b3a703e7356c6c8446dc5e7b2014d0d06e1bfaa11b5041 atftp-0.7.2.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 LICENSE diff --git a/features/buildroot/package/atftp/atftp.mk b/features/buildroot/package/atftp/atftp.mk new file mode 100644 index 00000000..cbe05ba7 --- /dev/null +++ b/features/buildroot/package/atftp/atftp.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# atftp +# +################################################################################ + +ATFTP_VERSION = 0.7.2 +ATFTP_SITE = http://sourceforge.net/projects/atftp/files +ATFTP_LICENSE = GPL-2.0+ +ATFTP_LICENSE_FILES = LICENSE +# 0001-Makefile.am-link-against-libpthread-for-atftp.patch patches Makefile.am +ATFTP_AUTORECONF = YES +ATFTP_CONF_OPTS = --disable-libwrap --disable-mtftp +# For static we need to explicitly link against libpthread +ATFTP_LIBS = -lpthread +# -fgnu89-inline is needed to avoid multiple definition error with gcc 5. See +# https://gcc.gnu.org/gcc-5/porting_to.html. +ATFTP_CONF_ENV = LIBS="$(ATFTP_LIBS)" \ + CFLAGS="$(TARGET_CFLAGS) -fgnu89-inline" + +ifeq ($(BR2_PACKAGE_READLINE),y) +ATFTP_DEPENDENCIES += readline +ATFTP_CONF_OPTS += --enable-libreadline +# For static, readline links with ncurses +ATFTP_LIBS += -lncurses +else +ATFTP_CONF_OPTS += --disable-libreadline +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +ATFTP_DEPENDENCIES += pcre +ATFTP_CONF_OPTS += --enable-libpcre +else +ATFTP_CONF_OPTS += --disable-libpcre +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/atk/Config.in b/features/buildroot/package/atk/Config.in new file mode 100644 index 00000000..c9806149 --- /dev/null +++ b/features/buildroot/package/atk/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ATK + bool "atk" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + The ATK accessibility toolkit, needed to build GTK+-2.x. + +comment "atk needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/atk/atk.hash b/features/buildroot/package/atk/atk.hash new file mode 100644 index 00000000..8c1bad5b --- /dev/null +++ b/features/buildroot/package/atk/atk.hash @@ -0,0 +1,5 @@ +# From http://ftp.gnome.org/pub/gnome/sources/atk/2.33/atk-2.33.3.sha256sum +sha256 532d1081e87b9f0a8d71733101e791818442fa1896531621d1aecc189e1a4ffe atk-2.33.3.tar.xz + +# Hash for license file +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/features/buildroot/package/atk/atk.mk b/features/buildroot/package/atk/atk.mk new file mode 100644 index 00000000..70396660 --- /dev/null +++ b/features/buildroot/package/atk/atk.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# atk +# +################################################################################ + +ATK_VERSION_MAJOR = 2.33 +ATK_VERSION = $(ATK_VERSION_MAJOR).3 +ATK_SOURCE = atk-$(ATK_VERSION).tar.xz +ATK_SITE = http://ftp.gnome.org/pub/gnome/sources/atk/$(ATK_VERSION_MAJOR) +ATK_LICENSE = LGPL-2.0+ +ATK_LICENSE_FILES = COPYING +ATK_INSTALL_STAGING = YES +ATK_DEPENDENCIES = libglib2 $(TARGET_NLS_DEPENDENCIES) + +ATK_CONF_OPTS = -Dintrospection=false +ATK_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +$(eval $(meson-package)) diff --git a/features/buildroot/package/atkmm/Config.in b/features/buildroot/package/atkmm/Config.in new file mode 100644 index 00000000..ce1e24d4 --- /dev/null +++ b/features/buildroot/package/atkmm/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ATKMM + bool "atkmm" + depends on BR2_INSTALL_LIBSTDCPP # glibmm + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # atk/glibmm -> libglib2 + depends on BR2_USE_MMU # atk/glibmm -> libglib2 + depends on BR2_USE_WCHAR # atk/glibmm -> libglib2 + select BR2_PACKAGE_ATK + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_LIBSIGC + + help + The atkmm package is a set of C++ bindings for Atk. + + http://www.gtkmm.org/ + +comment "atkmm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/atkmm/atkmm.hash b/features/buildroot/package/atkmm/atkmm.hash new file mode 100644 index 00000000..4b3577c8 --- /dev/null +++ b/features/buildroot/package/atkmm/atkmm.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/atkmm/2.24/atkmm-2.24.2.sha256sum +sha256 ff95385759e2af23828d4056356f25376cfabc41e690ac1df055371537e458bd atkmm-2.24.2.tar.xz diff --git a/features/buildroot/package/atkmm/atkmm.mk b/features/buildroot/package/atkmm/atkmm.mk new file mode 100644 index 00000000..234a937b --- /dev/null +++ b/features/buildroot/package/atkmm/atkmm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# atkmm +# +################################################################################ + +ATKMM_VERSION_MAJOR = 2.24 +ATKMM_VERSION = $(ATKMM_VERSION_MAJOR).2 +ATKMM_SOURCE = atkmm-$(ATKMM_VERSION).tar.xz +ATKMM_SITE = http://ftp.gnome.org/pub/gnome/sources/atkmm/$(ATKMM_VERSION_MAJOR) +ATKMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +ATKMM_LICENSE_FILES = COPYING COPYING.tools +ATKMM_INSTALL_STAGING = YES +ATKMM_DEPENDENCIES = atk glibmm libsigc host-pkgconf + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/atop/Config.in b/features/buildroot/package/atop/Config.in new file mode 100644 index 00000000..9e42eddb --- /dev/null +++ b/features/buildroot/package/atop/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_ATOP + bool "atop" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # PERF_FLAG_FD_CLOEXEC + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ZLIB + help + Atop is an ASCII full-screen performance monitor for Linux + that is capable of reporting the activity of all processes + (even if processes have finished during the interval), daily + logging of system and process activity for long-term analysis, + highlighting overloaded system resources by using colors, etc. + At regular intervals, it shows system-level activity related + to the CPU, memory, swap, disks (including LVM) and network + layers, and for every process (and thread) it shows e.g. the + CPU utilization, memory growth, disk utilization, priority, + username, state, and exit code. + + http://www.atoptool.nl + +comment "atop needs a toolchain w/ headers >= 3.14" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 diff --git a/features/buildroot/package/atop/atop.hash b/features/buildroot/package/atop/atop.hash new file mode 100644 index 00000000..80082d02 --- /dev/null +++ b/features/buildroot/package/atop/atop.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 be1c010a77086b7d98376fce96514afcd73c3f20a8d1fe01520899ff69a73d69 atop-2.4.0.tar.gz + +# Hash for license file: +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/features/buildroot/package/atop/atop.mk b/features/buildroot/package/atop/atop.mk new file mode 100644 index 00000000..4ea1ccf2 --- /dev/null +++ b/features/buildroot/package/atop/atop.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# atop +# +################################################################################ + +ATOP_VERSION = 2.4.0 +ATOP_SITE = http://www.atoptool.nl/download +ATOP_LICENSE = GPL-2.0+ +ATOP_LICENSE_FILES = COPYING +ATOP_DEPENDENCIES = ncurses zlib + +ATOP_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +ATOP_CFLAGS += -O0 +endif + +define ATOP_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(ATOP_CFLAGS)" \ + -C $(@D) +endef + +define ATOP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/atop $(TARGET_DIR)/usr/bin/atop +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/attr/0001-build-with-older-GCCs.patch b/features/buildroot/package/attr/0001-build-with-older-GCCs.patch new file mode 100644 index 00000000..22cfac2c --- /dev/null +++ b/features/buildroot/package/attr/0001-build-with-older-GCCs.patch @@ -0,0 +1,87 @@ +From 3ac428794ea0f95c854166c9c0cffb0267c5e98b Mon Sep 17 00:00:00 2001 +From: Hollis Blanchard +Date: Mon, 30 Jul 2018 14:17:21 -0700 +Subject: [PATCH] Remove messages in "deprecated" gcc attributes + +GCC versions up through 4.4.7 (which is used in RHEL 6) do not accept +any argument for the deprecated attribute. GCC 4.5 and later say the +"msg" argument is optional. We don't need the messages during +Buildroot builds anyways. + +Signed-off-by: Hollis Blanchard +--- + include/attributes.h | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/include/attributes.h b/include/attributes.h +index 14beb8f..23c39c8 100644 +--- a/include/attributes.h ++++ b/include/attributes.h +@@ -127,10 +127,10 @@ typedef struct attr_multiop { + */ + EXPORT int attr_get (const char *__path, const char *__attrname, + char *__attrvalue, int *__valuelength, int __flags) +- __attribute__ ((deprecated ("Use getxattr or lgetxattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_getf (int __fd, const char *__attrname, char *__attrvalue, + int *__valuelength, int __flags) +- __attribute__ ((deprecated ("Use fgetxattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * Set the value of an attribute, creating the attribute if necessary. +@@ -139,11 +139,11 @@ EXPORT int attr_getf (int __fd, const char *__attrname, char *__attrvalue, + EXPORT int attr_set (const char *__path, const char *__attrname, + const char *__attrvalue, const int __valuelength, + int __flags) +- __attribute__ ((deprecated ("Use setxattr or lsetxattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_setf (int __fd, const char *__attrname, + const char *__attrvalue, const int __valuelength, + int __flags) +- __attribute__ ((deprecated ("Use fsetxattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * Remove an attribute. +@@ -151,9 +151,9 @@ EXPORT int attr_setf (int __fd, const char *__attrname, + */ + EXPORT int attr_remove (const char *__path, const char *__attrname, + int __flags) +- __attribute__ ((deprecated ("Use removexattr or lremovexattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_removef (int __fd, const char *__attrname, int __flags) +- __attribute__ ((deprecated ("Use fremovexattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * List the names and sizes of the values of all the attributes of an object. +@@ -164,10 +164,10 @@ EXPORT int attr_removef (int __fd, const char *__attrname, int __flags) + */ + EXPORT int attr_list(const char *__path, char *__buffer, const int __buffersize, + int __flags, attrlist_cursor_t *__cursor) +- __attribute__ ((deprecated ("Use listxattr or llistxattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_listf(int __fd, char *__buffer, const int __buffersize, + int __flags, attrlist_cursor_t *__cursor) +- __attribute__ ((deprecated ("Use flistxattr instead"))); ++ __attribute__ ((deprecated)); + + /* + * Operate on multiple attributes of the same object simultaneously. +@@ -188,10 +188,10 @@ EXPORT int attr_listf(int __fd, char *__buffer, const int __buffersize, + */ + EXPORT int attr_multi (const char *__path, attr_multiop_t *__oplist, + int __count, int __flags) +- __attribute__ ((deprecated ("Use getxattr, setxattr, listxattr, removexattr instead"))); ++ __attribute__ ((deprecated)); + EXPORT int attr_multif (int __fd, attr_multiop_t *__oplist, + int __count, int __flags) +- __attribute__ ((deprecated ("Use getxattr, setxattr, listxattr, removexattr instead"))); ++ __attribute__ ((deprecated)); + + #ifdef __cplusplus + } +-- +2.13.0 + diff --git a/features/buildroot/package/attr/0002-Switch-back-to-syscall.patch b/features/buildroot/package/attr/0002-Switch-back-to-syscall.patch new file mode 100644 index 00000000..de879e23 --- /dev/null +++ b/features/buildroot/package/attr/0002-Switch-back-to-syscall.patch @@ -0,0 +1,126 @@ +From 14adc898a36948267bfe5c63b399996879e94c98 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 17 Aug 2018 14:07:31 +0200 +Subject: Switch back to syscall() + +Switch back to syscall() for the *xattr system calls. The current +mechanism of forwarding those calls to glibc breaks libraries like +libfakeroot (fakeroot) and libasan (the gcc address sanitizer; gcc +-fsanitize=address). + +Those libraries provide wrappers for functions defined in other shared +libraries, usually glibc, do their own processing, and forward calls to +the original symbols looke dup via dlsym(RTLD_NEXT, "symbol_name"). In +our case, dlsym returns the libattr_*xattr wrappers. However, when our +wrappers try calling glibc, they end up calling the libfakeroot / +libasan wrappers instead because those override the original symbols => +recursion. + +The libattr_*xattr wrappers will only be used when symbols are looked up +at runtime (dlopen / dlsym). Programs linking against libattr will +directly use the glibc provided symbols. Therefore, the slightly worse +performance of syscall() won't affect any of the "normal" users of +libattr. + +[nicolas.cavallari: with uclibc-ng, the recursion always happen] +Signed-off-by: Nicolas Cavallari +--- + libattr/syscalls.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +diff --git a/libattr/syscalls.c b/libattr/syscalls.c +index 3013aa0..721ad7f 100644 +--- a/libattr/syscalls.c ++++ b/libattr/syscalls.c +@@ -22,6 +22,8 @@ + + #include "config.h" + ++#include ++#include + #include + + #ifdef HAVE_VISIBILITY_ATTRIBUTE +@@ -31,67 +33,67 @@ + int libattr_setxattr(const char *path, const char *name, + void *value, size_t size, int flags) + { +- return setxattr(path, name, value, size, flags); ++ return syscall(__NR_setxattr, path, name, value, size, flags); + } + + int libattr_lsetxattr(const char *path, const char *name, + void *value, size_t size, int flags) + { +- return lsetxattr(path, name, value, size, flags); ++ return syscall(__NR_lsetxattr, path, name, value, size, flags); + } + + int libattr_fsetxattr(int filedes, const char *name, + void *value, size_t size, int flags) + { +- return fsetxattr(filedes, name, value, size, flags); ++ return syscall(__NR_fsetxattr, filedes, name, value, size, flags); + } + + ssize_t libattr_getxattr(const char *path, const char *name, + void *value, size_t size) + { +- return getxattr(path, name, value, size); ++ return syscall(__NR_getxattr, path, name, value, size); + } + + ssize_t libattr_lgetxattr(const char *path, const char *name, + void *value, size_t size) + { +- return lgetxattr(path, name, value, size); ++ return syscall(__NR_lgetxattr, path, name, value, size); + } + + ssize_t libattr_fgetxattr(int filedes, const char *name, + void *value, size_t size) + { +- return fgetxattr(filedes, name, value, size); ++ return syscall(__NR_fgetxattr, filedes, name, value, size); + } + + ssize_t libattr_listxattr(const char *path, char *list, size_t size) + { +- return listxattr(path, list, size); ++ return syscall(__NR_listxattr, path, list, size); + } + + ssize_t libattr_llistxattr(const char *path, char *list, size_t size) + { +- return llistxattr(path, list, size); ++ return syscall(__NR_llistxattr, path, list, size); + } + + ssize_t libattr_flistxattr(int filedes, char *list, size_t size) + { +- return flistxattr(filedes, list, size); ++ return syscall(__NR_flistxattr, filedes, list, size); + } + + int libattr_removexattr(const char *path, const char *name) + { +- return removexattr(path, name); ++ return syscall(__NR_removexattr, path, name); + } + + int libattr_lremovexattr(const char *path, const char *name) + { +- return lremovexattr(path, name); ++ return syscall(__NR_lremovexattr, path, name); + } + + int libattr_fremovexattr(int filedes, const char *name) + { +- return fremovexattr(filedes, name); ++ return syscall(__NR_fremovexattr, filedes, name); + } + + #ifdef HAVE_VISIBILITY_ATTRIBUTE +-- +cgit v1.0-41-gc330 + diff --git a/features/buildroot/package/attr/Config.in b/features/buildroot/package/attr/Config.in new file mode 100644 index 00000000..554772b7 --- /dev/null +++ b/features/buildroot/package/attr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ATTR + bool "attr" + help + Commands for Manipulating Filesystem Extended Attributes. + This package also provides libattr. + + http://savannah.nongnu.org/projects/attr diff --git a/features/buildroot/package/attr/attr.hash b/features/buildroot/package/attr/attr.hash new file mode 100644 index 00000000..ba9f4566 --- /dev/null +++ b/features/buildroot/package/attr/attr.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +sha256 5ead72b358ec709ed00bbf7a9eaef1654baad937c001c044fe8b74c57f5324e7 attr-2.4.48.tar.gz + +# Locally calculated +sha256 98f318493be6b08bff3cd295791cde06c54e17882a3c74a1ed245eaa02533d52 doc/COPYING +sha256 5decad7e58d90d44335bf2f45ce27563bd911065c6a1a02dfa7647c4efee75c8 doc/COPYING.LGPL diff --git a/features/buildroot/package/attr/attr.mk b/features/buildroot/package/attr/attr.mk new file mode 100644 index 00000000..ba77e802 --- /dev/null +++ b/features/buildroot/package/attr/attr.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# attr +# +################################################################################ + +ATTR_VERSION = 2.4.48 +ATTR_SITE = http://download.savannah.gnu.org/releases/attr +ATTR_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +ATTR_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL + +ATTR_INSTALL_STAGING = YES + +ATTR_CONF_OPTS = --disable-nls + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/aubio/0001-Fix-build-with-FFmpeg-4.0.patch b/features/buildroot/package/aubio/0001-Fix-build-with-FFmpeg-4.0.patch new file mode 100644 index 00000000..40ff2dfb --- /dev/null +++ b/features/buildroot/package/aubio/0001-Fix-build-with-FFmpeg-4.0.patch @@ -0,0 +1,32 @@ +From 5690daf759b473b9d13b4547ef37adc2695cf524 Mon Sep 17 00:00:00 2001 +From: James Cowgill +Date: Sun, 25 Feb 2018 14:23:25 +0000 +Subject: [PATCH] Fix build with FFmpeg 4.0 + +Downloaded from upstream commit +https://git.aubio.org/?p=aubio.git;a=commitdiff;h=5690daf759b473b9d13b4547ef37adc2695cf524 + +Signed-off-by: Bernd Kuhls +--- + src/io/source_avcodec.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/io/source_avcodec.c b/src/io/source_avcodec.c +index ccdce807..8197445c 100644 +--- a/src/io/source_avcodec.c ++++ b/src/io/source_avcodec.c +@@ -58,7 +58,11 @@ + #include "fmat.h" + #include "source_avcodec.h" + ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(56, 56, 0) + #define AUBIO_AVCODEC_MAX_BUFFER_SIZE FF_MIN_BUFFER_SIZE ++#else ++#define AUBIO_AVCODEC_MAX_BUFFER_SIZE AV_INPUT_BUFFER_MIN_SIZE ++#endif + + struct _aubio_source_avcodec_t { + uint_t hop_size; +-- +2.14.4 + diff --git a/features/buildroot/package/aubio/Config.in b/features/buildroot/package/aubio/Config.in new file mode 100644 index 00000000..18e7c4cc --- /dev/null +++ b/features/buildroot/package/aubio/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AUBIO + bool "aubio" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + aubio is a tool designed for the extraction of annotations + from audio signals. Its features include segmenting a sound + file before each of its attacks, performing pitch detection, + tapping the beat and producing midi streams from live audio. + + Because these tasks are difficult, we thought it was important + to gather them in a dedicated library. To increase the fun, we + have made these algorithms work in a causal way, so as to be + used in real time applications with as low delay as possible. + Functions can be used offline in sound editors and software + samplers, or online in audio effects and virtual instruments. + + https://aubio.org + +comment "aubio needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/features/buildroot/package/aubio/aubio.hash b/features/buildroot/package/aubio/aubio.hash new file mode 100644 index 00000000..edb63f07 --- /dev/null +++ b/features/buildroot/package/aubio/aubio.hash @@ -0,0 +1,5 @@ +# From https://aubio.org/pub/aubio-0.4.6.tar.bz2.sha256 +sha256 bdc73be1f007218d3ea6d2a503b38a217815a0e2ccc4ed441f6e850ed5d47cfb aubio-0.4.6.tar.bz2 + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/features/buildroot/package/aubio/aubio.mk b/features/buildroot/package/aubio/aubio.mk new file mode 100644 index 00000000..ba182d9b --- /dev/null +++ b/features/buildroot/package/aubio/aubio.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# aubio +# +################################################################################ + +AUBIO_VERSION = 0.4.6 +AUBIO_SITE = https://aubio.org/pub +AUBIO_SOURCE = aubio-$(AUBIO_VERSION).tar.bz2 +AUBIO_LICENSE = GPL-3.0+ +AUBIO_LICENSE_FILES = COPYING +AUBIO_INSTALL_STAGING = YES + +AUBIO_CONF_OPTS = \ + --disable-docs \ + --disable-atlas + +# Add --notests for each build step to avoid running unit tests on the +# build machine. +AUBIO_WAF_OPTS = --notests + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +AUBIO_DEPENDENCIES += libsndfile +AUBIO_CONF_OPTS += --enable-sndfile +else +AUBIO_CONF_OPTS += --disable-sndfile +endif + +# Could not compile aubio in double precision mode with libsamplerate +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE):$(BR2_PACKAGE_FFTW_DOUBLE),y:) +AUBIO_DEPENDENCIES += libsamplerate +AUBIO_CONF_OPTS += --enable-samplerate +else +AUBIO_CONF_OPTS += --disable-samplerate +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +AUBIO_DEPENDENCIES += jack2 +AUBIO_CONF_OPTS += --enable-jack +else +AUBIO_CONF_OPTS += --disable-jack +endif + +# fftw3 require double otherwise it will look for fftw3f +ifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y) +AUBIO_CONF_OPTS += --enable-fftw3 --enable-double +AUBIO_DEPENDENCIES += fftw-double +else ifeq ($(BR2_PACKAGE_FFTW_SINGLE),y) +AUBIO_CONF_OPTS += --enable-fftw3f --disable-double +AUBIO_DEPENDENCIES += fftw-single +else +AUBIO_CONF_OPTS += --disable-fftw3 +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y) +AUBIO_DEPENDENCIES += ffmpeg +AUBIO_CONF_OPTS += --enable-avcodec +else +AUBIO_CONF_OPTS += --disable-avcodec +endif + +$(eval $(waf-package)) diff --git a/features/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch b/features/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch new file mode 100644 index 00000000..54757abb --- /dev/null +++ b/features/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch @@ -0,0 +1,56 @@ +From 2abf7d2e5c533bf4d7407c2c8057a329cd49a3cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Tue, 24 Nov 2015 21:57:27 +0100 +Subject: [PATCH 1/1] Fix pkg-config for static linking +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Static linking userspace programs such as MPD against libaudiofile fails if +FLAC is available, because libaudiofile is linked against FLAC, but this isn't +expressed in the pkg-config file: + +[..] +arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACDecoder::reset2()': +FLAC.cpp:(.text+0x58): undefined reference to `FLAC__stream_decoder_seek_absolute' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACEncoder::sync2()': +FLAC.cpp:(.text+0x88): undefined reference to `FLAC__stream_encoder_finish' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACDecoder::~FLACDecoder()': +FLAC.cpp:(.text+0xc4): undefined reference to `FLAC__stream_decoder_delete' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACEncoder::~FLACEncoder()': +FLAC.cpp:(.text+0x164): undefined reference to `FLAC__stream_encoder_delete' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACDecoder::runPull()': +[..] + +The Libs.private field is specifically designed for such usage: + +From pkg-config documentation: + + Libs.private: + + This line should list any private libraries in use. Private + libraries are libraries which are not exposed through your + library, but are needed in the case of static linking. + +Therefore, this patch adds a reference to FLAC as well as to lcov in the +Libs.private field of the pkg-config file. + +Signed-off-by: Jörg Krause +--- + audiofile.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/audiofile.pc.in b/audiofile.pc.in +index ad5956a..d6055ef 100644 +--- a/audiofile.pc.in ++++ b/audiofile.pc.in +@@ -8,5 +8,5 @@ Description: audiofile + Requires: + Version: @VERSION@ + Libs: -L${libdir} -laudiofile +-Libs.private: -lm ++Libs.private: @FLAC_LIBS@ @COVERAGE_LIBS@ -lm + Cflags: -I${includedir} +-- +2.6.2 + diff --git a/features/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch b/features/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch new file mode 100644 index 00000000..01baeb5e --- /dev/null +++ b/features/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch @@ -0,0 +1,28 @@ +From 28cfdbbcb96a69087c3d21faf69b5eae7bcf6d69 Mon Sep 17 00:00:00 2001 +From: Hodorgasm +Date: Wed, 11 May 2016 21:42:07 -0400 +Subject: [PATCH] Cast to unsigned while left bit-shifting + +GCC-6 now treats the left bitwise-shift of a negative integer as nonconformant so explicitly cast to an unsigned int while bit-shifting. + +Downloaded from upstream PR: +https://github.com/mpruett/audiofile/pull/28 + +Signed-off-by: Bernd Kuhls +--- + libaudiofile/modules/SimpleModule.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libaudiofile/modules/SimpleModule.h b/libaudiofile/modules/SimpleModule.h +index 03c6c69..4014fb2 100644 +--- a/libaudiofile/modules/SimpleModule.h ++++ b/libaudiofile/modules/SimpleModule.h +@@ -123,7 +123,7 @@ struct signConverter + typedef typename IntTypes::UnsignedType UnsignedType; + + static const int kScaleBits = (Format + 1) * CHAR_BIT - 1; +- static const int kMinSignedValue = -1 << kScaleBits; ++ static const int kMinSignedValue = static_cast(static_cast(-1) << kScaleBits);; + + struct signedToUnsigned : public std::unary_function + { diff --git a/features/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch b/features/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch new file mode 100644 index 00000000..5c99c3cd --- /dev/null +++ b/features/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch @@ -0,0 +1,36 @@ +From c48e4c6503f7dabd41f11d4c9c7b7f8960e7f2c0 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 12:51:22 +0100 +Subject: [PATCH] Always check the number of coefficients + +When building the library with NDEBUG, asserts are eliminated +so it's better to always check that the number of coefficients +is inside the array range. + +This fixes the 00191-audiofile-indexoob issue in #41 + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/WAVE.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp +index 0e81cf7..61f9541 100644 +--- a/libaudiofile/WAVE.cpp ++++ b/libaudiofile/WAVE.cpp +@@ -281,6 +281,12 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size) + + /* numCoefficients should be at least 7. */ + assert(numCoefficients >= 7 && numCoefficients <= 255); ++ if (numCoefficients < 7 || numCoefficients > 255) ++ { ++ _af_error(AF_BAD_HEADER, ++ "Bad number of coefficients"); ++ return AF_FAIL; ++ } + + m_msadpcmNumCoefficients = numCoefficients; + +-- +2.11.0 + diff --git a/features/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch b/features/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch new file mode 100644 index 00000000..21f899a4 --- /dev/null +++ b/features/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch @@ -0,0 +1,39 @@ +From 25eb00ce913452c2e614548d7df93070bf0d066f Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 18:02:31 +0100 +Subject: [PATCH] clamp index values to fix index overflow in IMA.cpp + +This fixes #33 +(also reported at https://bugzilla.opensuse.org/show_bug.cgi?id=1026981 +and https://blogs.gentoo.org/ago/2017/02/20/audiofile-global-buffer-overflow-in-decodesample-ima-cpp/) + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/modules/IMA.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libaudiofile/modules/IMA.cpp b/libaudiofile/modules/IMA.cpp +index 7476d44..df4aad6 100644 +--- a/libaudiofile/modules/IMA.cpp ++++ b/libaudiofile/modules/IMA.cpp +@@ -169,7 +169,7 @@ int IMA::decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded) + if (encoded[1] & 0x80) + m_adpcmState[c].previousValue -= 0x10000; + +- m_adpcmState[c].index = encoded[2]; ++ m_adpcmState[c].index = clamp(encoded[2], 0, 88); + + *decoded++ = m_adpcmState[c].previousValue; + +@@ -210,7 +210,7 @@ int IMA::decodeBlockQT(const uint8_t *encoded, int16_t *decoded) + predictor -= 0x10000; + + state.previousValue = clamp(predictor, MIN_INT16, MAX_INT16); +- state.index = encoded[1] & 0x7f; ++ state.index = clamp(encoded[1] & 0x7f, 0, 88); + encoded += 2; + + for (int n=0; n +Date: Mon, 6 Mar 2017 13:54:52 +0100 +Subject: [PATCH] Check for multiplication overflow in sfconvert + +Checks that a multiplication doesn't overflow when +calculating the buffer size, and if it overflows, +reduce the buffer size instead of failing. + +This fixes the 00192-audiofile-signintoverflow-sfconvert case +in #41 + +Signed-off-by: Peter Korsgaard +--- + sfcommands/sfconvert.c | 34 ++++++++++++++++++++++++++++++++-- + 1 file changed, 32 insertions(+), 2 deletions(-) + +diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c +index 80a1bc4..970a3e4 100644 +--- a/sfcommands/sfconvert.c ++++ b/sfcommands/sfconvert.c +@@ -45,6 +45,33 @@ void printusage (void); + void usageerror (void); + bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid); + ++int firstBitSet(int x) ++{ ++ int position=0; ++ while (x!=0) ++ { ++ x>>=1; ++ ++position; ++ } ++ return position; ++} ++ ++#ifndef __has_builtin ++#define __has_builtin(x) 0 ++#endif ++ ++int multiplyCheckOverflow(int a, int b, int *result) ++{ ++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow)) ++ return __builtin_mul_overflow(a, b, result); ++#else ++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits ++ return true; ++ *result = a * b; ++ return false; ++#endif ++} ++ + int main (int argc, char **argv) + { + if (argc == 2) +@@ -323,8 +350,11 @@ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid) + { + int frameSize = afGetVirtualFrameSize(infile, trackid, 1); + +- const int kBufferFrameCount = 65536; +- void *buffer = malloc(kBufferFrameCount * frameSize); ++ int kBufferFrameCount = 65536; ++ int bufferSize; ++ while (multiplyCheckOverflow(kBufferFrameCount, frameSize, &bufferSize)) ++ kBufferFrameCount /= 2; ++ void *buffer = malloc(bufferSize); + + AFframecount totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK); + AFframecount totalFramesWritten = 0; +-- +2.11.0 + diff --git a/features/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch b/features/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch new file mode 100644 index 00000000..0c6be2a2 --- /dev/null +++ b/features/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch @@ -0,0 +1,42 @@ +From a2e9eab8ea87c4ffc494d839ebb4ea145eb9f2e6 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 18:59:26 +0100 +Subject: [PATCH] Actually fail when error occurs in parseFormat + +When there's an unsupported number of bits per sample or an invalid +number of samples per block, don't only print an error message using +the error handler, but actually stop parsing the file. + +This fixes #35 (also reported at +https://bugzilla.opensuse.org/show_bug.cgi?id=1026983 and +https://blogs.gentoo.org/ago/2017/02/20/audiofile-heap-based-buffer-overflow-in-imadecodeblockwave-ima-cpp/ +) + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/WAVE.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp +index 0e81cf7..d762249 100644 +--- a/libaudiofile/WAVE.cpp ++++ b/libaudiofile/WAVE.cpp +@@ -326,6 +326,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, + "IMA ADPCM compression supports only 4 bits per sample"); ++ return AF_FAIL; + } + + int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount; +@@ -333,6 +334,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size) + { + _af_error(AF_BAD_CODEC_CONFIG, + "Invalid samples per block for IMA ADPCM compression"); ++ return AF_FAIL; + } + + track->f.sampleWidth = 16; +-- +2.11.0 + diff --git a/features/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch b/features/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch new file mode 100644 index 00000000..5411f13b --- /dev/null +++ b/features/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch @@ -0,0 +1,122 @@ +From beacc44eb8cdf6d58717ec1a5103c5141f1b37f9 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 13:43:53 +0100 +Subject: [PATCH] Check for multiplication overflow in MSADPCM decodeSample + +Check for multiplication overflow (using __builtin_mul_overflow +if available) in MSADPCM.cpp decodeSample and return an empty +decoded block if an error occurs. + +This fixes the 00193-audiofile-signintoverflow-MSADPCM case of #41 + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/modules/BlockCodec.cpp | 5 ++-- + libaudiofile/modules/MSADPCM.cpp | 47 +++++++++++++++++++++++++++++++++---- + 2 files changed, 46 insertions(+), 6 deletions(-) + +diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp +index 45925e8..4731be1 100644 +--- a/libaudiofile/modules/BlockCodec.cpp ++++ b/libaudiofile/modules/BlockCodec.cpp +@@ -52,8 +52,9 @@ void BlockCodec::runPull() + // Decompress into m_outChunk. + for (int i=0; i(m_inChunk->buffer) + i * m_bytesPerPacket, +- static_cast(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount); ++ if (decodeBlock(static_cast(m_inChunk->buffer) + i * m_bytesPerPacket, ++ static_cast(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount)==0) ++ break; + + framesRead += m_framesPerPacket; + } +diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp +index 8ea3c85..ef9c38c 100644 +--- a/libaudiofile/modules/MSADPCM.cpp ++++ b/libaudiofile/modules/MSADPCM.cpp +@@ -101,24 +101,60 @@ static const int16_t adaptationTable[] = + 768, 614, 512, 409, 307, 230, 230, 230 + }; + ++int firstBitSet(int x) ++{ ++ int position=0; ++ while (x!=0) ++ { ++ x>>=1; ++ ++position; ++ } ++ return position; ++} ++ ++#ifndef __has_builtin ++#define __has_builtin(x) 0 ++#endif ++ ++int multiplyCheckOverflow(int a, int b, int *result) ++{ ++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow)) ++ return __builtin_mul_overflow(a, b, result); ++#else ++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits ++ return true; ++ *result = a * b; ++ return false; ++#endif ++} ++ ++ + // Compute a linear PCM value from the given differential coded value. + static int16_t decodeSample(ms_adpcm_state &state, +- uint8_t code, const int16_t *coefficient) ++ uint8_t code, const int16_t *coefficient, bool *ok=NULL) + { + int linearSample = (state.sample1 * coefficient[0] + + state.sample2 * coefficient[1]) >> 8; ++ int delta; + + linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta; + + linearSample = clamp(linearSample, MIN_INT16, MAX_INT16); + +- int delta = (state.delta * adaptationTable[code]) >> 8; ++ if (multiplyCheckOverflow(state.delta, adaptationTable[code], &delta)) ++ { ++ if (ok) *ok=false; ++ _af_error(AF_BAD_COMPRESSION, "Error decoding sample"); ++ return 0; ++ } ++ delta >>= 8; + if (delta < 16) + delta = 16; + + state.delta = delta; + state.sample2 = state.sample1; + state.sample1 = linearSample; ++ if (ok) *ok=true; + + return static_cast(linearSample); + } +@@ -212,13 +248,16 @@ int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded) + { + uint8_t code; + int16_t newSample; ++ bool ok; + + code = *encoded >> 4; +- newSample = decodeSample(*state[0], code, coefficient[0]); ++ newSample = decodeSample(*state[0], code, coefficient[0], &ok); ++ if (!ok) return 0; + *decoded++ = newSample; + + code = *encoded & 0x0f; +- newSample = decodeSample(*state[1], code, coefficient[1]); ++ newSample = decodeSample(*state[1], code, coefficient[1], &ok); ++ if (!ok) return 0; + *decoded++ = newSample; + + encoded++; +-- +2.11.0 + diff --git a/features/buildroot/package/audiofile/0008-CVE-2015-7747.patch b/features/buildroot/package/audiofile/0008-CVE-2015-7747.patch new file mode 100644 index 00000000..13256123 --- /dev/null +++ b/features/buildroot/package/audiofile/0008-CVE-2015-7747.patch @@ -0,0 +1,161 @@ +Description: fix buffer overflow when changing both sample format and + number of channels +Origin: https://github.com/mpruett/audiofile/pull/25 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/audiofile/+bug/1502721 +Bug-Debian: https://bugs.debian.org/801102 + +Downloaded from +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/audiofile/files/audiofile-0.3.6-CVE-2015-7747.patch + +Signed-off-by: Bernd Kuhls + +--- a/libaudiofile/modules/ModuleState.cpp ++++ b/libaudiofile/modules/ModuleState.cpp +@@ -402,7 +402,7 @@ status ModuleState::arrange(AFfilehandle + addModule(new Transform(outfc, in.pcm, out.pcm)); + + if (in.channelCount != out.channelCount) +- addModule(new ApplyChannelMatrix(infc, isReading, ++ addModule(new ApplyChannelMatrix(outfc, isReading, + in.channelCount, out.channelCount, + in.pcm.minClip, in.pcm.maxClip, + track->channelMatrix)); +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -26,6 +26,7 @@ TESTS = \ + VirtualFile \ + floatto24 \ + query2 \ ++ sixteen-stereo-to-eight-mono \ + sixteen-to-eight \ + testchannelmatrix \ + testdouble \ +@@ -139,6 +140,7 @@ printmarkers_SOURCES = printmarkers.c + printmarkers_LDADD = $(LIBAUDIOFILE) -lm + + sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h ++sixteen_stereo_to_eight_mono_SOURCES = sixteen-stereo-to-eight-mono.c TestUtilities.cpp TestUtilities.h + + testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h + +--- /dev/null ++++ b/test/sixteen-stereo-to-eight-mono.c +@@ -0,0 +1,118 @@ ++/* ++ Audio File Library ++ ++ Copyright 2000, Silicon Graphics, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with this program; if not, write to the Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ ++ ++/* ++ sixteen-stereo-to-eight-mono.c ++ ++ This program tests the conversion from 2-channel 16-bit integers to ++ 1-channel 8-bit integers. ++*/ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#include "TestUtilities.h" ++ ++int main (int argc, char **argv) ++{ ++ AFfilehandle file; ++ AFfilesetup setup; ++ int16_t frames16[] = {14298, 392, 3923, -683, 958, -1921}; ++ int8_t frames8[] = {28, 6, -2}; ++ int i, frameCount = 3; ++ int8_t byte; ++ AFframecount result; ++ ++ setup = afNewFileSetup(); ++ ++ afInitFileFormat(setup, AF_FILE_WAVE); ++ ++ afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); ++ afInitChannels(setup, AF_DEFAULT_TRACK, 2); ++ ++ char *testFileName; ++ if (!createTemporaryFile("sixteen-to-eight", &testFileName)) ++ { ++ fprintf(stderr, "Could not create temporary file.\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ file = afOpenFile(testFileName, "w", setup); ++ if (file == AF_NULL_FILEHANDLE) ++ { ++ fprintf(stderr, "could not open file for writing\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ afFreeFileSetup(setup); ++ ++ afWriteFrames(file, AF_DEFAULT_TRACK, frames16, frameCount); ++ ++ afCloseFile(file); ++ ++ file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP); ++ if (file == AF_NULL_FILEHANDLE) ++ { ++ fprintf(stderr, "could not open file for reading\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 8); ++ afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1); ++ ++ for (i=0; i +Date: Sat, 27 May 2017 17:53:33 +0200 +Subject: [PATCH 1/1] Fix static linking with libsndfile + +libsndfile and audiofile both contain mixXX functions in their alac +code which lead to symbol name clashes when apps like mpd try to +statically link to both audiofile and libsndfile at the same time. + +This patch renames these functions to avoid the problem which was +detected by the buildroot autobuilders: +http://autobuild.buildroot.net/results/799/7997ccd698f03885f98d00bd150dc3a578e4b161/ + +Patch sent upstream: https://github.com/mpruett/audiofile/pull/45 + +Signed-off-by: Bernd Kuhls +--- + libaudiofile/alac/ALACEncoder.cpp | 28 ++++++++++++++-------------- + libaudiofile/alac/matrix_enc.c | 8 ++++---- + libaudiofile/alac/matrixlib.h | 8 ++++---- + 3 files changed, 22 insertions(+), 22 deletions(-) + +diff --git a/libaudiofile/alac/ALACEncoder.cpp b/libaudiofile/alac/ALACEncoder.cpp +index da922c2..3d088cc 100644 +--- a/libaudiofile/alac/ALACEncoder.cpp ++++ b/libaudiofile/alac/ALACEncoder.cpp +@@ -332,19 +332,19 @@ int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, ui + switch ( mBitDepth ) + { + case 16: +- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); ++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); + break; + case 20: +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); + break; + case 24: + // includes extraction of shifted-off bytes +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + case 32: + // includes extraction of shifted-off bytes +- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, ++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + } +@@ -379,19 +379,19 @@ int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, ui + switch ( mBitDepth ) + { + case 16: +- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 20: +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 24: + // also extracts the shifted off bytes into the shift buffers +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + case 32: + // also extracts the shifted off bytes into the shift buffers +- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + } +@@ -605,19 +605,19 @@ int32_t ALACEncoder::EncodeStereoFast( BitBuffer * bitstream, void * inputBuffer + switch ( mBitDepth ) + { + case 16: +- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 20: +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 24: + // also extracts the shifted off bytes into the shift buffers +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + case 32: + // also extracts the shifted off bytes into the shift buffers +- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + } +@@ -756,7 +756,7 @@ int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuff + break; + case 20: + // mix20() with mixres param = 0 means de-interleave so use it to simplify things +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 ); + for ( index = 0; index < numSamples; index++ ) + { + BitBufferWrite( bitstream, mMixBufferU[index], 20 ); +@@ -765,7 +765,7 @@ int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuff + break; + case 24: + // mix24() with mixres param = 0 means de-interleave so use it to simplify things +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 ); ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 ); + for ( index = 0; index < numSamples; index++ ) + { + BitBufferWrite( bitstream, mMixBufferU[index], 24 ); +diff --git a/libaudiofile/alac/matrix_enc.c b/libaudiofile/alac/matrix_enc.c +index e194330..8abd556 100644 +--- a/libaudiofile/alac/matrix_enc.c ++++ b/libaudiofile/alac/matrix_enc.c +@@ -57,7 +57,7 @@ + + // 16-bit routines + +-void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) ++void audiofile_alac_mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) + { + int16_t * ip = in; + int32_t j; +@@ -95,7 +95,7 @@ void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num + // 20-bit routines + // - the 20 bits of data are left-justified in 3 bytes of storage but right-aligned for input/output predictor buffers + +-void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) ++void audiofile_alac_mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) + { + int32_t l, r; + uint8_t * ip = in; +@@ -140,7 +140,7 @@ void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num + // 24-bit routines + // - the 24 bits of data are right-justified in the input/output predictor buffers + +-void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) + { + int32_t l, r; +@@ -240,7 +240,7 @@ void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num + // - otherwise, the calculations might overflow into the 33rd bit and be lost + // - therefore, these routines deal with the specified "unused lower" bytes in the "shift" buffers + +-void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) + { + int32_t * ip = in; +diff --git a/libaudiofile/alac/matrixlib.h b/libaudiofile/alac/matrixlib.h +index 0a4f371..5728b6d 100644 +--- a/libaudiofile/alac/matrixlib.h ++++ b/libaudiofile/alac/matrixlib.h +@@ -38,17 +38,17 @@ extern "C" { + #endif + + // 16-bit routines +-void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); ++void audiofile_alac_mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); + void unmix16( int32_t * u, int32_t * v, int16_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ); + + // 20-bit routines +-void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); ++void audiofile_alac_mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); + void unmix20( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ); + + // 24-bit routines + // - 24-bit data sometimes compresses better by shifting off the bottom byte so these routines deal with + // the specified "unused lower bytes" in the combined "shift" buffer +-void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); + void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); +@@ -57,7 +57,7 @@ void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t + // - note that these really expect the internal data width to be < 32-bit but the arrays are 32-bit + // - otherwise, the calculations might overflow into the 33rd bit and be lost + // - therefore, these routines deal with the specified "unused lower" bytes in the combined "shift" buffer +-void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); + void unmix32( int32_t * u, int32_t * v, int32_t * out, uint32_t stride, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); +-- +2.11.0 + diff --git a/features/buildroot/package/audiofile/Config.in b/features/buildroot/package/audiofile/Config.in new file mode 100644 index 00000000..4aa8d69c --- /dev/null +++ b/features/buildroot/package/audiofile/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_AUDIOFILE + bool "audiofile" + depends on BR2_INSTALL_LIBSTDCPP + help + The Audio File Library handles reading and writing audio files + in many common formats. + + http://www.68k.org/~michael/audiofile/ + +comment "audiofile needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/audiofile/audiofile.hash b/features/buildroot/package/audiofile/audiofile.hash new file mode 100644 index 00000000..3b9cba64 --- /dev/null +++ b/features/buildroot/package/audiofile/audiofile.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cdc60df19ab08bfe55344395739bb08f50fc15c92da3962fac334d3bff116965 audiofile-0.3.6.tar.gz diff --git a/features/buildroot/package/audiofile/audiofile.mk b/features/buildroot/package/audiofile/audiofile.mk new file mode 100644 index 00000000..2f2e8902 --- /dev/null +++ b/features/buildroot/package/audiofile/audiofile.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# audiofile +# +################################################################################ + +AUDIOFILE_VERSION = 0.3.6 +AUDIOFILE_SITE = http://audiofile.68k.org +AUDIOFILE_INSTALL_STAGING = YES +AUDIOFILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +AUDIOFILE_CONF_OPTS = --disable-examples +AUDIOFILE_DEPENDENCIES = host-pkgconf +# configure is outdated and has old bugs because of it +AUDIOFILE_AUTORECONF = YES +AUDIOFILE_LICENSE = GPL-2.0+, LGPL-2.1+ +AUDIOFILE_LICENSE_FILES = COPYING COPYING.GPL + +ifeq ($(BR2_PACKAGE_FLAC),y) +AUDIOFILE_DEPENDENCIES += flac +AUDIOFILE_CONF_OPTS += --enable-flac +else +AUDIOFILE_CONF_OPTS += --disable-flac +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/audit/0001-Fix-audispd-path-in-auditd.conf.patch b/features/buildroot/package/audit/0001-Fix-audispd-path-in-auditd.conf.patch new file mode 100644 index 00000000..ccf45db9 --- /dev/null +++ b/features/buildroot/package/audit/0001-Fix-audispd-path-in-auditd.conf.patch @@ -0,0 +1,32 @@ +From 6e1fd09f7bc131c8f16d9cc43e2455ba4650c651 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 3 Nov 2018 08:25:58 -0300 +Subject: [PATCH] Fix audispd path in auditd.conf + +audispd is installed at /usr/sbin but the configuration file pointed +to /sbin, causing auditd to fail on startup. + +This patch cannot be sent upstream because audispd does not exist +anymore on the master branch (it was merged to auditd). + +Signed-off-by: Carlos Santos +--- + init.d/auditd.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/init.d/auditd.conf b/init.d/auditd.conf +index 4dcda83..998904f 100644 +--- a/init.d/auditd.conf ++++ b/init.d/auditd.conf +@@ -13,7 +13,7 @@ max_log_file = 8 + num_logs = 5 + priority_boost = 4 + disp_qos = lossy +-dispatcher = /sbin/audispd ++dispatcher = /usr/sbin/audispd + name_format = NONE + ##name = mydomain + max_log_file_action = ROTATE +-- +2.17.1 + diff --git a/features/buildroot/package/audit/Config.in b/features/buildroot/package/audit/Config.in new file mode 100644 index 00000000..023ac79d --- /dev/null +++ b/features/buildroot/package/audit/Config.in @@ -0,0 +1,26 @@ +# audit has some builtin per-architecture system call tables +config BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || BR2_armeb || \ + BR2_i386 || BR2_powerpc || BR2_powerpc64 || \ + BR2_x86_64 + +config BR2_PACKAGE_AUDIT + bool "audit" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # strndupa() + help + The audit package contains the user space utilities for + storing and searching the audit records generated by + the audit subsystem in the Linux 2.6 kernel + + Note: The z/OS remote plugin is disabled in this package + + http://people.redhat.com/sgrubb/audit/ + +comment "audit needs a uClibc or glibc toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS diff --git a/features/buildroot/package/audit/S02auditd b/features/buildroot/package/audit/S02auditd new file mode 100644 index 00000000..2ecf0f1d --- /dev/null +++ b/features/buildroot/package/audit/S02auditd @@ -0,0 +1,80 @@ +#!/bin/sh +# +# auditd This starts and stops auditd +# +# description: This starts the Linux Auditing System Daemon, +# which collects security related events in a dedicated +# audit log. If this daemon is turned off, audit events +# will be sent to syslog. +# + +NAME=auditd +DAEMON=/usr/sbin/${NAME} +CONFIG=/etc/audit/auditd.conf +PIDFILE=/var/run/${NAME}.pid + +start(){ + printf "Starting ${NAME}: " + + # Create dir to store log files in if one doesn't exist. Create + # the directory with SELinux permissions if possible + command -v matchpathcon >/dev/null 2>&1 + if [ $? = 0 ]; then + mkdir -p /var/log/audit -Z `matchpathcon -n /var/log/audit` + else + mkdir -p /var/log/audit + fi + + # Run audit daemon executable + start-stop-daemon -S -q -p ${PIDFILE} --exec ${DAEMON} + + if [ $? = 0 ]; then + # Load the default rules + test -f /etc/audit/rules.d/audit.rules && /usr/sbin/auditctl -R /etc/audit/rules.d/audit.rules >/dev/null + echo "OK" + else + echo "FAIL" + fi +} + +stop(){ + printf "Stopping ${NAME}: " + + start-stop-daemon -K -q -p ${PIDFILE} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +reload(){ + printf "Reloading ${NAME} configuration: " + start-stop-daemon --stop -s 1 -p ${PIDFILE} 1>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +rotate(){ + printf "Rotating ${NAME} logs: " + start-stop-daemon --stop -s 10 -p ${PIDFILE} 1>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + reload) + reload + ;; + rotate) + rotate + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|rotate}" + exit 1 + ;; +esac diff --git a/features/buildroot/package/audit/audit.hash b/features/buildroot/package/audit/audit.hash new file mode 100644 index 00000000..71e7df7d --- /dev/null +++ b/features/buildroot/package/audit/audit.hash @@ -0,0 +1,4 @@ +#Locally computed +sha256 0e5d4103646e00f8d1981e1cd2faea7a2ae28e854c31a803e907a383c5e2ecb7 audit-2.8.5.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/features/buildroot/package/audit/audit.mk b/features/buildroot/package/audit/audit.mk new file mode 100644 index 00000000..31053fed --- /dev/null +++ b/features/buildroot/package/audit/audit.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# audit +# +################################################################################ + +AUDIT_VERSION = 2.8.5 +AUDIT_SITE = http://people.redhat.com/sgrubb/audit +AUDIT_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +AUDIT_LICENSE_FILES = COPYING COPYING.LIB + +AUDIT_INSTALL_STAGING = YES + +AUDIT_CONF_OPTS = --without-python --without-python3 --disable-zos-remote + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +AUDIT_DEPENDENCIES += libcap-ng +AUDIT_CONF_OPTS += --with-libcap-ng=yes +else +AUDIT_CONF_OPTS += --with-libcap-ng=no +endif + +# For i386, x86-64 and PowerPC, the system call tables are +# unconditionally included. However, for ARM(eb) and AArch64, then +# need to be explicitly enabled. + +ifeq ($(BR2_arm)$(BR2_armeb),y) +AUDIT_CONF_OPTS += --with-arm +endif +ifeq ($(BR2_aarch64),y) +AUDIT_CONF_OPTS += --with-aarch64 +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +AUDIT_CONF_OPTS += --enable-systemd +else +AUDIT_CONF_OPTS += --disable-systemd +endif + +define AUDIT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/audit/S02auditd $(TARGET_DIR)/etc/init.d/S02auditd +endef + +define AUDIT_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/auditd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/auditd.service + + $(INSTALL) -D -m 644 package/audit/audit_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/audit.conf +endef + +define AUDIT_INSTALL_CLEANUP + $(RM) $(TARGET_DIR)/etc/rc.d/init.d/auditd + $(RM) $(TARGET_DIR)/etc/sysconfig/auditd +endef +AUDIT_POST_INSTALL_TARGET_HOOKS += AUDIT_INSTALL_CLEANUP + +HOST_AUDIT_CONF_OPTS = \ + --without-python \ + --without-python3 \ + --disable-zos-remote \ + --without-libcap-ng + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/audit/audit_tmpfiles.conf b/features/buildroot/package/audit/audit_tmpfiles.conf new file mode 100644 index 00000000..6b8325b5 --- /dev/null +++ b/features/buildroot/package/audit/audit_tmpfiles.conf @@ -0,0 +1 @@ +d /var/log/audit 0755 - - diff --git a/features/buildroot/package/aufs-util/0001-remove-user-settings.patch b/features/buildroot/package/aufs-util/0001-remove-user-settings.patch new file mode 100644 index 00000000..7eebc95d --- /dev/null +++ b/features/buildroot/package/aufs-util/0001-remove-user-settings.patch @@ -0,0 +1,16 @@ +install: drop setting ownership + +Signed-off-by: "Yann E. MORIN" + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -21,7 +21,7 @@ + override CPPFLAGS += -DAUFHSM_CMD=\"/usr/bin/aufhsm\" + override CFLAGS += -O -Wall + INSTALL ?= install +-Install = ${INSTALL} -o root -g root -p ++Install = ${INSTALL} -p + ManDir = /usr/share/man + + # diff --git a/features/buildroot/package/aufs-util/0002-no-check-ver.patch b/features/buildroot/package/aufs-util/0002-no-check-ver.patch new file mode 100644 index 00000000..5fe69207 --- /dev/null +++ b/features/buildroot/package/aufs-util/0002-no-check-ver.patch @@ -0,0 +1,24 @@ +Makefile: do not check version + +The aufs-util package tries to ensure that its version is compatible +with the one in the running kernel. However, this test is flawed: the +version string in the aufs4x branch for aufs-util is aufs3.x, so it does +not match the version in the kernel when it is aufs4.x. + +Disengage this check, ion the assumption the user knows what he is +doing. + +Signed-off-by: "Yann E. MORIN" + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -62,7 +62,7 @@ + $(foreach v, CPPFLAGS CFLAGS INSTALL Install ManDir LibUtilHdr, \ + $(eval MAKE += ${v}="$${${v}}")) + +-all: ver_test ${Man} ${Bin} ${Etc} ++all: ${Man} ${Bin} ${Etc} + ${MAKE} -C libau $@ + ln -sf ./libau/libau*.so . + $(call MakeFHSM, $@) diff --git a/features/buildroot/package/aufs-util/0003-no-strip-lib.patch b/features/buildroot/package/aufs-util/0003-no-strip-lib.patch new file mode 100644 index 00000000..15830503 --- /dev/null +++ b/features/buildroot/package/aufs-util/0003-no-strip-lib.patch @@ -0,0 +1,18 @@ +install: do not strip libs when installing + +We want unstripped binaries in staging; stripping is done by Buildroot +as a whole in target-finalize if needed, anyway. + +Signed-off-by: "Yann E. MORIN" + +diff --git a/libau/Makefile b/libau/Makefile +--- a/libau/Makefile ++++ b/libau/Makefile +@@ -37,7 +37,6 @@ + ln -sf $< $@ + ${LibSo}.${LibSoMajor}: ${LibSo}.${LibSoMajor}.${LibSoMinor} + ln -sf $< $@ +-${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDFLAGS += -s + ${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDLIBS += -ldl -lpthread + ${LibSo}.${LibSoMajor}.${LibSoMinor}: ${LibSoObj} + ${CC} --shared -Wl,-soname,${LibSo}.${LibSoMajor} ${LDFLAGS} \ diff --git a/features/buildroot/package/aufs-util/Config.in b/features/buildroot/package/aufs-util/Config.in new file mode 100644 index 00000000..a426343f --- /dev/null +++ b/features/buildroot/package/aufs-util/Config.in @@ -0,0 +1,36 @@ +comment "aufs-util needs a linux kernel and a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_AUFS_UTIL + bool "aufs-util" + depends on BR2_USE_MMU + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Aufs command line utilities. + + Needs a kernel with aufs support. A kernel + extension package is available. + + http://sourceforge.net/p/aufs/aufs-util/ + +if BR2_PACKAGE_AUFS_UTIL + +config BR2_PACKAGE_AUFS_UTIL_VERSION + string "aufs-util version" + default "" + help + The version you choose must match that of the aufs support + in your kernel. Usually, this is aufs3.x for 3.x kernels and + aufs4.x for 4.x kernels. + + Usually, the sha1 of the cset you want to use; avoid using a + branch name as this yields non-reproducible builds. + + See the following resources to see what versions are + available: + + https://sourceforge.net/p/aufs/aufs-util/ci/master/tree/ + +endif diff --git a/features/buildroot/package/aufs-util/aufs-util.mk b/features/buildroot/package/aufs-util/aufs-util.mk new file mode 100644 index 00000000..d954f029 --- /dev/null +++ b/features/buildroot/package/aufs-util/aufs-util.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# aufs-util +# +################################################################################ + +# linux-headers +AUFS_UTIL_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_UTIL_VERSION)) +AUFS_UTIL_SITE = http://git.code.sf.net/p/aufs/aufs-util +AUFS_UTIL_SITE_METHOD = git +AUFS_UTIL_LICENSE = GPL-2.0 +AUFS_UTIL_LICENSE_FILES = COPYING + +AUFS_UTIL_DEPENDENCIES = linux + +# Building aufs-util requires access to the kernel headers of aufs, +# which are only available in the kernel build directory, which is why +# we add -I$(LINUX_DIR)/include/uapi. These headers have not been +# prepared for usage by userspace, so to workaround this we have to +# defined the "__user" macro as empty. +AUFS_UTIL_HOST_CPPFLAGS = \ + $(HOST_CPPFLAGS) \ + -I$(LINUX_DIR)/include/uapi \ + -D__user= + +AUFS_UTIL_CPPFLAGS = \ + $(TARGET_CPPFLAGS) \ + -I$(LINUX_DIR)/include/uapi \ + -D__user= + +# rdu64 is supposed to provide the LFS variant of readdir(), +# readdir64(). However, because Buildroot is always LFS-enabled, +# readdir() is always the LFS variant. Drop rdu64 from the build, as +# it causes build failures due to multiple implementations of +# readdir64(). +define AUFS_UTIL_REMOVE_RDU64 + $(SED) 's% rdu64.o%%' $(@D)/libau/Makefile +endef + +AUFS_UTIL_POST_PATCH_HOOKS += AUFS_UTIL_REMOVE_RDU64 + +# First, we build the host tools, needed to build the target tools. +define AUFS_UTIL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_CONFIGURE_OPTS) \ + CPPFLAGS="$(AUFS_UTIL_HOST_CPPFLAGS)" \ + HOSTCC="$(HOSTCC)" HOSTLD="$(HOSTLD)" \ + INSTALL="$(INSTALL)" c2sh c2tmac + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + CPPFLAGS="$(AUFS_UTIL_CPPFLAGS)" \ + INSTALL="$(INSTALL)" all +endef + +define AUFS_UTIL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL="$(INSTALL)" DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/aufs/Config.in b/features/buildroot/package/aufs/Config.in new file mode 100644 index 00000000..cc5ff365 --- /dev/null +++ b/features/buildroot/package/aufs/Config.in @@ -0,0 +1,16 @@ +# Automatically selected by the corresponding linux extension +config BR2_PACKAGE_AUFS + bool + +if BR2_PACKAGE_AUFS + +# Both come from the selection of the linux extension. +config BR2_PACKAGE_AUFS_SERIES + int + default BR2_LINUX_KERNEL_EXT_AUFS_SERIES + +config BR2_PACKAGE_AUFS_VERSION + string + default BR2_LINUX_KERNEL_EXT_AUFS_VERSION + +endif diff --git a/features/buildroot/package/aufs/aufs.mk b/features/buildroot/package/aufs/aufs.mk new file mode 100644 index 00000000..55dbf942 --- /dev/null +++ b/features/buildroot/package/aufs/aufs.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# aufs +# +################################################################################ + +AUFS_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_VERSION)) +AUFS_LICENSE = GPL-2.0 +AUFS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_AUFS_SERIES),3) +AUFS_SITE = http://git.code.sf.net/p/aufs/aufs3-standalone +AUFS_SITE_METHOD = git +else ifeq ($(BR2_PACKAGE_AUFS_SERIES),4) +AUFS_SITE = $(call github,sfjro,aufs4-standalone,$(AUFS_VERSION)) +endif + +ifeq ($(BR_BUILDING):$(BR2_PACKAGE_AUFS):$(AUFS_VERSION),y:y:) +$(error No aufs version specified) +endif + +$(eval $(generic-package)) diff --git a/features/buildroot/package/augeas/Config.in b/features/buildroot/package/augeas/Config.in new file mode 100644 index 00000000..df8c5174 --- /dev/null +++ b/features/buildroot/package/augeas/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_AUGEAS + bool "augeas" + # ARC toolchain issue: + # https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues/108 + depends on !BR2_arc + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_READLINE + help + Augeas is a configuration editing tool. It parses + configuration files in their native formats and transforms + them into a tree. Configuration changes are made by + manipulating this tree and saving it back into native config + files. + + http://augeas.net + +comment "augeas needs a toolchain w/ wchar" + depends on !BR2_arc + depends on !BR2_USE_WCHAR diff --git a/features/buildroot/package/augeas/augeas.hash b/features/buildroot/package/augeas/augeas.hash new file mode 100644 index 00000000..d69ef857 --- /dev/null +++ b/features/buildroot/package/augeas/augeas.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature from +# http://download.augeas.net/augeas-1.11.0.tar.gz.sig +sha256 393ce8f4055af89cd4c20bf903eacbbd909cf427891f41b56dc2ba66243ea0b0 augeas-1.11.0.tar.gz +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING diff --git a/features/buildroot/package/augeas/augeas.mk b/features/buildroot/package/augeas/augeas.mk new file mode 100644 index 00000000..8cb4f74e --- /dev/null +++ b/features/buildroot/package/augeas/augeas.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# augeas +# +################################################################################ + +AUGEAS_VERSION = 1.11.0 +AUGEAS_SITE = http://download.augeas.net +AUGEAS_INSTALL_STAGING = YES +AUGEAS_LICENSE = LGPL-2.1+ +AUGEAS_LICENSE_FILES = COPYING +AUGEAS_DEPENDENCIES = host-pkgconf readline libxml2 + +# patching examples/Makefile.am, can be removed when updating from version 1.9.0 +AUGEAS_AUTORECONF = YES + +AUGEAS_CONF_OPTS = --disable-gnulib-tests + +# Remove the test lenses which occupy about 1.4 MB on the target +define AUGEAS_REMOVE_TEST_LENSES + rm -rf $(TARGET_DIR)/usr/share/augeas/lenses/dist/tests +endef +AUGEAS_POST_INSTALL_TARGET_HOOKS += AUGEAS_REMOVE_TEST_LENSES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch b/features/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch new file mode 100644 index 00000000..143174de --- /dev/null +++ b/features/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch @@ -0,0 +1,28 @@ +Aumix's src/Makefile.am incorrect adds @includedir@ to the list of +include paths and @libdir@ to the list of libraries paths. This is +incorrect, as @includedir@ and @libdir@ are respectively /usr/include +and /usr/lib, even in cross-compilation mode. + +At the same time, use AM_CFLAGS instead of CFLAGS, as is done on the +similar patch found in OpenEmbedded. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile.am | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +Index: aumix-2.8/src/Makefile.am +=================================================================== +--- aumix-2.8.orig/src/Makefile.am ++++ aumix-2.8/src/Makefile.am +@@ -9,9 +9,8 @@ + mouse.c common.h curses.h gpm-xterm.h gtk.h interactive.h \ + mouse.h play.xpm record.xpm + localedir = $(datadir)/locale +-INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\" -I@includedir@ ++INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\" + AM_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ @GTK_CFLAGS@ +-LDADD = -L@libdir@ + LIBS = @LIBS@ @GTK_LIBS@ @LIBINTL@ + DEFS = @DEFS@ + diff --git a/features/buildroot/package/aumix/Config.in b/features/buildroot/package/aumix/Config.in new file mode 100644 index 00000000..3d320825 --- /dev/null +++ b/features/buildroot/package/aumix/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AUMIX + bool "aumix" + select BR2_PACKAGE_NCURSES + help + aumix is a small, easy-to-use program to control the mixer + of your sound card. It runs in text mode using the ncurses + library, or from the command line (non-interactively). + It can read default settings from a file, and it can also + automatically save and restore the mixer settings at shutdown + and boot. + + http://jpj.net/~trevor/aumix.html diff --git a/features/buildroot/package/aumix/aumix.hash b/features/buildroot/package/aumix/aumix.hash new file mode 100644 index 00000000..0463ea01 --- /dev/null +++ b/features/buildroot/package/aumix/aumix.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d2ce43d532ef75072c8d4e7922e3bc06be6d97765a508d9ceb0d1766bbe70e29 aumix-2.9.1.tar.bz2 diff --git a/features/buildroot/package/aumix/aumix.mk b/features/buildroot/package/aumix/aumix.mk new file mode 100644 index 00000000..9bcc19a3 --- /dev/null +++ b/features/buildroot/package/aumix/aumix.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# aumix +# +################################################################################ + +AUMIX_VERSION = 2.9.1 +AUMIX_SOURCE = aumix-$(AUMIX_VERSION).tar.bz2 +AUMIX_SITE = http://jpj.net/~trevor/aumix/releases +AUMIX_AUTORECONF = YES +AUMIX_GETTEXTIZE = YES +AUMIX_LICENSE = GPL-2.0+ +AUMIX_LICENSE_FILES = COPYING + +AUMIX_CONF_OPTS = \ + --without-gtk \ + --without-gtk1 \ + --without-alsa \ + --without-gpm \ + --without-sysmouse + +AUMIX_DEPENDENCIES = host-gettext ncurses + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch b/features/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch new file mode 100644 index 00000000..c0efeb33 --- /dev/null +++ b/features/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch @@ -0,0 +1,48 @@ +From 1870301013d79be781ead2b0e62fc08f91715ca9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 3 May 2015 23:02:34 +0200 +Subject: [PATCH] AX_TLS: fix syntax error + +The commit e012eb17b3d67f31dee477592328207437206c33 introduce +a syntax error due to an empty "else" statement. + +confifure: +if test "$ac_cv_tls" != "none"; then : +cat >>confdefs.h <<_ACEOF +_ACEOF +else + +fi + +Remove the [] on the third part of AS_IF. + +Signed-off-by: Romain Naour +(rebased against version 2017.03.21) +Signed-off-by: Bernd Kuhls +--- + m4/ax_tls.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4 +index 809b761..2135dd2 100644 +--- a/m4/ax_tls.m4 ++++ b/m4/ax_tls.m4 +@@ -44,7 +44,7 @@ + # modified version of the Autoconf Macro, you may extend this special + # exception to the GPL to apply to your modified version as well. + +-#serial 13 ++#serial 14 + + AC_DEFUN([AX_TLS], [ + AC_MSG_CHECKING([for thread local storage (TLS) class]) +@@ -70,5 +70,5 @@ AC_DEFUN([AX_TLS], [ + AS_IF([test "$ac_cv_tls" != "none"], + [AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class define it to that here]) + m4_ifnblank([$1],[$1])], +- [m4_ifnblank([$2],[$2])]) ++ m4_ifnblank([$2],[$2])) + ]) +-- +1.9.3 + diff --git a/features/buildroot/package/autoconf-archive/autoconf-archive.hash b/features/buildroot/package/autoconf-archive/autoconf-archive.hash new file mode 100644 index 00000000..2c537b33 --- /dev/null +++ b/features/buildroot/package/autoconf-archive/autoconf-archive.hash @@ -0,0 +1,2 @@ +# Computed locally +sha256 386ad455f12bdeb3a7d19280441a5ab77355142349200ff11040a8d9d455d765 autoconf-archive-2017.03.21.tar.xz diff --git a/features/buildroot/package/autoconf-archive/autoconf-archive.mk b/features/buildroot/package/autoconf-archive/autoconf-archive.mk new file mode 100644 index 00000000..8a6d5957 --- /dev/null +++ b/features/buildroot/package/autoconf-archive/autoconf-archive.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# autoconf-archive +# +################################################################################ + +AUTOCONF_ARCHIVE_VERSION = 2017.03.21 +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 +AUTOCONF_ARCHIVE_LICENSE_FILES = COPYING COPYING.EXCEPTION +HOST_AUTOCONF_ARCHIVE_INSTALL_OPTS = aclocaldir=$(HOST_DIR)/share/autoconf-archive install + +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch b/features/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch new file mode 100644 index 00000000..e8d9f6a2 --- /dev/null +++ b/features/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch @@ -0,0 +1,28 @@ +autoconf: don't append -dirty to version + +Don't append -dirty to autoconf version number if the buildroot git tree +has uncommited changes. + +This script is meant for the autoconf developers, but it also activates +if you build autoconf in a subdirectory of a git tree (E.G. like how it's +commonly done in buildroot). + +The affect is that autoconf gets built as being version 2.65-dirty, which +breaks programs (like Python) which explicitly checks for autoconf-2.65. + +[Gustavo: update for autoconf 2.69] +Signed-off-by: Peter Korsgaard +Signed-off-by: Gustavo Zacarias + +diff -Nura autoconf-2.69.orig/build-aux/git-version-gen autoconf-2.69/build-aux/git-version-gen +--- autoconf-2.69.orig/build-aux/git-version-gen 2013-06-27 11:31:02.340200154 -0300 ++++ autoconf-2.69/build-aux/git-version-gen 2013-06-27 11:31:13.734577033 -0300 +@@ -203,7 +203,7 @@ + *) # Append the suffix only if there isn't one already. + case $v in + *-dirty) ;; +- *) v="$v-dirty" ;; ++ #*) v="$v-dirty" ;; + esac ;; + esac + fi diff --git a/features/buildroot/package/autoconf/autoconf.hash b/features/buildroot/package/autoconf/autoconf.hash new file mode 100644 index 00000000..f53e8979 --- /dev/null +++ b/features/buildroot/package/autoconf/autoconf.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 64ebcec9f8ac5b2487125a86a7760d2591ac9e1d3dbd59489633f9de62a57684 autoconf-2.69.tar.xz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYINGv3 +sha256 23ed0b84fa023bfa33433b498192cd08a3bfb1f4864a8ed791a84f3eb48b2dd2 COPYING.EXCEPTION diff --git a/features/buildroot/package/autoconf/autoconf.mk b/features/buildroot/package/autoconf/autoconf.mk new file mode 100644 index 00000000..e5f474c7 --- /dev/null +++ b/features/buildroot/package/autoconf/autoconf.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# autoconf +# +################################################################################ + +AUTOCONF_VERSION = 2.69 +AUTOCONF_SOURCE = autoconf-$(AUTOCONF_VERSION).tar.xz +AUTOCONF_SITE = $(BR2_GNU_MIRROR)/autoconf + +AUTOCONF_LICENSE = GPL-3.0+ with exceptions +AUTOCONF_LICENSE_FILES = COPYINGv3 COPYING.EXCEPTION + +HOST_AUTOCONF_CONF_ENV = \ + EMACS="no" \ + ac_cv_path_M4=$(HOST_DIR)/bin/m4 \ + ac_cv_prog_gnu_m4_gnu=no + +HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool + +$(eval $(host-autotools-package)) + +# variables used by other packages +AUTOCONF = $(HOST_DIR)/bin/autoconf +AUTOHEADER = $(HOST_DIR)/bin/autoheader +AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)" diff --git a/features/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch b/features/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch new file mode 100644 index 00000000..26f22653 --- /dev/null +++ b/features/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch @@ -0,0 +1,32 @@ +From 44bdce8c6ed9b30c1643e5981172a4f9025f013c Mon Sep 17 00:00:00 2001 +From: Andreas Oberritter +Date: Wed, 13 Mar 2013 16:17:08 +0100 +Subject: [PATCH] autofs-5.0.7: include linux/nfs.h directly in rpc_subs.h + +Fixes compile error with uclibc. Glibc's nfs/nfs.h contains +nothing but "#include linux/nfs.h". rpc_subs.h already includes +other linux/nfs*.h files directly. + +Signed-off-by: Andreas Oberritter +Signed-off-by: Thomas Petazzoni +Upstream-Status: Pending +--- + include/rpc_subs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/rpc_subs.h b/include/rpc_subs.h +index b6d59f9..a2d9648 100644 +--- a/include/rpc_subs.h ++++ b/include/rpc_subs.h +@@ -18,7 +18,7 @@ + + #include + #include +-#include ++#include + #include + #include + +-- +1.7.10.4 + diff --git a/features/buildroot/package/autofs/Config.in b/features/buildroot/package/autofs/Config.in new file mode 100644 index 00000000..8bb5fe27 --- /dev/null +++ b/features/buildroot/package/autofs/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_AUTOFS + bool "autofs" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS # dlfcn + depends on !BR2_TOOLCHAIN_USES_MUSL # nsswitch + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + Autofs controls the operation of the automount daemons. The + automount daemons automatically mount filesystems when they + are used and unmount them after a period of inactivity based + on a set of pre-configured maps defined by default in + /etc/auto.master. The kernel automounter implements SunOS + style automounter under Linux and requires a kernel version + of at least 2.6.17 and the autofs4 kernel module. + + http://www.linuxfromscratch.org/blfs/view/svn/general/autofs.html + +comment "autofs needs a glibc or uClibc toolchain w/ NPTL and dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/features/buildroot/package/autofs/autofs.hash b/features/buildroot/package/autofs/autofs.hash new file mode 100644 index 00000000..1f2060bd --- /dev/null +++ b/features/buildroot/package/autofs/autofs.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/daemons/autofs/v5/sha256sums.asc +sha256 8fce30ee51ffd528fe1a4e8374ef57f43367e1f123030e175fb1b1cf15bc1722 autofs-5.1.4.tar.xz diff --git a/features/buildroot/package/autofs/autofs.mk b/features/buildroot/package/autofs/autofs.mk new file mode 100644 index 00000000..e7c65ef4 --- /dev/null +++ b/features/buildroot/package/autofs/autofs.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# autofs +# +################################################################################ + +AUTOFS_VERSION = 5.1.4 +AUTOFS_SOURCE = autofs-$(AUTOFS_VERSION).tar.xz +AUTOFS_SITE = $(BR2_KERNEL_MIRROR)/linux/daemons/autofs/v5 +AUTOFS_LICENSE = GPL-2.0+ +AUTOFS_LICENSE_FILES = COPYING COPYRIGHT +AUTOFS_DEPENDENCIES = host-flex host-bison host-pkgconf host-nfs-utils + +# autofs looks on the build machine for the path of modprobe, so tell +# it explicitly where it will be located on the target. +AUTOFS_CONF_ENV = \ + ac_cv_path_KRB5_CONFIG=no \ + ac_cv_path_MODPROBE=/sbin/modprobe \ + ac_cv_linux_procfs=yes + +# instead of looking in the PATH like any reasonable package, autofs +# configure looks only in an hardcoded search path for host tools, +# which we have to override with --with-path. +AUTOFS_CONF_OPTS = \ + --disable-mount-locking \ + --enable-ignore-busy \ + --without-openldap \ + --without-sasl \ + --with-path="$(BR_PATH)" \ + --with-hesiod=no + +AUTOFS_MAKE_ENV = DONTSTRIP=1 + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +AUTOFS_CONF_OPTS += --with-libtirpc +AUTOFS_DEPENDENCIES += libtirpc +else +AUTOFS_CONF_OPTS += --without-libtirpc +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/automake/0001-noman.patch b/features/buildroot/package/automake/0001-noman.patch new file mode 100644 index 00000000..a4ad16dd --- /dev/null +++ b/features/buildroot/package/automake/0001-noman.patch @@ -0,0 +1,27 @@ +Disable manpages build and installation, seems the bundled version of +help2man is somewhat old and breaks on modern distributions such as +Fedora 20, as reported by Kanibal on IRC. + +Signed-off-by: Gustavo Zacarias + +diff -Nura automake-1.14.1.orig/Makefile.in automake-1.14.1/Makefile.in +--- automake-1.14.1.orig/Makefile.in 2014-09-10 18:40:57.554164448 -0300 ++++ automake-1.14.1/Makefile.in 2014-09-10 18:42:01.050348068 -0300 +@@ -3387,7 +3387,7 @@ + check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local + check: check-am +-all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS) $(DATA) ++all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(DATA) + installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(amdir)" "$(DESTDIR)$(automake_acdir)" "$(DESTDIR)$(automake_internal_acdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(pkgvdatadir)" "$(DESTDIR)$(scriptdir)" "$(DESTDIR)$(system_acdir)" "$(DESTDIR)$(perllibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ +@@ -3454,7 +3454,7 @@ + install-dist_automake_internal_acDATA install-dist_docDATA \ + install-dist_perllibDATA install-dist_pkgvdataDATA \ + install-dist_scriptDATA install-dist_system_acDATA \ +- install-info-am install-man install-nodist_perllibDATA ++ install-info-am install-nodist_perllibDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook + install-dvi: install-dvi-am diff --git a/features/buildroot/package/automake/automake.hash b/features/buildroot/package/automake/automake.hash new file mode 100644 index 00000000..b194c3c2 --- /dev/null +++ b/features/buildroot/package/automake/automake.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 af6ba39142220687c500f79b4aa2f181d9b24e4f8d8ec497cea4ba26c64bedaf automake-1.15.1.tar.xz +# License files, locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/features/buildroot/package/automake/automake.mk b/features/buildroot/package/automake/automake.mk new file mode 100644 index 00000000..27033771 --- /dev/null +++ b/features/buildroot/package/automake/automake.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# automake +# +################################################################################ + +AUTOMAKE_VERSION = 1.15.1 +AUTOMAKE_SOURCE = automake-$(AUTOMAKE_VERSION).tar.xz +AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake +AUTOMAKE_LICENSE = GPL-2.0+ +AUTOMAKE_LICENSE_FILES = COPYING + +HOST_AUTOMAKE_DEPENDENCIES = host-autoconf + +ACLOCAL_HOST_DIR = $(HOST_DIR)/share/aclocal + +define GTK_DOC_M4_INSTALL + $(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 \ + $(ACLOCAL_HOST_DIR)/gtk-doc.m4 +endef + +# ensure staging aclocal dir exists +define HOST_AUTOMAKE_MAKE_ACLOCAL + mkdir -p $(ACLOCAL_DIR) +endef + +HOST_AUTOMAKE_POST_INSTALL_HOOKS += GTK_DOC_M4_INSTALL +HOST_AUTOMAKE_POST_INSTALL_HOOKS += HOST_AUTOMAKE_MAKE_ACLOCAL + +$(eval $(host-autotools-package)) + +# variables used by other packages +AUTOMAKE = $(HOST_DIR)/bin/automake +ACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal +ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR) diff --git a/features/buildroot/package/automake/gtk-doc.m4 b/features/buildroot/package/automake/gtk-doc.m4 new file mode 100644 index 00000000..36755432 --- /dev/null +++ b/features/buildroot/package/automake/gtk-doc.m4 @@ -0,0 +1,88 @@ +dnl -*- mode: autoconf -*- + +# serial 2 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + + ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) + AC_MSG_CHECKING([for gtk-doc]) + PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) + AC_MSG_RESULT($have_gtk_doc) + + if test "$have_gtk_doc" = "no"; then + AC_MSG_WARN([ + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found.]) + fi + + dnl check for tools we added during development + dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that + dnl may not be writable by the user. Currently, automake requires that the + dnl test name must end in '.test'. + dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 + AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) + AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) + AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) + AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) + + dnl for overriding the documentation installation directory + AC_ARG_WITH([html-dir], + AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST([HTML_DIR]) + + dnl enable/disable documentation building + AC_ARG_ENABLE([gtk-doc], + AS_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [[default=no]]]),, + [enable_gtk_doc=no]) + + AC_MSG_CHECKING([whether to build gtk-doc documentation]) + AC_MSG_RESULT($enable_gtk_doc) + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + AC_MSG_ERROR([ + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '[$]0'.]) + fi + + dnl don't check for glib if we build glib + if test "x$PACKAGE_NAME" != "xglib"; then + dnl don't fail if someone does not have glib + PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) + fi + + dnl enable/disable output formats + AC_ARG_ENABLE([gtk-doc-html], + AS_HELP_STRING([--enable-gtk-doc-html], + [build documentation in html format [[default=yes]]]),, + [enable_gtk_doc_html=yes]) + AC_ARG_ENABLE([gtk-doc-pdf], + AS_HELP_STRING([--enable-gtk-doc-pdf], + [build documentation in pdf format [[default=no]]]),, + [enable_gtk_doc_pdf=no]) + + if test -z "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + if test -z "$AM_DEFAULT_VERBOSITY"; then + AM_DEFAULT_VERBOSITY=1 + fi + AC_SUBST([AM_DEFAULT_VERBOSITY]) + + AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) + AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) + AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) + AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) +]) diff --git a/features/buildroot/package/autossh/Config.in b/features/buildroot/package/autossh/Config.in new file mode 100644 index 00000000..351e23ff --- /dev/null +++ b/features/buildroot/package/autossh/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_AUTOSSH + bool "autossh" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_DROPBEAR || BR2_PACKAGE_OPENSSH + help + autossh is a program to start a copy of ssh and monitor it, + restarting it as necessary should it die or stop passing + traffic. + + http://www.harding.motd.ca/autossh/ diff --git a/features/buildroot/package/autossh/autossh.hash b/features/buildroot/package/autossh/autossh.hash new file mode 100644 index 00000000..226003f8 --- /dev/null +++ b/features/buildroot/package/autossh/autossh.hash @@ -0,0 +1,6 @@ +# From http://www.harding.motd.ca/autossh/autossh-1.4g.cksums +sha256 5fc3cee3361ca1615af862364c480593171d0c54ec156de79fc421e31ae21277 autossh-1.4g.tgz +sha1 bd88da0e296b8d85722ee9e7c314e9319e5b2db8 autossh-1.4g.tgz +md5 2b804bc1bf6d2f2afaa526d02df7c0a2 autossh-1.4g.tgz +# Locally computed +sha256 014ec5a85a8899d4ea0e0a886bb3fc4c72b4bbec6414093ba1fdac5b178c25b4 autossh.c diff --git a/features/buildroot/package/autossh/autossh.mk b/features/buildroot/package/autossh/autossh.mk new file mode 100644 index 00000000..899e5cdb --- /dev/null +++ b/features/buildroot/package/autossh/autossh.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# autossh +# +################################################################################ + +AUTOSSH_VERSION = 1.4g +AUTOSSH_SITE = http://www.harding.motd.ca/autossh +AUTOSSH_SOURCE = autossh-$(AUTOSSH_VERSION).tgz +AUTOSSH_LICENSE = Modified BSD +AUTOSSH_LICENSE_FILES = autossh.c +# Fix AC_ARG_WITH code generation for --with-ssh +AUTOSSH_AUTORECONF = YES + +AUTOSSH_CONF_OPTS = --with-ssh=/usr/bin/ssh + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/avahi/0001-Drop-legacy-unicast-queries-from-address-not-on-loca.patch b/features/buildroot/package/avahi/0001-Drop-legacy-unicast-queries-from-address-not-on-loca.patch new file mode 100644 index 00000000..0e8408c8 --- /dev/null +++ b/features/buildroot/package/avahi/0001-Drop-legacy-unicast-queries-from-address-not-on-loca.patch @@ -0,0 +1,48 @@ +From e111def44a7df4624a4aa3f85fe98054bffb6b4f Mon Sep 17 00:00:00 2001 +From: Trent Lloyd +Date: Sat, 22 Dec 2018 09:06:07 +0800 +Subject: [PATCH] Drop legacy unicast queries from address not on local link + +When handling legacy unicast queries, ensure that the source IP is +inside a subnet on the local link, otherwise drop the packet. + +Fixes #145 +Fixes #203 +CVE-2017-6519 +CVE-2018-100084 + +Backported from: e111def44a7df4624a4aa3f85fe98054bffb6b4f +Signed-off-by: Artem Panfilov +--- + avahi-core/server.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/avahi-core/server.c b/avahi-core/server.c +index a2cb19a8..a2580e38 100644 +--- a/avahi-core/server.c ++++ b/avahi-core/server.c +@@ -930,6 +930,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres + + if (avahi_dns_packet_is_query(p)) { + int legacy_unicast = 0; ++ char t[AVAHI_ADDRESS_STR_MAX]; + + /* For queries EDNS0 might allow ARCOUNT != 0. We ignore the + * AR section completely here, so far. Until the day we add +@@ -947,6 +948,13 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres + legacy_unicast = 1; + } + ++ if (!is_mdns_mcast_address(dst_address) && ++ !avahi_interface_address_on_link(i, src_address)) { ++ ++ avahi_log_debug("Received non-local unicast query from host %s on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), i->hardware->name, i->protocol); ++ return; ++ } ++ + if (legacy_unicast) + reflect_legacy_unicast_query_packet(s, p, i, src_address, port); + +-- +2.19.1 + diff --git a/features/buildroot/package/avahi/Config.in b/features/buildroot/package/avahi/Config.in new file mode 100644 index 00000000..5e303d04 --- /dev/null +++ b/features/buildroot/package/avahi/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_AVAHI + bool "avahi" + # libdaemon uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Avahi is a system which facilitates service + discovery on a local network. + + http://www.avahi.org/ + +if BR2_PACKAGE_AVAHI + +config BR2_PACKAGE_AVAHI_AUTOIPD + bool "IPv4LL network address configuration daemon" + default y + select BR2_PACKAGE_LIBDAEMON + help + Avahi-autoipd implements IPv4LL, "Dynamic Configuration of + IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for + automatic IP address configuration from the link-local + 169.254.0.0/16 range without the need for a central server. + It is primarily intended to be used in ad-hoc networks which + lack a DHCP server. + +config BR2_PACKAGE_AVAHI_DAEMON + bool "mDNS/DNS-SD daemon" + select BR2_PACKAGE_LIBDAEMON + select BR2_PACKAGE_EXPAT + help + The Avahi mDNS/DNS-SD daemon implementing Apple's ZeroConf + architecture (also known as "Rendezvous" or "Bonjour"). + The daemon registers local IP addresses and services using + mDNS/DNS-SD. + +config BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY + bool "libdns_sd compatibility (Bonjour)" + depends on BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_DBUS + help + Enable the libdns_sd (Bonjour) compatibility library support + for legacy applications. + +endif + +comment "avahi needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/avahi/S05avahi-setup.sh b/features/buildroot/package/avahi/S05avahi-setup.sh new file mode 100644 index 00000000..90ccbcea --- /dev/null +++ b/features/buildroot/package/avahi/S05avahi-setup.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +case "$1" in + start|"") + if [ ! -d /tmp/avahi-autoipd ]; then + rm -rf /tmp/avahi-autoipd + mkdir /tmp/avahi-autoipd + chown avahi.avahi /tmp/avahi-autoipd + fi + ;; + stop) ;; + *) + echo "Usage: S05avahi-setup.sh {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/features/buildroot/package/avahi/S50avahi-daemon b/features/buildroot/package/avahi/S50avahi-daemon new file mode 100644 index 00000000..81ac5131 --- /dev/null +++ b/features/buildroot/package/avahi/S50avahi-daemon @@ -0,0 +1,20 @@ +#!/bin/sh +# +# avahi-daemon init script + +DAEMON=/usr/sbin/avahi-daemon +case "$1" in + start) + $DAEMON -c || $DAEMON -D + ;; + stop) + $DAEMON -c && $DAEMON -k + ;; + reload) + $DAEMON -c && $DAEMON -r + ;; + *) + echo "Usage: S50avahi-daemon {start|stop|reload}" >&2 + exit 1 + ;; +esac diff --git a/features/buildroot/package/avahi/avahi.hash b/features/buildroot/package/avahi/avahi.hash new file mode 100644 index 00000000..b4d36ffe --- /dev/null +++ b/features/buildroot/package/avahi/avahi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 57a99b5dfe7fdae794e3d1ee7a62973a368e91e414bd0dfa5d84434de5b14804 avahi-0.7.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/features/buildroot/package/avahi/avahi.mk b/features/buildroot/package/avahi/avahi.mk new file mode 100644 index 00000000..baffe3cb --- /dev/null +++ b/features/buildroot/package/avahi/avahi.mk @@ -0,0 +1,236 @@ +################################################################################ +# +# avahi +# +################################################################################ + +AVAHI_VERSION = 0.7 +AVAHI_SITE = https://github.com/lathiat/avahi/releases/download/v$(AVAHI_VERSION) +AVAHI_LICENSE = LGPL-2.1+ +AVAHI_LICENSE_FILES = LICENSE +AVAHI_INSTALL_STAGING = YES + +AVAHI_CONF_ENV = \ + ac_cv_func_strtod=yes \ + ac_fsusage_space=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + ac_cv_func_closedir_void=no \ + ac_cv_func_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_chown_works=yes \ + ac_cv_have_decl_euidaccess=no \ + ac_cv_func_euidaccess=no \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_func_strnlen_working=yes \ + ac_cv_func_lstat_dereferences_slashed_symlink=yes \ + ac_cv_func_lstat_empty_string_bug=no \ + ac_cv_func_stat_empty_string_bug=no \ + vb_cv_func_rename_trailing_slash_bug=no \ + ac_cv_have_decl_nanosleep=yes \ + jm_cv_func_nanosleep_works=yes \ + gl_cv_func_working_utimes=yes \ + ac_cv_func_utime_null=yes \ + ac_cv_have_decl_strerror_r=yes \ + ac_cv_func_strerror_r_char_p=no \ + jm_cv_func_svid_putenv=yes \ + ac_cv_func_getcwd_null=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_mkstemp=yes \ + utils_cv_func_mkstemp_limitations=no \ + utils_cv_func_mkdir_trailing_slash_bug=no \ + jm_cv_func_gettimeofday_clobber=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_working_readdir=yes \ + jm_ac_cv_func_link_follows_symlink=no \ + utils_cv_localtime_cache=no \ + ac_cv_struct_st_mtim_nsec=no \ + gl_cv_func_tzset_clobber=no \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + ac_cv_func_fnmatch_gnu=yes \ + am_getline_needs_run_time_check=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_mkdir_trailing_slash_bug=no \ + gl_cv_func_mkstemp_limitations=no \ + ac_cv_func_working_mktime=yes \ + jm_cv_func_working_re_compile_pattern=yes \ + ac_use_included_regex=no \ + avahi_cv_sys_cxx_works=yes \ + DATADIRNAME=share + +# Note: even if we have Gtk2 and Gtk3 support in Buildroot, we +# explicitly disable support for them, in order to avoid the following +# circular dependencies: +# +# avahi -> libglade -> libgtk2 -> cups -> avahi +# avahi -> libgtk3 -> cups -> avahi +# +# Since Gtk2 and Gtk3 in Avahi are only used for some example/demo +# programs, we decided to disable their support to solve the circular +# dependency. +AVAHI_CONF_OPTS = \ + --disable-qt3 \ + --disable-qt4 \ + --disable-gtk \ + --disable-gtk3 \ + --disable-gdbm \ + --disable-pygobject \ + --disable-mono \ + --disable-monodoc \ + --disable-stack-protector \ + --with-distro=none \ + --disable-manpages \ + $(if $(BR2_PACKAGE_AVAHI_AUTOIPD),--enable,--disable)-autoipd \ + --with-avahi-user=avahi \ + --with-avahi-group=avahi \ + --with-autoipd-user=avahi \ + --with-autoipd-group=avahi + +AVAHI_DEPENDENCIES = \ + host-intltool host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) + +AVAHI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +AVAHI_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +else +AVAHI_CONF_OPTS += --with-systemdsystemunitdir=no +AVAHI_CFLAGS += -DDISABLE_SYSTEMD +endif + +ifneq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_AVAHI_AUTOIPD),) +AVAHI_DEPENDENCIES += libdaemon +else +AVAHI_CONF_OPTS += --disable-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +AVAHI_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) +AVAHI_DEPENDENCIES += expat +AVAHI_CONF_OPTS += --with-xml=expat +else +AVAHI_CONF_OPTS += --with-xml=none +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +AVAHI_CONF_OPTS += --enable-compat-libdns_sd +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +AVAHI_DEPENDENCIES += dbus +AVAHI_CONF_OPTS += --with-dbus-sys=/usr/share/dbus-1/system.d +else +AVAHI_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +AVAHI_DEPENDENCIES += libglib2 +else +AVAHI_CONF_OPTS += --disable-glib --disable-gobject +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +AVAHI_CONF_ENV += \ + am_cv_pathless_PYTHON=python \ + am_cv_path_PYTHON=$(PYTHON_TARGET_BINARY) \ + am_cv_python_version=$(PYTHON_VERSION) \ + am_cv_python_platform=linux2 \ + am_cv_python_pythondir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + am_cv_python_pyexecdir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + py_cv_mod_socket_=yes + +AVAHI_DEPENDENCIES += python +AVAHI_CONF_OPTS += --enable-python +else +AVAHI_CONF_OPTS += --disable-python +endif + +ifeq ($(BR2_PACKAGE_DBUS_PYTHON),y) +AVAHI_CONF_OPTS += --enable-python-dbus +AVAHI_CONF_ENV += py_cv_mod_dbus_=yes +AVAHI_DEPENDENCIES += dbus-python +else +AVAHI_CONF_OPTS += --disable-python-dbus +endif + +AVAHI_CONF_ENV += CFLAGS="$(AVAHI_CFLAGS)" + +AVAHI_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS) + +define AVAHI_USERS + avahi -1 avahi -1 * - - - +endef + +define AVAHI_REMOVE_INITSCRIPT + rm -rf $(TARGET_DIR)/etc/init.d/avahi-* +endef + +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_REMOVE_INITSCRIPT + +ifeq ($(BR2_PACKAGE_AVAHI_AUTOIPD),y) +define AVAHI_INSTALL_AUTOIPD + rm -f $(TARGET_DIR)/var/lib/avahi-autoipd + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/lib + ln -sf /tmp/avahi-autoipd $(TARGET_DIR)/var/lib/avahi-autoipd +endef + +define AVAHI_INSTALL_AUTOIPD_INIT_SYSV + $(INSTALL) -D -m 0755 package/avahi/S05avahi-setup.sh $(TARGET_DIR)/etc/init.d/S05avahi-setup.sh +endef + +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_INSTALL_AUTOIPD +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +define AVAHI_INSTALL_SYSTEMD_SYSUSERS + $(INSTALL) -D -m 644 package/avahi/avahi_sysusers.conf \ + $(TARGET_DIR)/usr/lib/sysusers.d/avahi.conf +endef +endif + +define AVAHI_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/avahi-daemon.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/avahi-daemon.service + + ln -fs ../../../../usr/lib/systemd/system/avahi-dnsconfd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/avahi-dnsconfd.service + + $(INSTALL) -D -m 644 package/avahi/avahi_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/avahi.conf + + $(AVAHI_INSTALL_SYSTEMD_SYSUSERS) +endef + +define AVAHI_INSTALL_DAEMON_INIT_SYSV + $(INSTALL) -D -m 0755 package/avahi/S50avahi-daemon $(TARGET_DIR)/etc/init.d/S50avahi-daemon +endef + +endif + +define AVAHI_INSTALL_INIT_SYSV + $(AVAHI_INSTALL_AUTOIPD_INIT_SYSV) + $(AVAHI_INSTALL_DAEMON_INIT_SYSV) +endef + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +# applications expects to be able to #include +define AVAHI_STAGING_INSTALL_LIBDNSSD_LINK + ln -sf avahi-compat-libdns_sd/dns_sd.h \ + $(STAGING_DIR)/usr/include/dns_sd.h +endef + +AVAHI_POST_INSTALL_STAGING_HOOKS += AVAHI_STAGING_INSTALL_LIBDNSSD_LINK +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/avahi/avahi_sysusers.conf b/features/buildroot/package/avahi/avahi_sysusers.conf new file mode 100644 index 00000000..463ce97c --- /dev/null +++ b/features/buildroot/package/avahi/avahi_sysusers.conf @@ -0,0 +1,5 @@ +# sysusers.d snippet for creating the avahi system user automatically +# at boot on systemd-based systems that ship with an unpopulated +# /etc. See sysusers.d(5) for details. + +u avahi - "Avahi mDNS/DNS-SD Stack" diff --git a/features/buildroot/package/avahi/avahi_tmpfiles.conf b/features/buildroot/package/avahi/avahi_tmpfiles.conf new file mode 100644 index 00000000..da23c147 --- /dev/null +++ b/features/buildroot/package/avahi/avahi_tmpfiles.conf @@ -0,0 +1 @@ +d /tmp/avahi-autoipd 0755 avahi avahi diff --git a/features/buildroot/package/avrdude/Config.in b/features/buildroot/package/avrdude/Config.in new file mode 100644 index 00000000..a5680b00 --- /dev/null +++ b/features/buildroot/package/avrdude/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_AVRDUDE + bool "avrdude" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + select BR2_PACKAGE_NCURSES + help + avrdude is a programmer for Atmel AVR microcontrollers + this package provides a version with new linuxspi driver + + https://github.com/kcuzner/avrdude + +comment "avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) diff --git a/features/buildroot/package/avrdude/avrdude.hash b/features/buildroot/package/avrdude/avrdude.hash new file mode 100644 index 00000000..b203d4d1 --- /dev/null +++ b/features/buildroot/package/avrdude/avrdude.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cfa97af7badc713c62306ab85d0e7a288b064bf72e698494f73cb16c5b2c659e avrdude-f8893ccf0aceeff67c45f95ae4e86bc7fbe342aa.tar.gz diff --git a/features/buildroot/package/avrdude/avrdude.mk b/features/buildroot/package/avrdude/avrdude.mk new file mode 100644 index 00000000..ae378dfb --- /dev/null +++ b/features/buildroot/package/avrdude/avrdude.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# avrdude +# +################################################################################ + +AVRDUDE_VERSION = f8893ccf0aceeff67c45f95ae4e86bc7fbe342aa +AVRDUDE_SITE = $(call github,kcuzner,avrdude,$(AVRDUDE_VERSION)) +AVRDUDE_LICENSE = GPL-2.0+ +AVRDUDE_LICENSE_FILES = avrdude/COPYING +AVRDUDE_SUBDIR = avrdude +# Sources coming from git, without generated configure and Makefile.in +# files. +AVRDUDE_AUTORECONF = YES +AVRDUDE_CONF_OPTS = --enable-linuxgpio +AVRDUDE_DEPENDENCIES = elfutils libusb libusb-compat ncurses \ + host-flex host-bison + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +AVRDUDE_DEPENDENCIES += libftdi1 +else ifeq ($(BR2_PACKAGE_LIBFTDI),y) +AVRDUDE_DEPENDENCIES += libftdi +endif + +# if /etc/avrdude.conf exists, the installation process creates a +# backup file, which we do not want in the context of Buildroot. +define AVRDUDE_REMOVE_BACKUP_FILE + $(RM) -f $(TARGET_DIR)/etc/avrdude.conf.bak +endef + +AVRDUDE_POST_INSTALL_TARGET_HOOKS += AVRDUDE_REMOVE_BACKUP_FILE + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/axel/Config.in b/features/buildroot/package/axel/Config.in new file mode 100644 index 00000000..4507855f --- /dev/null +++ b/features/buildroot/package/axel/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_AXEL + bool "axel" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + HTTP/FTP download accelerator. + + https://github.com/axel-download-accelerator/axel/ + +comment "axel needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/axel/axel.hash b/features/buildroot/package/axel/axel.hash new file mode 100644 index 00000000..2de602ae --- /dev/null +++ b/features/buildroot/package/axel/axel.hash @@ -0,0 +1 @@ +sha256 5c5c682617d498071ff9083029fcecc2c2fdeeedc366c35d2bdf8663355616cc axel-2.17.5.tar.xz diff --git a/features/buildroot/package/axel/axel.mk b/features/buildroot/package/axel/axel.mk new file mode 100644 index 00000000..2ad8ff08 --- /dev/null +++ b/features/buildroot/package/axel/axel.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# axel +# +################################################################################ + +AXEL_VERSION = 2.17.5 +AXEL_SITE = https://github.com/axel-download-accelerator/axel/releases/download/v$(AXEL_VERSION) +AXEL_SOURCE = axel-$(AXEL_VERSION).tar.xz +AXEL_LICENSE = GPL-2.0+ +AXEL_LICENSE_FILES = COPYING +AXEL_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +AXEL_CONF_OPTS = \ + ac_cv_prog_cc_c99=-std=c99 \ + CFLAGS="$(TARGET_CFLAGS)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +AXEL_CONF_OPTS += --with-ssl +AXEL_DEPENDENCIES += openssl +else +AXEL_CONF_OPTS += --without-ssl +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/axfsutils/axfsutils.hash b/features/buildroot/package/axfsutils/axfsutils.hash new file mode 100644 index 00000000..3ef5c587 --- /dev/null +++ b/features/buildroot/package/axfsutils/axfsutils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7d8c0febaf6f104c2b179475ea1ee6d361688ad7fa4c98dfdf7395fcff2be685 axfsutils-384a1ea214c8cf8359faba00a12513ee7ae1a9f5.tar.gz diff --git a/features/buildroot/package/axfsutils/axfsutils.mk b/features/buildroot/package/axfsutils/axfsutils.mk new file mode 100644 index 00000000..88792216 --- /dev/null +++ b/features/buildroot/package/axfsutils/axfsutils.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# axfsutils +# +################################################################################ + +AXFSUTILS_VERSION = 384a1ea214c8cf8359faba00a12513ee7ae1a9f5 +AXFSUTILS_SITE = $(call github,jaredeh,axfs,$(AXFSUTILS_VERSION)) +AXFSUTILS_LICENSE = GPL-2.0 +AXFSUTILS_LICENSE_FILES = mkfs.axfs-legacy/COPYING +HOST_AXFSUTILS_DEPENDENCIES = host-zlib + +# The 'new' mkfs.axfs version requires GNUstep which is not a buildroot +# prerequisite. The 'legacy' one works just as well without that requirement. +define HOST_AXFSUTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/mkfs.axfs-legacy +endef + +define HOST_AXFSUTILS_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/mkfs.axfs-legacy/mkfs.axfs \ + $(HOST_DIR)/bin/mkfs.axfs +endef + +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch b/features/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch new file mode 100644 index 00000000..98975d27 --- /dev/null +++ b/features/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch @@ -0,0 +1,43 @@ +From d960f93fb52e373f76cfedbee5f4fb0c5276856a Mon Sep 17 00:00:00 2001 +From: RJ Ascani +Date: Thu, 20 Jul 2017 15:53:40 -0700 +Subject: [PATCH] Conditionally disable test and doc builds + +Signed-off-by: RJ Ascani +--- + CMakeLists.txt | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5b5b9cc..97006a4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,7 +49,9 @@ include_directories(${Boost_INCLUDE_DIRS} + ${ZeroMQ_INCLUDE_DIRS} + ${PROJECT_SOURCE_DIR}) + +-enable_testing() ++if (BUILD_TESTING) ++ enable_testing() ++endif() + + macro(add_catch_test name) + if (TEST_REPORT_FORMAT) +@@ -59,8 +61,12 @@ macro(add_catch_test name) + endif() + endmacro() + +-add_subdirectory(test) +-add_subdirectory(doc) ++if (BUILD_TESTING) ++ add_subdirectory(test) ++endif() ++if (BUILD_DOC) ++ add_subdirectory(doc) ++endif() + + install(DIRECTORY ${PROJECT_SOURCE_DIR}/azmq + DESTINATION include) +-- +2.13.3 + diff --git a/features/buildroot/package/azmq/Config.in b/features/buildroot/package/azmq/Config.in new file mode 100644 index 00000000..eeafa2ad --- /dev/null +++ b/features/buildroot/package/azmq/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_AZMQ + bool "azmq" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # boost-log + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_WCHAR # boost + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_ZEROMQ + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_LOG + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + This library provides Boost Asio style bindings for ZeroMQ. + + https://github.com/zeromq/azmq + +comment "azmq needs a toolchain w/ C++11, wchar and NTPL" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS_NPTL) + +comment "azmq needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/features/buildroot/package/azmq/azmq.hash b/features/buildroot/package/azmq/azmq.hash new file mode 100644 index 00000000..f5d24e79 --- /dev/null +++ b/features/buildroot/package/azmq/azmq.hash @@ -0,0 +1,4 @@ +# Locally calculated +# https://github.com/zeromq/azmq/archive/v1.0.2.tar.gz +sha256 25fa8b07756cffae95e25a55c7ea42efe02e8cd797552201aa771dd69cfc8fbf azmq-1.0.2.tar.gz +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE-BOOST_1_0 diff --git a/features/buildroot/package/azmq/azmq.mk b/features/buildroot/package/azmq/azmq.mk new file mode 100644 index 00000000..918c6e1a --- /dev/null +++ b/features/buildroot/package/azmq/azmq.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# azmq +# +################################################################################ + +AZMQ_VERSION = 1.0.2 +AZMQ_SITE = $(call github,zeromq,azmq,v$(AZMQ_VERSION)) +AZMQ_DEPENDENCIES = boost zeromq +AZMQ_LICENSE = BSL-1.0 +AZMQ_LICENSE_FILES = LICENSE-BOOST_1_0 + +# AZMQ is a header only library, so it does not need to be installed on the +# target. +AZMQ_INSTALL_STAGING = YES +AZMQ_INSTALL_TARGET = NO + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/azure-iot-sdk-c/Config.in b/features/buildroot/package/azure-iot-sdk-c/Config.in new file mode 100644 index 00000000..c554d2fb --- /dev/null +++ b/features/buildroot/package/azure-iot-sdk-c/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_AZURE_IOT_SDK_C + bool "azure-iot-sdk-c" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Microsoft Azure IoT Hub device SDK for C is used + to connect devices running C code to Azure IoT Hub. + + https://github.com/Azure/azure-iot-sdk-c + +comment "azure-iot-sdk-c needs a toolchain w/ C++ and NPTL" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/features/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk b/features/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk new file mode 100644 index 00000000..8b3f6703 --- /dev/null +++ b/features/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# azure-iot-sdk-c +# +################################################################################ + +AZURE_IOT_SDK_C_VERSION = 2018-12-13 +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 +AZURE_IOT_SDK_C_LICENSE = MIT +AZURE_IOT_SDK_C_LICENSE_FILES = LICENSE +AZURE_IOT_SDK_C_INSTALL_STAGING = YES +AZURE_IOT_SDK_C_DEPENDENCIES = libxml2 openssl libcurl util-linux +AZURE_IOT_SDK_C_CONF_OPTS = -Dskip_samples=ON + +# The project only supports building one kind of library. +# Further the install target installs the wrong files, so we do it here: +ifeq ($(BR2_STATIC_LIBS),y) +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.a c-utility/libaziotsharedutil.a \ + iothub_client/libiothub_client.a iothub_client/libiothub_client_mqtt_ws_transport.a \ + iothub_client/libiothub_client_amqp_ws_transport.a \ + iothub_client/libiothub_client_http_transport.a \ + iothub_client/libiothub_client_amqp_transport.a \ + iothub_client/libiothub_client_mqtt_transport.a \ + iothub_service_client/libiothub_service_client.a serializer/libserializer.a umqtt/libumqtt.a +else +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.so c-utility/libaziotsharedutil.so \ + iothub_client/libiothub_client.so iothub_client/libiothub_client_mqtt_ws_transport.so \ + iothub_client/libiothub_client_amqp_ws_transport.so \ + iothub_client/libiothub_client_http_transport.so \ + iothub_client/libiothub_client_amqp_transport.so \ + iothub_client/libiothub_client_mqtt_transport.so \ + iothub_service_client/libiothub_service_client.so serializer/libserializer.so umqtt/libumqtt.so +endif + +define AZURE_IOT_SDK_C_INSTALL_STAGING_CMDS + $(foreach l,$(AZURE_IOT_SDK_C_LIBS), \ + $(INSTALL) -D -m 0755 $(@D)/$(l) $(STAGING_DIR)/usr/lib/ + ) + cp -a $(@D)/c-utility/inc/* $(STAGING_DIR)/usr/include/ + cp -a $(@D)/iothub_client/inc/* $(STAGING_DIR)/usr/include/ +endef + +define AZURE_IOT_SDK_C_INSTALL_TARGET_CMDS + $(foreach l,$(AZURE_IOT_SDK_C_LIBS), \ + $(INSTALL) -D -m 0755 $(@D)/$(l) $(TARGET_DIR)/usr/lib/ + ) +endef + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/b43-firmware/Config.in b/features/buildroot/package/b43-firmware/Config.in new file mode 100644 index 00000000..7cef0239 --- /dev/null +++ b/features/buildroot/package/b43-firmware/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_B43_FIRMWARE + bool "b43-firmware" + help + Firmware for the Broadcom Wifi devices supported by the b43 + kernel driver. + +if BR2_PACKAGE_B43_FIRMWARE + +choice + prompt "Kernel version" + default BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2 + help + Select the kernel version you're using. The b43 driver in + kernel >= 3.2 need a different firmware than the b43 drivers + from kernel < 3.2. + +config BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2 + bool ">= 3.2" + +config BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2 + bool "< 3.2" + +endchoice + +endif diff --git a/features/buildroot/package/b43-firmware/b43-firmware.hash b/features/buildroot/package/b43-firmware/b43-firmware.hash new file mode 100644 index 00000000..efc1a6cf --- /dev/null +++ b/features/buildroot/package/b43-firmware/b43-firmware.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f broadcom-wl-5.100.138.tar.bz2 +sha256 26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 broadcom-wl-5.10.56.27.3_mipsel.tar.bz2 diff --git a/features/buildroot/package/b43-firmware/b43-firmware.mk b/features/buildroot/package/b43-firmware/b43-firmware.mk new file mode 100644 index 00000000..8e9e8776 --- /dev/null +++ b/features/buildroot/package/b43-firmware/b43-firmware.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# b43-firmware +# +################################################################################ + +ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2),y) +B43_FIRMWARE_VERSION = 5.100.138 +B43_FIRMWARE_SITE = http://www.lwfinger.com/b43-firmware +B43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION).tar.bz2 +B43_FIRMWARE_DRIVER_FILE = linux/wl_apsta.o +else ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2),y) +B43_FIRMWARE_VERSION = 5.10.56.27.3 +B43_FIRMWARE_SITE = http://mirror2.openwrt.org/sources +B43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION)_mipsel.tar.bz2 +B43_FIRMWARE_DRIVER_FILE = driver/wl_apsta/wl_prebuilt.o +endif + +B43_FIRMWARE_LICENSE = PROPRIETARY +B43_FIRMWARE_REDISTRIBUTE = NO + +B43_FIRMWARE_DEPENDENCIES = host-b43-fwcutter + +define B43_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/ + $(HOST_DIR)/bin/b43-fwcutter -w $(TARGET_DIR)/lib/firmware/ $(@D)/$(B43_FIRMWARE_DRIVER_FILE) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/b43-fwcutter/b43-fwcutter.hash b/features/buildroot/package/b43-fwcutter/b43-fwcutter.hash new file mode 100644 index 00000000..3181c769 --- /dev/null +++ b/features/buildroot/package/b43-fwcutter/b43-fwcutter.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 4c6a53d1f5d76b8aa224d294bee47726b1477f35327f4e23e8cb799865e0f6eb b43-fwcutter-015.tar.bz2 diff --git a/features/buildroot/package/b43-fwcutter/b43-fwcutter.mk b/features/buildroot/package/b43-fwcutter/b43-fwcutter.mk new file mode 100644 index 00000000..91ba3dc7 --- /dev/null +++ b/features/buildroot/package/b43-fwcutter/b43-fwcutter.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# b43-fwcutter +# +################################################################################ + +B43_FWCUTTER_VERSION = 015 +B43_FWCUTTER_SITE = http://bues.ch/b43/fwcutter +B43_FWCUTTER_SOURCE = b43-fwcutter-$(B43_FWCUTTER_VERSION).tar.bz2 +B43_FWCUTTER_LICENSE = BSD-2-Clause +B43_FWCUTTER_LICENSE_FILES = COPYING + +define HOST_B43_FWCUTTER_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_B43_FWCUTTER_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/b43-fwcutter $(HOST_DIR)/bin/b43-fwcutter +endef + +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/babeld/Config.in b/features/buildroot/package/babeld/Config.in new file mode 100644 index 00000000..c7010e1f --- /dev/null +++ b/features/buildroot/package/babeld/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BABELD + bool "babeld" + depends on BR2_USE_MMU # fork() + help + Babel is a loop-avoiding distance-vector routing protocol for + IPv6 and IPv4 with fast convergence properties. + + http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ diff --git a/features/buildroot/package/babeld/S50babeld b/features/buildroot/package/babeld/S50babeld new file mode 100644 index 00000000..c75b4c37 --- /dev/null +++ b/features/buildroot/package/babeld/S50babeld @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts babeld. +# + +# Allow a few customizations from a config file +test -r /etc/default/babeld && . /etc/default/babeld + +start() { + printf "Starting babeld: " + start-stop-daemon -S -q -p /run/babeld.pid \ + --exec /usr/sbin/babeld -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping babeld: " + start-stop-daemon -K -q -p /run/babeld.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/babeld/babeld.hash b/features/buildroot/package/babeld/babeld.hash new file mode 100644 index 00000000..510fe2bc --- /dev/null +++ b/features/buildroot/package/babeld/babeld.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 98070dc418c190f047b8d69eb47987df30ded8f0fca353c49427d3137ad08b87 babeld-1.8.4.tar.gz +sha256 b415c41292cedef6c97b243609e50552887c29343566c639f23282d31efd2afd LICENCE diff --git a/features/buildroot/package/babeld/babeld.mk b/features/buildroot/package/babeld/babeld.mk new file mode 100644 index 00000000..5fbfa654 --- /dev/null +++ b/features/buildroot/package/babeld/babeld.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# babeld +# +################################################################################ + +BABELD_VERSION = 1.8.4 +BABELD_SITE = http://www.pps.univ-paris-diderot.fr/~jch/software/files +BABELD_LICENSE = MIT +BABELD_LICENSE_FILES = LICENCE + +define BABELD_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define BABELD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/babeld $(TARGET_DIR)/usr/sbin/babeld +endef + +define BABELD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/babeld/S50babeld \ + $(TARGET_DIR)/etc/init.d/S50babeld +endef + +define BABELD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/babeld/babeld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/babeld.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/babeld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/babeld.service +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/babeld/babeld.service b/features/buildroot/package/babeld/babeld.service new file mode 100644 index 00000000..abe72a8c --- /dev/null +++ b/features/buildroot/package/babeld/babeld.service @@ -0,0 +1,10 @@ +[Unit] +Description=Babel daemon + +[Service] +EnvironmentFile=-/etc/default/babeld +ExecStart=/usr/sbin/babeld $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/bandwidthd/Config.in b/features/buildroot/package/bandwidthd/Config.in new file mode 100644 index 00000000..5a3529e0 --- /dev/null +++ b/features/buildroot/package/bandwidthd/Config.in @@ -0,0 +1,56 @@ +config BR2_PACKAGE_BANDWIDTHD + bool "bandwidthd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_GD + help + BandwidthD - Bandwidth monitoring + + Provides a method to measure the bandwidth that travels + through the machine, grouped by subnet and IP. This + information can be stored locally in /var/lib/bandwidthd and + can be configured to generate static HTML pages which can be + hosted by a web server. + + It is highly recommended that the target has some way of + retaining the time between reboots. (e.g. NTP on boot or an + RTC) + + It is suggested to use sqlite for logfile storage but works + fine without, and can be completely ignored if the + postgresql portion is used. + + As upstream is no longer actively maintained, a fork is + available on github that works on making BandwidthD's build + process more compatible with buildroot's. + + Upstream: + http://bandwidthd.sourceforge.net/ + Github fork: + http://github.com/nroach44/bandwidthd + +if BR2_PACKAGE_BANDWIDTHD + +config BR2_PACKAGE_BANDWIDTHD_POSTGRESQL + bool "enable postgresql log target support" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Enable support for logging the bandwidthd data to a remote + (or local) postgresql server. This data can then be viewed + through a php site. See README in the source code + (github.com/nroach44/bandwidthd) for more information. + +comment "postgresql support needs a toolchain w/ dynamic library, wchar" + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +config BR2_PACKAGE_BANDWIDTHD_SQLITE3 + bool "enable sqlite3 log storage" + select BR2_PACKAGE_SQLITE + help + Enable support for storing the aggregated data in an sqlite + db instead of a plain text file. + +endif diff --git a/features/buildroot/package/bandwidthd/bandwidthd.hash b/features/buildroot/package/bandwidthd/bandwidthd.hash new file mode 100644 index 00000000..c73584de --- /dev/null +++ b/features/buildroot/package/bandwidthd/bandwidthd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0270d0def6cc53c8d47d59a9dd093d51fbca1620adeef85c15e35a32010e26ab bandwidthd-2.0.1-auto-r11.tar.gz diff --git a/features/buildroot/package/bandwidthd/bandwidthd.mk b/features/buildroot/package/bandwidthd/bandwidthd.mk new file mode 100644 index 00000000..e9bc871a --- /dev/null +++ b/features/buildroot/package/bandwidthd/bandwidthd.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# bandwidthd +# +################################################################################ + +BANDWIDTHD_VERSION = 2.0.1-auto-r11 +BANDWIDTHD_SITE = $(call github,nroach44,bandwidthd,v$(BANDWIDTHD_VERSION)) + +# Specified as "any version of the GPL that is current as of your +# download" by upstream. +BANDWIDTHD_LICENSE = GPL + +BANDWIDTHD_DEPENDENCIES = gd libpng libpcap host-pkgconf + +BANDWIDTHD_AUTORECONF = YES + +BANDWIDTHD_CONF_OPTS += --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config + +ifeq ($(BR2_PACKAGE_BANDWIDTHD_POSTGRESQL),y) +BANDWIDTHD_DEPENDENCIES += postgresql +BANDWIDTHD_CONF_OPTS += --with-postgresql-logging=true +else +BANDWIDTHD_CONF_OPTS += --with-postgresql-logging=false +endif + +ifeq ($(BR2_PACKAGE_BANDWIDTHD_SQLITE3),y) +BANDWIDTHD_DEPENDENCIES += sqlite +BANDWIDTHD_CONF_OPTS += --with-sqlite-storage=true +else +BANDWIDTHD_CONF_OPTS += --with-sqlite-storage=false +endif + +define BANDWIDTHD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/bandwidthd/bandwidthd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/bandwidthd.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf /usr/lib/systemd/system/bandwidthd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/bandwidthd.service +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bandwidthd/bandwidthd.service b/features/buildroot/package/bandwidthd/bandwidthd.service new file mode 100644 index 00000000..9c03d429 --- /dev/null +++ b/features/buildroot/package/bandwidthd/bandwidthd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Bandwidth usage monitor and reporter +After=network.target + +[Service] +Type=forking +ExecStart=/usr/bin/bandwidthd +PIDFile=/var/run/bandwidthd.pid + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/bash-completion/0001-completions-Makefile.am-Use-install-data-hook-not-in.patch b/features/buildroot/package/bash-completion/0001-completions-Makefile.am-Use-install-data-hook-not-in.patch new file mode 100644 index 00000000..4d01eb6e --- /dev/null +++ b/features/buildroot/package/bash-completion/0001-completions-Makefile.am-Use-install-data-hook-not-in.patch @@ -0,0 +1,35 @@ +From f9a1dfe7a3d0f35474b3f4ded05e3d97be5017bf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ville=20Skytt=C3=A4?= +Date: Fri, 25 May 2018 17:38:59 +0200 +Subject: [PATCH] completions/Makefile.am: Use install-data-hook, not + install-data-local + +-hook is run after the main rule, while -local might end up before. +https://www.gnu.org/software/automake/manual/html_node/Extending.html#index-hook-targets + +Closes #212 + +[backported from ee6b37ad7ff5b309cbb9b886a871252abd9398fa] +Signed-off-by: Romain Naour +--- + completions/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/completions/Makefile.am b/completions/Makefile.am +index e442a9e..5c49796 100644 +--- a/completions/Makefile.am ++++ b/completions/Makefile.am +@@ -993,8 +993,8 @@ symlinks: $(targetdir) $(DATA) + all-local: targetdir = . + all-local: symlinks + +-install-data-local: targetdir = $(DESTDIR)$(bashcompdir) +-install-data-local: symlinks ++install-data-hook: targetdir = $(DESTDIR)$(bashcompdir) ++install-data-hook: symlinks + + check-local: + ret=0 +-- +2.7.4 + diff --git a/features/buildroot/package/bash-completion/Config.in b/features/buildroot/package/bash-completion/Config.in new file mode 100644 index 00000000..c907c04a --- /dev/null +++ b/features/buildroot/package/bash-completion/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BASH_COMPLETION + bool "bash completion" + depends on BR2_PACKAGE_BASH + help + Add bash completion infrastructure. + + The bash completion infrastructure is enabled by + /etc/profile.d/bash_completion.sh, which is normally + sourced by /etc/profile. + + If the system does not use the /etc/profile.d directory + mechanism, the /etc/profile.d/bash_completion.sh script can + be sourced from /etc/bashrc or ~/.bashrc. + + https://github.com/scop/bash-completion diff --git a/features/buildroot/package/bash-completion/bash-completion.hash b/features/buildroot/package/bash-completion/bash-completion.hash new file mode 100644 index 00000000..2c4cf675 --- /dev/null +++ b/features/buildroot/package/bash-completion/bash-completion.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c01f5570f5698a0dda8dc9cfb2a83744daa1ec54758373a6e349bd903375f54d bash-completion-2.8.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/features/buildroot/package/bash-completion/bash-completion.mk b/features/buildroot/package/bash-completion/bash-completion.mk new file mode 100644 index 00000000..c43fb15c --- /dev/null +++ b/features/buildroot/package/bash-completion/bash-completion.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bash-completion +# +################################################################################ + +BASH_COMPLETION_VERSION = 2.8 +BASH_COMPLETION_SITE = https://github.com/scop/bash-completion/releases/download/$(BASH_COMPLETION_VERSION) +BASH_COMPLETION_SOURCE = bash-completion-$(BASH_COMPLETION_VERSION).tar.xz +BASH_COMPLETION_LICENSE = GPL-2.0 +BASH_COMPLETION_LICENSE_FILES = COPYING + +# 0001-completions-Makefile.am-Use-install-data-hook-not-in.patch +BASH_COMPLETION_AUTORECONF = YES + +# Install bash-completion.pc file +BASH_COMPLETION_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bash/0001-bash44-019.patch b/features/buildroot/package/bash/0001-bash44-019.patch new file mode 100644 index 00000000..b3d2f331 --- /dev/null +++ b/features/buildroot/package/bash/0001-bash44-019.patch @@ -0,0 +1,54 @@ +From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-019 + +Signed-off-by: Peter Korsgaard + + BASH PATCH REPORT + ================= + +Bash-Release: 4.4 +Patch-ID: bash44-019 + +Bug-Reported-by: Kieran Grant +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2018-02/msg00002.html + +Bug-Description: + +With certain values for PS1, especially those that wrap onto three or more +lines, readline will miscalculate the number of invisible characters, +leading to crashes and core dumps. + +Patch (apply with `patch -p0'): + +*** bash-4.4.18/lib/readline/display.c 2016-07-28 14:49:33.000000000 -0400 +--- b/lib/readline/display.c 2018-02-03 19:19:35.000000000 -0500 +*************** +*** 772,776 **** + wadjust = (newlines == 0) + ? prompt_invis_chars_first_line +! : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line); + + /* fix from Darin Johnson for prompt string with +--- b/788,794 ---- + wadjust = (newlines == 0) + ? prompt_invis_chars_first_line +! : ((newlines == prompt_lines_estimate) +! ? (wrap_offset - prompt_invis_chars_first_line) +! : 0); + + /* fix from Darin Johnson for prompt string with +*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- b/26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/features/buildroot/package/bash/0002-bash44-020.patch b/features/buildroot/package/bash/0002-bash44-020.patch new file mode 100644 index 00000000..20f3abb5 --- /dev/null +++ b/features/buildroot/package/bash/0002-bash44-020.patch @@ -0,0 +1,181 @@ +From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-020 + +Signed-off-by: Peter Korsgaard + + BASH PATCH REPORT + ================= + +Bash-Release: 4.4 +Patch-ID: bash44-020 + +Bug-Reported-by: Graham Northup +Bug-Reference-ID: <537530c3-61f0-349b-9de6-fa4e2487f428@clarkson.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00025.html + +Bug-Description: + +In circumstances involving long-running scripts that create and reap many +processes, it is possible for the hash table bash uses to store exit +statuses from asynchronous processes to develop loops. This patch fixes +the loop causes and adds code to detect any future loops. + +Patch (apply with `patch -p0'): + +*** bash-4.4-patched/jobs.c 2016-11-11 13:42:55.000000000 -0500 +--- b/jobs.c 2017-02-22 15:16:28.000000000 -0500 +*************** +*** 813,818 **** + struct pidstat *ps; + +! bucket = pshash_getbucket (pid); +! psi = bgp_getindex (); + ps = &bgpids.storage[psi]; + +--- b/796,815 ---- + struct pidstat *ps; + +! /* bucket == existing chain of pids hashing to same value +! psi = where were going to put this pid/status */ +! +! bucket = pshash_getbucket (pid); /* index into pidstat_table */ +! psi = bgp_getindex (); /* bgpids.head, index into storage */ +! +! /* XXX - what if psi == *bucket? */ +! if (psi == *bucket) +! { +! #ifdef DEBUG +! internal_warning ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid); +! #endif +! bgpids.storage[psi].pid = NO_PID; /* make sure */ +! psi = bgp_getindex (); /* skip to next one */ +! } +! + ps = &bgpids.storage[psi]; + +*************** +*** 842,845 **** +--- b/839,843 ---- + { + struct pidstat *ps; ++ ps_index_t *bucket; + + ps = &bgpids.storage[psi]; +*************** +*** 847,856 **** + return; + +! if (ps->bucket_next != NO_PID) + bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; +! if (ps->bucket_prev != NO_PID) + bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; + else +! *(pshash_getbucket (ps->pid)) = ps->bucket_next; + } + +--- b/845,861 ---- + return; + +! if (ps->bucket_next != NO_PIDSTAT) + bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; +! if (ps->bucket_prev != NO_PIDSTAT) + bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; + else +! { +! bucket = pshash_getbucket (ps->pid); +! *bucket = ps->bucket_next; /* deleting chain head in hash table */ +! } +! +! /* clear out this cell, just in case */ +! ps->pid = NO_PID; +! ps->bucket_next = ps->bucket_prev = NO_PIDSTAT; + } + +*************** +*** 859,863 **** + pid_t pid; + { +! ps_index_t psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) +--- b/864,868 ---- + pid_t pid; + { +! ps_index_t psi, orig_psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) +*************** +*** 865,871 **** + + /* Search chain using hash to find bucket in pidstat_table */ +! for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) +! if (bgpids.storage[psi].pid == pid) +! break; + + if (psi == NO_PIDSTAT) +--- b/870,883 ---- + + /* Search chain using hash to find bucket in pidstat_table */ +! for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) +! { +! if (bgpids.storage[psi].pid == pid) +! break; +! if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ +! { +! internal_warning ("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next", psi); +! return 0; +! } +! } + + if (psi == NO_PIDSTAT) +*************** +*** 905,909 **** + pid_t pid; + { +! ps_index_t psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) +--- b/917,921 ---- + pid_t pid; + { +! ps_index_t psi, orig_psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) +*************** +*** 911,917 **** + + /* Search chain using hash to find bucket in pidstat_table */ +! for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) +! if (bgpids.storage[psi].pid == pid) +! return (bgpids.storage[psi].status); + + return -1; +--- b/923,936 ---- + + /* Search chain using hash to find bucket in pidstat_table */ +! for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) +! { +! if (bgpids.storage[psi].pid == pid) +! return (bgpids.storage[psi].status); +! if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ +! { +! internal_warning ("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next", psi); +! return -1; +! } +! } + + return -1; +*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- b/26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/features/buildroot/package/bash/0003-bash44-021.patch b/features/buildroot/package/bash/0003-bash44-021.patch new file mode 100644 index 00000000..52f3b75e --- /dev/null +++ b/features/buildroot/package/bash/0003-bash44-021.patch @@ -0,0 +1,61 @@ +From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-021 + +Signed-off-by: Peter Korsgaard + + BASH PATCH REPORT + ================= + +Bash-Release: 4.4 +Patch-ID: bash44-021 + +Bug-Reported-by: werner@suse.de +Bug-Reference-ID: <201803281402.w2SE2VOa000476@noether.suse.de> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2018-03/msg00196.html + +Bug-Description: + +A SIGINT received inside a SIGINT trap handler can possibly cause the +shell to loop. + +Patch (apply with `patch -p0'): + +*** bash-20180329/jobs.c 2018-02-11 18:07:22.000000000 -0500 +--- b/jobs.c 2018-04-02 14:24:21.000000000 -0400 +*************** +*** 2690,2694 **** + if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) + { +! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + waiting_for_child = 0; + if (old_sigint_handler == SIG_IGN) +--- b/2690,2704 ---- + if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) + { +! SigHandler *temp_sigint_handler; +! +! temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); +! if (temp_sigint_handler == wait_sigint_handler) +! { +! #if defined (DEBUG) +! internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap); +! #endif +! } +! else +! old_sigint_handler = temp_sigint_handler; + waiting_for_child = 0; + if (old_sigint_handler == SIG_IGN) +*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- b/26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/features/buildroot/package/bash/0004-bash44-022.patch b/features/buildroot/package/bash/0004-bash44-022.patch new file mode 100644 index 00000000..0db270a1 --- /dev/null +++ b/features/buildroot/package/bash/0004-bash44-022.patch @@ -0,0 +1,65 @@ +From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-022 + +Signed-off-by: Peter Korsgaard + + BASH PATCH REPORT + ================= + +Bash-Release: 4.4 +Patch-ID: bash44-022 + +Bug-Reported-by: Nuzhna Pomoshch +Bug-Reference-ID: <1317167476.1492079.1495999776464@mail.yahoo.com> +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2017-05/msg00005.html + +Bug-Description: + +There are cases where a failing readline command (e.g., delete-char at the end +of a line) can cause a multi-character key sequence to `back up' and attempt +to re-read some of the characters in the sequence. + +Patch (apply with `patch -p0'): + +*** bash-4.4-patched/lib/readline/readline.c 2016-04-20 15:53:52.000000000 -0400 +--- b/lib/readline/readline.c 2018-05-26 17:19:00.000000000 -0400 +*************** +*** 1058,1062 **** + r = _rl_dispatch (ANYOTHERKEY, m); + } +! else if (r && map[ANYOTHERKEY].function) + { + /* We didn't match (r is probably -1), so return something to +--- b/1056,1060 ---- + r = _rl_dispatch (ANYOTHERKEY, m); + } +! else if (r < 0 && map[ANYOTHERKEY].function) + { + /* We didn't match (r is probably -1), so return something to +*************** +*** 1070,1074 **** + return -2; + } +! else if (r && got_subseq) + { + /* OK, back up the chain. */ +--- b/1068,1072 ---- + return -2; + } +! else if (r < 0 && got_subseq) /* XXX */ + { + /* OK, back up the chain. */ +*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ +--- b/26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/features/buildroot/package/bash/0005-bash44-023.patch b/features/buildroot/package/bash/0005-bash44-023.patch new file mode 100644 index 00000000..05b18902 --- /dev/null +++ b/features/buildroot/package/bash/0005-bash44-023.patch @@ -0,0 +1,56 @@ +From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-023 + +Signed-off-by: Peter Korsgaard + + BASH PATCH REPORT + ================= + +Bash-Release: 4.4 +Patch-ID: bash44-023 + +Bug-Reported-by: Martijn Dekker +Bug-Reference-ID: <5326d6b9-2625-1d32-3e6e-ad1d15462c09@inlv.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00041.html + +Bug-Description: + +When sourcing a file from an interactive shell, setting the SIGINT handler +to the default and typing ^C will cause the shell to exit. + +Patch (apply with `patch -p0'): + +*** bash-4.4-patched/builtins/trap.def 2016-01-25 13:32:38.000000000 -0500 +--- b/builtins/trap.def 2016-11-06 12:04:35.000000000 -0500 +*************** +*** 99,102 **** +--- b/99,103 ---- + + extern int posixly_correct, subshell_environment; ++ extern int sourcelevel, running_trap; + + int +*************** +*** 213,216 **** +--- b/214,220 ---- + if (interactive) + set_signal_handler (SIGINT, sigint_sighandler); ++ /* special cases for interactive == 0 */ ++ else if (interactive_shell && (sourcelevel||running_trap)) ++ set_signal_handler (SIGINT, sigint_sighandler); + else + set_signal_handler (SIGINT, termsig_sighandler); +*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ +--- b/26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/features/buildroot/package/bash/Config.in b/features/buildroot/package/bash/Config.in new file mode 100644 index 00000000..5a9ebb8d --- /dev/null +++ b/features/buildroot/package/bash/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BASH + bool "bash" + # uses fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + The standard GNU Bourne again shell. + + http://tiswww.case.edu/php/chet/bash/bashtop.html diff --git a/features/buildroot/package/bash/bash.hash b/features/buildroot/package/bash/bash.hash new file mode 100644 index 00000000..951bcf58 --- /dev/null +++ b/features/buildroot/package/bash/bash.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature from +# http://ftp.gnu.org/gnu/bash/bash-4.4.18.tar.gz.sig +sha256 604d9eec5e4ed5fd2180ee44dd756ddca92e0b6aa4217bbab2b6227380317f23 bash-4.4.18.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/features/buildroot/package/bash/bash.mk b/features/buildroot/package/bash/bash.mk new file mode 100644 index 00000000..7fb7192e --- /dev/null +++ b/features/buildroot/package/bash/bash.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# bash +# +################################################################################ + +BASH_VERSION = 4.4.18 +BASH_SITE = $(BR2_GNU_MIRROR)/bash +BASH_DEPENDENCIES = ncurses readline host-bison +BASH_CONF_OPTS = --with-installed-readline --without-bash-malloc +BASH_LICENSE = GPL-3.0+ +BASH_LICENSE_FILES = COPYING + +BASH_CONF_ENV += \ + ac_cv_rl_prefix="$(STAGING_DIR)" \ + ac_cv_rl_version="$(READLINE_VERSION)" \ + bash_cv_getcwd_malloc=yes \ + bash_cv_job_control_missing=present \ + bash_cv_sys_named_pipes=present \ + bash_cv_func_sigsetjmp=present \ + bash_cv_printf_a_format=yes + +# The static build needs some trickery +ifeq ($(BR2_STATIC_LIBS),y) +BASH_CONF_OPTS += --enable-static-link +BASH_CONF_ENV += SHOBJ_STATUS=unsupported +# bash wants to redefine the getenv() function. To check whether this is +# possible, AC_TRY_RUN is used which is not possible in +# cross-compilation. +# On uClibc, redefining getenv is not possible; on glibc and musl it is. +# Related: +# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +BASH_CONF_ENV += bash_cv_getenv_redef=no +else +BASH_CONF_ENV += bash_cv_getenv_redef=yes +endif +endif + +define BASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) exec_prefix=/ install + rm -f $(TARGET_DIR)/bin/bashbug +endef + +# Add /bin/bash to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define BASH_ADD_MKSH_TO_SHELLS + grep -qsE '^/bin/bash$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/bash" >> $(TARGET_DIR)/etc/shells +endef +BASH_TARGET_FINALIZE_HOOKS += BASH_ADD_MKSH_TO_SHELLS + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/batctl/Config.in b/features/buildroot/package/batctl/Config.in new file mode 100644 index 00000000..25574189 --- /dev/null +++ b/features/buildroot/package/batctl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BATCTL + bool "batctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Batctl is the configuration and debugging tool for batman-adv. + + http://www.open-mesh.org/projects/batman-adv/wiki/Using-batctl + +comment "batctl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/batctl/batctl.hash b/features/buildroot/package/batctl/batctl.hash new file mode 100644 index 00000000..257e1ff2 --- /dev/null +++ b/features/buildroot/package/batctl/batctl.hash @@ -0,0 +1,4 @@ +# From https://downloads.open-mesh.org/batman/releases/batman-adv-2017.0/batctl-2017.0.tar.gz.sha1 +sha1 0fbc329b56b465fa4f674cfecd7348144609f8e5 batctl-2017.0.tar.gz +# Locally calculated +sha256 c0bb1127d6070b46abeb8d6a63d1150d71fa85f87f9a846873b649a21934c686 batctl-2017.0.tar.gz diff --git a/features/buildroot/package/batctl/batctl.mk b/features/buildroot/package/batctl/batctl.mk new file mode 100644 index 00000000..122263e4 --- /dev/null +++ b/features/buildroot/package/batctl/batctl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# batctl +# +################################################################################ + +BATCTL_VERSION = 2017.0 +BATCTL_SITE = http://downloads.open-mesh.org/batman/releases/batman-adv-$(BATCTL_VERSION) +BATCTL_LICENSE = GPL-2.0 +BATCTL_DEPENDENCIES = libnl host-pkgconf + +define BATCTL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define BATCTL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/batman-adv/Config.in b/features/buildroot/package/batman-adv/Config.in new file mode 100644 index 00000000..9d3d7967 --- /dev/null +++ b/features/buildroot/package/batman-adv/Config.in @@ -0,0 +1,36 @@ +comment "batman-adv needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_BATMAN_ADV + bool "batman-adv" + depends on BR2_LINUX_KERNEL + help + batman-adv mesh networking kernel module + + https://www.open-mesh.org/projects/batman-adv/ + +if BR2_PACKAGE_BATMAN_ADV + +config BR2_PACKAGE_BATMAN_ADV_DEBUG + bool "enable debugging" + help + Enables B.A.T.M.A.N. debugging. + +config BR2_PACKAGE_BATMAN_ADV_NC + bool "enable network coding" + help + Enables B.A.T.M.A.N. network coding. + Note: this requires promiscuous mode on ALL nodes! + + https://www.open-mesh.org/projects/batman-adv/wiki/NetworkCoding + +config BR2_PACKAGE_BATMAN_ADV_BATMAN_V + bool "enable B.A.T.M.A.N. V protocol (experimental)" + help + Enables B.A.T.M.A.N. V network protocol. + This is the next-gen protocol and is experimental at this + time. + + https://www.open-mesh.org/projects/batman-adv/wiki/BATMAN_V + +endif diff --git a/features/buildroot/package/batman-adv/batman-adv.hash b/features/buildroot/package/batman-adv/batman-adv.hash new file mode 100644 index 00000000..0599b919 --- /dev/null +++ b/features/buildroot/package/batman-adv/batman-adv.hash @@ -0,0 +1,3 @@ +# From https://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2017.0.1.tar.gz.{md5,sha1} +md5 ce14f7f1bbc037691bbbc611e16f0360 batman-adv-2017.0.1.tar.gz +sha1 593cecc015b876caa5b21fbb4d0f6186742a1abb batman-adv-2017.0.1.tar.gz diff --git a/features/buildroot/package/batman-adv/batman-adv.mk b/features/buildroot/package/batman-adv/batman-adv.mk new file mode 100644 index 00000000..51799186 --- /dev/null +++ b/features/buildroot/package/batman-adv/batman-adv.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# batman-adv +# +################################################################################ + +BATMAN_ADV_VERSION = 2017.0.1 +BATMAN_ADV_SITE = https://downloads.open-mesh.org/batman/stable/sources/batman-adv +BATMAN_ADV_LICENSE = GPL-2.0 + +# Bridge Loop Avoidance, Distributed Arp Table are always enabled +BATMAN_ADV_CFLAGS = \ + -I$(@D)/compat-include/ \ + -include $(@D)/compat.h \ + -DBATADV_SOURCE_VERSION=\"\\\"$(BATMAN_ADV_VERSION)\\\"\" +BATMAN_ADV_MODULE_MAKE_OPTS = \ + KVER=$(LINUX_VERSION_PROBED) \ + INSTALL_MOD_DIR=updates/net/batman-adv \ + NOSTDINC_FLAGS="$(BATMAN_ADV_CFLAGS)" \ + CONFIG_BATMAN_ADV=m \ + CONFIG_BATMAN_ADV_BATMAN_V=$(BR2_PACKAGE_BATMAN_ADV_BATMAN_V) \ + CONFIG_BATMAN_ADV_BLA=y \ + CONFIG_BATMAN_ADV_DAT=y \ + CONFIG_BATMAN_ADV_DEBUG=$(BR2_PACKAGE_BATMAN_ADV_DEBUG) \ + CONFIG_BATMAN_ADV_MCAST=y \ + CONFIG_BATMAN_ADV_NC=$(BR2_PACKAGE_BATMAN_ADV_NC) +BATMAN_ADV_MODULE_SUBDIRS = net/batman-adv + +define BATMAN_ADV_CONFIGURE_CMDS + $(BATMAN_ADV_MODULE_MAKE_OPTS) $(@D)/gen-compat-autoconf.sh $(@D)/compat-autoconf.h +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/features/buildroot/package/bats-core/Config.in b/features/buildroot/package/bats-core/Config.in new file mode 100644 index 00000000..73c38e5a --- /dev/null +++ b/features/buildroot/package/bats-core/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BATS_CORE + bool "bats" + depends on BR2_PACKAGE_BASH # runtime + help + Bats: Bash Automated Testing System + + Bats is a TAP-compliant testing framework for Bash. It + provides a simple way to verify that the UNIX programs you + write behave as expected. + + https://github.com/bats-core/bats-core diff --git a/features/buildroot/package/bats-core/bats-core.hash b/features/buildroot/package/bats-core/bats-core.hash new file mode 100644 index 00000000..4d10d785 --- /dev/null +++ b/features/buildroot/package/bats-core/bats-core.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 855d8b8bed466bc505e61123d12885500ef6fcdb317ace1b668087364717ea82 bats-core-1.1.0.tar.gz + +# License files +sha256 55074b2b3b87809105034e1468e59076554d76a80c67bcc592000cc3d929852d LICENSE.md diff --git a/features/buildroot/package/bats-core/bats-core.mk b/features/buildroot/package/bats-core/bats-core.mk new file mode 100644 index 00000000..eee38056 --- /dev/null +++ b/features/buildroot/package/bats-core/bats-core.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bats-core +# +################################################################################ + +BATS_CORE_VERSION = 1.1.0 +BATS_CORE_SITE = $(call github,bats-core,bats-core,v$(BATS_CORE_VERSION)) +BATS_CORE_LICENSE = MIT +BATS_CORE_LICENSE_FILES = LICENSE.md + +define BATS_CORE_INSTALL_TARGET_CMDS + $(@D)/install.sh $(TARGET_DIR)/usr +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/bayer2rgb-neon/Config.in b/features/buildroot/package/bayer2rgb-neon/Config.in new file mode 100644 index 00000000..ed065c1e --- /dev/null +++ b/features/buildroot/package/bayer2rgb-neon/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_BAYER2RGB_NEON + bool "bayer2rgb-neon" + depends on BR2_arm && BR2_ARM_CPU_HAS_NEON + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + help + bayer2rgb-neon is a library which allows + to decode raw camera bayer to RGB using + NEON hardware acceleration. + + https://git.phytec.de/bayer2rgb-neon/ + +comment "bayer2rgb-neon needs a toolchain w/ C++, dynamic library, gcc >= 4.9" + depends on BR2_arm && BR2_ARM_CPU_HAS_NEON + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.hash b/features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.hash new file mode 100644 index 00000000..1f4f5f33 --- /dev/null +++ b/features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1a84dcf6557c2017ebe258502f60575e0971511c548fc88aee5ab68ca0bb268a bayer2rgb-neon-bef3ecafe290d61a50fd27da3e5d0df6f4b88045.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.mk b/features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.mk new file mode 100644 index 00000000..02651dcf --- /dev/null +++ b/features/buildroot/package/bayer2rgb-neon/bayer2rgb-neon.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# bayer2rgb-neon +# +################################################################################ + +BAYER2RGB_NEON_VERSION = bef3ecafe290d61a50fd27da3e5d0df6f4b88045 +BAYER2RGB_NEON_SITE = https://gitlab-ext.sigma-chemnitz.de/ensc/bayer2rgb.git +BAYER2RGB_NEON_SITE_METHOD = git +BAYER2RGB_NEON_LICENSE = GPL-3.0 +BAYER2RGB_NEON_LICENSE_FILES = COPYING +BAYER2RGB_NEON_INSTALL_STAGING = YES +BAYER2RGB_NEON_DEPENDENCIES = host-pkgconf host-gengetopt +BAYER2RGB_NEON_AUTORECONF = YES + +BAYER2RGB_NEON_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -mfpu=neon" + +define BAYER2RGB_NEON_PRE_CONFIGURE_FIXUP + mkdir -p $(@D)/m4 +endef + +BAYER2RGB_NEON_PRE_CONFIGURE_HOOKS += BAYER2RGB_NEON_PRE_CONFIGURE_FIXUP + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bc/01_array_initialize.patch b/features/buildroot/package/bc/01_array_initialize.patch new file mode 100644 index 00000000..9520d824 --- /dev/null +++ b/features/buildroot/package/bc/01_array_initialize.patch @@ -0,0 +1,20 @@ +Description: Fix array initialization bug +Author: Phil Nelson +Origin: upstream +Bug-Debian: http://bugs.debian.org/586969 +Bug-Debian: http://bugs.debian.org/671513 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: bc/bc/storage.c +=================================================================== +--- bc.orig/bc/storage.c 2013-06-02 20:34:09.401273864 -0400 ++++ bc/bc/storage.c 2013-06-02 20:34:11.000000000 -0400 +@@ -179,7 +179,7 @@ + + + /* Initialize the new elements. */ +- for (; indx < v_count; indx++) ++ for (; indx < a_count; indx++) + arrays[indx] = NULL; + + /* Free the old elements. */ diff --git a/features/buildroot/package/bc/02_notice_read_write_errors.patch b/features/buildroot/package/bc/02_notice_read_write_errors.patch new file mode 100644 index 00000000..73e6ec91 --- /dev/null +++ b/features/buildroot/package/bc/02_notice_read_write_errors.patch @@ -0,0 +1,708 @@ +Description: notice read and write errors on input and output + Quoting from the bug report: + +bc (1.06-19ubuntu1) dapper; urgency=low + + + + * Make dc notice read and write errors on its input and output. + + I grepped for mentions of the strings `putc', `print', `getc', `FILE', + + `stdin', `stdout' and `stderr' and added calls to new error-checking + + functions unless it was clear from the immediately-surrounding code + + that the program was exiting nonzero, or would exit nonzero if the + + call failed. I ignored hits in lib/getopt*, which seems to + + pervasively ignore write errors when printing usage messages, in the + + hope that these were correct. I _think_ I got them all. -iwj. + + + + -- Ian Jackson Tue, 4 Apr 2006 17:21:02 +0100 +Author: Ian Jackson +Origin: other +Bug-Debian: http://bugs.debian.org/488735 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +diff --git a/bc/execute.c b/bc/execute.c +index e4e8ef7..8787048 100644 +--- a/bc/execute.c ++++ b/bc/execute.c +@@ -108,6 +108,7 @@ execute () + } + out_char ('\n'); + } ++ checkferror_output(stdout); + } + #endif + +@@ -222,6 +223,7 @@ execute () + } + } + fflush (stdout); ++ checkferror_output(stdout); + break; + + case 'R' : /* Return from function */ +@@ -257,6 +259,7 @@ execute () + if (inst == 'W') out_char ('\n'); + store_var (4); /* Special variable "last". */ + fflush (stdout); ++ checkferror_output(stdout); + pop (); + break; + +@@ -338,6 +341,7 @@ execute () + case 'w' : /* Write a string to the output. */ + while ((ch = byte(&pc)) != '"') out_schar (ch); + fflush (stdout); ++ checkferror_output(stdout); + break; + + case 'x' : /* Exchange Top of Stack with the one under the tos. */ +@@ -545,7 +549,10 @@ execute () + { + signal (SIGINT, use_quit); + if (had_sigint) +- printf ("\ninterrupted execution.\n"); ++ { ++ printf ("\ninterrupted execution.\n"); ++ checkferror_output(stdout); ++ } + } + } + +@@ -580,6 +587,7 @@ input_char () + out_col = 0; /* Saw a new line */ + } + } ++ checkferror_input(stdin); + + /* Classify and preprocess the input character. */ + if (isdigit(in_ch)) +diff --git a/bc/load.c b/bc/load.c +index 1035198..4039e86 100644 +--- a/bc/load.c ++++ b/bc/load.c +@@ -217,6 +217,7 @@ load_code (code) + if (label_no > 65535L) + { /* Better message? */ + fprintf (stderr,"Program too big.\n"); ++ checkferror_output(stderr); + exit(1); + } + addbyte ( (char) (label_no & 0xFF)); +diff --git a/bc/main.c b/bc/main.c +index 9a2461e..3ae427d 100644 +--- a/bc/main.c ++++ b/bc/main.c +@@ -358,6 +358,9 @@ use_quit (sig) + errno = save; + #else + write (1, "\n(interrupt) Exiting bc.\n", 26); ++#ifdef READLINE ++ rl_initialize (); /* Clear readline buffer */ ++#endif + #if defined(LIBEDIT) + if (edit != NULL) + el_end(edit); +diff --git a/bc/sbc.y b/bc/sbc.y +index 0ded29e..6fcc1fa 100644 +--- a/bc/sbc.y ++++ b/bc/sbc.y +@@ -86,7 +86,9 @@ program : /* empty */ + if (interactive && !quiet) + { + show_bc_version (); ++ checkferror_output(stdout); + welcome (); ++ checkferror_output(stdout); + } + } + | program input_item +diff --git a/bc/scan.c b/bc/scan.c +index 1f78ec2..2b5eeb4 100644 +--- a/bc/scan.c ++++ b/bc/scan.c +@@ -799,6 +799,7 @@ bcel_input (buf, result, max) + if (bcel_len != 0) + history (hist, &histev, H_ENTER, bcel_line); + fflush (stdout); ++ checkferror_output(stdout); + } + + if (bcel_len <= max) +@@ -874,6 +875,7 @@ rl_input (buf, result, max) + add_history (rl_line); + rl_line[rl_len-1] = '\n'; + fflush (stdout); ++ checkferror_output(stdout); + } + + if (rl_len <= max) +diff --git a/bc/scan.l b/bc/scan.l +index 841c3df..16cd62e 100644 +--- a/bc/scan.l ++++ b/bc/scan.l +@@ -111,6 +111,7 @@ bcel_input (buf, result, max) + if (bcel_len != 0) + history (hist, &histev, H_ENTER, bcel_line); + fflush (stdout); ++ checkferror_output(stdout); + } + + if (bcel_len <= max) +@@ -186,6 +187,7 @@ rl_input (buf, result, max) + add_history (rl_line); + rl_line[rl_len-1] = '\n'; + fflush (stdout); ++ checkferror_output(stdout); + } + + if (rl_len <= max) +@@ -310,6 +312,7 @@ limits return(Limits); + if (c == EOF) + { + fprintf (stderr,"EOF encountered in a comment.\n"); ++ checkferror_output(stderr); + break; + } + } +diff --git a/bc/storage.c b/bc/storage.c +index 699729a..37b4c6c 100644 +--- a/bc/storage.c ++++ b/bc/storage.c +@@ -99,6 +99,7 @@ more_functions (VOID) + { + f = &functions[indx]; + f->f_defined = FALSE; ++ f->f_void = FALSE; + f->f_body = (char *) bc_malloc (BC_START_SIZE); + f->f_body_size = BC_START_SIZE; + f->f_code_size = 0; +diff --git a/bc/util.c b/bc/util.c +index 30beaf9..669235f 100644 +--- a/bc/util.c ++++ b/bc/util.c +@@ -260,9 +260,10 @@ init_gen () + continue_label = 0; + next_label = 1; + out_count = 2; +- if (compile_only) ++ if (compile_only) { + printf ("@i"); +- else ++ checkferror_output(stdout); ++ } else + init_load (); + had_error = FALSE; + did_gen = FALSE; +@@ -286,6 +287,7 @@ generate (str) + printf ("\n"); + out_count = 0; + } ++ checkferror_output(stdout); + } + else + load_code (str); +@@ -303,6 +305,7 @@ run_code() + if (compile_only) + { + printf ("@r\n"); ++ checkferror_output(stdout); + out_count = 0; + } + else +@@ -341,6 +344,7 @@ out_char (ch) + } + putchar (ch); + } ++ checkferror_output(stdout); + } + + /* Output routines: Write a character CH to the standard output. +@@ -371,6 +375,7 @@ out_schar (ch) + } + putchar (ch); + } ++ checkferror_output(stdout); + } + + +@@ -657,6 +662,7 @@ limits() + #ifdef OLD_EQ_OP + printf ("Old assignment operatiors are valid. (=-, =+, ...)\n"); + #endif ++ checkferror_output(stdout); + } + + /* bc_malloc will check the return value so all other places do not +@@ -721,6 +727,7 @@ yyerror (str, va_alist) + fprintf (stderr,"%s %d: ",name,line_no); + vfprintf (stderr, str, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + had_error = TRUE; + va_end (args); + } +@@ -761,6 +768,7 @@ warn (mesg, va_alist) + fprintf (stderr,"%s %d: Error: ",name,line_no); + vfprintf (stderr, mesg, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + had_error = TRUE; + } + else +@@ -773,6 +781,7 @@ warn (mesg, va_alist) + fprintf (stderr,"%s %d: (Warning) ",name,line_no); + vfprintf (stderr, mesg, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + va_end (args); + } +@@ -807,6 +816,7 @@ rt_error (mesg, va_alist) + va_end (args); + + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + runtime_error = TRUE; + } + +@@ -843,4 +853,5 @@ rt_warn (mesg, va_alist) + va_end (args); + + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } +diff --git a/dc/dc.c b/dc/dc.c +index e03f094..0faf03a 100644 +--- a/dc/dc.c ++++ b/dc/dc.c +@@ -61,6 +61,7 @@ static void + bug_report_info DC_DECLVOID() + { + printf("Email bug reports to: bug-dc@gnu.org .\n"); ++ checkferror_output(stdout); + } + + static void +@@ -71,6 +72,7 @@ show_version DC_DECLVOID() + This is free software; see the source for copying conditions. There is NO\n\ + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n\ + to the extent permitted by law.\n", DC_COPYRIGHT); ++ checkferror_output(stdout); + } + + /* your generic usage function */ +@@ -87,6 +89,7 @@ Usage: %s [OPTION] [file ...]\n\ + \n\ + ", progname); + bug_report_info(); ++ checkferror_output(f); + } + + /* returns a pointer to one past the last occurance of c in s, +diff --git a/dc/eval.c b/dc/eval.c +index 4af7200..153d331 100644 +--- a/dc/eval.c ++++ b/dc/eval.c +@@ -94,12 +94,15 @@ static int input_pushback; + static int + input_fil DC_DECLVOID() + { ++ int c; + if (input_pushback != EOF){ +- int c = input_pushback; ++ c = input_pushback; + input_pushback = EOF; + return c; + } +- return getc(input_fil_fp); ++ c = getc(input_fil_fp); ++ checkferror_input(input_fil_fp); ++ return c; + } + + /* passed as an argument to dc_getnum */ +@@ -298,11 +301,13 @@ dc_func DC_DECLARG((c, peekc, negcmp)) + tmpint = dc_num2int(datum.v.number, DC_TOSS); + if (2 <= tmpint && tmpint <= DC_IBASE_MAX) + dc_ibase = tmpint; +- else ++ else { + fprintf(stderr, + "%s: input base must be a number \ + between 2 and %d (inclusive)\n", + progname, DC_IBASE_MAX); ++ checkferror_output(stderr); ++ } + } + break; + case 'k': /* set scale to value on top of stack */ +@@ -310,11 +315,12 @@ between 2 and %d (inclusive)\n", + tmpint = -1; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if ( ! (tmpint >= 0) ) ++ if ( ! (tmpint >= 0) ) { + fprintf(stderr, + "%s: scale must be a nonnegative number\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_scale = tmpint; + } + break; +@@ -338,11 +344,12 @@ between 2 and %d (inclusive)\n", + tmpint = 0; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if ( ! (tmpint > 1) ) ++ if ( ! (tmpint > 1) ) { + fprintf(stderr, + "%s: output base must be a number greater than 1\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_obase = tmpint; + } + break; +@@ -383,6 +390,7 @@ between 2 and %d (inclusive)\n", + fprintf(stderr, + "%s: square root of nonnumeric attempted\n", + progname); ++ checkferror_output(stderr); + }else if (dc_sqrt(datum.v.number, dc_scale, &tmpnum) == DC_SUCCESS){ + dc_free_num(&datum.v.number); + datum.v.number = tmpnum; +@@ -444,6 +452,7 @@ between 2 and %d (inclusive)\n", + fprintf(stderr, + "%s: Q command requires a number >= 1\n", + progname); ++ checkferror_output(stderr); + } + break; + #if 0 +@@ -489,11 +498,12 @@ between 2 and %d (inclusive)\n", + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); + if (dc_pop(&datum) == DC_SUCCESS){ +- if (tmpint < 0) ++ if (tmpint < 0) { + fprintf(stderr, + "%s: array index must be a nonnegative integer\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_array_set(peekc, tmpint, datum); + } + } +@@ -505,17 +515,19 @@ between 2 and %d (inclusive)\n", + tmpint = -1; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if (tmpint < 0) ++ if (tmpint < 0) { + fprintf(stderr, + "%s: array index must be a nonnegative integer\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_push(dc_array_get(peekc, tmpint)); + } + return DC_EATONE; + + default: /* What did that user mean? */ + fprintf(stderr, "%s: ", progname); ++ checkferror_output(stderr); + dc_show_id(stdout, c, " unimplemented\n"); + break; + } +@@ -544,6 +556,7 @@ dc_evalstr DC_DECLARG((string)) + fprintf(stderr, + "%s: eval called with non-string argument\n", + progname); ++ checkferror_output(stderr); + return DC_OKAY; + } + interrupt_seen = 0; +@@ -640,6 +653,7 @@ dc_evalstr DC_DECLARG((string)) + return DC_FAIL; + } + fprintf(stderr, "%s: unexpected EOS\n", progname); ++ checkferror_output(stderr); + return DC_OKAY; + } + } +@@ -665,6 +679,7 @@ dc_evalfile DC_DECLARG((fp)) + stdin_lookahead = EOF; + for (c=getc(fp); c!=EOF; c=peekc){ + peekc = getc(fp); ++ checkferror_input(stdin); + /* + * The following if() is the only place where ``stdin_lookahead'' + * might be set to other than EOF: +@@ -716,6 +731,7 @@ dc_evalfile DC_DECLARG((fp)) + return DC_SUCCESS; + fprintf(stderr, "%s: Q command argument exceeded \ + string execution depth\n", progname); ++ checkferror_output(stderr); + } + }else{ + dc_garbage("at top of stack", -1); +@@ -728,8 +744,11 @@ string execution depth\n", progname); + fprintf(stderr, + "%s: Q command argument exceeded string execution depth\n", + progname); +- if (stdin_lookahead != peekc && fp == stdin) ++ checkferror_output(stderr); ++ if (stdin_lookahead != peekc && fp == stdin) { + peekc = getc(fp); ++ checkferror_input(stdin); ++ } + break; + + case DC_INT: +@@ -771,6 +790,7 @@ string execution depth\n", progname); + if (ferror(fp)) + goto error_fail; + fprintf(stderr, "%s: unexpected EOF\n", progname); ++ checkferror_output(stderr); + return DC_FAIL; + } + } +diff --git a/dc/misc.c b/dc/misc.c +index f2388b0..1be56fe 100644 +--- a/dc/misc.c ++++ b/dc/misc.c +@@ -91,6 +91,7 @@ dc_show_id DC_DECLARG((fp, id, suffix)) + fprintf(fp, "'%c' (%#o)%s", (unsigned int) id, id, suffix); + else + fprintf(fp, "%#o%s", (unsigned int) id, suffix); ++ checkferror_output(fp); + } + + +diff --git a/dc/numeric.c b/dc/numeric.c +index 8e5e70f..c875eba 100644 +--- a/dc/numeric.c ++++ b/dc/numeric.c +@@ -134,6 +134,7 @@ dc_div DC_DECLARG((a, b, kscale, result)) + bc_init_num(CastNumPtr(result)); + if (bc_divide(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){ + fprintf(stderr, "%s: divide by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -156,6 +157,7 @@ dc_divrem DC_DECLARG((a, b, kscale, quotient, remainder)) + if (bc_divmod(CastNum(a), CastNum(b), + CastNumPtr(quotient), CastNumPtr(remainder), kscale)){ + fprintf(stderr, "%s: divide by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -174,6 +176,7 @@ dc_rem DC_DECLARG((a, b, kscale, result)) + bc_init_num(CastNumPtr(result)); + if (bc_modulo(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){ + fprintf(stderr, "%s: remainder by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -226,6 +229,7 @@ dc_sqrt DC_DECLARG((value, kscale, result)) + tmp = bc_copy_num(CastNum(value)); + if (!bc_sqrt(&tmp, kscale)){ + fprintf(stderr, "%s: square root of negative number\n", progname); ++ checkferror_output(stderr); + bc_free_num(&tmp); + return DC_DOMAIN_ERROR; + } +@@ -429,8 +433,10 @@ dc_out_num DC_DECLARG((value, obase, newline_p, discard_p)) + { + out_char('\0'); /* clear the column counter */ + bc_out_num(CastNum(value), obase, out_char, 0); +- if (newline_p == DC_WITHNL) ++ if (newline_p == DC_WITHNL) { + putchar ('\n'); ++ checkferror_output(stdout); ++ } + if (discard_p == DC_TOSS) + dc_free_num(&value); + } +@@ -475,6 +481,7 @@ dc_dump_num DC_DECLARG((dcvalue, discard_p)) + + for (cur=top_of_stack; cur; cur=next) { + putchar(cur->digit); ++ checkferror_output(stdout); + next = cur->link; + free(cur); + } +@@ -592,6 +599,7 @@ out_char (ch) + out_col = 1; + } + putchar(ch); ++ checkferror_output(stderr); + } + } + +@@ -631,6 +639,7 @@ rt_error (mesg, va_alist) + vfprintf (stderr, mesg, args); + va_end (args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + +@@ -664,6 +673,7 @@ rt_warn (mesg, va_alist) + vfprintf (stderr, mesg, args); + va_end (args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + +diff --git a/dc/stack.c b/dc/stack.c +index 0730e9c..5db3975 100644 +--- a/dc/stack.c ++++ b/dc/stack.c +@@ -38,7 +38,10 @@ + #include "dc-regdef.h" + + /* an oft-used error message: */ +-#define Empty_Stack fprintf(stderr, "%s: stack empty\n", progname) ++#define Empty_Stack do{ \ ++ fprintf(stderr, "%s: stack empty\n", progname); \ ++ checkferror_output(stderr); \ ++ }while(0) + + + /* simple linked-list implementation suffices: */ +@@ -94,6 +97,7 @@ dc_binop DC_DECLARG((op, kscale)) + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&b); +@@ -134,6 +138,7 @@ dc_binop2 DC_DECLARG((op, kscale)) + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&b); +@@ -172,6 +177,7 @@ dc_cmpop DC_DECLVOID() + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return 0; + } + (void)dc_pop(&b); +@@ -209,6 +215,7 @@ dc_triop DC_DECLARG((op, kscale)) + || dc_stack->link->value.dc_type!=DC_NUMBER + || dc_stack->link->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&c); +@@ -327,6 +334,7 @@ dc_register_get DC_DECLARG((regid, result)) + r = dc_register[regid]; + if (r==NULL || r->value.dc_type==DC_UNINITIALIZED){ + fprintf(stderr, "%s: register ", progname); ++ checkferror_output(stderr); + dc_show_id(stderr, regid, " is empty\n"); + return DC_FAIL; + } +@@ -401,6 +409,7 @@ dc_register_pop DC_DECLARG((stackid, result)) + r = dc_register[stackid]; + if (r == NULL){ + fprintf(stderr, "%s: stack register ", progname); ++ checkferror_output(stderr); + dc_show_id(stderr, stackid, " is empty\n"); + return DC_FAIL; + } +diff --git a/dc/string.c b/dc/string.c +index ff1e7f1..e24092d 100644 +--- a/dc/string.c ++++ b/dc/string.c +@@ -101,6 +101,7 @@ dc_out_str DC_DECLARG((value, newline, discard_flag)) + fwrite(value->s_ptr, value->s_len, sizeof *value->s_ptr, stdout); + if (newline == DC_WITHNL) + putchar('\n'); ++ checkferror_output(stdout); + if (discard_flag == DC_TOSS) + dc_free_str(&value); + } +@@ -176,6 +177,7 @@ dc_readstring DC_DECLARG((fp, ldelim, rdelim)) + } + *p++ = c; + } ++ checkferror_input(fp); + return dc_makestring(line_buf, (size_t)(p-line_buf)); + } + +diff --git a/h/number.h b/h/number.h +index 9b034b6..3a00a92 100644 +--- a/h/number.h ++++ b/h/number.h +@@ -150,4 +150,7 @@ _PROTOTYPE(int bc_sqrt, (bc_num *num, int scale)); + _PROTOTYPE(void bc_out_num, (bc_num num, int o_base, void (* out_char)(int), + int leading_zero)); + ++_PROTOTYPE(void checkferror_input, (FILE*)); ++_PROTOTYPE(void checkferror_output, (FILE*)); ++ + #endif +diff --git a/lib/number.c b/lib/number.c +index e211840..4d3ce46 100644 +--- a/lib/number.c ++++ b/lib/number.c +@@ -1776,6 +1776,7 @@ static void + out_char (int c) + { + putchar(c); ++ checkferror_output(stdout); + } + + +@@ -1785,6 +1786,7 @@ pn (num) + { + bc_out_num (num, 10, out_char, 0); + out_char ('\n'); ++ checkferror_output(stdout); + } + + +@@ -1799,6 +1801,28 @@ pv (name, num, len) + printf ("%s=", name); + for (i=0; i + +diff -Nura bc-1.06.95.orig/doc/Makefile.in bc-1.06.95/doc/Makefile.in +--- bc-1.06.95.orig/doc/Makefile.in 2015-06-13 09:39:46.946620294 -0300 ++++ bc-1.06.95/doc/Makefile.in 2015-06-13 09:40:10.019407630 -0300 +@@ -96,7 +96,7 @@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LTLIBOBJS = @LTLIBOBJS@ +-MAKEINFO = makeinfo --no-split ++MAKEINFO = @MAKEINFO@ --no-split + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ diff --git a/features/buildroot/package/bc/Config.in b/features/buildroot/package/bc/Config.in new file mode 100644 index 00000000..54c4422f --- /dev/null +++ b/features/buildroot/package/bc/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BC + bool "bc" + help + 'bc' is an arbitrary precision numeric processing language + Its syntax is similar to C, but differs in many substantial + areas. It supports interactive execution of statements. 'Bc' + is a utility included in the POSIX P1003.2/D11 draft standard. + This version does not use the historical method of having bc + be a compiler for the dc calculator (the POSIX document + doesn't specify how bc must be implemented). + This version has a single executable that both compiles the + language and runs the resulting 'byte code.' The byte code is + not the dc language. + + http://www.gnu.org/software/bc diff --git a/features/buildroot/package/bc/bc.hash b/features/buildroot/package/bc/bc.hash new file mode 100644 index 00000000..5f1ed635 --- /dev/null +++ b/features/buildroot/package/bc/bc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7ee4abbcfac03d8a6e1a8a3440558a3d239d6b858585063e745c760957725ecc bc-1.06.95.tar.bz2 diff --git a/features/buildroot/package/bc/bc.mk b/features/buildroot/package/bc/bc.mk new file mode 100644 index 00000000..ee0e4384 --- /dev/null +++ b/features/buildroot/package/bc/bc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# bc +# +################################################################################ + +BC_VERSION = 1.06.95 +BC_SOURCE = bc-$(BC_VERSION).tar.bz2 +BC_SITE = http://alpha.gnu.org/gnu/bc +BC_DEPENDENCIES = host-flex +BC_LICENSE = GPL-2.0+, LGPL-2.1+ +BC_LICENSE_FILES = COPYING COPYING.LIB + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch b/features/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch new file mode 100644 index 00000000..1a437a84 --- /dev/null +++ b/features/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch @@ -0,0 +1,35 @@ +Don't inline crc64 for gcc-5 compatability + +This patch is backported from Debian and it fixes the following error: + +bcache.c:125:9: warning: 'crc_table' is static but used in inline +function 'crc64' which is not static +... +make-bcache.c:277: undefined reference to `crc64' + +Signed-off-by: Vicente Olivert Riera + +From: David Mohr +Date: Tue, 26 May 2015 20:34:31 -0600 +Subject: Don't inline crc64 for gcc-5 compatability + +Forwarded: http://article.gmane.org/gmane.linux.kernel.bcache.devel/2919 + +By James Cowgill, see Debian bug #777798 +--- + bcache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bcache.c b/bcache.c +index 8f37445..8b4b986 100644 +--- a/bcache.c ++++ b/bcache.c +@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = { + 0x9AFCE626CE85B507ULL + }; + +-inline uint64_t crc64(const void *_data, size_t len) ++uint64_t crc64(const void *_data, size_t len) + { + uint64_t crc = 0xFFFFFFFFFFFFFFFFULL; + const unsigned char *data = _data; diff --git a/features/buildroot/package/bcache-tools/Config.in b/features/buildroot/package/bcache-tools/Config.in new file mode 100644 index 00000000..c8e3f6d1 --- /dev/null +++ b/features/buildroot/package/bcache-tools/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_BCACHE_TOOLS + bool "bcache tools" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_MMU # util-linux (libblkid) + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Bcache is a Linux kernel block layer cache. It allows one or + more fast disk drives such as flash-based solid state drives + (SSDs) to act as a cache for one or more slower hard disk + drives. + + http://bcache.evilpiepirate.org/ + + This is the user space bcache tools, required to setup the + linux bcache feature of the Linux kernel. + +comment "bcache-tools needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/features/buildroot/package/bcache-tools/bcache-tools.hash b/features/buildroot/package/bcache-tools/bcache-tools.hash new file mode 100644 index 00000000..4213705f --- /dev/null +++ b/features/buildroot/package/bcache-tools/bcache-tools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d56923936f37287efc57a46315679102ef2c86cd0be5874590320acd48c1201c bcache-tools-1.0.8.tar.gz diff --git a/features/buildroot/package/bcache-tools/bcache-tools.mk b/features/buildroot/package/bcache-tools/bcache-tools.mk new file mode 100644 index 00000000..4ff10cc4 --- /dev/null +++ b/features/buildroot/package/bcache-tools/bcache-tools.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# bcache-tools +# +################################################################################ + +BCACHE_TOOLS_VERSION = 1.0.8 +BCACHE_TOOLS_SITE = $(call github,g2p,bcache-tools,v$(BCACHE_TOOLS_VERSION)) +BCACHE_TOOLS_LICENSE = GPL-2.0 +BCACHE_TOOLS_LICENSE_FILES = COPYING +BCACHE_TOOLS_DEPENDENCIES = host-pkgconf util-linux + +# We pass $(TARGET_CONFIGURE_OPTS) as environment variable to allow +# the bcache-tools Makefile to alter CFLAGS +define BCACHE_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# The bcache-tools Makefile expects the man8 directory to exist +# expects the /lib/udev/rules.d directory to exist. +define BCACHE_TOOLS_CREATE_MISSING_DIRS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/share/man/man8 + $(INSTALL) -m 0755 -d $(TARGET_DIR)/lib/udev/rules.d +endef + +BCACHE_TOOLS_PRE_INSTALL_TARGET_HOOKS += BCACHE_TOOLS_CREATE_MISSING_DIRS + +define BCACHE_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/bcg729/Config.in b/features/buildroot/package/bcg729/Config.in new file mode 100644 index 00000000..8e9bcfe6 --- /dev/null +++ b/features/buildroot/package/bcg729/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BCG729 + bool "bcg729" + help + Bcg729 is an opensource implementation of both encoder and + decoder of the ITU G729 Annex A/B speech codec. + + http://www.linphone.org/technical-corner/bcg729/overview diff --git a/features/buildroot/package/bcg729/bcg729.hash b/features/buildroot/package/bcg729/bcg729.hash new file mode 100644 index 00000000..4dbfbbbb --- /dev/null +++ b/features/buildroot/package/bcg729/bcg729.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 94b3542a06cbd96306efc19f959f9febae62806a22599063f82a8c33e989d48b bcg729-1.0.4.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/features/buildroot/package/bcg729/bcg729.mk b/features/buildroot/package/bcg729/bcg729.mk new file mode 100644 index 00000000..426cfd90 --- /dev/null +++ b/features/buildroot/package/bcg729/bcg729.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bcg729 +# +################################################################################ + +BCG729_VERSION = 1.0.4 +BCG729_SITE = $(call github,BelledonneCommunications,bcg729,$(BCG729_VERSION)) +BCG729_LICENSE = GPL-2.0+ +BCG729_LICENSE_FILES = COPYING +BCG729_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/bcm2835/Config.in b/features/buildroot/package/bcm2835/Config.in new file mode 100644 index 00000000..4c3eb2cb --- /dev/null +++ b/features/buildroot/package/bcm2835/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BCM2835 + bool "bcm2835" + depends on BR2_arm + help + C library for Broadcom BCM 2835 as used in Raspberry Pi. + It provides access to GPIO and other IO functions on the + Broadcom BCM 2835 chip, allowing access to the GPIO pins + on the 26 pin IDE plug on the RPi board so you can control + and interface with various external devices. + + WARNING: the opinion of the Buildroot developers is that + such library is a complete abomination as it entirely works + around the standard Linux interfaces to access GPIOs, I2C, + SPI busses or other IOs. The library directly remaps the + hardware registers in user-space, completely bypassing what + the kernel drivers are doing, and potentially conflicting + with them. + + http://www.airspayce.com/mikem/bcm2835 diff --git a/features/buildroot/package/bcm2835/bcm2835.hash b/features/buildroot/package/bcm2835/bcm2835.hash new file mode 100644 index 00000000..1aea3ae3 --- /dev/null +++ b/features/buildroot/package/bcm2835/bcm2835.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 295f66dab533592ce41db8e07befe985645a2e661bbf75dce9c383e61e24cb5f bcm2835-1.48.tar.gz diff --git a/features/buildroot/package/bcm2835/bcm2835.mk b/features/buildroot/package/bcm2835/bcm2835.mk new file mode 100644 index 00000000..e24c819c --- /dev/null +++ b/features/buildroot/package/bcm2835/bcm2835.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# bcm2835 +# +################################################################################ + +BCM2835_VERSION = 1.48 +BCM2835_SITE = http://www.airspayce.com/mikem/bcm2835 +BCM2835_LICENSE = GPL-2.0 +BCM2835_LICENSE_FILES = COPYING +BCM2835_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch b/features/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch new file mode 100644 index 00000000..a70c7c63 --- /dev/null +++ b/features/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch @@ -0,0 +1,49 @@ +From c0b3dbb43aa3a38c47311556c85eadc6072e2d68 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Tue, 14 Feb 2017 22:02:26 +0100 +Subject: [PATCH] Fix Libs.private flags for mbedtls +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Static linking with bctoolbox fails when using pkg-config as the +generated bctoolbox.pc file only consists of an '-L' string without any +search path or libraries flags. + +That's because of an typo in `mbedtls_library_path`. However, +`mbedtls_library_path` contains a string of the mbedtls libraries +concatenated by an ';' which cannot be parsed by pkg-config. + +Therefore, use `MBEDTLS_LIBRARY` instead of `MBEDTLS_LIBRARIES` to get +the library path. + +Furthermore, add the three mbedtls libraries *mbedtls*, *mbedcrypto*, and +*mbedx509* to `LIBS_PRIVATE` so these libraries are added to the +`Libs.private` field of bctoolbox.pc. + +Upstream status: Pending +https://github.com/BelledonneCommunications/bctoolbox/pull/4 + +Signed-off-by: Jörg Krause +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ed7aa00..4127f0e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -103,8 +103,8 @@ else() + endif() + + if(MBEDTLS_FOUND) +- get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARIES}" PATH) +- set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedlts_library_path}") ++ get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARY}" PATH) ++ set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedtls_library_path} -lmbedtls -lmbedcrypto -lmbedx509") + endif() + if(POLARSSL_FOUND) + get_filename_component(polarssl_library_path "${POLARSSL_LIBRARIES}" PATH) +-- +2.11.1 + diff --git a/features/buildroot/package/bctoolbox/Config.in b/features/buildroot/package/bctoolbox/Config.in new file mode 100644 index 00000000..048d0128 --- /dev/null +++ b/features/buildroot/package/bctoolbox/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_BCTOOLBOX + bool "bctoolbox" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Utilities library used by Belledonne Communications + softwares like belle-sip, mediastreamer2 and linphone. + + Select BR2_PACKAGE_MBEDTLS for crypto support. + + https://github.com/BelledonneCommunications/bctoolbox + +comment "bctoolbox needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/bctoolbox/bctoolbox.hash b/features/buildroot/package/bctoolbox/bctoolbox.hash new file mode 100644 index 00000000..70be55c3 --- /dev/null +++ b/features/buildroot/package/bctoolbox/bctoolbox.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 da7df7ff359a9829e9e6ef98dfe9fead0cf735b8a4a5da1b1047f467dee1b2a9 bctoolbox-0.4.0.tar.gz diff --git a/features/buildroot/package/bctoolbox/bctoolbox.mk b/features/buildroot/package/bctoolbox/bctoolbox.mk new file mode 100644 index 00000000..281a0bf2 --- /dev/null +++ b/features/buildroot/package/bctoolbox/bctoolbox.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# bctoolbox +# +################################################################################ + +BCTOOLBOX_VERSION = 0.4.0 +BCTOOLBOX_SITE = $(call github,BelledonneCommunications,bctoolbox,$(BCTOOLBOX_VERSION)) +BCTOOLBOX_LICENSE = GPL-2.0+ +BCTOOLBOX_LICENSE_FILES = COPYING +BCTOOLBOX_INSTALL_STAGING = YES + +# Set CMAKE_SKIP_RPATH to prevent bctoolbox from adding the rpath to +# shared library. +BCTOOLBOX_CONF_OPTS = \ + -DENABLE_POLARSSL=OFF \ + -DENABLE_STRICT=OFF \ + -DENABLE_TESTS_COMPONENT=OFF \ + -DENABLE_TESTS=OFF \ + -DGIT_EXECUTABLE=OFF \ + -DCMAKE_SKIP_RPATH=ON + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +BCTOOLBOX_DEPENDENCIES += mbedtls +BCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=ON +else +BCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch b/features/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch new file mode 100644 index 00000000..723de5c1 --- /dev/null +++ b/features/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch @@ -0,0 +1,31 @@ +From 2541ee3d709803096b17e45610ccc1404e2e5eee Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Aug 2015 17:46:34 +0200 +Subject: [PATCH] fd_set requires inclusion of + +According to POSIX.1-2001, the definition fd_set and related macros is +in , so it should be included in files using fd_set to +make the code compatible with all standard C libraries. + +Submitted upstream: https://sourceforge.net/p/bcusdk/patches/3/ + +Signed-off-by: Thomas Petazzoni +--- + eibd/examples/common.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/eibd/examples/common.h b/eibd/examples/common.h +index 51fc514..f038da1 100644 +--- a/eibd/examples/common.h ++++ b/eibd/examples/common.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include "eibclient.h" + + /** unsigned char*/ +-- +2.5.0 + diff --git a/features/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch b/features/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch new file mode 100644 index 00000000..3b90289c --- /dev/null +++ b/features/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch @@ -0,0 +1,35 @@ +From 6bd1b4958e949d83468e053c34bf6c89d14d687a Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Fri, 25 Aug 2017 23:01:14 +0200 +Subject: [PATCH] eibd: drop local clock_gettime in USB backends + +clock_gettime is defined locally, and calls pth_int_time, which +in turn calls clock_gettime. +The USB backend shouldn't overrule clock_gettime in the first place. +This patch fixes this endless recursion by removing the local defition. + +Signed-off-by: Kurt Van Dijck +--- + eibd/usb/linux_usbfs.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/eibd/usb/linux_usbfs.c b/eibd/usb/linux_usbfs.c +index c3ec410..957b908 100644 +--- a/eibd/usb/linux_usbfs.c ++++ b/eibd/usb/linux_usbfs.c +@@ -52,12 +52,6 @@ int pthread_mutex_trylock(pthread_mutex_t *mutex) + return 0; + } + +-int clock_gettime(clockid_t clk_id, struct timespec *tp) +-{ +- pth_int_time (tp); +- return 0; +-} +- + /* sysfs vs usbfs: + * opening a usbfs node causes the device to be resumed, so we attempt to + * avoid this during enumeration. +-- +1.8.5.rc3 + diff --git a/features/buildroot/package/bcusdk/Config.in b/features/buildroot/package/bcusdk/Config.in new file mode 100644 index 00000000..8f9330e0 --- /dev/null +++ b/features/buildroot/package/bcusdk/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_BCUSDK + bool "bcusdk" + depends on BR2_USE_MMU # libpthsem + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBPTHSEM + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + A free development environment for the Bus Coupling Units of + the European Installation Bus. + + The European Installation Bus EIB is a home and building + automation bus system. It is optimized for low-speed control + applications like lighting and blinds control. + + BCUs (Bus Coupling Units) are standardized, generic + platforms for embedded EIB devices. They include the entire + physical layer network interface, power supply and a + microcontroller with an implementation of the EIB protocol + stack stored in the ROM. + + http://www.auto.tuwien.ac.at/~mkoegler/eib/ + +comment "bcusdk needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/bcusdk/bcusdk.hash b/features/buildroot/package/bcusdk/bcusdk.hash new file mode 100644 index 00000000..219498bc --- /dev/null +++ b/features/buildroot/package/bcusdk/bcusdk.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 014cdaafc36f223c584b39ae5d698dd037a8e15aba4e78a2e531b51ff1331304 bcusdk_0.0.5.tar.gz diff --git a/features/buildroot/package/bcusdk/bcusdk.mk b/features/buildroot/package/bcusdk/bcusdk.mk new file mode 100644 index 00000000..ff5becd8 --- /dev/null +++ b/features/buildroot/package/bcusdk/bcusdk.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# bcusdk +# +################################################################################ + +BCUSDK_VERSION = 0.0.5 +BCUSDK_SOURCE = bcusdk_$(BCUSDK_VERSION).tar.gz +BCUSDK_SITE = http://www.auto.tuwien.ac.at/~mkoegler/eib +BCUSDK_LICENSE = GPL-2.0+ +BCUSDK_LICENSE_FILES = COPYING +BCUSDK_INSTALL_STAGING = YES +BCUSDK_CONF_OPTS = \ + --enable-onlyeibd \ + --enable-ft12 \ + --enable-pei16 \ + --enable-tpuarts \ + --enable-eibnetip \ + --enable-eibnetipserver \ + --enable-eibnetiptunnel \ + --without-pth-test \ + --with-pth=$(STAGING_DIR)/usr + +BCUSDK_DEPENDENCIES = \ + libpthsem \ + $(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone) + +define BCUSDK_REMOVE_EXAMPLES + $(RM) -rf $(TARGET_DIR)/usr/share/bcusdk +endef + +BCUSDK_POST_INSTALL_TARGET_HOOKS += BCUSDK_REMOVE_EXAMPLES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bdwgc/0001-fix-link-with-of-bdw-gc-with-a-system-atomic_ops.patch b/features/buildroot/package/bdwgc/0001-fix-link-with-of-bdw-gc-with-a-system-atomic_ops.patch new file mode 100644 index 00000000..0d5e6b09 --- /dev/null +++ b/features/buildroot/package/bdwgc/0001-fix-link-with-of-bdw-gc-with-a-system-atomic_ops.patch @@ -0,0 +1,57 @@ +From b549c7faa9903340b09ef2592a2c7c213a110220 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 5 Nov 2018 22:50:40 +0100 +Subject: [PATCH] fix link with of bdw-gc with a system atomic_ops + +When bdw-gc is linked with libatomic_ops, bdw-gc.pc must contain the +needed libraries (such as -latomic_ops) otherwise build of applications +such as guile will fail on link stage: + +.libs/libguile_2.0_la-posix.o: In function `scm_tmpnam': +posix.c:(.text+0x2080): warning: the use of `tmpnam' is dangerous, better use `mkstemp' + CCLD guile +/home/buildroot/autobuild/run/instance-2/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libgc.so: undefined reference to `AO_fetch_compare_and_swap_emulation' +/home/buildroot/autobuild/run/instance-2/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libgc.so: undefined reference to `AO_store_full_emulation' + +So set ATOMIC_OPS_LIBS to -latomic_ops when a system atomic_ops library +is used and use ATOMIC_OPS_LIBS in bdw-gc.pc.in + +Fixes: + - http://autobuild.buildroot.org/results/2b23d445e57a5e0f417f5cb9417b0a668bb7bf1c + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/ivmai/bdwgc/pull/247] +--- + bdw-gc.pc.in | 2 +- + configure.ac | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/bdw-gc.pc.in b/bdw-gc.pc.in +index ef4c2341..9fc42465 100644 +--- a/bdw-gc.pc.in ++++ b/bdw-gc.pc.in +@@ -6,5 +6,5 @@ includedir=@includedir@ + Name: Boehm-Demers-Weiser Conservative Garbage Collector + Description: A garbage collector for C and C++ + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -lgc ++Libs: -L${libdir} -lgc @ATOMIC_OPS_LIBS@ + Cflags: -I${includedir} +diff --git a/configure.ac b/configure.ac +index 21abe8fa..9ffe81de 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1081,7 +1081,9 @@ AS_IF([test x"$with_libatomic_ops" = xno \ + AC_MSG_CHECKING([which libatomic_ops to use]) + AS_IF([test x"$with_libatomic_ops" != xno], + [ AS_IF([test x"$with_libatomic_ops" != xnone -a x"$THREADS" != xnone], +- [ AC_MSG_RESULT([external]) ], ++ [ AC_MSG_RESULT([external]) ++ ATOMIC_OPS_LIBS="-latomic_ops" ++ AC_SUBST([ATOMIC_OPS_LIBS]) ], + [ AC_MSG_RESULT([none]) + AS_IF([test x"$THREADS" != xnone], + [ AC_DEFINE([GC_BUILTIN_ATOMIC], [1], +-- +2.17.1 + diff --git a/features/buildroot/package/bdwgc/Config.in b/features/buildroot/package/bdwgc/Config.in new file mode 100644 index 00000000..95139efb --- /dev/null +++ b/features/buildroot/package/bdwgc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_BDWGC + bool "bdwgc" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + select BR2_PACKAGE_LIBATOMIC_OPS + help + The Boehm-Demers-Weiser conservative garbage collector can + be used as a garbage collecting replacement for C 'malloc' + or C++ 'new'. + + http://www.hboehm.info/gc/ diff --git a/features/buildroot/package/bdwgc/bdwgc.hash b/features/buildroot/package/bdwgc/bdwgc.hash new file mode 100644 index 00000000..6cc4674e --- /dev/null +++ b/features/buildroot/package/bdwgc/bdwgc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8f23f9a20883d00af2bff122249807e645bdf386de0de8cbd6cce3e0c6968f04 gc-8.0.0.tar.gz +sha256 aeeaabbf44e67d413e18719f0c6ac9c23387ab0b33e7a15ee46cf59ddef12cc7 README.QUICK diff --git a/features/buildroot/package/bdwgc/bdwgc.mk b/features/buildroot/package/bdwgc/bdwgc.mk new file mode 100644 index 00000000..3979cd88 --- /dev/null +++ b/features/buildroot/package/bdwgc/bdwgc.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# bdwgc +# +################################################################################ + +BDWGC_VERSION = 8.0.0 +BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz +BDWGC_SITE = http://www.hboehm.info/gc/gc_source +BDWGC_INSTALL_STAGING = YES +BDWGC_LICENSE = bdwgc license +BDWGC_LICENSE_FILES = README.QUICK +BDWGC_DEPENDENCIES = libatomic_ops host-pkgconf +HOST_BDWGC_DEPENDENCIES = host-libatomic_ops host-pkgconf +# We're patching configure.ac +BDWGC_AUTORECONF = YES + +BDWGC_CONF_OPTS = CFLAGS_EXTRA="$(BDWGC_CFLAGS_EXTRA)" +ifeq ($(BR2_sparc),y) +BDWGC_CFLAGS_EXTRA += -DAO_NO_SPARC_V9 +endif +ifeq ($(BR2_STATIC_LIBS),y) +BDWGC_CFLAGS_EXTRA += -DGC_NO_DLOPEN +endif + +# Ensure we use the system libatomic_ops, and not the internal one. +BDWGC_CONF_OPTS += --with-libatomic-ops=yes +HOST_BDWGC_CONF_OPTS = --with-libatomic-ops=yes + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +BDWGC_CONF_OPTS += --enable-cplusplus +else +BDWGC_CONF_OPTS += --disable-cplusplus +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch b/features/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch new file mode 100644 index 00000000..298e3eba --- /dev/null +++ b/features/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch @@ -0,0 +1,28 @@ +Makefile.am: Only compile/link cppglue.cxx if --with-cplusplus is used + +Bloats libbeecrypt for no use and breaks build on systems without a C++ +compiler. + +Signed-off-by: Peter Korsgaard +--- + Makefile.am | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +Index: beecrypt-4.2.1/Makefile.am +=================================================================== +--- beecrypt-4.2.1.orig/Makefile.am ++++ beecrypt-4.2.1/Makefile.am +@@ -62,7 +62,12 @@ + + lib_LTLIBRARIES = libbeecrypt.la + +-libbeecrypt_la_SOURCES = aes.c base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhies.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c dsa.c elgamal.c endianness.c entropy.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha224.c hmacsha256.c md4.c md5.c hmacsha384.c hmacsha512.c memchunk.c mp.c mpbarrett.c mpnumber.c mpprime.c mtprng.c pkcs1.c pkcs12.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c rsakp.c rsapk.c sha1.c sha224.c sha256.c sha384.c sha512.c sha2k32.c sha2k64.c timestamp.c cppglue.cxx ++libbeecrypt_la_SOURCES = aes.c base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhies.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c dsa.c elgamal.c endianness.c entropy.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha224.c hmacsha256.c md4.c md5.c hmacsha384.c hmacsha512.c memchunk.c mp.c mpbarrett.c mpnumber.c mpprime.c mtprng.c pkcs1.c pkcs12.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c rsakp.c rsapk.c sha1.c sha224.c sha256.c sha384.c sha512.c sha2k32.c sha2k64.c timestamp.c ++ ++if WITH_CPLUSPLUS ++libbeecrypt_la_SOURCES += cppglue.cxx ++endif ++ + libbeecrypt_la_DEPENDENCIES = $(BEECRYPT_OBJECTS) + libbeecrypt_la_LIBADD = blowfishopt.lo mpopt.lo sha1opt.lo $(OPENMP_LIBS) + libbeecrypt_la_LDFLAGS = -no-undefined -version-info $(LIBBEECRYPT_LT_CURRENT):$(LIBBEECRYPT_LT_REVISION):$(LIBBEECRYPT_LT_AGE) diff --git a/features/buildroot/package/beecrypt/0002-build-system.patch b/features/buildroot/package/beecrypt/0002-build-system.patch new file mode 100644 index 00000000..05746899 --- /dev/null +++ b/features/buildroot/package/beecrypt/0002-build-system.patch @@ -0,0 +1,173 @@ +Fix build with BR2_ENABLE_DEBUG=yes, no need for expert mode anymore + +Otherwise configure issues this error message: +configure: error: --enable-debug cannot be used in conjunction with --enable-expert-mode + +Downloaded from Gentoo: +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/beecrypt/files/beecrypt-4.2.1-build-system.patch?revision=1.2&view=markup + +This patch also removes the hard-coded CFLAGS provided by beecrypt in favour +of the CFLAGS provided by buildroot. + +Signed-off-by: Bernd Kuhls + +--- beecrypt-4.2.1/configure.ac ++++ beecrypt-4.2.1/configure.ac +@@ -11,7 +11,7 @@ + + # Checks for package options + AC_ARG_ENABLE(expert-mode, [ --enable-expert-mode follow user-defined CFLAGS settings [[default=no]]],[ +- ac_enable_expert_mode=yes ++ ac_enable_expert_mode=$enableval + ],[ + if test "X$CFLAGS" != "X"; then + echo "enabling expert mode" +@@ -25,7 +25,7 @@ + if test "$ac_enable_expert_mode" = yes; then + AC_MSG_ERROR([--enable-debug cannot be used in conjunction with --enable-expert-mode]) + fi +- ac_enable_debug=yes ++ ac_enable_debug=$enableval + ],[ + ac_enable_debug=no + ]) +@@ -456,7 +456,7 @@ + ac_cv_python_include="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'`" + ]) + AC_CACHE_CHECK([where to install python libraries], ac_cv_python_libdir, [ +- ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib()'` ++ ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, 0)'` + ]) + fi + fi +--- beecrypt-4.2.1/acinclude.m4 ++++ beecrypt-4.2.1/acinclude.m4 +@@ -498,15 +498,6 @@ AC_DEFUN([BEE_GNU_CC],[ + AC_SUBST(OPENMP_LIBS,"-lgomp") + fi + case $bc_target_arch in +- x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona) +- CC="$CC -m64" +- ;; +- i[[3456]]86 | \ +- pentium* | \ +- athlon*) +- CC="$CC -m32" +- CCAS="$CCAS -m32" +- ;; + ia64) + case $target_os in + # HP/UX on Itanium needs to be told that a long is 64-bit! +@@ -525,17 +516,8 @@ AC_DEFUN([BEE_GNU_CC],[ + aix*) + CC="$CC -maix64" + ;; +- linux*) +- CC="$CC -m64" +- ;; + esac + ;; +- sparc | sparcv8*) +- CC="$CC -m32" +- ;; +- sparc64 | sparcv9*) +- CC="$CC -m64" +- ;; + esac + # Certain platforms needs special flags for multi-threaded code + if test "$ac_enable_threads" = yes; then +@@ -646,14 +646,6 @@ dnl BEE_GNU_CXX + AC_DEFUN([BEE_GNU_CXX],[ + AC_REQUIRE([AC_PROG_CXX]) + case $bc_target_arch in +- x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona | core2) +- CXX="$CXX -m64" +- ;; +- i[[3456]]86 | \ +- pentium* | \ +- athlon*) +- CXX="$CXX -m32" +- ;; + ia64) + case $target_os in + # HP/UX on Itanium needs to be told that a long is 64-bit! +@@ -672,17 +664,8 @@ AC_DEFUN([BEE_GNU_CXX],[ + aix*) + CXX="$CXX -maix64" + ;; +- linux*) +- CXX="$CXX -m64" +- ;; + esac + ;; +- sparc | sparcv8*) +- CXX="$CXX -m32" +- ;; +- sparc64 | sparcv9*) +- CXX="$CXX -m64" +- ;; + esac + # Certain platforms needs special flags for multi-threaded code + if test "$ac_enable_threads" = yes; then +--- beecrypt-4.2.1/java/Makefile.am ++++ beecrypt-4.2.1/java/Makefile.am +@@ -26,7 +26,7 @@ + + INCLUDES = -I$(top_srcdir)/include + +-libaltdir=$(prefix)/lib@LIBALT@ ++libaltdir=$(libdir) + + libalt_LTLIBRARIES = libbeecrypt_java.la + +--- beecrypt-4.2.1/acinclude.m4 ++++ beecrypt-4.2.1/acinclude.m4 +@@ -1589,20 +1589,5 @@ + AC_SUBST(TYPEDEF_BC_THREADID_T,$bc_typedef_bc_threadid_t) + ]) +- +-AH_BOTTOM([ +-#if ENABLE_THREADS +-# ifndef _REENTRANT +-# define _REENTRANT +-# endif +-# if LINUX +-# define _LIBC_REENTRANT +-# endif +-#else +-# ifdef _REENTRANT +-# undef _REENTRANT +-# endif +-#endif +-]) + + + dnl BEE_THREAD_LOCAL_STORAGE +@@ -1623,7 +1609,5 @@ + ]) + + AH_BOTTOM([ +-#if !ENABLE_THREAD_LOCAL_STORAGE +-# define __thread +-#endif ++#include "config.threads.h" + ]) +--- beecrypt-4.2.1/config.threads.h ++++ beecrypt-4.2.1/config.threads.h +@@ -0,0 +1,16 @@ ++#if ENABLE_THREADS ++# ifndef _REENTRANT ++# define _REENTRANT ++# endif ++# if LINUX ++# define _LIBC_REENTRANT ++# endif ++#else ++# ifdef _REENTRANT ++# undef _REENTRANT ++# endif ++#endif ++ ++#if !ENABLE_THREAD_LOCAL_STORAGE ++# define __thread ++#endif diff --git a/features/buildroot/package/beecrypt/0003-don-t-check-for-cplusplus-compiler.patch b/features/buildroot/package/beecrypt/0003-don-t-check-for-cplusplus-compiler.patch new file mode 100644 index 00000000..32f16799 --- /dev/null +++ b/features/buildroot/package/beecrypt/0003-don-t-check-for-cplusplus-compiler.patch @@ -0,0 +1,27 @@ +configure.ac: don't check for C++ compiler + +Signed-off-by: Fabrice Fontaine + +diff -durN beecrypt-4.2.1-orig/configure.ac beecrypt-4.2.1/configure.ac +--- beecrypt-4.2.1-orig/configure.ac 2019-03-01 19:58:16.516117640 +0100 ++++ beecrypt-4.2.1/configure.ac 2019-03-01 21:10:17.707391803 +0100 +@@ -119,9 +119,6 @@ + + # Checks for C compiler and preprocessor + AC_PROG_CC +-AC_PROG_CPP +-AC_PROG_CXX +-AC_PROG_CXXCPP + AM_PROG_AS + AC_PROG_LD + AC_PROG_LN_S +@@ -133,9 +130,6 @@ + AC_LANG_PUSH(C) + AC_OPENMP + AC_LANG_POP(C) +-AC_LANG_PUSH(C++) +-AC_OPENMP +-AC_LANG_POP(C++) + + # Checks for compiler characteristics and flags + if test "$ac_enable_expert_mode" = no; then diff --git a/features/buildroot/package/beecrypt/Config.in b/features/buildroot/package/beecrypt/Config.in new file mode 100644 index 00000000..9aec85af --- /dev/null +++ b/features/buildroot/package/beecrypt/Config.in @@ -0,0 +1,10 @@ +comment "beecrypt needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_BEECRYPT + bool "beecrypt" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Beecrypt is a general-purpose cryptography library. + + http://beecrypt.sf.net diff --git a/features/buildroot/package/beecrypt/beecrypt.hash b/features/buildroot/package/beecrypt/beecrypt.hash new file mode 100644 index 00000000..e697c26f --- /dev/null +++ b/features/buildroot/package/beecrypt/beecrypt.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 286f1f56080d1a6b1d024003a5fa2158f4ff82cae0c6829d3c476a4b5898c55d beecrypt-4.2.1.tar.gz diff --git a/features/buildroot/package/beecrypt/beecrypt.mk b/features/buildroot/package/beecrypt/beecrypt.mk new file mode 100644 index 00000000..f13f72c8 --- /dev/null +++ b/features/buildroot/package/beecrypt/beecrypt.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# beecrypt +# +################################################################################ + +BEECRYPT_VERSION = 4.2.1 +BEECRYPT_SITE = http://downloads.sourceforge.net/project/beecrypt/beecrypt/$(BEECRYPT_VERSION) +BEECRYPT_AUTORECONF = YES +BEECRYPT_INSTALL_STAGING = YES +BEECRYPT_LICENSE = LGPL-2.1+ +BEECRYPT_LICENSE_FILES = COPYING.LIB + +BEECRYPT_CONF_OPTS = \ + --disable-expert-mode \ + --without-java \ + --without-python \ + --disable-openmp \ + --without-cplusplus + +# disable optimized m68k assembly as it doesn't compile for coldfire +ifeq ($(BR2_m68k_cf),y) +BEECRYPT_CONF_OPTS += --enable-debug +endif + +# arm asm optimization doesn't work for thumb-only +ifeq ($(BR2_arm):$(BR2_ARM_CPU_HAS_ARM),y:) +BEECRYPT_CONF_OPTS += --enable-debug +endif + +# automake/libtool uses the C++ compiler to link libbeecrypt because of +# (the optional) cppglue.cxx. Force it to use the C compiler instead. +define BEECRYPT_LINK_WITH_CC + $(SED) 's/--tag=CXX/--tag=CC/g' $(@D)/Makefile +endef +BEECRYPT_POST_CONFIGURE_HOOKS += BEECRYPT_LINK_WITH_CC + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bellagio/0001-drop-werror.patch b/features/buildroot/package/bellagio/0001-drop-werror.patch new file mode 100644 index 00000000..39baf421 --- /dev/null +++ b/features/buildroot/package/bellagio/0001-drop-werror.patch @@ -0,0 +1,22 @@ +[PATCH] don't force -Werror in CFLAGS + +Released software shouldn't get built with -Werror. + +Signed-of-by: Peter Korsgaard +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: libomxil-bellagio-0.9.3/configure.ac +=================================================================== +--- libomxil-bellagio-0.9.3.orig/configure.ac ++++ libomxil-bellagio-0.9.3/configure.ac +@@ -5,7 +5,7 @@ + AC_PREREQ([2.59]) + + AC_CONFIG_HEADERS([config.h]) +-CFLAGS="${CFLAGS} -Wall -Werror" ++CFLAGS="${CFLAGS} -Wall" + + ################################################################################ + # Set the shared versioning info, according to section 6.3 of the libtool info # diff --git a/features/buildroot/package/bellagio/0002-dynamicloader-linking.patch b/features/buildroot/package/bellagio/0002-dynamicloader-linking.patch new file mode 100644 index 00000000..5e4243d5 --- /dev/null +++ b/features/buildroot/package/bellagio/0002-dynamicloader-linking.patch @@ -0,0 +1,16 @@ +When libomxdynamicloader.so is loaded, it complains that RM_Deinit can't be resolved. +Link explicitly against omxil-bellagio so that ld.so can find the reference. + +Signed-off-by: Qais Yousef + +--- bellagio-0.9.3/src/dynamic_loader/Makefile.am.old 2012-03-23 15:07:47.379021034 +0000 ++++ bellagio-0.9.3/src/dynamic_loader/Makefile.am 2012-03-23 15:08:47.563034818 +0000 +@@ -3,7 +3,7 @@ + omxdynamicloader_LTLIBRARIES = libomxdynamicloader.la + libomxdynamicloader_la_SOURCES = ste_dynamic_component_loader.c ste_dynamic_component_loader.h + +-libomxdynamicloader_la_LDFLAGS = ++libomxdynamicloader_la_LDFLAGS = -lomxil-bellagio -L$(abs_top_srcdir)/src/.libs + libomxdynamicloader_la_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base \ diff --git a/features/buildroot/package/bellagio/0003-parallel-build.patch b/features/buildroot/package/bellagio/0003-parallel-build.patch new file mode 100644 index 00000000..767bbeb2 --- /dev/null +++ b/features/buildroot/package/bellagio/0003-parallel-build.patch @@ -0,0 +1,16 @@ +Fix dependency issue to allow parallel build + +Signed-off-by: Qais Yousef + +Index: bellagio-0.9.3/src/Makefile.am +=================================================================== +--- bellagio-0.9.3.orig/src/Makefile.am ++++ bellagio-0.9.3/src/Makefile.am +@@ -8,6 +8,7 @@ omxregister_bellagio_SOURCES = omxregist + omxregister_bellagio_CFLAGS = -DOMXILCOMPONENTSPATH=\"$(plugindir)/\" \ + -I$(top_srcdir)/include + omxregister_bellagio_LDFLAGS = -lomxil-bellagio -L$(builddir) ++omxregister_bellagio_DEPENDENCIES = libomxil-bellagio.la + + lib_LTLIBRARIES = libomxil-bellagio.la + libomxil_bellagio_la_SOURCES = component_loader.h \ diff --git a/features/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch b/features/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch new file mode 100644 index 00000000..f52a2c33 --- /dev/null +++ b/features/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch @@ -0,0 +1,37 @@ +We always access globalComponentList[] at indexComponent=-1 which causes a +segfault. Use i as the index instead. + +Signed-off-by: Qais Yousef + +--- bellagio-0.9.3/src/omx_reference_resource_manager.c.old 2012-03-13 10:15:25.743940980 +0000 ++++ bellagio-0.9.3/src/omx_reference_resource_manager.c 2012-03-13 10:18:02.201971009 +0000 +@@ -485,7 +485,6 @@ + OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) { + omx_base_component_PrivateType* omx_base_component_Private; + int i = 0; +- int indexComponent = -1; + + DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__); + omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate; +@@ -493,16 +492,13 @@ + while(listOfcomponentRegistered[i].component_name != NULL ) { + if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) { + // found component in the list of the resource manager +- removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp); +- break; ++ removeElemFromList(&globalComponentList[i], openmaxStandComp); ++ DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); ++ return OMX_ErrorNone; + } + i++; + } +- if (indexComponent <0) { +- // No resource to be handled +- DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); +- return OMX_ErrorNone; +- } +- DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); ++ // No resource to be handled ++ DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); + return OMX_ErrorNone; + } diff --git a/features/buildroot/package/bellagio/0005-fix-doc-installation-path.patch b/features/buildroot/package/bellagio/0005-fix-doc-installation-path.patch new file mode 100644 index 00000000..06b0743e --- /dev/null +++ b/features/buildroot/package/bellagio/0005-fix-doc-installation-path.patch @@ -0,0 +1,24 @@ +Makefile.am: fix bogus docdir definition + +The definition of the docdir variable uses $(DESTDIR). However, +automake already prefixes all *dir variables automatically with +DESTDIR, which causes the documentation to be installed in +$(DESTDIR)/$(DESTDIR)/usr/share/doc/... + +Fix this by removing the $(DESTDIR) part of the docdir definition. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.am +=================================================================== +--- a/Makefile.am ++++ b/Makefile.am +@@ -7,7 +7,7 @@ + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libomxil-bellagio.pc + +-docdir = $(DESTDIR)$(prefix)/share/doc/@PACKAGE@ ++docdir = $(prefix)/share/doc/@PACKAGE@ + doc_DATA = README \ + ChangeLog \ + TODO diff --git a/features/buildroot/package/bellagio/Config.in b/features/buildroot/package/bellagio/Config.in new file mode 100644 index 00000000..8ad18673 --- /dev/null +++ b/features/buildroot/package/bellagio/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_BELLAGIO + bool "bellagio" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_HAS_LIBOPENMAX + help + Bellagio is an opensource implementation of the + OpenMAX IL API. + + OpenMAX Integration Layer (IL) is a standard API + to access Multimedia Components on mobile platforms. + It has been defined by the Khronos group. + By means of the OpenMAX IL API, multimedia frameworks + can access hardware accelerators on platforms that + provide it. + + http://omxil.sourceforge.net/ + +if BR2_PACKAGE_BELLAGIO + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + default "bellagio" + +endif + +comment "bellagio needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/features/buildroot/package/bellagio/bellagio.hash b/features/buildroot/package/bellagio/bellagio.hash new file mode 100644 index 00000000..bd95df0f --- /dev/null +++ b/features/buildroot/package/bellagio/bellagio.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 593c0729c8ef8c1467b3bfefcf355ec19a46dd92e31bfc280e17d96b0934d74c libomxil-bellagio-0.9.3.tar.gz +sha256 a3d4e451d72288a4f8819b734ef610926213c2ba97e512add8de2f30843505a6 COPYING diff --git a/features/buildroot/package/bellagio/bellagio.mk b/features/buildroot/package/bellagio/bellagio.mk new file mode 100644 index 00000000..4e5c6912 --- /dev/null +++ b/features/buildroot/package/bellagio/bellagio.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bellagio +# +################################################################################ + +BELLAGIO_VERSION = 0.9.3 +BELLAGIO_SOURCE = libomxil-bellagio-$(BELLAGIO_VERSION).tar.gz +BELLAGIO_SITE = http://downloads.sourceforge.net/project/omxil/omxil/Bellagio%20$(BELLAGIO_VERSION) +BELLAGIO_AUTORECONF = YES +BELLAGIO_INSTALL_STAGING = YES +BELLAGIO_LICENSE = LGPL-2.1+ +BELLAGIO_LICENSE_FILES = COPYING +BELLAGIO_PROVIDES = libopenmax + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/benejson/0001-c-std.patch b/features/buildroot/package/benejson/0001-c-std.patch new file mode 100644 index 00000000..2330b790 --- /dev/null +++ b/features/buildroot/package/benejson/0001-c-std.patch @@ -0,0 +1,22 @@ +Some older toolchains do not recognize c11 as a valid standard. +Since the code actually builds well with c99, use that instead. + +The only two non-standard features used are // comments +and for(int i ...) declarations in C. + +Signed-off-by: Alex Suykov + +--- a/SConstruct ++++ b/SConstruct +@@ -9,9 +9,8 @@ mydir = os.getcwd() + #Set default C++ building flags for both libraries and executables + default_env = Environment(ENV = os.environ) + default_env.Append(CPPPATH = [mydir + '/include']) +-default_env.Append(CCFLAGS = ' -Wall -pedantic') +-default_env.Append(CFLAGS = ' -std=c11') +-default_env.Append(CXXFLAGS = ' -std=c++11') ++default_env.Append(CFLAGS = ' -Wall') ++default_env.Append(CFLAGS = ' -std=c99') + #default_env.Append(CCFLAGS = ' -O2 -fomit-frame-pointer') + default_env.Append(CCFLAGS = ' -O0 -g') + diff --git a/features/buildroot/package/benejson/Config.in b/features/buildroot/package/benejson/Config.in new file mode 100644 index 00000000..cb86d672 --- /dev/null +++ b/features/buildroot/package/benejson/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BENEJSON + bool "benejson" + depends on BR2_INSTALL_LIBSTDCPP + help + benejson is a buffering SAX-style JSON parser library. + The library package contains 3 major components: + + - benejson.js: SAX-style parser written in Javascript + - PullParser: A C++ class for JSON pull parsing + - Core: The parsing core with minimal dependencies + + https://codehero.github.io/benejson/ + +comment "benejson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/benejson/benejson.hash b/features/buildroot/package/benejson/benejson.hash new file mode 100644 index 00000000..696dc4f3 --- /dev/null +++ b/features/buildroot/package/benejson/benejson.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2ce5f3c2323500bdf651e7fcaecbd1011997141e6067567b8d2caa4cf7182f4a benejson-0.9.7.tar.gz diff --git a/features/buildroot/package/benejson/benejson.mk b/features/buildroot/package/benejson/benejson.mk new file mode 100644 index 00000000..0faf5f1c --- /dev/null +++ b/features/buildroot/package/benejson/benejson.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# benejson +# +################################################################################ + +BENEJSON_VERSION = 0.9.7 +BENEJSON_SITE = $(call github,codehero,benejson,$(BENEJSON_VERSION)) +BENEJSON_LICENSE = MIT +BENEJSON_LICENSE_FILES = LICENSE +BENEJSON_INSTALL_STAGING = YES +BENEJSON_DEPENDENCIES = host-python host-scons + +# wchar support needs to be manually disabled +ifeq ($(BR2_USE_WCHAR),) +define BENEJSON_DISABLE_WCHAR + $(SED) 's,^#define BNJ_WCHAR_SUPPORT,#undef BNJ_WCHAR_SUPPORT,' \ + $(@D)/benejson/benejson.h +endef +BENEJSON_POST_PATCH_HOOKS += BENEJSON_DISABLE_WCHAR +endif + +BENEJSON_SCONS_TARGETS = include + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BENEJSON_SCONS_TARGETS += lib/libbenejson.a +define BENEJSON_INSTALL_STATIC_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.a \ + $(1)/usr/lib/libbenejson.a +endef +endif # Static enabled + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BENEJSON_SCONS_TARGETS += lib/libbenejson.so +define BENEJSON_INSTALL_SHARED_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.so \ + $(1)/usr/lib/libbenejson.so +endef +endif # Shared enabled + +define BENEJSON_BUILD_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) CROSS=$(TARGET_CROSS) \ + $(HOST_DIR)/bin/python2 $(SCONS) $(BENEJSON_SCONS_TARGETS)) +endef + +define BENEJSON_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/include/benejson/benejson.h \ + $(STAGING_DIR)/usr/include/benejson/benejson.h; \ + $(INSTALL) -D -m 0644 $(@D)/include/benejson/pull.hh \ + $(STAGING_DIR)/usr/include/benejson/pull.hh + $(call BENEJSON_INSTALL_STATIC_LIB,$(STAGING_DIR)) + $(call BENEJSON_INSTALL_SHARED_LIB,$(STAGING_DIR)) +endef + +define BENEJSON_INSTALL_TARGET_CMDS + $(call BENEJSON_INSTALL_SHARED_LIB,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/berkeleydb/0001-cwd-db_config.patch b/features/buildroot/package/berkeleydb/0001-cwd-db_config.patch new file mode 100644 index 00000000..08ce5a39 --- /dev/null +++ b/features/buildroot/package/berkeleydb/0001-cwd-db_config.patch @@ -0,0 +1,21 @@ +Do not access DB_CONFIG when db_home is not set + +Fixes CVE-2017-10140: +https://bugzilla.redhat.com/show_bug.cgi?id=1464032#c9 + +Downloaded from +http://pkgs.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=8047fa8580659fcae740c25e91b490539b8453eb + +Signed-off-by: Bernd Kuhls + +--- db-5.3.28/src/env/env_open.c.old 2017-06-26 10:32:11.011419981 +0200 ++++ db-5.3.28/src/env/env_open.c 2017-06-26 10:32:46.893721233 +0200 +@@ -473,7 +473,7 @@ + env->db_mode = mode == 0 ? DB_MODE_660 : mode; + + /* Read the DB_CONFIG file. */ +- if ((ret = __env_read_db_config(env)) != 0) ++ if (env->db_home != NULL && (ret = __env_read_db_config(env)) != 0) + return (ret); + + /* diff --git a/features/buildroot/package/berkeleydb/0002-atomic_compare_exchange.patch b/features/buildroot/package/berkeleydb/0002-atomic_compare_exchange.patch new file mode 100644 index 00000000..81e18ac9 --- /dev/null +++ b/features/buildroot/package/berkeleydb/0002-atomic_compare_exchange.patch @@ -0,0 +1,27 @@ +Rename __atomic_compare_exchange to not clash with gcc built-in + +Downloaded from +https://src.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=d6841b3b46a51db98c162347211a5a64d154ea37 + +Signed-off-by: Bernd Kuhls + +--- db-5.3.28/src/dbinc/atomic.h.old 2018-05-23 09:20:04.216914922 +0200 ++++ db-5.3.28/src/dbinc/atomic.h 2018-05-23 09:20:49.510057897 +0200 +@@ -144,7 +144,7 @@ + #define atomic_inc(env, p) __atomic_inc(p) + #define atomic_dec(env, p) __atomic_dec(p) + #define atomic_compare_exchange(env, p, o, n) \ +- __atomic_compare_exchange((p), (o), (n)) ++ __db_atomic_compare_exchange((p), (o), (n)) + static inline int __atomic_inc(db_atomic_t *p) + { + int temp; +@@ -176,7 +176,7 @@ + * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html + * which configure could be changed to use. + */ +-static inline int __atomic_compare_exchange( ++static inline int __db_atomic_compare_exchange( + db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval) + { + atomic_value_t was; diff --git a/features/buildroot/package/berkeleydb/Config.in b/features/buildroot/package/berkeleydb/Config.in new file mode 100644 index 00000000..f32d13ab --- /dev/null +++ b/features/buildroot/package/berkeleydb/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BERKELEYDB + bool "berkeleydb" + help + The Berkeley database. A very common library for + database applications. + + http://www.sleepycat.com/products/db.shtml + +if BR2_PACKAGE_BERKELEYDB + +config BR2_PACKAGE_BERKELEYDB_COMPAT185 + bool "DB 1.85 compatibility" + help + Build and install DB 1.85 compatibility API. + +config BR2_PACKAGE_BERKELEYDB_TOOLS + bool "install tools" + help + Install berkeleydb tools, mostly useful for debugging + purposes. + +endif diff --git a/features/buildroot/package/berkeleydb/berkeleydb.hash b/features/buildroot/package/berkeleydb/berkeleydb.hash new file mode 100644 index 00000000..75293297 --- /dev/null +++ b/features/buildroot/package/berkeleydb/berkeleydb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef db-5.3.28.NC.tar.gz +sha256 b78815181a53241f9347c6b47d1031fd669946f863e1edc807a291354cec024b LICENSE diff --git a/features/buildroot/package/berkeleydb/berkeleydb.mk b/features/buildroot/package/berkeleydb/berkeleydb.mk new file mode 100644 index 00000000..e077eb46 --- /dev/null +++ b/features/buildroot/package/berkeleydb/berkeleydb.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# berkeleydb +# +################################################################################ + +# Since BerkeleyDB version 6 and above are licensed under the Affero +# GPL (AGPL), we want to keep this 'bdb' package at version 5.x to +# avoid licensing issues. +# BerkeleyDB version 6 or above should be provided by a dedicated +# package instead. +BERKELEYDB_VERSION = 5.3.28 +BERKELEYDB_SITE = http://download.oracle.com/berkeley-db +BERKELEYDB_SOURCE = db-$(BERKELEYDB_VERSION).NC.tar.gz +BERKELEYDB_SUBDIR = build_unix +BERKELEYDB_LICENSE = BerkeleyDB License +BERKELEYDB_LICENSE_FILES = LICENSE +BERKELEYDB_INSTALL_STAGING = YES +BERKELEYDB_BINARIES = db_archive db_checkpoint db_deadlock db_dump \ + db_hotbackup db_load db_log_verify db_printlog db_recover db_replicate \ + db_stat db_tuner db_upgrade db_verify + +# build directory can't be the directory where configure are there, so.. +define BERKELEYDB_CONFIGURE_CMDS + (cd $(@D)/build_unix; rm -rf config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ../dist/configure $(QUIET) \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --with-gnu-ld \ + $(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx,--disable-cxx) \ + --disable-java \ + --disable-tcl \ + $(if $(BR2_PACKAGE_BERKELEYDB_COMPAT185),--enable-compat185,--disable-compat185) \ + $(SHARED_STATIC_LIBS_OPTS) \ + --with-pic \ + --enable-o_direct \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-mutexsupport,--disable-mutexsupport) \ + ) +endef + +define HOST_BERKELEYDB_CONFIGURE_CMDS + (cd $(@D)/build_unix; rm -rf config.cache; \ + $(HOST_CONFIGURE_OPTS) \ + ../dist/configure $(QUIET) \ + --prefix=$(HOST_DIR) \ + --with-gnu-ld \ + --disable-cxx \ + --disable-java \ + --disable-tcl \ + --disable-compat185 \ + --with-pic \ + --enable-o_direct \ + --disable-mutexsupport \ + ) +endef + +ifneq ($(BR2_PACKAGE_BERKELEYDB_TOOLS),y) + +define BERKELEYDB_REMOVE_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, $(BERKELEYDB_BINARIES)) +endef + +BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_TOOLS + +endif + +define BERKELEYDB_REMOVE_DOCS + rm -rf $(TARGET_DIR)/usr/docs +endef + +BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_DOCS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/bind/0001-cross.patch b/features/buildroot/package/bind/0001-cross.patch new file mode 100644 index 00000000..5b4b1cd8 --- /dev/null +++ b/features/buildroot/package/bind/0001-cross.patch @@ -0,0 +1,18 @@ +Use host compiler to build 'gen' since it's run when building. + +Signed-off-by: Gustavo Zacarias + +diff -Nura bind-9.5.1-P1/lib/dns/Makefile.in bind-9.5.1-P1.gencross/lib/dns/Makefile.in +--- bind-9.5.1-P1/lib/dns/Makefile.in 2007-09-11 22:09:08.000000000 -0300 ++++ bind-9.5.1-P1.gencross/lib/dns/Makefile.in 2009-03-04 16:35:23.000000000 -0200 +@@ -160,8 +160,8 @@ + ./gen -s ${srcdir} > code.h + + gen: gen.c +- ${BUILD_CC} ${BUILD_CFLAGS} -I${top_srcdir}/lib/isc/include \ +- ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c ${BUILD_LIBS} ++ ${HOSTCC} ${HOST_CFLAGS} -I${top_srcdir}/lib/isc/include \ ++ ${HOST_LDFLAGS} -o $@ ${srcdir}/gen.c + + rbtdb64.@O@: rbtdb.c + diff --git a/features/buildroot/package/bind/0002-Replace-atomic-operations-in-bin-named-client.c-with.patch b/features/buildroot/package/bind/0002-Replace-atomic-operations-in-bin-named-client.c-with.patch new file mode 100644 index 00000000..2701de76 --- /dev/null +++ b/features/buildroot/package/bind/0002-Replace-atomic-operations-in-bin-named-client.c-with.patch @@ -0,0 +1,133 @@ +From ef49780d30d3ddc5735cfc32561b678a634fa72f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= +Date: Wed, 17 Apr 2019 15:22:27 +0200 +Subject: [PATCH] Replace atomic operations in bin/named/client.c with + isc_refcount reference counting + +Signed-off-by: Peter Korsgaard +--- + bin/named/client.c | 18 +++++++----------- + bin/named/include/named/interfacemgr.h | 5 +++-- + bin/named/interfacemgr.c | 7 +++++-- + 3 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/bin/named/client.c b/bin/named/client.c +index 845326abc0..29fecadca8 100644 +--- a/bin/named/client.c ++++ b/bin/named/client.c +@@ -402,12 +402,10 @@ tcpconn_detach(ns_client_t *client) { + static void + mark_tcp_active(ns_client_t *client, bool active) { + if (active && !client->tcpactive) { +- isc_atomic_xadd(&client->interface->ntcpactive, 1); ++ isc_refcount_increment0(&client->interface->ntcpactive, NULL); + client->tcpactive = active; + } else if (!active && client->tcpactive) { +- uint32_t old = +- isc_atomic_xadd(&client->interface->ntcpactive, -1); +- INSIST(old > 0); ++ isc_refcount_decrement(&client->interface->ntcpactive, NULL); + client->tcpactive = active; + } + } +@@ -554,7 +552,7 @@ exit_check(ns_client_t *client) { + if (client->mortal && TCP_CLIENT(client) && + client->newstate != NS_CLIENTSTATE_FREED && + !ns_g_clienttest && +- isc_atomic_xadd(&client->interface->ntcpaccepting, 0) == 0) ++ isc_refcount_current(&client->interface->ntcpaccepting) == 0) + { + /* Nobody else is accepting */ + client->mortal = false; +@@ -3328,7 +3326,6 @@ client_newconn(isc_task_t *task, isc_event_t *event) { + isc_result_t result; + ns_client_t *client = event->ev_arg; + isc_socket_newconnev_t *nevent = (isc_socket_newconnev_t *)event; +- uint32_t old; + + REQUIRE(event->ev_type == ISC_SOCKEVENT_NEWCONN); + REQUIRE(NS_CLIENT_VALID(client)); +@@ -3348,8 +3345,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) { + INSIST(client->naccepts == 1); + client->naccepts--; + +- old = isc_atomic_xadd(&client->interface->ntcpaccepting, -1); +- INSIST(old > 0); ++ isc_refcount_decrement(&client->interface->ntcpaccepting, NULL); + + /* + * We must take ownership of the new socket before the exit +@@ -3480,8 +3476,8 @@ client_accept(ns_client_t *client) { + * quota is tcp-clients plus the number of listening + * interfaces plus 1.) + */ +- exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) > +- (client->tcpactive ? 1 : 0)); ++ exit = (isc_refcount_current(&client->interface->ntcpactive) > ++ (client->tcpactive ? 1U : 0U)); + if (exit) { + client->newstate = NS_CLIENTSTATE_INACTIVE; + (void)exit_check(client); +@@ -3539,7 +3535,7 @@ client_accept(ns_client_t *client) { + * listening for connections itself to prevent the interface + * going dead. + */ +- isc_atomic_xadd(&client->interface->ntcpaccepting, 1); ++ isc_refcount_increment0(&client->interface->ntcpaccepting, NULL); + } + + static void +diff --git a/bin/named/include/named/interfacemgr.h b/bin/named/include/named/interfacemgr.h +index 3535ef22a8..6e10f210fd 100644 +--- a/bin/named/include/named/interfacemgr.h ++++ b/bin/named/include/named/interfacemgr.h +@@ -45,6 +45,7 @@ + #include + #include + #include ++#include + + #include + +@@ -75,11 +76,11 @@ struct ns_interface { + /*%< UDP dispatchers. */ + isc_socket_t * tcpsocket; /*%< TCP socket. */ + isc_dscp_t dscp; /*%< "listen-on" DSCP value */ +- int32_t ntcpaccepting; /*%< Number of clients ++ isc_refcount_t ntcpaccepting; /*%< Number of clients + ready to accept new + TCP connections on this + interface */ +- int32_t ntcpactive; /*%< Number of clients ++ isc_refcount_t ntcpactive; /*%< Number of clients + servicing TCP queries + (whether accepting or + connected) */ +diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c +index d9f6df5802..135533be6b 100644 +--- a/bin/named/interfacemgr.c ++++ b/bin/named/interfacemgr.c +@@ -386,8 +386,8 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr, + * connections will be handled in parallel even though there is + * only one client initially. + */ +- ifp->ntcpaccepting = 0; +- ifp->ntcpactive = 0; ++ isc_refcount_init(&ifp->ntcpaccepting, 0); ++ isc_refcount_init(&ifp->ntcpactive, 0); + + ifp->nudpdispatch = 0; + +@@ -618,6 +618,9 @@ ns_interface_destroy(ns_interface_t *ifp) { + + ns_interfacemgr_detach(&ifp->mgr); + ++ isc_refcount_destroy(&ifp->ntcpactive); ++ isc_refcount_destroy(&ifp->ntcpaccepting); ++ + ifp->magic = 0; + isc_mem_put(mctx, ifp, sizeof(*ifp)); + } +-- +2.11.0 + diff --git a/features/buildroot/package/bind/0002-dlz_open_driver.c-fix-build-without-dlfcn.h.patch b/features/buildroot/package/bind/0002-dlz_open_driver.c-fix-build-without-dlfcn.h.patch new file mode 100644 index 00000000..8b73e746 --- /dev/null +++ b/features/buildroot/package/bind/0002-dlz_open_driver.c-fix-build-without-dlfcn.h.patch @@ -0,0 +1,28 @@ +From 92b738a0fe8a7d65346de9e6dd7a8f135ee29765 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 23 Apr 2019 22:45:25 +0200 +Subject: [PATCH] dlz_open_driver.c: fix build without dlfcn.h + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://gitlab.isc.org/isc-projects/bind9/issues/995] +--- + bin/named/unix/dlz_dlopen_driver.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/bin/named/unix/dlz_dlopen_driver.c b/bin/named/unix/dlz_dlopen_driver.c +index 74d29ffa09..ab8a5c9493 100644 +--- a/bin/named/unix/dlz_dlopen_driver.c ++++ b/bin/named/unix/dlz_dlopen_driver.c +@@ -14,7 +14,9 @@ + #include + #include + #include ++#if HAVE_DLFCN_H + #include ++#endif + + #include + #include +-- +2.20.1 + diff --git a/features/buildroot/package/bind/Config.in b/features/buildroot/package/bind/Config.in new file mode 100644 index 00000000..6d4ee2e6 --- /dev/null +++ b/features/buildroot/package/bind/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_BIND + bool "bind" + depends on BR2_USE_MMU # fork() + help + BIND (Berkeley Internet Name Domain) is an + implementation of the Domain Name System (DNS) protocols + and provides an openly redistributable reference + implementation of the major components of the Domain + Name System, including: + + * a Domain Name System server (named) + * a Domain Name System resolver library + * tools for verifying the proper operation of the DNS + server + + The BIND DNS Server is used on the vast majority of name + serving machines on the Internet, providing a robust and + stable architecture on top of which an organization's naming + architecture can be built. The resolver library included in + the BIND distribution provides the standard APIs for + translation between domain names and Internet addresses and is + intended to be linked with applications requiring name + service. + + http://www.isc.org/sw/bind/ + +if BR2_PACKAGE_BIND + +config BR2_PACKAGE_BIND_SERVER + bool "Install server components" + help + Install server components (named, lwresd) + +config BR2_PACKAGE_BIND_TOOLS + bool "Install tools" + help + Install tools (dig, host, nslookup, nsupdate) + +endif diff --git a/features/buildroot/package/bind/S81named b/features/buildroot/package/bind/S81named new file mode 100644 index 00000000..1da3008a --- /dev/null +++ b/features/buildroot/package/bind/S81named @@ -0,0 +1,38 @@ +#!/bin/sh + +CONFIG=/etc/bind/named.conf +DAEMON=/usr/sbin/named + +[ -f $CONFIG ] || exit 0 + +case "$1" in + start) + if [ ! -f /etc/rndc.key ]; then + printf "Initializing bind control key: " + # if rndc.key is a symlink, the target must exist + touch /etc/rndc.key + rndc-confgen -a -r /dev/urandom 2>/dev/null && echo "OK" || echo "FAIL" + fi + printf "Starting domain name daemon: " + start-stop-daemon -S -x $DAEMON -- -c $CONFIG -u named + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping domain name daemon: " + rndc stop || start-stop-daemon -K -x $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop || true + sleep 1 + $0 start + ;; + reload|force-reload) + rndc reload || $0 restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac + +exit 0 diff --git a/features/buildroot/package/bind/bind.hash b/features/buildroot/package/bind/bind.hash new file mode 100644 index 00000000..cdd4bdd3 --- /dev/null +++ b/features/buildroot/package/bind/bind.hash @@ -0,0 +1,4 @@ +# Verified from https://ftp.isc.org/isc/bind9/9.11.6-P1/bind-9.11.6-P1.tar.gz.asc +# with key 156890685EA0DF6A1371EF2017CC5DB1F0088407 +sha256 58ace2abb4d048b67abcdef0649ecd6cbd3b0652734a41a1d34f942d5500f8ef bind-9.11.6-P1.tar.gz +sha256 cd02c93b8dcda794f55dfd1231828d69633072a98eee4874f9cf732d22d9dcde COPYRIGHT diff --git a/features/buildroot/package/bind/bind.mk b/features/buildroot/package/bind/bind.mk new file mode 100644 index 00000000..feec6fe2 --- /dev/null +++ b/features/buildroot/package/bind/bind.mk @@ -0,0 +1,132 @@ +################################################################################ +# +# bind +# +################################################################################ + +BIND_VERSION = 9.11.6-P1 +BIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION) +# bind does not support parallel builds. +BIND_MAKE = $(MAKE1) +BIND_INSTALL_STAGING = YES +BIND_CONFIG_SCRIPTS = bind9-config isc-config.sh +BIND_LICENSE = MPL-2.0 +BIND_LICENSE_FILES = COPYRIGHT +BIND_TARGET_SERVER_SBIN = arpaname ddns-confgen dnssec-checkds dnssec-coverage +BIND_TARGET_SERVER_SBIN += dnssec-importkey dnssec-keygen dnssec-revoke +BIND_TARGET_SERVER_SBIN += dnssec-settime dnssec-verify genrandom +BIND_TARGET_SERVER_SBIN += isc-hmac-fixup named-journalprint nsec3hash +BIND_TARGET_SERVER_SBIN += lwresd named named-checkconf named-checkzone +BIND_TARGET_SERVER_SBIN += named-compilezone rndc rndc-confgen dnssec-dsfromkey +BIND_TARGET_SERVER_SBIN += dnssec-keyfromlabel dnssec-signzone +BIND_TARGET_TOOLS_BIN = dig host nslookup nsupdate +BIND_CONF_ENV = \ + BUILD_CC="$(TARGET_CC)" \ + BUILD_CFLAGS="$(TARGET_CFLAGS)" +BIND_CONF_OPTS = \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-threads,--disable-threads) \ + --without-lmdb \ + --with-libjson=no \ + --with-randomdev=/dev/urandom \ + --enable-epoll \ + --with-gssapi=no \ + --enable-filter-aaaa + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BIND_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +BIND_DEPENDENCIES += zlib +else +BIND_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BIND_CONF_OPTS += --enable-linux-caps +BIND_DEPENDENCIES += libcap +else +BIND_CONF_OPTS += --disable-linux-caps +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +BIND_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr --enable-newstats +BIND_DEPENDENCIES += libxml2 +else +BIND_CONF_OPTS += --with-libxml2=no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +BIND_DEPENDENCIES += host-pkgconf openssl +BIND_CONF_OPTS += \ + --with-openssl=$(STAGING_DIR)/usr \ + --with-ecdsa=yes \ + --with-eddsa=no \ + --with-aes=yes +BIND_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` +# GOST cipher support requires openssl extra engines +ifeq ($(BR2_PACKAGE_OPENSSL_ENGINES),y) +BIND_CONF_OPTS += --with-gost=yes +else +BIND_CONF_OPTS += --with-gost=no +endif +else +BIND_CONF_OPTS += --with-openssl=no +endif + +# Used by dnssec-keymgr +ifeq ($(BR2_PACKAGE_PYTHON_PLY),y) +BIND_DEPENDENCIES += host-python-ply +BIND_CONF_OPTS += --with-python=$(HOST_DIR)/usr/bin/python +else +BIND_CONF_OPTS += --with-python=no +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +BIND_DEPENDENCIES += readline +else +BIND_CONF_OPTS += --with-readline=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +BIND_CONF_OPTS += \ + --without-dlopen \ + --without-libtool +else +BIND_CONF_OPTS += \ + --with-dlopen \ + --with-libtool +endif + +define BIND_TARGET_REMOVE_SERVER + rm -rf $(addprefix $(TARGET_DIR)/usr/sbin/, $(BIND_TARGET_SERVER_SBIN)) +endef + +define BIND_TARGET_REMOVE_TOOLS + rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_TOOLS_BIN)) +endef + +ifeq ($(BR2_PACKAGE_BIND_SERVER),y) +define BIND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(BIND_PKGDIR)/S81named \ + $(TARGET_DIR)/etc/init.d/S81named +endef +define BIND_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(BIND_PKGDIR)/named.service \ + $(TARGET_DIR)/usr/lib/systemd/system/named.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf /usr/lib/systemd/system/named.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/named.service +endef +else +BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_SERVER +endif + +ifeq ($(BR2_PACKAGE_BIND_TOOLS),) +BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_TOOLS +endif + +define BIND_USERS + named -1 named -1 * /etc/bind - - BIND daemon +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bind/named.service b/features/buildroot/package/bind/named.service new file mode 100644 index 00000000..be0158b2 --- /dev/null +++ b/features/buildroot/package/bind/named.service @@ -0,0 +1,12 @@ +[Unit] +Description=BIND Domain Name Server +Documentation=man:named(8) +After=network.target + +[Service] +ExecStart=/usr/sbin/named -f -u named +ExecReload=/usr/sbin/rndc reload +ExecStop=/usr/sbin/rndc stop + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/binutils/2.30/0001-sh-conf.patch b/features/buildroot/package/binutils/2.30/0001-sh-conf.patch new file mode 100644 index 00000000..80cf35b1 --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0001-sh-conf.patch @@ -0,0 +1,48 @@ +From b30ec72417164a2e990bc986eb0da05b7ef054fa Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +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). + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 2d615a9996..18d74ab96e 100755 +--- a/configure ++++ b/configure +@@ -3835,7 +3835,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index aae94501e4..b530e54926 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1166,7 +1166,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.14.3 + diff --git a/features/buildroot/package/binutils/2.30/0002-ld-makefile.patch b/features/buildroot/package/binutils/2.30/0002-ld-makefile.patch new file mode 100644 index 00000000..992ffaee --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0002-ld-makefile.patch @@ -0,0 +1,41 @@ +From bf6f72c4e3c57864417ac1f917404cc83af8ec14 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:40:53 +0100 +Subject: [PATCH] ld-makefile + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/Makefile.am | 2 +- + ld/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 6243c12528..3c5d6c8202 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -57,7 +57,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index 760c037f9d..6dea692869 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -446,7 +446,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include +-- +2.14.3 + diff --git a/features/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch b/features/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch new file mode 100644 index 00000000..7af98749 --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch @@ -0,0 +1,36 @@ +From c18554e56d2534cbb37d2d065d3782ce4ef2533c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:41:47 +0100 +Subject: [PATCH] check-ldrunpath-length + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/emultempl/elf32.em | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index c0925fc9b9..0ce16d73a5 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1470,6 +1470,8 @@ fragment <link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) +-- +2.14.3 + diff --git a/features/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch b/features/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch new file mode 100644 index 00000000..a110cf19 --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch @@ -0,0 +1,51 @@ +From 20fff697c52e24700e76d64d202ad7a9228b630e Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:42:48 +0100 +Subject: [PATCH] add sysroot fix from bug #3049 + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +Signed-off-by: Sven Rebhan +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/ldfile.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 6532a57d96..eefc2ebefb 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -338,18 +338,24 @@ ldfile_open_file_search (const char *arch, + directory first. */ + if (!entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) +-- +2.14.3 + diff --git a/features/buildroot/package/binutils/2.30/0005-poison-system-directories.patch b/features/buildroot/package/binutils/2.30/0005-poison-system-directories.patch new file mode 100644 index 00000000..4007be96 --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0005-poison-system-directories.patch @@ -0,0 +1,306 @@ +From 28e0da3dede55d02eb64e015d363747772694566 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texinfo | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index a846743da6..df3cd5fb60 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -27,6 +27,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 066b5146c6..11e7402909 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -785,6 +785,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1444,6 +1445,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15500,7 +15503,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index bada1b50b0..d074a3820b 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + 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 ba914b921e..9df17dab6c 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -180,6 +180,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index c89915f1aa..df430837e2 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2498,6 +2498,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 ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@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 +diff --git a/ld/ldfile.c b/ld/ldfile.c +index eefc2ebefb..bf7063ae8c 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 140ed1d9da..9965cbc04f 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -147,6 +147,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index e02fd3f1ff..5dfe9ba7e8 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -261,6 +261,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* 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 f2191602d4..037a27a24a 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -538,6 +538,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -550,6 +558,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1534,6 +1543,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1577,6 +1594,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.14.3 + diff --git a/features/buildroot/package/binutils/2.30/0006-ARC-Refactored-location-where-GOT-information-is-col.patch b/features/buildroot/package/binutils/2.30/0006-ARC-Refactored-location-where-GOT-information-is-col.patch new file mode 100644 index 00000000..396f2f14 --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0006-ARC-Refactored-location-where-GOT-information-is-col.patch @@ -0,0 +1,197 @@ +From 141346d3968bdc82d3e487f3effdc3f835a09403 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:16:21 +0100 +Subject: [PATCH] [ARC] Refactored location where GOT information is + collected. + +Change location where GOT information is collected for ARC target, avoiding +posible use conflicts of the previous .got field in the symbols hash_entry. + +bfd/ +2018-03-01 Cupertino Miranda + + * arc-got.h (get_got_entry_list_for_symbol): Changed. + * ef32-arc.c (struct elf_arc_link_hash_entry): Moved and changed. + (elf_arc_link_hash_newfunc): Changed. + (arc_elf_link_hash_table_create): Removed old initializations. + (elf_arc_relocate_section, elf_arc_finish_dynamic_symbol): Changed. + +Signed-off-by: Alexey Brodkin +--- + bfd/arc-got.h | 6 ++-- + bfd/elf32-arc.c | 77 +++++++++++++++++++++++++++---------------------- + 2 files changed, 46 insertions(+), 37 deletions(-) + +diff --git a/bfd/arc-got.h b/bfd/arc-got.h +index a86061bcb38f..81ce88fe21a0 100644 +--- a/bfd/arc-got.h ++++ b/bfd/arc-got.h +@@ -156,9 +156,11 @@ get_got_entry_list_for_symbol (bfd *abfd, + unsigned long r_symndx, + struct elf_link_hash_entry *h) + { +- if (h != NULL) ++ struct elf_arc_link_hash_entry *h1 = ++ ((struct elf_arc_link_hash_entry *) h); ++ if (h1 != NULL) + { +- return &h->got.glist; ++ return &h1->got_ents; + } + else + { +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 5921cc25259e..166a5ef604ff 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -159,6 +159,18 @@ struct arc_relocation_data + const char * symbol_name; + }; + ++/* ARC ELF linker hash entry. */ ++struct elf_arc_link_hash_entry ++{ ++ struct elf_link_hash_entry root; ++ ++ /* Track dynamic relocs copied for this symbol. */ ++ struct elf_dyn_relocs *dyn_relocs; ++ ++ struct got_entry *got_ents; ++}; ++ ++ + /* Should be included at this location due to static declarations + * defined before this point. */ + #include "arc-got.h" +@@ -275,15 +287,6 @@ struct arc_reloc_map + unsigned char elf_reloc_val; + }; + +-/* ARC ELF linker hash entry. */ +-struct elf_arc_link_hash_entry +-{ +- struct elf_link_hash_entry root; +- +- /* Track dynamic relocs copied for this symbol. */ +- struct elf_dyn_relocs *dyn_relocs; +-}; +- + /* ARC ELF linker hash table. */ + struct elf_arc_link_hash_table + { +@@ -295,28 +298,28 @@ elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) + { ++ struct elf_arc_link_hash_entry * ret = ++ (struct elf_arc_link_hash_entry *) entry; ++ + /* Allocate the structure if it has not already been allocated by a + subclass. */ +- if (entry == NULL) +- { +- entry = (struct bfd_hash_entry *) +- bfd_hash_allocate (table, +- sizeof (struct elf_arc_link_hash_entry)); +- if (entry == NULL) +- return entry; +- } ++ if (ret == NULL) ++ ret = (struct elf_arc_link_hash_entry *) ++ bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry)); ++ if (ret == NULL) ++ return (struct bfd_hash_entry *) ret; + + /* Call the allocation method of the superclass. */ +- entry = _bfd_elf_link_hash_newfunc (entry, table, string); +- if (entry != NULL) ++ ret = ((struct elf_arc_link_hash_entry *) ++ _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, ++ table, string)); ++ if (ret != NULL) + { +- struct elf_arc_link_hash_entry *eh; +- +- eh = (struct elf_arc_link_hash_entry *) entry; +- eh->dyn_relocs = NULL; ++ ret->dyn_relocs = NULL; ++ ret->got_ents = NULL; + } + +- return entry; ++ return (struct bfd_hash_entry *) ret; + } + + /* Destroy an ARC ELF linker hash table. */ +@@ -346,11 +349,6 @@ arc_elf_link_hash_table_create (bfd *abfd) + return NULL; + } + +- ret->elf.init_got_refcount.refcount = 0; +- ret->elf.init_got_refcount.glist = NULL; +- ret->elf.init_got_offset.offset = 0; +- ret->elf.init_got_offset.glist = NULL; +- + ret->elf.root.hash_table_free = elf_arc_link_hash_table_free; + + return &ret->elf.root; +@@ -1598,10 +1596,14 @@ elf_arc_relocate_section (bfd * output_bfd, + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + { +- struct elf_link_hash_entry *h_old = h; ++ struct elf_arc_link_hash_entry *ah_old = ++ (struct elf_arc_link_hash_entry *) h; + h = (struct elf_link_hash_entry *) h->root.u.i.link; +- if (h->got.glist == 0 && h_old->got.glist != h->got.glist) +- h->got.glist = h_old->got.glist; ++ struct elf_arc_link_hash_entry *ah = ++ (struct elf_arc_link_hash_entry *) h; ++ ++ if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents) ++ ah->got_ents = ah_old->got_ents; + } + + /* TODO: Need to validate what was the intention. */ +@@ -1619,6 +1621,8 @@ elf_arc_relocate_section (bfd * output_bfd, + + if (is_reloc_for_GOT (howto) && !bfd_link_pic (info)) + { ++ struct elf_arc_link_hash_entry *ah = ++ (struct elf_arc_link_hash_entry *) h; + /* TODO: Change it to use arc_do_relocation with + ARC_32 reloc. Try to use ADD_RELA macro. */ + bfd_vma relocation = +@@ -1628,8 +1632,8 @@ elf_arc_relocate_section (bfd * output_bfd, + + reloc_data.sym_section->output_section->vma) + : 0); + +- BFD_ASSERT (h->got.glist); +- bfd_vma got_offset = h->got.glist->offset; ++ BFD_ASSERT (ah->got_ents); ++ bfd_vma got_offset = ah->got_ents->offset; + bfd_put_32 (output_bfd, relocation, + htab->sgot->contents + got_offset); + } +@@ -1941,6 +1945,7 @@ elf_arc_check_relocs (bfd * abfd, + else /* Global one. */ + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + ++ + switch (r_type) + { + case R_ARC_32: +@@ -2387,7 +2392,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd, + create respective dynamic relocs. */ + /* TODO: Make function to get list and not access the list directly. */ + /* TODO: Move function to relocate_section create this relocs eagerly. */ +- create_got_dynrelocs_for_got_info (&h->got.glist, ++ struct elf_arc_link_hash_entry *ah = ++ (struct elf_arc_link_hash_entry *) h; ++ create_got_dynrelocs_for_got_info (&ah->got_ents, + output_bfd, + info, + h); +-- +2.17.1 + diff --git a/features/buildroot/package/binutils/2.30/0007-ARC-Improved-robustness.-Return-FALSE-in-case-of-NUL.patch b/features/buildroot/package/binutils/2.30/0007-ARC-Improved-robustness.-Return-FALSE-in-case-of-NUL.patch new file mode 100644 index 00000000..0633692c --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0007-ARC-Improved-robustness.-Return-FALSE-in-case-of-NUL.patch @@ -0,0 +1,34 @@ +From 4bac50c2c94023cb1b5bf947abfb1c72eeeb12d5 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:33:48 +0100 +Subject: [PATCH] [ARC] Improved robustness. Return FALSE in case of NULL + pointer. + +bfd/ +2018-03-01 Cupertino Miranda + + * elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case + arc_htab is NULL. + +Signed-off-by: Alexey Brodkin +--- + bfd/elf32-arc.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 166a5ef604ff..72b808b99127 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -2403,6 +2403,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd, + { + struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info); + ++ if(arc_htab == NULL) ++ return FALSE; ++ + if (h->dynindx == -1 + || (h->root.type != bfd_link_hash_defined + && h->root.type != bfd_link_hash_defweak) +-- +2.17.1 + diff --git a/features/buildroot/package/binutils/2.30/0008-ARC-Make-sure-global-symbol-is-not-an-indirect-or-wa.patch b/features/buildroot/package/binutils/2.30/0008-ARC-Make-sure-global-symbol-is-not-an-indirect-or-wa.patch new file mode 100644 index 00000000..2ffe9c97 --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0008-ARC-Make-sure-global-symbol-is-not-an-indirect-or-wa.patch @@ -0,0 +1,42 @@ +From b182c9f81daa08cf18cd78af3e7aca74640e8551 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:38:14 +0100 +Subject: [PATCH] [ARC] Make sure global symbol is not an indirect or + warning. + +Problem identified in the context of glibc with latest upstream binutils. +Dynamic symbol space was being reserved but, no actual information for the +symbol was being set. Data for the symbol was kept initialized with -1. +No easy test case was possible to be created. + +bfd/ +2018-03-01 Cupertino Miranda + + * elf32-arc.c (elf_arc_check_relocs): Changed. + +Signed-off-by: Alexey Brodkin +--- + bfd/elf32-arc.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 72b808b99127..6f6470f6f202 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -1943,7 +1943,12 @@ elf_arc_check_relocs (bfd * abfd, + if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */ + h = NULL; + else /* Global one. */ +- h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ { ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *) h->root.u.i.link; ++ } + + + switch (r_type) +-- +2.17.1 + diff --git a/features/buildroot/package/binutils/2.30/0009-ARC-PLT-information-was-still-being-generated-when-s.patch b/features/buildroot/package/binutils/2.30/0009-ARC-PLT-information-was-still-being-generated-when-s.patch new file mode 100644 index 00000000..a5bcb94d --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0009-ARC-PLT-information-was-still-being-generated-when-s.patch @@ -0,0 +1,35 @@ +From e2f2d7f939435280003983ef822acd0844648643 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:44:29 +0100 +Subject: [PATCH] [ARC] PLT information was still being generated when + symbol was forced_local. + +A change upstream reveiled this issue, triggering an assert when linking glibc. + +bfd/ +2018-03-01 Cupertino Miranda + + * elf32-arc.c (elf_arc_check_relocs): Changed. + +Signed-off-by: Alexey Brodkin +--- + bfd/elf32-arc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 6f6470f6f202..184957c7d750 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -2024,7 +2024,8 @@ elf_arc_check_relocs (bfd * abfd, + if (h == NULL) + continue; + else +- h->needs_plt = 1; ++ if(h->forced_local == 0) ++ h->needs_plt = 1; + } + + /* Add info to the symbol got_entry_list. */ +-- +2.17.1 + diff --git a/features/buildroot/package/binutils/2.30/0010-gas-use-literals-const16-for-xtensa-loop-relaxation.patch b/features/buildroot/package/binutils/2.30/0010-gas-use-literals-const16-for-xtensa-loop-relaxation.patch new file mode 100644 index 00000000..ed617bca --- /dev/null +++ b/features/buildroot/package/binutils/2.30/0010-gas-use-literals-const16-for-xtensa-loop-relaxation.patch @@ -0,0 +1,294 @@ +From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Tue, 2 Apr 2019 14:32:42 -0700 +Subject: [PATCH] gas: use literals/const16 for xtensa loop relaxation + +Loop opcode relaxation that uses addi/addmi doesn't work well with other +relaxations that may cause code movement. Instead of encoding fixed loop +end offset in the relaxed sequence use l32r or a pair of const16 to load +loop end address. This way the address of the loop end gets a relocation +record and it gets updated appropriately. + +gas/ +2019-04-02 Max Filippov + + * config/tc-xtensa.c (convert_frag_immed): Drop + convert_frag_immed_finish_loop invocation. + (convert_frag_immed_finish_loop): Drop declaration and + definition. + * config/xtensa-relax.c (widen_spec_list): Replace loop + widening that uses addi/addmi with widening that uses l32r + and const16. + +Signed-off-by: Max Filippov +--- + gas/config/tc-xtensa.c | 120 ---------------------------------------------- + gas/config/xtensa-relax.c | 77 ++++++++++++++++++++--------- + 2 files changed, 55 insertions(+), 142 deletions(-) + +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index 3bdbbc931cfc..0cc06361cf6f 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP) + static fixS *fix_new_exp_in_seg + (segT, subsegT, fragS *, int, int, expressionS *, int, + bfd_reloc_code_real_type); +-static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *); + + static void + convert_frag_immed (segT segP, +@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP, + } + } + +- if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1) +- convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn); +- + if (expanded && is_direct_call_opcode (orig_tinsn.opcode)) + { + /* Add an expansion note on the expanded instruction. */ +@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg, + } + + +-/* Relax a loop instruction so that it can span loop >256 bytes. +- +- loop as, .L1 +- .L0: +- rsr as, LEND +- wsr as, LBEG +- addi as, as, lo8 (label-.L1) +- addmi as, as, mid8 (label-.L1) +- wsr as, LEND +- isync +- rsr as, LCOUNT +- addi as, as, 1 +- .L1: +- <> +- label: +-*/ +- +-static void +-convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn) +-{ +- TInsn loop_insn; +- TInsn addi_insn; +- TInsn addmi_insn; +- unsigned long target; +- static xtensa_insnbuf insnbuf = NULL; +- unsigned int loop_length, loop_length_hi, loop_length_lo; +- xtensa_isa isa = xtensa_default_isa; +- addressT loop_offset; +- addressT addi_offset = 9; +- addressT addmi_offset = 12; +- fragS *next_fragP; +- int target_count; +- +- if (!insnbuf) +- insnbuf = xtensa_insnbuf_alloc (isa); +- +- /* Get the loop offset. */ +- loop_offset = get_expanded_loop_offset (tinsn->opcode); +- +- /* Validate that there really is a LOOP at the loop_offset. Because +- loops are not bundleable, we can assume that the instruction will be +- in slot 0. */ +- tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0); +- tinsn_immed_from_frag (&loop_insn, fragP, 0); +- +- gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1); +- addi_offset += loop_offset; +- addmi_offset += loop_offset; +- +- gas_assert (tinsn->ntok == 2); +- if (tinsn->tok[1].X_op == O_constant) +- target = tinsn->tok[1].X_add_number; +- else if (tinsn->tok[1].X_op == O_symbol) +- { +- /* Find the fragment. */ +- symbolS *sym = tinsn->tok[1].X_add_symbol; +- gas_assert (S_GET_SEGMENT (sym) == segP +- || S_GET_SEGMENT (sym) == absolute_section); +- target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number); +- } +- else +- { +- as_bad (_("invalid expression evaluation type %d"), tinsn->tok[1].X_op); +- target = 0; +- } +- +- loop_length = target - (fragP->fr_address + fragP->fr_fix); +- loop_length_hi = loop_length & ~0x0ff; +- loop_length_lo = loop_length & 0x0ff; +- if (loop_length_lo >= 128) +- { +- loop_length_lo -= 256; +- loop_length_hi += 256; +- } +- +- /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most +- 32512. If the loop is larger than that, then we just fail. */ +- if (loop_length_hi > 32512) +- as_bad_where (fragP->fr_file, fragP->fr_line, +- _("loop too long for LOOP instruction")); +- +- tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0); +- gas_assert (addi_insn.opcode == xtensa_addi_opcode); +- +- tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0); +- gas_assert (addmi_insn.opcode == xtensa_addmi_opcode); +- +- set_expr_const (&addi_insn.tok[2], loop_length_lo); +- tinsn_to_insnbuf (&addi_insn, insnbuf); +- +- fragP->tc_frag_data.is_insn = TRUE; +- xtensa_insnbuf_to_chars +- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0); +- +- set_expr_const (&addmi_insn.tok[2], loop_length_hi); +- tinsn_to_insnbuf (&addmi_insn, insnbuf); +- xtensa_insnbuf_to_chars +- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0); +- +- /* Walk through all of the frags from here to the loop end +- and mark them as no_transform to keep them from being modified +- by the linker. If we ever have a relocation for the +- addi/addmi of the difference of two symbols we can remove this. */ +- +- target_count = 0; +- for (next_fragP = fragP; next_fragP != NULL; +- next_fragP = next_fragP->fr_next) +- { +- next_fragP->tc_frag_data.is_no_transform = TRUE; +- if (next_fragP->tc_frag_data.is_loop_target) +- target_count++; +- if (target_count == 2) +- break; +- } +-} +- + + /* A map that keeps information on a per-subsegment basis. This is + maintained during initial assembly, but is invalid once the +diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c +index cb296ed85ed2..daf15d52c259 100644 +--- a/gas/config/xtensa-relax.c ++++ b/gas/config/xtensa-relax.c +@@ -87,13 +87,7 @@ + when the first and second operands are not the same as specified + by the "| %at!=%as" precondition clause. + {"l32i %at,%as,%imm | %at!=%as", +- "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} +- +- There is special case for loop instructions here, but because we do +- not currently have the ability to represent the difference of two +- symbols, the conversion requires special code in the assembler to +- write the operands of the addi/addmi pair representing the +- difference of the old and new loop end label. */ ++ "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} */ + + #include "as.h" + #include "xtensa-isa.h" +@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] = + {"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16", + "const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0"}, + +- /* This is only PART of the loop instruction. In addition, +- hardcoded into its use is a modification of the final operand in +- the instruction in bytes 9 and 12. */ +- {"loop %as,%label | %as!=1 ? IsaUseLoops", ++ /* Widening loops with literals. */ ++ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "loop %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "beqz %as,%label;" ++ "bltz %as,%label;" ++ "loopgtz %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "beqz %as,%label;" ++ "loopnez %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ ++ /* Widening loops with const16. */ ++ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "loop %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, +- {"loopgtz %as,%label | %as!=1 ? IsaUseLoops", ++ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "beqz %as,%label;" + "bltz %as,%label;" + "loopgtz %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, +- {"loopnez %as,%label | %as!=1 ? IsaUseLoops", ++ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "beqz %as,%label;" + "loopnez %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, + + /* Relaxing to wide branches. Order is important here. With wide +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.31.1/0001-sh-conf.patch b/features/buildroot/package/binutils/2.31.1/0001-sh-conf.patch new file mode 100644 index 00000000..9e77c12b --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0001-sh-conf.patch @@ -0,0 +1,48 @@ +From ac36af7d97d7920512068316fac6159aead97a01 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +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). + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 462ad053066..27cb5571d0d 100755 +--- a/configure ++++ b/configure +@@ -3855,7 +3855,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index a638f694134..2fd7bce1576 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1152,7 +1152,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.14.4 + diff --git a/features/buildroot/package/binutils/2.31.1/0005-poison-system-directories.patch b/features/buildroot/package/binutils/2.31.1/0005-poison-system-directories.patch new file mode 100644 index 00000000..90c7ac76 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0005-poison-system-directories.patch @@ -0,0 +1,306 @@ +From 7d1e6ed1d57e839207e0ece7561bd4709032de9f Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index d93c9b0..5da2742 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -31,6 +31,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 300a272..d68890f 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -822,6 +822,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1486,6 +1487,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15803,7 +15806,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index d10c553..9f1b57b 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + 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 ba914b9..9df17da 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -180,6 +180,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index 40d79dd..137d46c 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -2479,6 +2479,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 ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@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 +diff --git a/ld/ldfile.c b/ld/ldfile.c +index b3d166c..3dcbf66 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 04d6fd5..d7df005 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -148,6 +148,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index f31eeb2..25f8497 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -268,6 +268,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* 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 86a033a..f07f095 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -543,6 +543,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -555,6 +563,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1543,6 +1552,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1586,6 +1603,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.7.4 + diff --git a/features/buildroot/package/binutils/2.31.1/0006-Refactored-location-where-GOT-information-is-collect.patch b/features/buildroot/package/binutils/2.31.1/0006-Refactored-location-where-GOT-information-is-collect.patch new file mode 100644 index 00000000..306c65fd --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0006-Refactored-location-where-GOT-information-is-collect.patch @@ -0,0 +1,198 @@ +From d930affa2d475d1cc6792f1e6d56bef3d6c617db Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:16:21 +0100 +Subject: [PATCH] Refactored location where GOT information is collected. + +Change location where GOT information is collected for ARC target, avoiding +posible use conflicts of the previous .got field in the symbols hash_entry. + +bfd/ +2018-03-01 Cupertino Miranda + + * arc-got.h (get_got_entry_list_for_symbol): Changed. + * ef32-arc.c (struct elf_arc_link_hash_entry): Moved and changed. + (elf_arc_link_hash_newfunc): Changed. + (arc_elf_link_hash_table_create): Removed old initializations. + (elf_arc_relocate_section, elf_arc_finish_dynamic_symbol): Changed. + +Signed-off-by: Alexey Brodkin +[Romain: rebase on top of 2.31] +Signed-off-by: Romain Naour +--- + bfd/arc-got.h | 6 +++-- + bfd/elf32-arc.c | 77 +++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 46 insertions(+), 37 deletions(-) + +diff --git a/bfd/arc-got.h b/bfd/arc-got.h +index a86061bcb38..81ce88fe21a 100644 +--- a/bfd/arc-got.h ++++ b/bfd/arc-got.h +@@ -156,9 +156,11 @@ get_got_entry_list_for_symbol (bfd *abfd, + unsigned long r_symndx, + struct elf_link_hash_entry *h) + { +- if (h != NULL) ++ struct elf_arc_link_hash_entry *h1 = ++ ((struct elf_arc_link_hash_entry *) h); ++ if (h1 != NULL) + { +- return &h->got.glist; ++ return &h1->got_ents; + } + else + { +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index a48ef0ca15f..ab84de43815 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -160,6 +160,18 @@ struct arc_relocation_data + const char * symbol_name; + }; + ++/* ARC ELF linker hash entry. */ ++struct elf_arc_link_hash_entry ++{ ++ struct elf_link_hash_entry root; ++ ++ /* Track dynamic relocs copied for this symbol. */ ++ struct elf_dyn_relocs *dyn_relocs; ++ ++ struct got_entry *got_ents; ++}; ++ ++ + /* Should be included at this location due to static declarations + defined before this point. */ + #include "arc-got.h" +@@ -281,15 +293,6 @@ struct arc_reloc_map + unsigned char elf_reloc_val; + }; + +-/* ARC ELF linker hash entry. */ +-struct elf_arc_link_hash_entry +-{ +- struct elf_link_hash_entry root; +- +- /* Track dynamic relocs copied for this symbol. */ +- struct elf_dyn_relocs *dyn_relocs; +-}; +- + /* ARC ELF linker hash table. */ + struct elf_arc_link_hash_table + { +@@ -301,28 +304,28 @@ elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) + { ++ struct elf_arc_link_hash_entry * ret = ++ (struct elf_arc_link_hash_entry *) entry; ++ + /* Allocate the structure if it has not already been allocated by a + subclass. */ +- if (entry == NULL) +- { +- entry = (struct bfd_hash_entry *) +- bfd_hash_allocate (table, +- sizeof (struct elf_arc_link_hash_entry)); +- if (entry == NULL) +- return entry; +- } ++ if (ret == NULL) ++ ret = (struct elf_arc_link_hash_entry *) ++ bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry)); ++ if (ret == NULL) ++ return (struct bfd_hash_entry *) ret; + + /* Call the allocation method of the superclass. */ +- entry = _bfd_elf_link_hash_newfunc (entry, table, string); +- if (entry != NULL) ++ ret = ((struct elf_arc_link_hash_entry *) ++ _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, ++ table, string)); ++ if (ret != NULL) + { +- struct elf_arc_link_hash_entry *eh; +- +- eh = (struct elf_arc_link_hash_entry *) entry; +- eh->dyn_relocs = NULL; ++ ret->dyn_relocs = NULL; ++ ret->got_ents = NULL; + } + +- return entry; ++ return (struct bfd_hash_entry *) ret; + } + + /* Destroy an ARC ELF linker hash table. */ +@@ -352,11 +355,6 @@ arc_elf_link_hash_table_create (bfd *abfd) + return NULL; + } + +- ret->elf.init_got_refcount.refcount = 0; +- ret->elf.init_got_refcount.glist = NULL; +- ret->elf.init_got_offset.offset = 0; +- ret->elf.init_got_offset.glist = NULL; +- + ret->elf.root.hash_table_free = elf_arc_link_hash_table_free; + + return &ret->elf.root; +@@ -1615,10 +1613,14 @@ elf_arc_relocate_section (bfd * output_bfd, + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + { +- struct elf_link_hash_entry *h_old = h; ++ struct elf_arc_link_hash_entry *ah_old = ++ (struct elf_arc_link_hash_entry *) h; + h = (struct elf_link_hash_entry *) h->root.u.i.link; +- if (h->got.glist == 0 && h_old->got.glist != h->got.glist) +- h->got.glist = h_old->got.glist; ++ struct elf_arc_link_hash_entry *ah = ++ (struct elf_arc_link_hash_entry *) h; ++ ++ if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents) ++ ah->got_ents = ah_old->got_ents; + } + + /* TODO: Need to validate what was the intention. */ +@@ -1636,6 +1638,8 @@ elf_arc_relocate_section (bfd * output_bfd, + + if (is_reloc_for_GOT (howto) && !bfd_link_pic (info)) + { ++ struct elf_arc_link_hash_entry *ah = ++ (struct elf_arc_link_hash_entry *) h; + /* TODO: Change it to use arc_do_relocation with + ARC_32 reloc. Try to use ADD_RELA macro. */ + bfd_vma relocation = +@@ -1645,8 +1649,8 @@ elf_arc_relocate_section (bfd * output_bfd, + + reloc_data.sym_section->output_section->vma) + : 0); + +- BFD_ASSERT (h->got.glist); +- bfd_vma got_offset = h->got.glist->offset; ++ BFD_ASSERT (ah->got_ents); ++ bfd_vma got_offset = ah->got_ents->offset; + bfd_put_32 (output_bfd, relocation, + htab->sgot->contents + got_offset); + } +@@ -1958,6 +1962,7 @@ elf_arc_check_relocs (bfd * abfd, + else /* Global one. */ + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + ++ + switch (r_type) + { + case R_ARC_32: +@@ -2404,7 +2409,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd, + create respective dynamic relocs. */ + /* TODO: Make function to get list and not access the list directly. */ + /* TODO: Move function to relocate_section create this relocs eagerly. */ +- create_got_dynrelocs_for_got_info (&h->got.glist, ++ struct elf_arc_link_hash_entry *ah = ++ (struct elf_arc_link_hash_entry *) h; ++ create_got_dynrelocs_for_got_info (&ah->got_ents, + output_bfd, + info, + h); +-- +2.14.4 + diff --git a/features/buildroot/package/binutils/2.31.1/0007-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch b/features/buildroot/package/binutils/2.31.1/0007-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch new file mode 100644 index 00000000..b6e6d202 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0007-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch @@ -0,0 +1,35 @@ +From 955176bd999fe80c5b937ab8786665079e35c387 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:33:48 +0100 +Subject: [PATCH] Improved robustness. Return FALSE in case of NULL pointer. + +bfd/ +2018-03-01 Cupertino Miranda + + * elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case + arc_htab is NULL. + +Signed-off-by: Alexey Brodkin +[Romain: rebase on top of 2.31] +Signed-off-by: Romain Naour +--- + bfd/elf32-arc.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index ab84de43815..33fc72cff6e 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -2420,6 +2420,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd, + { + struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info); + ++ if(arc_htab == NULL) ++ return FALSE; ++ + if (h->dynindx == -1 + || (h->root.type != bfd_link_hash_defined + && h->root.type != bfd_link_hash_defweak) +-- +2.14.4 + diff --git a/features/buildroot/package/binutils/2.31.1/0008-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch b/features/buildroot/package/binutils/2.31.1/0008-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch new file mode 100644 index 00000000..c3558fe0 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0008-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch @@ -0,0 +1,43 @@ +From 9d09ce14b4eef2b56f24660fd69a44acd45128b2 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:38:14 +0100 +Subject: [PATCH] Make sure global symbol is not an indirect or warning. + +Problem identified in the context of glibc with latest upstream binutils. +Dynamic symbol space was being reserved but, no actual information for the +symbol was being set. Data for the symbol was kept initialized with -1. +No easy test case was possible to be created. + +bfd/ +2018-03-01 Cupertino Miranda + + * elf32-arc.c (elf_arc_check_relocs): Changed. + +Signed-off-by: Alexey Brodkin +[Romain: rebase on top of 2.31] +Signed-off-by: Romain Naour +--- + bfd/elf32-arc.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 33fc72cff6e..9b72c5b4f4f 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -1960,7 +1960,12 @@ elf_arc_check_relocs (bfd * abfd, + if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */ + h = NULL; + else /* Global one. */ +- h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ { ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *) h->root.u.i.link; ++ } + + + switch (r_type) +-- +2.14.4 + diff --git a/features/buildroot/package/binutils/2.31.1/0009-PLT-information-was-still-being-generated-when-symbo.patch b/features/buildroot/package/binutils/2.31.1/0009-PLT-information-was-still-being-generated-when-symbo.patch new file mode 100644 index 00000000..60bb522e --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0009-PLT-information-was-still-being-generated-when-symbo.patch @@ -0,0 +1,37 @@ +From e4861c68067cb2166b4c2bb9c052abeb6ad9aaa1 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda +Date: Fri, 2 Mar 2018 17:44:29 +0100 +Subject: [PATCH] PLT information was still being generated when symbol was + forced_local. + +A change upstream reveiled this issue, triggering an assert when linking glibc. + +bfd/ +2018-03-01 Cupertino Miranda + + * elf32-arc.c (elf_arc_check_relocs): Changed. + +Signed-off-by: Alexey Brodkin +[Romain: rebase on top of 2.31] +Signed-off-by: Romain Naour +--- + bfd/elf32-arc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 9b72c5b4f4f..b40b463d34d 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -2041,7 +2041,8 @@ elf_arc_check_relocs (bfd * abfd, + if (h == NULL) + continue; + else +- h->needs_plt = 1; ++ if(h->forced_local == 0) ++ h->needs_plt = 1; + } + + /* Add info to the symbol got_entry_list. */ +-- +2.14.4 + diff --git a/features/buildroot/package/binutils/2.31.1/0010-xtensa-fix-relaxation-of-undefined-weak-references-i.patch b/features/buildroot/package/binutils/2.31.1/0010-xtensa-fix-relaxation-of-undefined-weak-references-i.patch new file mode 100644 index 00000000..660d30c3 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0010-xtensa-fix-relaxation-of-undefined-weak-references-i.patch @@ -0,0 +1,48 @@ +From 5d3a462f05cba5b0c0c96de899b84fb84155c760 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sun, 22 Jul 2018 13:52:28 -0700 +Subject: [PATCH] xtensa: fix relaxation of undefined weak references in + shared objects + +The change c451bb34ae8b ("xtensa: don't emit dynamic relocation for weak +undefined symbol") didn't properly handle shrinking of relocation +sections due to coalescing of references to a dynamic undefined weak +symbol in a shared object, which resulted in the following assertion +failure in ld when linking uClibc-ng libthread_db for xtensa: + + BFD (GNU Binutils) 2.31 internal error, aborting at elf32-xtensa.c:3269 + in elf_xtensa_finish_dynamic_sections + +Shrink dynamic relocations section for dynamic undefined weak symbols +when linking a shared object. + +bfd/ +2018-07-23 Max Filippov + + * elf32-xtensa.c (shrink_dynamic_reloc_sections): Shrink dynamic + relocations section for dynamic undefined weak symbols when + linking a shared object. + +Signed-off-by: Max Filippov +Backported from: 5d3a462f05cba5b0c0c96de899b84fb84155c760 +--- + bfd/elf32-xtensa.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c +index f7f569d0c086..a4b046e445f1 100644 +--- a/bfd/elf32-xtensa.c ++++ b/bfd/elf32-xtensa.c +@@ -10022,7 +10022,8 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info, + if ((r_type == R_XTENSA_32 || r_type == R_XTENSA_PLT) + && (input_section->flags & SEC_ALLOC) != 0 + && (dynamic_symbol || bfd_link_pic (info)) +- && (!h || h->root.type != bfd_link_hash_undefweak)) ++ && (!h || h->root.type != bfd_link_hash_undefweak ++ || (dynamic_symbol && bfd_link_dll (info)))) + { + asection *srel; + bfd_boolean is_plt = FALSE; +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.31.1/0011-xtensa-move-dynamic-relocations-sections-consistency.patch b/features/buildroot/package/binutils/2.31.1/0011-xtensa-move-dynamic-relocations-sections-consistency.patch new file mode 100644 index 00000000..2c12ce3d --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0011-xtensa-move-dynamic-relocations-sections-consistency.patch @@ -0,0 +1,90 @@ +From f82863d797e461b936dff2b659a3aa65088ee87e Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sun, 22 Jul 2018 18:59:11 -0700 +Subject: [PATCH] xtensa: move dynamic relocations sections consistency + check + +The function elf_xtensa_finish_dynamic_sections checks that sizes of +sections .rela.dyn and .rela.plt match number of corresponding relocation +records, but the check is only done when .rela.plt is non-empty, so, e.g. +it is never run for the static PIE. +Rearrange the test so that .rela.dyn and .rela.plt are checked always. + +bfd/ +2018-07-23 Max Filippov + + * elf32-xtensa.c (elf_xtensa_finish_dynamic_sections): Move + relocation sections consistency check to always check both + .rela.dyn and .rela.plt when they exist. Rearrange variable + definition and assignment places. + +Signed-off-by: Max Filippov +Backported from: f82863d797e461b936dff2b659a3aa65088ee87e +--- + bfd/elf32-xtensa.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c +index a4b046e445f1..cf085b7b0751 100644 +--- a/bfd/elf32-xtensa.c ++++ b/bfd/elf32-xtensa.c +@@ -3156,7 +3156,7 @@ elf_xtensa_finish_dynamic_sections (bfd *output_bfd, + { + struct elf_xtensa_link_hash_table *htab; + bfd *dynobj; +- asection *sdyn, *srelplt, *sgot, *sxtlit, *sgotloc; ++ asection *sdyn, *srelplt, *srelgot, *sgot, *sxtlit, *sgotloc; + Elf32_External_Dyn *dyncon, *dynconend; + int num_xtlit_entries = 0; + +@@ -3186,15 +3186,15 @@ elf_xtensa_finish_dynamic_sections (bfd *output_bfd, + } + + srelplt = htab->elf.srelplt; ++ srelgot = htab->elf.srelgot; + if (srelplt && srelplt->size != 0) + { +- asection *sgotplt, *srelgot, *spltlittbl; ++ asection *sgotplt, *spltlittbl; + int chunk, plt_chunks, plt_entries; + Elf_Internal_Rela irela; + bfd_byte *loc; + unsigned rtld_reloc; + +- srelgot = htab->elf.srelgot; + spltlittbl = htab->spltlittbl; + BFD_ASSERT (srelgot != NULL && spltlittbl != NULL); + +@@ -3260,14 +3260,6 @@ elf_xtensa_finish_dynamic_sections (bfd *output_bfd, + spltlittbl->contents + (chunk * 8) + 4); + } + +- /* All the dynamic relocations have been emitted at this point. +- Make sure the relocation sections are the correct size. */ +- if (srelgot->size != (sizeof (Elf32_External_Rela) +- * srelgot->reloc_count) +- || srelplt->size != (sizeof (Elf32_External_Rela) +- * srelplt->reloc_count)) +- abort (); +- + /* The .xt.lit.plt section has just been modified. This must + happen before the code below which combines adjacent literal + table entries, and the .xt.lit.plt contents have to be forced to +@@ -3282,6 +3274,14 @@ elf_xtensa_finish_dynamic_sections (bfd *output_bfd, + spltlittbl->flags &= ~SEC_HAS_CONTENTS; + } + ++ /* All the dynamic relocations have been emitted at this point. ++ Make sure the relocation sections are the correct size. */ ++ if ((srelgot && srelgot->size != (sizeof (Elf32_External_Rela) ++ * srelgot->reloc_count)) ++ || (srelplt && srelplt->size != (sizeof (Elf32_External_Rela) ++ * srelplt->reloc_count))) ++ abort (); ++ + /* Combine adjacent literal table entries. */ + BFD_ASSERT (! bfd_link_relocatable (info)); + sxtlit = bfd_get_section_by_name (output_bfd, ".xt.lit"); +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.31.1/0012-x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch b/features/buildroot/package/binutils/2.31.1/0012-x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch new file mode 100644 index 00000000..8a05af4b --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0012-x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch @@ -0,0 +1,568 @@ +From 6737a6b34f4823deb7142f27b4074831a37ac1e1 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Fri, 20 Jul 2018 09:18:47 -0700 +Subject: [PATCH] x86: Add a GNU_PROPERTY_X86_ISA_1_USED note if needed + +When -z separate-code, which is enabled by default for Linux/x86, is +used to create executable, ld won't place any data in the code-only +PT_LOAD segment. If there are no data sections placed before the +code-only PT_LOAD segment, the program headers won't be mapped into +any PT_LOAD segment. When the executable tries to access it (based +on the program header address passed in AT_PHDR), it will lead to +segfault. This patch inserts a GNU_PROPERTY_X86_ISA_1_USED note if +there may be no data sections before the text section so that the +first PT_LOAD segment won't be code-only and will contain the program +header. + +Testcases are adjusted to either pass "-z noseparate-code" to ld or +discard the .note.gnu.property section. A Linux/x86 run-time test is +added. + +bfd/ + + PR ld/23428 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the + separate code program header is needed, make sure that the first + read-only PT_LOAD segment has no code by adding a + GNU_PROPERTY_X86_ISA_1_USED note. + +ld/ + + PR ld/23428 + * testsuite/ld-elf/linux-x86.S: New file. + * testsuite/ld-elf/linux-x86.exp: Likewise. + * testsuite/ld-elf/pr23428.c: Likewise. + * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld + for Linux/x86 targets. + * testsuite/ld-i386/abs-iamcu.d: Likewise. + * testsuite/ld-i386/abs.d: Likewise. + * testsuite/ld-i386/pr12718.d: Likewise. + * testsuite/ld-i386/pr12921.d: Likewise. + * testsuite/ld-x86-64/abs-k1om.d: Likewise. + * testsuite/ld-x86-64/abs-l1om.d: Likewise. + * testsuite/ld-x86-64/abs.d: Likewise. + * testsuite/ld-x86-64/pr12718.d: Likewise. + * testsuite/ld-x86-64/pr12921.d: Likewise. + * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property + section. + * testsuite/ld-scripts/print-memory-usage.t: Likewise. + * testsuite/ld-scripts/size-2.t: Likewise. + * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld + to create executable if language is "asm". + +(cherry picked from commit 241e64e3b42cd9eba514b8e0ad2ef39a337f10a5) +Signed-off-by: Norbert Lange +--- + bfd/ChangeLog | 8 ++++ + bfd/elfxx-x86.c | 60 +++++++++++++++++++------- + ld/ChangeLog | 24 +++++++++++ + ld/testsuite/ld-elf/linux-x86.S | 63 ++++++++++++++++++++++++++++ + ld/testsuite/ld-elf/linux-x86.exp | 46 ++++++++++++++++++++ + ld/testsuite/ld-elf/pr23428.c | 43 +++++++++++++++++++ + ld/testsuite/ld-elf/sec64k.exp | 2 + + ld/testsuite/ld-i386/abs-iamcu.d | 2 +- + ld/testsuite/ld-i386/abs.d | 2 +- + ld/testsuite/ld-i386/pr12718.d | 2 +- + ld/testsuite/ld-i386/pr12921.d | 2 +- + ld/testsuite/ld-linkonce/zeroeh.ld | 1 + + ld/testsuite/ld-scripts/print-memory-usage.t | 2 + + ld/testsuite/ld-scripts/size-2.t | 1 + + ld/testsuite/ld-x86-64/abs-k1om.d | 2 +- + ld/testsuite/ld-x86-64/abs-l1om.d | 2 +- + ld/testsuite/ld-x86-64/abs.d | 2 +- + ld/testsuite/ld-x86-64/pr12718.d | 2 +- + ld/testsuite/ld-x86-64/pr12921.d | 2 +- + ld/testsuite/lib/ld-lib.exp | 5 ++- + 20 files changed, 248 insertions(+), 25 deletions(-) + create mode 100644 ld/testsuite/ld-elf/linux-x86.S + create mode 100644 ld/testsuite/ld-elf/linux-x86.exp + create mode 100644 ld/testsuite/ld-elf/pr23428.c + +diff --git a/bfd/ChangeLog b/bfd/ChangeLog +index 1c1174a..d3831b7 100644 +--- a/bfd/ChangeLog ++++ b/bfd/ChangeLog +@@ -1,3 +1,11 @@ ++2018-07-23 H.J. Lu ++ ++ PR ld/23428 ++ * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the ++ separate code program header is needed, make sure that the first ++ read-only PT_LOAD segment has no code by adding a ++ GNU_PROPERTY_X86_ISA_1_USED note. ++ + 2018-07-18 Nick Clifton + + * development.sh: Set to true. +diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c +index a2497aa..2e4ff88 100644 +--- a/bfd/elfxx-x86.c ++++ b/bfd/elfxx-x86.c +@@ -2524,6 +2524,7 @@ _bfd_x86_elf_link_setup_gnu_properties + const struct elf_backend_data *bed; + unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2; + unsigned int got_align; ++ bfd_boolean has_text = FALSE; + + features = 0; + if (info->ibt) +@@ -2538,24 +2539,59 @@ _bfd_x86_elf_link_setup_gnu_properties + if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour + && bfd_count_sections (pbfd) != 0) + { ++ if (!has_text) ++ { ++ /* Check if there is no non-empty text section. */ ++ sec = bfd_get_section_by_name (pbfd, ".text"); ++ if (sec != NULL && sec->size != 0) ++ has_text = TRUE; ++ } ++ + ebfd = pbfd; + + if (elf_properties (pbfd) != NULL) + break; + } + +- if (ebfd != NULL && features) ++ bed = get_elf_backend_data (info->output_bfd); ++ ++ htab = elf_x86_hash_table (info, bed->target_id); ++ if (htab == NULL) ++ return pbfd; ++ ++ if (ebfd != NULL) + { +- /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and +- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */ +- prop = _bfd_elf_get_property (ebfd, +- GNU_PROPERTY_X86_FEATURE_1_AND, +- 4); +- prop->u.number |= features; +- prop->pr_kind = property_number; ++ prop = NULL; ++ if (features) ++ { ++ /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and ++ GNU_PROPERTY_X86_FEATURE_1_SHSTK. */ ++ prop = _bfd_elf_get_property (ebfd, ++ GNU_PROPERTY_X86_FEATURE_1_AND, ++ 4); ++ prop->u.number |= features; ++ prop->pr_kind = property_number; ++ } ++ else if (has_text ++ && elf_properties (ebfd) == NULL ++ && elf_tdata (info->output_bfd)->o->build_id.sec == NULL ++ && !htab->elf.dynamic_sections_created ++ && !info->traditional_format ++ && (info->output_bfd->flags & D_PAGED) != 0 ++ && info->separate_code) ++ { ++ /* If the separate code program header is needed, make sure ++ that the first read-only PT_LOAD segment has no code by ++ adding a GNU_PROPERTY_X86_ISA_1_USED note. */ ++ prop = _bfd_elf_get_property (ebfd, ++ GNU_PROPERTY_X86_ISA_1_USED, ++ 4); ++ prop->u.number = GNU_PROPERTY_X86_ISA_1_486; ++ prop->pr_kind = property_number; ++ } + + /* Create the GNU property note section if needed. */ +- if (pbfd == NULL) ++ if (prop != NULL && pbfd == NULL) + { + sec = bfd_make_section_with_flags (ebfd, + NOTE_GNU_PROPERTY_SECTION_NAME, +@@ -2581,12 +2617,6 @@ error_alignment: + + pbfd = _bfd_elf_link_setup_gnu_properties (info); + +- bed = get_elf_backend_data (info->output_bfd); +- +- htab = elf_x86_hash_table (info, bed->target_id); +- if (htab == NULL) +- return pbfd; +- + htab->r_info = init_table->r_info; + htab->r_sym = init_table->r_sym; + +diff --git a/ld/ChangeLog b/ld/ChangeLog +index c07e442..cfadbd4 100644 +--- a/ld/ChangeLog ++++ b/ld/ChangeLog +@@ -1,3 +1,27 @@ ++2018-07-23 H.J. Lu ++ ++ PR ld/23428 ++ * testsuite/ld-elf/linux-x86.S: New file. ++ * testsuite/ld-elf/linux-x86.exp: Likewise. ++ * testsuite/ld-elf/pr23428.c: Likewise. ++ * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld ++ for Linux/x86 targets. ++ * testsuite/ld-i386/abs-iamcu.d: Likewise. ++ * testsuite/ld-i386/abs.d: Likewise. ++ * testsuite/ld-i386/pr12718.d: Likewise. ++ * testsuite/ld-i386/pr12921.d: Likewise. ++ * testsuite/ld-x86-64/abs-k1om.d: Likewise. ++ * testsuite/ld-x86-64/abs-l1om.d: Likewise. ++ * testsuite/ld-x86-64/abs.d: Likewise. ++ * testsuite/ld-x86-64/pr12718.d: Likewise. ++ * testsuite/ld-x86-64/pr12921.d: Likewise. ++ * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property ++ section. ++ * testsuite/ld-scripts/print-memory-usage.t: Likewise. ++ * testsuite/ld-scripts/size-2.t: Likewise. ++ * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to ++ create executable if language is "asm". ++ + 2018-07-18 Nick Clifton + + 2.31.1 Release point. +diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S +new file mode 100644 +index 0000000..bdf40c6 +--- /dev/null ++++ b/ld/testsuite/ld-elf/linux-x86.S +@@ -0,0 +1,63 @@ ++ .text ++ .globl _start ++ .type _start,@function ++ .p2align 4 ++_start: ++ xorl %ebp, %ebp ++#ifdef __LP64__ ++ popq %rdi ++ movq %rsp, %rsi ++ andq $~15, %rsp ++#elif defined __x86_64__ ++ mov (%rsp),%edi ++ addl $4,%esp ++ movl %esp, %esi ++ andl $~15, %esp ++#else ++ popl %esi ++ movl %esp, %ecx ++ andl $~15, %esp ++ ++ subl $8,%esp ++ pushl %ecx ++ pushl %esi ++#endif ++ ++ call main ++ ++ hlt ++ ++ .type syscall, @function ++ .globl syscall ++ .p2align 4 ++syscall: ++#ifdef __x86_64__ ++ movq %rdi, %rax /* Syscall number -> rax. */ ++ movq %rsi, %rdi /* shift arg1 - arg5. */ ++ movq %rdx, %rsi ++ movq %rcx, %rdx ++ movq %r8, %r10 ++ movq %r9, %r8 ++ movq 8(%rsp),%r9 /* arg6 is on the stack. */ ++ syscall /* Do the system call. */ ++#else ++ push %ebp ++ push %edi ++ push %esi ++ push %ebx ++ mov 0x2c(%esp),%ebp ++ mov 0x28(%esp),%edi ++ mov 0x24(%esp),%esi ++ mov 0x20(%esp),%edx ++ mov 0x1c(%esp),%ecx ++ mov 0x18(%esp),%ebx ++ mov 0x14(%esp),%eax ++ int $0x80 ++ pop %ebx ++ pop %esi ++ pop %edi ++ pop %ebp ++#endif ++ ret /* Return to caller. */ ++ .size syscall, .-syscall ++ .section .note.GNU-stack,"",@progbits +diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp +new file mode 100644 +index 0000000..36217c6 +--- /dev/null ++++ b/ld/testsuite/ld-elf/linux-x86.exp +@@ -0,0 +1,46 @@ ++# Expect script for simple native Linux/x86 tests. ++# Copyright (C) 2018 Free Software Foundation, Inc. ++# ++# This file is part of the GNU Binutils. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, ++# MA 02110-1301, USA. ++# ++ ++# Test very simple native Linux/x86 programs with linux-x86.S. ++if { ![isnative] || [which $CC] == 0 \ ++ || (![istarget "i?86-*-linux*"] \ ++ && ![istarget "x86_64-*-linux*"] \ ++ && ![istarget "amd64-*-linux*"]) } { ++ return ++} ++ ++# Add $PLT_CFLAGS if PLT is expected. ++global PLT_CFLAGS ++# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required. ++global NOPIE_CFLAGS NOPIE_LDFLAGS ++ ++run_ld_link_exec_tests [list \ ++ [list \ ++ "Run PR ld/23428 test" \ ++ "--no-dynamic-linker -z separate-code" \ ++ "" \ ++ { linux-x86.S pr23428.c } \ ++ "pr23428" \ ++ "pass.out" \ ++ "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \ ++ "asm" \ ++ ] \ ++] +diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c +new file mode 100644 +index 0000000..3631ed7 +--- /dev/null ++++ b/ld/testsuite/ld-elf/pr23428.c +@@ -0,0 +1,43 @@ ++#include ++#include ++#include ++ ++#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1) ++ ++int ++main (int argc, char **argv) ++{ ++ char **ev = &argv[argc + 1]; ++ char **evp = ev; ++ ElfW(auxv_t) *av; ++ const ElfW(Phdr) *phdr = NULL; ++ size_t phnum = 0; ++ size_t loadnum = 0; ++ int fd = STDOUT_FILENO; ++ size_t i; ++ ++ while (*evp++ != NULL) ++ ; ++ ++ av = (ElfW(auxv_t) *) evp; ++ ++ for (; av->a_type != AT_NULL; ++av) ++ switch (av->a_type) ++ { ++ case AT_PHDR: ++ phdr = (const void *) av->a_un.a_val; ++ break; ++ case AT_PHNUM: ++ phnum = av->a_un.a_val; ++ break; ++ } ++ ++ for (i = 0; i < phnum; i++, phdr++) ++ if (phdr->p_type == PT_LOAD) ++ loadnum++; ++ ++ syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n")); ++ ++ syscall (SYS_exit, !loadnum); ++ return 0; ++} +diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp +index b58139e..3909c0e 100644 +--- a/ld/testsuite/ld-elf/sec64k.exp ++++ b/ld/testsuite/ld-elf/sec64k.exp +@@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"] + foreach sfile $sfiles { puts $ofd "#source: $sfile" } + if { [istarget spu*-*-*] } { + puts $ofd "#ld: --local-store 0:0" ++ } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } { ++ puts $ofd "#ld: -z noseparate-code" + } else { + puts $ofd "#ld:" + } +diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d +index ac9beff..aba7d6b 100644 +--- a/ld/testsuite/ld-i386/abs-iamcu.d ++++ b/ld/testsuite/ld-i386/abs-iamcu.d +@@ -2,7 +2,7 @@ + #source: abs.s + #source: zero.s + #as: --32 -march=iamcu +-#ld: -m elf_iamcu ++#ld: -m elf_iamcu -z noseparate-code + #objdump: -rs -j .text + + .*: file format .* +diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d +index e660aca..191ee44 100644 +--- a/ld/testsuite/ld-i386/abs.d ++++ b/ld/testsuite/ld-i386/abs.d +@@ -2,7 +2,7 @@ + #as: --32 + #source: abs.s + #source: zero.s +-#ld: -melf_i386 ++#ld: -melf_i386 -z noseparate-code + #objdump: -rs + + .*: file format .* +diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d +index ec51540..7eba52d 100644 +--- a/ld/testsuite/ld-i386/pr12718.d ++++ b/ld/testsuite/ld-i386/pr12718.d +@@ -1,6 +1,6 @@ + #name: PR ld/12718 + #as: --32 +-#ld: -melf_i386 ++#ld: -melf_i386 -z noseparate-code + #readelf: -S + + There are 5 section headers, starting at offset 0x[0-9a-f]+: +diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d +index e49079b..ea2da3e 100644 +--- a/ld/testsuite/ld-i386/pr12921.d ++++ b/ld/testsuite/ld-i386/pr12921.d +@@ -1,6 +1,6 @@ + #name: PR ld/12921 + #as: --32 +-#ld: -melf_i386 ++#ld: -melf_i386 -z noseparate-code + #readelf: -S --wide + + There are 7 section headers, starting at offset 0x[0-9a-f]+: +diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld +index b22eaa1..f89855a 100644 +--- a/ld/testsuite/ld-linkonce/zeroeh.ld ++++ b/ld/testsuite/ld-linkonce/zeroeh.ld +@@ -2,4 +2,5 @@ SECTIONS { + .text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) } + .gcc_except_table 0x2000 : { *(.gcc_except_table) } + .eh_frame 0x4000 : { *(.eh_frame) } ++ /DISCARD/ : { *(.note.gnu.property) } + } +diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t +index 5ff057a..6eda1d2 100644 +--- a/ld/testsuite/ld-scripts/print-memory-usage.t ++++ b/ld/testsuite/ld-scripts/print-memory-usage.t +@@ -11,4 +11,6 @@ SECTIONS + *(.data) + *(.rw) + } ++ ++ /DISCARD/ : { *(.note.gnu.property) } + } +diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t +index 7238639..c3c4edd 100644 +--- a/ld/testsuite/ld-scripts/size-2.t ++++ b/ld/testsuite/ld-scripts/size-2.t +@@ -18,4 +18,5 @@ SECTIONS + LONG (SIZEOF (.tdata)) + LONG (SIZEOF (.tbss)) + } :image ++ /DISCARD/ : { *(.note.gnu.property) } + } +diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d +index 2c26639..6b0fde0 100644 +--- a/ld/testsuite/ld-x86-64/abs-k1om.d ++++ b/ld/testsuite/ld-x86-64/abs-k1om.d +@@ -2,7 +2,7 @@ + #source: ../ld-i386/abs.s + #source: ../ld-i386/zero.s + #as: --64 -march=k1om +-#ld: -m elf_k1om ++#ld: -m elf_k1om -z noseparate-code + #objdump: -rs -j .text + + .*: file format .* +diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d +index 1fb96d4..f87869f 100644 +--- a/ld/testsuite/ld-x86-64/abs-l1om.d ++++ b/ld/testsuite/ld-x86-64/abs-l1om.d +@@ -2,7 +2,7 @@ + #source: ../ld-i386/abs.s + #source: ../ld-i386/zero.s + #as: --64 -march=l1om +-#ld: -m elf_l1om ++#ld: -m elf_l1om -z noseparate-code + #objdump: -rs -j .text + #target: x86_64-*-linux* + +diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d +index b24b018..d99ab46 100644 +--- a/ld/testsuite/ld-x86-64/abs.d ++++ b/ld/testsuite/ld-x86-64/abs.d +@@ -1,7 +1,7 @@ + #name: Absolute non-overflowing relocs + #source: ../ld-i386/abs.s + #source: ../ld-i386/zero.s +-#ld: ++#ld: -z noseparate-code + #objdump: -rs + + .*: file format .* +diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d +index 07d1732..2c503ff 100644 +--- a/ld/testsuite/ld-x86-64/pr12718.d ++++ b/ld/testsuite/ld-x86-64/pr12718.d +@@ -1,6 +1,6 @@ + #name: PR ld/12718 + #as: --64 +-#ld: -melf_x86_64 ++#ld: -melf_x86_64 -z noseparate-code + #readelf: -S --wide + + There are 5 section headers, starting at offset 0x[0-9a-f]+: +diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d +index 6fe6abe..1162d55 100644 +--- a/ld/testsuite/ld-x86-64/pr12921.d ++++ b/ld/testsuite/ld-x86-64/pr12921.d +@@ -1,6 +1,6 @@ + #name: PR ld/12921 + #as: --64 +-#ld: -melf_x86_64 ++#ld: -melf_x86_64 -z noseparate-code + #readelf: -S --wide + + There are 7 section headers, starting at offset 0x[0-9a-f]+: +diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp +index cfbefe9..1095091 100644 +--- a/ld/testsuite/lib/ld-lib.exp ++++ b/ld/testsuite/lib/ld-lib.exp +@@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } { + continue + } + +- if { [ string match "c++" $lang ] } { ++ if { [ string match "asm" $lang ] } { ++ set link_proc ld_link ++ set link_cmd $ld ++ } elseif { [ string match "c++" $lang ] } { + set link_proc ld_link + set link_cmd $CXX + } else { +-- +2.9.3 + diff --git a/features/buildroot/package/binutils/2.31.1/0013-x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch b/features/buildroot/package/binutils/2.31.1/0013-x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch new file mode 100644 index 00000000..a4c48985 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0013-x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch @@ -0,0 +1,588 @@ +From d55c3e36094f06bb1fb02f5eac19fdccf1d91f7e Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Wed, 8 Aug 2018 06:09:15 -0700 +Subject: [PATCH] x86: Properly merge GNU_PROPERTY_X86_ISA_1_USED +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf8 +Content-Transfer-Encoding: 8bit + +Without the GNU_PROPERTY_X86_ISA_1_USED property, all ISAs may be used. +If a bit in the GNU_PROPERTY_X86_ISA_1_USED property is unset, the +corresponding x86 instruction set isn’t used. When merging properties +from 2 input files and one input file doesn't have the +GNU_PROPERTY_X86_ISA_1_USED property, the output file shouldn't have +it neither. This patch removes the GNU_PROPERTY_X86_ISA_1_USED +property if an input file doesn't have it. + +This patch replaces the GNU_PROPERTY_X86_ISA_1_USED property with the +GNU_PROPERTY_X86_ISA_1_NEEDED property which is the minimum ISA +requirement. + +bfd/ + + PR ld/23486 + * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove + GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it. + (_bfd_x86_elf_link_setup_gnu_properties): Adding the + GNU_PROPERTY_X86_ISA_1_NEEDED, instead of + GNU_PROPERTY_X86_ISA_1_USED, property. + +ld/ + + PR ld/23486 + * testsuite/ld-i386/i386.exp: Run PR ld/23486 tests. + * testsuite/ld-x86-64/x86-64.exp: Likewise. + * testsuite/ld-i386/pr23486a.d: New file. + * testsuite/ld-i386/pr23486b.d: Likewise. + * testsuite/ld-x86-64/pr23486a-x32.d: Likewise. + * testsuite/ld-x86-64/pr23486a.d: Likewise. + * testsuite/ld-x86-64/pr23486a.s: Likewise. + * testsuite/ld-x86-64/pr23486b-x32.d: Likewise. + * testsuite/ld-x86-64/pr23486b.d: Likewise. + * testsuite/ld-x86-64/pr23486b.s: Likewise. + * testsuite/ld-i386/property-3.r: Remove "x86 ISA used". + * testsuite/ld-i386/property-4.r: Likewise. + * testsuite/ld-i386/property-5.r: Likewise. + * testsuite/ld-i386/property-x86-ibt3a.d: Likewise. + * testsuite/ld-i386/property-x86-ibt3b.d: Likewise. + * testsuite/ld-i386/property-x86-shstk3a.d: Likewise. + * testsuite/ld-i386/property-x86-shstk3b.d: Likewise. + * testsuite/ld-x86-64/property-3.r: Likewise. + * testsuite/ld-x86-64/property-4.r: Likewise. + * testsuite/ld-x86-64/property-5.r: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise. + +(cherry picked from commit f7309df20c4e787041cedc4a6aced89c15259e54) +Signed-off-by: Norbert Lange +--- + bfd/ChangeLog | 9 +++++++ + bfd/elfxx-x86.c | 25 ++++++++++++++---- + ld/ChangeLog | 32 +++++++++++++++++++++++ + ld/testsuite/ld-i386/i386.exp | 2 ++ + ld/testsuite/ld-i386/pr23486a.d | 10 +++++++ + ld/testsuite/ld-i386/pr23486b.d | 10 +++++++ + ld/testsuite/ld-i386/property-3.r | 1 - + ld/testsuite/ld-i386/property-4.r | 1 - + ld/testsuite/ld-i386/property-5.r | 1 - + ld/testsuite/ld-i386/property-x86-ibt3a.d | 5 ++-- + ld/testsuite/ld-i386/property-x86-ibt3b.d | 5 ++-- + ld/testsuite/ld-i386/property-x86-shstk3a.d | 5 ++-- + ld/testsuite/ld-i386/property-x86-shstk3b.d | 5 ++-- + ld/testsuite/ld-x86-64/pr23486a-x32.d | 10 +++++++ + ld/testsuite/ld-x86-64/pr23486a.d | 10 +++++++ + ld/testsuite/ld-x86-64/pr23486a.s | 30 +++++++++++++++++++++ + ld/testsuite/ld-x86-64/pr23486b-x32.d | 10 +++++++ + ld/testsuite/ld-x86-64/pr23486b.d | 10 +++++++ + ld/testsuite/ld-x86-64/pr23486b.s | 30 +++++++++++++++++++++ + ld/testsuite/ld-x86-64/property-3.r | 1 - + ld/testsuite/ld-x86-64/property-4.r | 1 - + ld/testsuite/ld-x86-64/property-5.r | 1 - + ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d | 5 ++-- + ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 5 ++-- + ld/testsuite/ld-x86-64/x86-64.exp | 4 +++ + 31 files changed, 211 insertions(+), 47 deletions(-) + create mode 100644 ld/testsuite/ld-i386/pr23486a.d + create mode 100644 ld/testsuite/ld-i386/pr23486b.d + create mode 100644 ld/testsuite/ld-x86-64/pr23486a-x32.d + create mode 100644 ld/testsuite/ld-x86-64/pr23486a.d + create mode 100644 ld/testsuite/ld-x86-64/pr23486a.s + create mode 100644 ld/testsuite/ld-x86-64/pr23486b-x32.d + create mode 100644 ld/testsuite/ld-x86-64/pr23486b.d + create mode 100644 ld/testsuite/ld-x86-64/pr23486b.s + +diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c +index 2e4ff88..7ccfd25 100644 +--- a/bfd/elfxx-x86.c ++++ b/bfd/elfxx-x86.c +@@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, + switch (pr_type) + { + case GNU_PROPERTY_X86_ISA_1_USED: ++ if (aprop == NULL || bprop == NULL) ++ { ++ /* Only one of APROP and BPROP can be NULL. */ ++ if (aprop != NULL) ++ { ++ /* Remove this property since the other input file doesn't ++ have it. */ ++ aprop->pr_kind = property_remove; ++ updated = TRUE; ++ } ++ break; ++ } ++ goto or_property; ++ + case GNU_PROPERTY_X86_ISA_1_NEEDED: + if (aprop != NULL && bprop != NULL) + { ++or_property: + number = aprop->u.number; + aprop->u.number = number | bprop->u.number; +- /* Remove the property if ISA bits are empty. */ ++ /* Remove the property if all bits are empty. */ + if (aprop->u.number == 0) + { + aprop->pr_kind = property_remove; +@@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, + { + if (aprop->u.number == 0) + { +- /* Remove APROP if ISA bits are empty. */ ++ /* Remove APROP if all bits are empty. */ + aprop->pr_kind = property_remove; + updated = TRUE; + } + } + else + { +- /* Return TRUE if APROP is NULL and ISA bits of BPROP ++ /* Return TRUE if APROP is NULL and all bits of BPROP + aren't empty to indicate that BPROP should be added + to ABFD. */ + updated = bprop->u.number != 0; +@@ -2582,9 +2597,9 @@ _bfd_x86_elf_link_setup_gnu_properties + { + /* If the separate code program header is needed, make sure + that the first read-only PT_LOAD segment has no code by +- adding a GNU_PROPERTY_X86_ISA_1_USED note. */ ++ adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */ + prop = _bfd_elf_get_property (ebfd, +- GNU_PROPERTY_X86_ISA_1_USED, ++ GNU_PROPERTY_X86_ISA_1_NEEDED, + 4); + prop->u.number = GNU_PROPERTY_X86_ISA_1_486; + prop->pr_kind = property_number; +diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp +index 6d794fe..78dad02 100644 +--- a/ld/testsuite/ld-i386/i386.exp ++++ b/ld/testsuite/ld-i386/i386.exp +@@ -462,6 +462,8 @@ run_dump_test "pr23189" + run_dump_test "pr23194" + run_dump_test "pr23372a" + run_dump_test "pr23372b" ++run_dump_test "pr23486a" ++run_dump_test "pr23486b" + + if { !([istarget "i?86-*-linux*"] + || [istarget "i?86-*-gnu*"] +diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d +new file mode 100644 +index 0000000..41a6dcf +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr23486a.d +@@ -0,0 +1,10 @@ ++#source: ../ld-x86-64/pr23486a.s ++#source: ../ld-x86-64/pr23486b.s ++#as: --32 ++#ld: -r -m elf_i386 ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++ Owner Data size Description ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586 +diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d +new file mode 100644 +index 0000000..08019b7 +--- /dev/null ++++ b/ld/testsuite/ld-i386/pr23486b.d +@@ -0,0 +1,10 @@ ++#source: ../ld-x86-64/pr23486b.s ++#source: ../ld-x86-64/pr23486a.s ++#as: --32 ++#ld: -r -m elf_i386 ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++ Owner Data size Description ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586 +diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r +index 0ed91f5..d03203c 100644 +--- a/ld/testsuite/ld-i386/property-3.r ++++ b/ld/testsuite/ld-i386/property-3.r +@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 +- x86 ISA used: 586, SSE + x86 ISA needed: i486, 586 + #pass +diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r +index cb2bc15..da295eb 100644 +--- a/ld/testsuite/ld-i386/property-4.r ++++ b/ld/testsuite/ld-i386/property-4.r +@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 +- x86 ISA used: i486, 586, SSE + x86 ISA needed: i486, 586, SSE + #pass +diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r +index 5529650..e414159 100644 +--- a/ld/testsuite/ld-i386/property-5.r ++++ b/ld/testsuite/ld-i386/property-5.r +@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x900000 +- x86 ISA used: i486, 586, SSE + x86 ISA needed: i486, 586, SSE + #pass +diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d +index 4bb35b0..0aedea1 100644 +--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d ++++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: i486, 586, SSE2, SSE3 +- x86 ISA needed: 586, SSE, SSE3, SSE4_1 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 +diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d +index 418d58a..bd69ac6 100644 +--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d ++++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: i486, 586, SSE2, SSE3 +- x86 ISA needed: 586, SSE, SSE3, SSE4_1 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 +diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d +index e261038..76d2a39 100644 +--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d ++++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: i486, 586, SSE2, SSE3 +- x86 ISA needed: 586, SSE, SSE3, SSE4_1 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 +diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d +index 25f3d23..e770ecf 100644 +--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d ++++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: i486, 586, SSE2, SSE3 +- x86 ISA needed: 586, SSE, SSE3, SSE4_1 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 +diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d +new file mode 100644 +index 0000000..6d9fa68 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d +@@ -0,0 +1,10 @@ ++#source: pr23486a.s ++#source: pr23486b.s ++#as: --x32 ++#ld: -r -m elf32_x86_64 ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++ Owner Data size Description ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586 +diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d +new file mode 100644 +index 0000000..dc2b7bf +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr23486a.d +@@ -0,0 +1,10 @@ ++#source: pr23486a.s ++#source: pr23486b.s ++#as: --64 -defsym __64_bit__=1 ++#ld: -r -m elf_x86_64 ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++ Owner Data size Description ++ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586 +diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s +new file mode 100644 +index 0000000..a07d0c7 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr23486a.s +@@ -0,0 +1,30 @@ ++ .section ".note.gnu.property", "a" ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++ .long 1f - 0f /* name length. */ ++ .long 4f - 1f /* data length. */ ++ /* NT_GNU_PROPERTY_TYPE_0 */ ++ .long 5 /* note type. */ ++0: ++ .asciz "GNU" /* vendor name. */ ++1: ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++ /* GNU_PROPERTY_X86_ISA_1_USED */ ++ .long 0xc0000000 /* pr_type. */ ++ .long 3f - 2f /* pr_datasz. */ ++2: ++ .long 0xa ++3: ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++4: +diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d +new file mode 100644 +index 0000000..0445e69 +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d +@@ -0,0 +1,10 @@ ++#source: pr23486b.s ++#source: pr23486a.s ++#as: --x32 ++#ld: -r -m elf32_x86_64 ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++ Owner Data size Description ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586 +diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d +new file mode 100644 +index 0000000..dc2b7bf +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr23486b.d +@@ -0,0 +1,10 @@ ++#source: pr23486a.s ++#source: pr23486b.s ++#as: --64 -defsym __64_bit__=1 ++#ld: -r -m elf_x86_64 ++#readelf: -n ++ ++Displaying notes found in: .note.gnu.property ++ Owner Data size Description ++ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586 +diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s +new file mode 100644 +index 0000000..c5167ee +--- /dev/null ++++ b/ld/testsuite/ld-x86-64/pr23486b.s +@@ -0,0 +1,30 @@ ++ .section ".note.gnu.property", "a" ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++ .long 1f - 0f /* name length. */ ++ .long 4f - 1f /* data length. */ ++ /* NT_GNU_PROPERTY_TYPE_0 */ ++ .long 5 /* note type. */ ++0: ++ .asciz "GNU" /* vendor name. */ ++1: ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++ /* GNU_PROPERTY_X86_ISA_1_NEEDED */ ++ .long 0xc0000001 /* pr_type. */ ++ .long 3f - 2f /* pr_datasz. */ ++2: ++ .long 0x3 ++3: ++.ifdef __64_bit__ ++ .p2align 3 ++.else ++ .p2align 2 ++.endif ++4: +diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r +index 0ed91f5..d03203c 100644 +--- a/ld/testsuite/ld-x86-64/property-3.r ++++ b/ld/testsuite/ld-x86-64/property-3.r +@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 +- x86 ISA used: 586, SSE + x86 ISA needed: i486, 586 + #pass +diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r +index cb2bc15..da295eb 100644 +--- a/ld/testsuite/ld-x86-64/property-4.r ++++ b/ld/testsuite/ld-x86-64/property-4.r +@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x800000 +- x86 ISA used: i486, 586, SSE + x86 ISA needed: i486, 586, SSE + #pass +diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r +index 5529650..e414159 100644 +--- a/ld/testsuite/ld-x86-64/property-5.r ++++ b/ld/testsuite/ld-x86-64/property-5.r +@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: stack size: 0x900000 +- x86 ISA used: i486, 586, SSE + x86 ISA needed: i486, 586, SSE + #pass +diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d +index 011426f..4cec728 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d ++++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d +index 1b4229a..a8df49a 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d ++++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d +index 290ed6a..c112626 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d ++++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d +index 1142e03..f10dffd 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d ++++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d +index 819542d..0147a3c 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d ++++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d +index 4c5d0e0..1f8c2dc 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d ++++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d +index ba181e0..7ca2539 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d ++++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d +index 5216f38..f66a40e 100644 +--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d ++++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d +@@ -6,6 +6,5 @@ + + Displaying notes found in: .note.gnu.property + Owner Data size Description +- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 +- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 +- x86 ISA needed: i486, 586, SSE2, SSE3 ++ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 ++ Properties: x86 ISA needed: i486, 586, SSE2, SSE3 +diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp +index 6edb9e8..ae21e55 100644 +--- a/ld/testsuite/ld-x86-64/x86-64.exp ++++ b/ld/testsuite/ld-x86-64/x86-64.exp +@@ -403,6 +403,10 @@ run_dump_test "pr23372a" + run_dump_test "pr23372a-x32" + run_dump_test "pr23372b" + run_dump_test "pr23372b-x32" ++run_dump_test "pr23486a" ++run_dump_test "pr23486a-x32" ++run_dump_test "pr23486b" ++run_dump_test "pr23486b-x32" + + if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} { + return +-- +2.9.3 + diff --git a/features/buildroot/package/binutils/2.31.1/0014-x86-Properly-add-X86_ISA_1_NEEDED-property.patch b/features/buildroot/package/binutils/2.31.1/0014-x86-Properly-add-X86_ISA_1_NEEDED-property.patch new file mode 100644 index 00000000..356914c9 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0014-x86-Properly-add-X86_ISA_1_NEEDED-property.patch @@ -0,0 +1,140 @@ +From 28a27bdbb9500797e6767f80c8128b09112aeed5 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Sat, 11 Aug 2018 06:41:33 -0700 +Subject: [PATCH] x86: Properly add X86_ISA_1_NEEDED property + +Existing properties may be removed during property merging. We avoid +adding X86_ISA_1_NEEDED property only if existing properties won't be +removed. + +bfd/ + + PR ld/23428 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't + add X86_ISA_1_NEEDED property only if existing properties won't + be removed. + +ld/ + + PR ld/23428 + * testsuite/ld-elf/dummy.s: New file. + * testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property. + * testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428. + +(cherry picked from commit ab9e342807d132182892de1be1a92d6e91a5c1da) +Signed-off-by: Norbert Lange +--- + bfd/ChangeLog | 7 +++++++ + bfd/elfxx-x86.c | 28 ++++++++++++++++++++++------ + ld/ChangeLog | 7 +++++++ + ld/testsuite/ld-elf/dummy.s | 1 + + ld/testsuite/ld-elf/linux-x86.S | 28 ++++++++++++++++++++++++++++ + ld/testsuite/ld-elf/linux-x86.exp | 2 +- + 6 files changed, 66 insertions(+), 7 deletions(-) + create mode 100644 ld/testsuite/ld-elf/dummy.s + +diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c +index 7ccfd25..2d8f7b6 100644 +--- a/bfd/elfxx-x86.c ++++ b/bfd/elfxx-x86.c +@@ -2588,7 +2588,6 @@ _bfd_x86_elf_link_setup_gnu_properties + prop->pr_kind = property_number; + } + else if (has_text +- && elf_properties (ebfd) == NULL + && elf_tdata (info->output_bfd)->o->build_id.sec == NULL + && !htab->elf.dynamic_sections_created + && !info->traditional_format +@@ -2598,11 +2597,28 @@ _bfd_x86_elf_link_setup_gnu_properties + /* If the separate code program header is needed, make sure + that the first read-only PT_LOAD segment has no code by + adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */ +- prop = _bfd_elf_get_property (ebfd, +- GNU_PROPERTY_X86_ISA_1_NEEDED, +- 4); +- prop->u.number = GNU_PROPERTY_X86_ISA_1_486; +- prop->pr_kind = property_number; ++ elf_property_list *list; ++ bfd_boolean need_property = TRUE; ++ ++ for (list = elf_properties (ebfd); list; list = list->next) ++ switch (list->property.pr_type) ++ { ++ case GNU_PROPERTY_STACK_SIZE: ++ case GNU_PROPERTY_NO_COPY_ON_PROTECTED: ++ case GNU_PROPERTY_X86_ISA_1_NEEDED: ++ /* These properties won't be removed during merging. */ ++ need_property = FALSE; ++ break; ++ } ++ ++ if (need_property) ++ { ++ prop = _bfd_elf_get_property (ebfd, ++ GNU_PROPERTY_X86_ISA_1_NEEDED, ++ 4); ++ prop->u.number = GNU_PROPERTY_X86_ISA_1_486; ++ prop->pr_kind = property_number; ++ } + } + + /* Create the GNU property note section if needed. */ +diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s +new file mode 100644 +index 0000000..403f980 +--- /dev/null ++++ b/ld/testsuite/ld-elf/dummy.s +@@ -0,0 +1 @@ ++# Dummy +diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S +index bdf40c6..d94abc1 100644 +--- a/ld/testsuite/ld-elf/linux-x86.S ++++ b/ld/testsuite/ld-elf/linux-x86.S +@@ -61,3 +61,31 @@ syscall: + ret /* Return to caller. */ + .size syscall, .-syscall + .section .note.GNU-stack,"",@progbits ++ ++ .section ".note.gnu.property", "a" ++#ifdef __LP64__ ++ .p2align 3 ++#else ++ .p2align 2 ++#endif ++ .long 1f - 0f /* name length */ ++ .long 5f - 2f /* data length */ ++ .long 5 /* note type */ ++0: .asciz "GNU" /* vendor name */ ++1: ++#ifdef __LP64__ ++ .p2align 3 ++#else ++ .p2align 2 ++#endif ++2: .long 0xc0000002 /* pr_type. */ ++ .long 4f - 3f /* pr_datasz. */ ++3: ++ .long 0x2 ++4: ++#ifdef __LP64__ ++ .p2align 3 ++#else ++ .p2align 2 ++#endif ++5: +diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp +index 36217c6..f6f5a80 100644 +--- a/ld/testsuite/ld-elf/linux-x86.exp ++++ b/ld/testsuite/ld-elf/linux-x86.exp +@@ -37,7 +37,7 @@ run_ld_link_exec_tests [list \ + "Run PR ld/23428 test" \ + "--no-dynamic-linker -z separate-code" \ + "" \ +- { linux-x86.S pr23428.c } \ ++ { linux-x86.S pr23428.c dummy.s } \ + "pr23428" \ + "pass.out" \ + "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \ +-- +2.9.3 + diff --git a/features/buildroot/package/binutils/2.31.1/0015-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch b/features/buildroot/package/binutils/2.31.1/0015-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch new file mode 100644 index 00000000..b80e1fa7 --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0015-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch @@ -0,0 +1,41 @@ +From 278989f23735aa501be1052e085540c75c126dbb Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Thu, 28 Mar 2019 17:03:57 -0700 +Subject: [PATCH] bfd: xtensa: fix shrink_dynamic_reloc_sections for + export-dynamic + +shrink_dynamic_reloc_sections must remove PLT entry that was created for +an undefined weak symbol in the presence of --export-dynamic option when +relaxation coalesces literals pointing to that symbol. This fixes the +following assertion: + + ld: BFD (GNU Binutils) 2.31.1 internal error, aborting at + elf32-xtensa.c:3292 in elf_xtensa_finish_dynamic_sections + +2019-03-28 Max Filippov +bfd/ + * elf32-xtensa.c (shrink_dynamic_reloc_sections): Add + info->export_dynamic to the conditional. + +Signed-off-by: Max Filippov +--- + bfd/elf32-xtensa.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c +index c3df3d6db756..37ea200eea74 100644 +--- a/bfd/elf32-xtensa.c ++++ b/bfd/elf32-xtensa.c +@@ -10083,7 +10083,8 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info, + && (input_section->flags & SEC_ALLOC) != 0 + && (dynamic_symbol || bfd_link_pic (info)) + && (!h || h->root.type != bfd_link_hash_undefweak +- || (dynamic_symbol && bfd_link_dll (info)))) ++ || (dynamic_symbol ++ && (bfd_link_dll (info) || info->export_dynamic)))) + { + asection *srel; + bfd_boolean is_plt = FALSE; +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.31.1/0016-gas-use-literals-const16-for-xtensa-loop-relaxation.patch b/features/buildroot/package/binutils/2.31.1/0016-gas-use-literals-const16-for-xtensa-loop-relaxation.patch new file mode 100644 index 00000000..ed617bca --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0016-gas-use-literals-const16-for-xtensa-loop-relaxation.patch @@ -0,0 +1,294 @@ +From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Tue, 2 Apr 2019 14:32:42 -0700 +Subject: [PATCH] gas: use literals/const16 for xtensa loop relaxation + +Loop opcode relaxation that uses addi/addmi doesn't work well with other +relaxations that may cause code movement. Instead of encoding fixed loop +end offset in the relaxed sequence use l32r or a pair of const16 to load +loop end address. This way the address of the loop end gets a relocation +record and it gets updated appropriately. + +gas/ +2019-04-02 Max Filippov + + * config/tc-xtensa.c (convert_frag_immed): Drop + convert_frag_immed_finish_loop invocation. + (convert_frag_immed_finish_loop): Drop declaration and + definition. + * config/xtensa-relax.c (widen_spec_list): Replace loop + widening that uses addi/addmi with widening that uses l32r + and const16. + +Signed-off-by: Max Filippov +--- + gas/config/tc-xtensa.c | 120 ---------------------------------------------- + gas/config/xtensa-relax.c | 77 ++++++++++++++++++++--------- + 2 files changed, 55 insertions(+), 142 deletions(-) + +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index 3bdbbc931cfc..0cc06361cf6f 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP) + static fixS *fix_new_exp_in_seg + (segT, subsegT, fragS *, int, int, expressionS *, int, + bfd_reloc_code_real_type); +-static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *); + + static void + convert_frag_immed (segT segP, +@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP, + } + } + +- if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1) +- convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn); +- + if (expanded && is_direct_call_opcode (orig_tinsn.opcode)) + { + /* Add an expansion note on the expanded instruction. */ +@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg, + } + + +-/* Relax a loop instruction so that it can span loop >256 bytes. +- +- loop as, .L1 +- .L0: +- rsr as, LEND +- wsr as, LBEG +- addi as, as, lo8 (label-.L1) +- addmi as, as, mid8 (label-.L1) +- wsr as, LEND +- isync +- rsr as, LCOUNT +- addi as, as, 1 +- .L1: +- <> +- label: +-*/ +- +-static void +-convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn) +-{ +- TInsn loop_insn; +- TInsn addi_insn; +- TInsn addmi_insn; +- unsigned long target; +- static xtensa_insnbuf insnbuf = NULL; +- unsigned int loop_length, loop_length_hi, loop_length_lo; +- xtensa_isa isa = xtensa_default_isa; +- addressT loop_offset; +- addressT addi_offset = 9; +- addressT addmi_offset = 12; +- fragS *next_fragP; +- int target_count; +- +- if (!insnbuf) +- insnbuf = xtensa_insnbuf_alloc (isa); +- +- /* Get the loop offset. */ +- loop_offset = get_expanded_loop_offset (tinsn->opcode); +- +- /* Validate that there really is a LOOP at the loop_offset. Because +- loops are not bundleable, we can assume that the instruction will be +- in slot 0. */ +- tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0); +- tinsn_immed_from_frag (&loop_insn, fragP, 0); +- +- gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1); +- addi_offset += loop_offset; +- addmi_offset += loop_offset; +- +- gas_assert (tinsn->ntok == 2); +- if (tinsn->tok[1].X_op == O_constant) +- target = tinsn->tok[1].X_add_number; +- else if (tinsn->tok[1].X_op == O_symbol) +- { +- /* Find the fragment. */ +- symbolS *sym = tinsn->tok[1].X_add_symbol; +- gas_assert (S_GET_SEGMENT (sym) == segP +- || S_GET_SEGMENT (sym) == absolute_section); +- target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number); +- } +- else +- { +- as_bad (_("invalid expression evaluation type %d"), tinsn->tok[1].X_op); +- target = 0; +- } +- +- loop_length = target - (fragP->fr_address + fragP->fr_fix); +- loop_length_hi = loop_length & ~0x0ff; +- loop_length_lo = loop_length & 0x0ff; +- if (loop_length_lo >= 128) +- { +- loop_length_lo -= 256; +- loop_length_hi += 256; +- } +- +- /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most +- 32512. If the loop is larger than that, then we just fail. */ +- if (loop_length_hi > 32512) +- as_bad_where (fragP->fr_file, fragP->fr_line, +- _("loop too long for LOOP instruction")); +- +- tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0); +- gas_assert (addi_insn.opcode == xtensa_addi_opcode); +- +- tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0); +- gas_assert (addmi_insn.opcode == xtensa_addmi_opcode); +- +- set_expr_const (&addi_insn.tok[2], loop_length_lo); +- tinsn_to_insnbuf (&addi_insn, insnbuf); +- +- fragP->tc_frag_data.is_insn = TRUE; +- xtensa_insnbuf_to_chars +- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0); +- +- set_expr_const (&addmi_insn.tok[2], loop_length_hi); +- tinsn_to_insnbuf (&addmi_insn, insnbuf); +- xtensa_insnbuf_to_chars +- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0); +- +- /* Walk through all of the frags from here to the loop end +- and mark them as no_transform to keep them from being modified +- by the linker. If we ever have a relocation for the +- addi/addmi of the difference of two symbols we can remove this. */ +- +- target_count = 0; +- for (next_fragP = fragP; next_fragP != NULL; +- next_fragP = next_fragP->fr_next) +- { +- next_fragP->tc_frag_data.is_no_transform = TRUE; +- if (next_fragP->tc_frag_data.is_loop_target) +- target_count++; +- if (target_count == 2) +- break; +- } +-} +- + + /* A map that keeps information on a per-subsegment basis. This is + maintained during initial assembly, but is invalid once the +diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c +index cb296ed85ed2..daf15d52c259 100644 +--- a/gas/config/xtensa-relax.c ++++ b/gas/config/xtensa-relax.c +@@ -87,13 +87,7 @@ + when the first and second operands are not the same as specified + by the "| %at!=%as" precondition clause. + {"l32i %at,%as,%imm | %at!=%as", +- "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} +- +- There is special case for loop instructions here, but because we do +- not currently have the ability to represent the difference of two +- symbols, the conversion requires special code in the assembler to +- write the operands of the addi/addmi pair representing the +- difference of the old and new loop end label. */ ++ "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} */ + + #include "as.h" + #include "xtensa-isa.h" +@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] = + {"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16", + "const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0"}, + +- /* This is only PART of the loop instruction. In addition, +- hardcoded into its use is a modification of the final operand in +- the instruction in bytes 9 and 12. */ +- {"loop %as,%label | %as!=1 ? IsaUseLoops", ++ /* Widening loops with literals. */ ++ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "loop %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "beqz %as,%label;" ++ "bltz %as,%label;" ++ "loopgtz %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "beqz %as,%label;" ++ "loopnez %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ ++ /* Widening loops with const16. */ ++ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "loop %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, +- {"loopgtz %as,%label | %as!=1 ? IsaUseLoops", ++ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "beqz %as,%label;" + "bltz %as,%label;" + "loopgtz %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, +- {"loopnez %as,%label | %as!=1 ? IsaUseLoops", ++ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "beqz %as,%label;" + "loopnez %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, + + /* Relaxing to wide branches. Order is important here. With wide +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.31.1/0017-xtensa-gas-put-.literal_position-at-section-start.patch b/features/buildroot/package/binutils/2.31.1/0017-xtensa-gas-put-.literal_position-at-section-start.patch new file mode 100644 index 00000000..b4bbc27b --- /dev/null +++ b/features/buildroot/package/binutils/2.31.1/0017-xtensa-gas-put-.literal_position-at-section-start.patch @@ -0,0 +1,96 @@ +From 471702ac4a57878a06e8167f063274cf413e548d Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Mon, 8 Apr 2019 13:47:18 -0700 +Subject: [PATCH] xtensa: gas: put .literal_position at section start + +Provide literal position at the beginning of each section for literal +space reserved by relaxations when text-section-literals or +auto-litpools options are used. Remove code that adds fill frag to the +literal section for every .literal_position directive to avoid creation +of empty literal sections. + +Fix auto-litpools tests that got literal pool address changes. + +gas/ +2019-04-11 Max Filippov + + * config/tc-xtensa.c (xtensa_is_init_fini): Add declaration. + (xtensa_mark_literal_pool_location): Don't add fill frag to literal + section that records literal pool location. + (md_begin): Call xtensa_mark_literal_pool_location when text + section literals or auto litpools are used. + (xtensa_elf_section_change_hook): Call + xtensa_mark_literal_pool_location when text section literals or + auto litpools are used, there's no literal pool location defined + for the current section and it's not .init or .fini. + +Signed-off-by: Max Filippov +--- + gas/config/tc-xtensa.c | 22 +++++++++------------- + 1 file changed, 9 insertions(+), 13 deletions(-) + +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index 0cc06361cf6f..6a80e76fed8c 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -497,6 +497,7 @@ static fixS *xg_append_jump (fragS *fragP, symbolS *sym, offsetT offset); + static void xtensa_maybe_create_literal_pool_frag (bfd_boolean, bfd_boolean); + static bfd_boolean auto_litpools = FALSE; + static int auto_litpool_limit = 0; ++static bfd_boolean xtensa_is_init_fini (segT seg); + + /* Alignment Functions. */ + +@@ -4797,7 +4798,6 @@ xtensa_mark_literal_pool_location (void) + { + /* Any labels pointing to the current location need + to be adjusted to after the literal pool. */ +- emit_state s; + fragS *pool_location; + + if (use_literal_section) +@@ -4818,19 +4818,7 @@ xtensa_mark_literal_pool_location (void) + RELAX_LITERAL_POOL_END, NULL, 0, NULL); + xtensa_set_frag_assembly_state (frag_now); + +- /* Now put a frag into the literal pool that points to this location. */ + set_literal_pool_location (now_seg, pool_location); +- xtensa_switch_to_non_abs_literal_fragment (&s); +- frag_align (2, 0, 0); +- record_alignment (now_seg, 2); +- +- /* Close whatever frag is there. */ +- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL); +- xtensa_set_frag_assembly_state (frag_now); +- frag_now->tc_frag_data.literal_frag = pool_location; +- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL); +- xtensa_restore_emit_state (&s); +- xtensa_set_frag_assembly_state (frag_now); + } + + +@@ -5334,6 +5322,9 @@ md_begin (void) + /* Set up the assembly state. */ + if (!frag_now->tc_frag_data.is_assembly_state_set) + xtensa_set_frag_assembly_state (frag_now); ++ ++ if (!use_literal_section) ++ xtensa_mark_literal_pool_location (); + } + + +@@ -5933,6 +5924,11 @@ xtensa_elf_section_change_hook (void) + /* Set up the assembly state. */ + if (!frag_now->tc_frag_data.is_assembly_state_set) + xtensa_set_frag_assembly_state (frag_now); ++ ++ if (!use_literal_section ++ && seg_info (now_seg)->tc_segment_info_data.literal_pool_loc == NULL ++ && !xtensa_is_init_fini (now_seg)) ++ xtensa_mark_literal_pool_location (); + } + + +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.32/0001-sh-conf.patch b/features/buildroot/package/binutils/2.32/0001-sh-conf.patch new file mode 100644 index 00000000..fff91ae3 --- /dev/null +++ b/features/buildroot/package/binutils/2.32/0001-sh-conf.patch @@ -0,0 +1,48 @@ +From 98b2acf2bd3a527d114a9f8931083c2617a2daa9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +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). + +[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.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 37476459612..66fbc19f9ff 100755 +--- a/configure ++++ b/configure +@@ -3861,7 +3861,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 46501c28826..6c731930884 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1158,7 +1158,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.14.5 + diff --git a/features/buildroot/package/binutils/2.32/0002-poison-system-directories.patch b/features/buildroot/package/binutils/2.32/0002-poison-system-directories.patch new file mode 100644 index 00000000..98f41e87 --- /dev/null +++ b/features/buildroot/package/binutils/2.32/0002-poison-system-directories.patch @@ -0,0 +1,306 @@ +From f559402ea868d370ddf25089c68cda2600db3bfa Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.32] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index d93c9b08300..5da2742beac 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -31,6 +31,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 18ada7808f5..7e7d2f97809 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -822,6 +822,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1486,6 +1487,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15803,7 +15806,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index d335f210917..7f692d93873 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + 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 b97d977f37b..f3bbd2d55d4 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -180,6 +180,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index 5179af3e0e1..f78bf746822 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -2524,6 +2524,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 ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@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 +diff --git a/ld/ldfile.c b/ld/ldfile.c +index fcadc08c73f..63e295ce8ae 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 32853debe45..8135361c498 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -148,6 +148,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index 77cdbd0dd29..725512f1260 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -269,6 +269,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* 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 88e85c73f49..be4cd492d14 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -543,6 +543,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -555,6 +563,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1543,6 +1552,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1586,6 +1603,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.14.5 + diff --git a/features/buildroot/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch b/features/buildroot/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch new file mode 100644 index 00000000..b80e1fa7 --- /dev/null +++ b/features/buildroot/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch @@ -0,0 +1,41 @@ +From 278989f23735aa501be1052e085540c75c126dbb Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Thu, 28 Mar 2019 17:03:57 -0700 +Subject: [PATCH] bfd: xtensa: fix shrink_dynamic_reloc_sections for + export-dynamic + +shrink_dynamic_reloc_sections must remove PLT entry that was created for +an undefined weak symbol in the presence of --export-dynamic option when +relaxation coalesces literals pointing to that symbol. This fixes the +following assertion: + + ld: BFD (GNU Binutils) 2.31.1 internal error, aborting at + elf32-xtensa.c:3292 in elf_xtensa_finish_dynamic_sections + +2019-03-28 Max Filippov +bfd/ + * elf32-xtensa.c (shrink_dynamic_reloc_sections): Add + info->export_dynamic to the conditional. + +Signed-off-by: Max Filippov +--- + bfd/elf32-xtensa.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c +index c3df3d6db756..37ea200eea74 100644 +--- a/bfd/elf32-xtensa.c ++++ b/bfd/elf32-xtensa.c +@@ -10083,7 +10083,8 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info, + && (input_section->flags & SEC_ALLOC) != 0 + && (dynamic_symbol || bfd_link_pic (info)) + && (!h || h->root.type != bfd_link_hash_undefweak +- || (dynamic_symbol && bfd_link_dll (info)))) ++ || (dynamic_symbol ++ && (bfd_link_dll (info) || info->export_dynamic)))) + { + asection *srel; + bfd_boolean is_plt = FALSE; +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch b/features/buildroot/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch new file mode 100644 index 00000000..ed617bca --- /dev/null +++ b/features/buildroot/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch @@ -0,0 +1,294 @@ +From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Tue, 2 Apr 2019 14:32:42 -0700 +Subject: [PATCH] gas: use literals/const16 for xtensa loop relaxation + +Loop opcode relaxation that uses addi/addmi doesn't work well with other +relaxations that may cause code movement. Instead of encoding fixed loop +end offset in the relaxed sequence use l32r or a pair of const16 to load +loop end address. This way the address of the loop end gets a relocation +record and it gets updated appropriately. + +gas/ +2019-04-02 Max Filippov + + * config/tc-xtensa.c (convert_frag_immed): Drop + convert_frag_immed_finish_loop invocation. + (convert_frag_immed_finish_loop): Drop declaration and + definition. + * config/xtensa-relax.c (widen_spec_list): Replace loop + widening that uses addi/addmi with widening that uses l32r + and const16. + +Signed-off-by: Max Filippov +--- + gas/config/tc-xtensa.c | 120 ---------------------------------------------- + gas/config/xtensa-relax.c | 77 ++++++++++++++++++++--------- + 2 files changed, 55 insertions(+), 142 deletions(-) + +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index 3bdbbc931cfc..0cc06361cf6f 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP) + static fixS *fix_new_exp_in_seg + (segT, subsegT, fragS *, int, int, expressionS *, int, + bfd_reloc_code_real_type); +-static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *); + + static void + convert_frag_immed (segT segP, +@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP, + } + } + +- if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1) +- convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn); +- + if (expanded && is_direct_call_opcode (orig_tinsn.opcode)) + { + /* Add an expansion note on the expanded instruction. */ +@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg, + } + + +-/* Relax a loop instruction so that it can span loop >256 bytes. +- +- loop as, .L1 +- .L0: +- rsr as, LEND +- wsr as, LBEG +- addi as, as, lo8 (label-.L1) +- addmi as, as, mid8 (label-.L1) +- wsr as, LEND +- isync +- rsr as, LCOUNT +- addi as, as, 1 +- .L1: +- <> +- label: +-*/ +- +-static void +-convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn) +-{ +- TInsn loop_insn; +- TInsn addi_insn; +- TInsn addmi_insn; +- unsigned long target; +- static xtensa_insnbuf insnbuf = NULL; +- unsigned int loop_length, loop_length_hi, loop_length_lo; +- xtensa_isa isa = xtensa_default_isa; +- addressT loop_offset; +- addressT addi_offset = 9; +- addressT addmi_offset = 12; +- fragS *next_fragP; +- int target_count; +- +- if (!insnbuf) +- insnbuf = xtensa_insnbuf_alloc (isa); +- +- /* Get the loop offset. */ +- loop_offset = get_expanded_loop_offset (tinsn->opcode); +- +- /* Validate that there really is a LOOP at the loop_offset. Because +- loops are not bundleable, we can assume that the instruction will be +- in slot 0. */ +- tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0); +- tinsn_immed_from_frag (&loop_insn, fragP, 0); +- +- gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1); +- addi_offset += loop_offset; +- addmi_offset += loop_offset; +- +- gas_assert (tinsn->ntok == 2); +- if (tinsn->tok[1].X_op == O_constant) +- target = tinsn->tok[1].X_add_number; +- else if (tinsn->tok[1].X_op == O_symbol) +- { +- /* Find the fragment. */ +- symbolS *sym = tinsn->tok[1].X_add_symbol; +- gas_assert (S_GET_SEGMENT (sym) == segP +- || S_GET_SEGMENT (sym) == absolute_section); +- target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number); +- } +- else +- { +- as_bad (_("invalid expression evaluation type %d"), tinsn->tok[1].X_op); +- target = 0; +- } +- +- loop_length = target - (fragP->fr_address + fragP->fr_fix); +- loop_length_hi = loop_length & ~0x0ff; +- loop_length_lo = loop_length & 0x0ff; +- if (loop_length_lo >= 128) +- { +- loop_length_lo -= 256; +- loop_length_hi += 256; +- } +- +- /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most +- 32512. If the loop is larger than that, then we just fail. */ +- if (loop_length_hi > 32512) +- as_bad_where (fragP->fr_file, fragP->fr_line, +- _("loop too long for LOOP instruction")); +- +- tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0); +- gas_assert (addi_insn.opcode == xtensa_addi_opcode); +- +- tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0); +- gas_assert (addmi_insn.opcode == xtensa_addmi_opcode); +- +- set_expr_const (&addi_insn.tok[2], loop_length_lo); +- tinsn_to_insnbuf (&addi_insn, insnbuf); +- +- fragP->tc_frag_data.is_insn = TRUE; +- xtensa_insnbuf_to_chars +- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0); +- +- set_expr_const (&addmi_insn.tok[2], loop_length_hi); +- tinsn_to_insnbuf (&addmi_insn, insnbuf); +- xtensa_insnbuf_to_chars +- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0); +- +- /* Walk through all of the frags from here to the loop end +- and mark them as no_transform to keep them from being modified +- by the linker. If we ever have a relocation for the +- addi/addmi of the difference of two symbols we can remove this. */ +- +- target_count = 0; +- for (next_fragP = fragP; next_fragP != NULL; +- next_fragP = next_fragP->fr_next) +- { +- next_fragP->tc_frag_data.is_no_transform = TRUE; +- if (next_fragP->tc_frag_data.is_loop_target) +- target_count++; +- if (target_count == 2) +- break; +- } +-} +- + + /* A map that keeps information on a per-subsegment basis. This is + maintained during initial assembly, but is invalid once the +diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c +index cb296ed85ed2..daf15d52c259 100644 +--- a/gas/config/xtensa-relax.c ++++ b/gas/config/xtensa-relax.c +@@ -87,13 +87,7 @@ + when the first and second operands are not the same as specified + by the "| %at!=%as" precondition clause. + {"l32i %at,%as,%imm | %at!=%as", +- "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} +- +- There is special case for loop instructions here, but because we do +- not currently have the ability to represent the difference of two +- symbols, the conversion requires special code in the assembler to +- write the operands of the addi/addmi pair representing the +- difference of the old and new loop end label. */ ++ "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} */ + + #include "as.h" + #include "xtensa-isa.h" +@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] = + {"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16", + "const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0"}, + +- /* This is only PART of the loop instruction. In addition, +- hardcoded into its use is a modification of the final operand in +- the instruction in bytes 9 and 12. */ +- {"loop %as,%label | %as!=1 ? IsaUseLoops", ++ /* Widening loops with literals. */ ++ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "loop %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "beqz %as,%label;" ++ "bltz %as,%label;" ++ "loopgtz %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", ++ "beqz %as,%label;" ++ "loopnez %as,%LABEL;" ++ "rsr.lend %as;" /* LEND */ ++ "wsr.lbeg %as;" /* LBEG */ ++ "LITERAL %label;" ++ "l32r %as, %LITERAL;" ++ "nop;" ++ "wsr.lend %as;" ++ "isync;" ++ "rsr.lcount %as;" /* LCOUNT */ ++ "addi %as, %as, 1;" ++ "LABEL"}, ++ ++ /* Widening loops with const16. */ ++ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "loop %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, +- {"loopgtz %as,%label | %as!=1 ? IsaUseLoops", ++ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "beqz %as,%label;" + "bltz %as,%label;" + "loopgtz %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, +- {"loopnez %as,%label | %as!=1 ? IsaUseLoops", ++ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", + "beqz %as,%label;" + "loopnez %as,%LABEL;" + "rsr.lend %as;" /* LEND */ + "wsr.lbeg %as;" /* LBEG */ +- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ +- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ ++ "const16 %as,HI16U(%label);" ++ "const16 %as,LOW16U(%label);" + "wsr.lend %as;" + "isync;" + "rsr.lcount %as;" /* LCOUNT */ +- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ ++ "addi %as, %as, 1;" + "LABEL"}, + + /* Relaxing to wide branches. Order is important here. With wide +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch b/features/buildroot/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch new file mode 100644 index 00000000..b4bbc27b --- /dev/null +++ b/features/buildroot/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch @@ -0,0 +1,96 @@ +From 471702ac4a57878a06e8167f063274cf413e548d Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Mon, 8 Apr 2019 13:47:18 -0700 +Subject: [PATCH] xtensa: gas: put .literal_position at section start + +Provide literal position at the beginning of each section for literal +space reserved by relaxations when text-section-literals or +auto-litpools options are used. Remove code that adds fill frag to the +literal section for every .literal_position directive to avoid creation +of empty literal sections. + +Fix auto-litpools tests that got literal pool address changes. + +gas/ +2019-04-11 Max Filippov + + * config/tc-xtensa.c (xtensa_is_init_fini): Add declaration. + (xtensa_mark_literal_pool_location): Don't add fill frag to literal + section that records literal pool location. + (md_begin): Call xtensa_mark_literal_pool_location when text + section literals or auto litpools are used. + (xtensa_elf_section_change_hook): Call + xtensa_mark_literal_pool_location when text section literals or + auto litpools are used, there's no literal pool location defined + for the current section and it's not .init or .fini. + +Signed-off-by: Max Filippov +--- + gas/config/tc-xtensa.c | 22 +++++++++------------- + 1 file changed, 9 insertions(+), 13 deletions(-) + +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index 0cc06361cf6f..6a80e76fed8c 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -497,6 +497,7 @@ static fixS *xg_append_jump (fragS *fragP, symbolS *sym, offsetT offset); + static void xtensa_maybe_create_literal_pool_frag (bfd_boolean, bfd_boolean); + static bfd_boolean auto_litpools = FALSE; + static int auto_litpool_limit = 0; ++static bfd_boolean xtensa_is_init_fini (segT seg); + + /* Alignment Functions. */ + +@@ -4797,7 +4798,6 @@ xtensa_mark_literal_pool_location (void) + { + /* Any labels pointing to the current location need + to be adjusted to after the literal pool. */ +- emit_state s; + fragS *pool_location; + + if (use_literal_section) +@@ -4818,19 +4818,7 @@ xtensa_mark_literal_pool_location (void) + RELAX_LITERAL_POOL_END, NULL, 0, NULL); + xtensa_set_frag_assembly_state (frag_now); + +- /* Now put a frag into the literal pool that points to this location. */ + set_literal_pool_location (now_seg, pool_location); +- xtensa_switch_to_non_abs_literal_fragment (&s); +- frag_align (2, 0, 0); +- record_alignment (now_seg, 2); +- +- /* Close whatever frag is there. */ +- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL); +- xtensa_set_frag_assembly_state (frag_now); +- frag_now->tc_frag_data.literal_frag = pool_location; +- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL); +- xtensa_restore_emit_state (&s); +- xtensa_set_frag_assembly_state (frag_now); + } + + +@@ -5334,6 +5322,9 @@ md_begin (void) + /* Set up the assembly state. */ + if (!frag_now->tc_frag_data.is_assembly_state_set) + xtensa_set_frag_assembly_state (frag_now); ++ ++ if (!use_literal_section) ++ xtensa_mark_literal_pool_location (); + } + + +@@ -5933,6 +5924,11 @@ xtensa_elf_section_change_hook (void) + /* Set up the assembly state. */ + if (!frag_now->tc_frag_data.is_assembly_state_set) + xtensa_set_frag_assembly_state (frag_now); ++ ++ if (!use_literal_section ++ && seg_info (now_seg)->tc_segment_info_data.literal_pool_loc == NULL ++ && !xtensa_is_init_fini (now_seg)) ++ xtensa_mark_literal_pool_location (); + } + + +-- +2.11.0 + diff --git a/features/buildroot/package/binutils/Config.in b/features/buildroot/package/binutils/Config.in new file mode 100644 index 00000000..e17a8ec6 --- /dev/null +++ b/features/buildroot/package/binutils/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_BINUTILS + bool "binutils" + depends on !BR2_nios2 + depends on BR2_USE_WCHAR + help + Install binutils on the target + +if BR2_PACKAGE_BINUTILS + +config BR2_PACKAGE_BINUTILS_TARGET + bool "binutils binaries" + help + The GNU Binutils are a collection of binary tools: + + ld - the GNU linker. + as - the GNU assembler. + and others... + + http://www.gnu.org/software/binutils/ + +endif + +comment "binutils needs a toolchain w/ wchar" + depends on !BR2_nios2 + depends on !BR2_USE_WCHAR diff --git a/features/buildroot/package/binutils/Config.in.host b/features/buildroot/package/binutils/Config.in.host new file mode 100644 index 00000000..c5daee7f --- /dev/null +++ b/features/buildroot/package/binutils/Config.in.host @@ -0,0 +1,53 @@ +comment "Binutils Options" + +config BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI + bool + default y + depends on !BR2_microblaze + +choice + prompt "Binutils Version" + default BR2_BINUTILS_VERSION_2_31_X if !BR2_arc && !BR2_csky + default BR2_BINUTILS_VERSION_ARC if BR2_arc + default BR2_BINUTILS_VERSION_CSKY if BR2_csky + help + Select the version of binutils you wish to use. + +config BR2_BINUTILS_VERSION_2_30_X + bool "binutils 2.30" + depends on !BR2_csky + +config BR2_BINUTILS_VERSION_2_31_X + bool "binutils 2.31.1" + depends on !BR2_csky + +config BR2_BINUTILS_VERSION_2_32_X + bool "binutils 2.32" + depends on !BR2_csky + +config BR2_BINUTILS_VERSION_ARC + bool "binutils arc (2.31)" + depends on BR2_arc + +config BR2_BINUTILS_VERSION_CSKY + bool "binutils csky" + depends on BR2_csky + +endchoice + +config BR2_BINUTILS_VERSION + string + default "arc-2019.03-release" if BR2_BINUTILS_VERSION_ARC + default "c66d8bbcebfddf713b2b436e1b135e6b125a55a5" if BR2_BINUTILS_VERSION_CSKY + default "2.30" if BR2_BINUTILS_VERSION_2_30_X + default "2.31.1" if BR2_BINUTILS_VERSION_2_31_X + default "2.32" if BR2_BINUTILS_VERSION_2_32_X + +config BR2_BINUTILS_ENABLE_LTO + bool + +config BR2_BINUTILS_EXTRA_CONFIG_OPTIONS + string "Additional binutils options" + default "" + help + Any additional binutils options you may want to include. diff --git a/features/buildroot/package/binutils/arc-2019.03-release/0001-poison-system-directories.patch b/features/buildroot/package/binutils/arc-2019.03-release/0001-poison-system-directories.patch new file mode 100644 index 00000000..90c7ac76 --- /dev/null +++ b/features/buildroot/package/binutils/arc-2019.03-release/0001-poison-system-directories.patch @@ -0,0 +1,306 @@ +From 7d1e6ed1d57e839207e0ece7561bd4709032de9f Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texi | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index d93c9b0..5da2742 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -31,6 +31,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 300a272..d68890f 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -822,6 +822,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1486,6 +1487,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15803,7 +15806,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index d10c553..9f1b57b 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + 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 ba914b9..9df17da 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -180,6 +180,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texi b/ld/ld.texi +index 40d79dd..137d46c 100644 +--- a/ld/ld.texi ++++ b/ld/ld.texi +@@ -2479,6 +2479,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 ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@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 +diff --git a/ld/ldfile.c b/ld/ldfile.c +index b3d166c..3dcbf66 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 04d6fd5..d7df005 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -148,6 +148,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index f31eeb2..25f8497 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -268,6 +268,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* 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 86a033a..f07f095 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -543,6 +543,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -555,6 +563,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1543,6 +1552,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1586,6 +1603,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.7.4 + diff --git a/features/buildroot/package/binutils/binutils.hash b/features/buildroot/package/binutils/binutils.hash new file mode 100644 index 00000000..4b747fc2 --- /dev/null +++ b/features/buildroot/package/binutils/binutils.hash @@ -0,0 +1,10 @@ +# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum +sha512 e747ea20d8d79fcd21b9d9f6695059caa7189d60f19256da398e34b789fea9a133c32b192e9693b5828d27683739b0198431bf8b3e39fb3b04884cf89d9aa839 binutils-2.30.tar.xz +sha512 0fca326feb1d5f5fe505a827b20237fe3ec9c13eaf7ec7e35847fd71184f605ba1cefe1314b1b8f8a29c0aa9d88162849ee1c1a3e70c2f7407d88339b17edb30 binutils-2.31.1.tar.xz +sha512 d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a binutils-2.32.tar.xz + +# Locally calculated (fetched from Github) +sha512 e2d8c109ed006eb143bab8360c9e29287c05a0b273448d256edee7458e356d45b27c9869ca6be96206df360c24ba607b21c185190d3a4731999dad515b157c18 binutils-gdb-arc-2019.03-release.tar.gz + +# Locally calculated (fetched from https://github.com/c-sky/binutils-gdb) +sha512 979552d4b3a4f31e9f3b9a7027321bd4eb3ac6c2d8deac1720e94e54f81d736db09c53c5d87c301010e307b64127e14400a036c7a35e5d63a954a4edd9cc8e2c binutils-c66d8bbcebfddf713b2b436e1b135e6b125a55a5.tar.gz diff --git a/features/buildroot/package/binutils/binutils.mk b/features/buildroot/package/binutils/binutils.mk new file mode 100644 index 00000000..d60c032b --- /dev/null +++ b/features/buildroot/package/binutils/binutils.mk @@ -0,0 +1,147 @@ +################################################################################ +# +# binutils +# +################################################################################ + +# Version is set when using buildroot toolchain. +# If not, we do like other packages +BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION)) +ifeq ($(BINUTILS_VERSION),) +ifeq ($(BR2_arc),y) +BINUTILS_VERSION = arc-2019.03-release +else +BINUTILS_VERSION = 2.31.1 +endif +endif # BINUTILS_VERSION + +ifeq ($(BINUTILS_VERSION),arc-2019.03-release) +BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION)) +BINUTILS_SOURCE = binutils-gdb-$(BINUTILS_VERSION).tar.gz +BINUTILS_FROM_GIT = y +endif + +ifeq ($(BR2_csky),y) +BINUTILS_SITE = $(call github,c-sky,binutils-gdb,$(BINUTILS_VERSION)) +BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz +BINUTILS_FROM_GIT = y +endif + +BINUTILS_SITE ?= $(BR2_GNU_MIRROR)/binutils +BINUTILS_SOURCE ?= binutils-$(BINUTILS_VERSION).tar.xz +BINUTILS_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_BINUTILS_EXTRA_CONFIG_OPTIONS)) +BINUTILS_INSTALL_STAGING = YES +BINUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +BINUTILS_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS) +BINUTILS_LICENSE = GPL-3.0+, libiberty LGPL-2.1+ +BINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB + +ifeq ($(BINUTILS_FROM_GIT),y) +BINUTILS_DEPENDENCIES += host-flex host-bison +HOST_BINUTILS_DEPENDENCIES += host-flex host-bison +endif + +# When binutils sources are fetched from the binutils-gdb repository, +# they also contain the gdb sources, but gdb shouldn't be built, so we +# disable it. +BINUTILS_DISABLE_GDB_CONF_OPTS = \ + --disable-sim \ + --disable-gdb + +# We need to specify host & target to avoid breaking ARM EABI +BINUTILS_CONF_OPTS = \ + --disable-multilib \ + --disable-werror \ + --host=$(GNU_TARGET_NAME) \ + --target=$(GNU_TARGET_NAME) \ + --enable-install-libiberty \ + --enable-build-warnings=no \ + $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ + $(BINUTILS_EXTRA_CONFIG_OPTIONS) + +ifeq ($(BR2_STATIC_LIBS),y) +BINUTILS_CONF_OPTS += --disable-plugins +endif + +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work +BINUTILS_CONF_ENV += MAKEINFO=true +BINUTILS_MAKE_OPTS += MAKEINFO=true +BINUTILS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MAKEINFO=true install +HOST_BINUTILS_CONF_ENV += MAKEINFO=true +HOST_BINUTILS_MAKE_OPTS += MAKEINFO=true +HOST_BINUTILS_INSTALL_OPTS += MAKEINFO=true install + +# Workaround a build issue with -Os for ARM Cortex-M cpus. +# (Binutils 2.25.1 and 2.26.1) +# https://sourceware.org/bugzilla/show_bug.cgi?id=20552 +ifeq ($(BR2_ARM_CPU_ARMV7M)$(BR2_OPTIMIZE_S),yy) +BINUTILS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O2" +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BINUTILS_DEPENDENCIES += zlib +endif + +# "host" binutils should actually be "cross" +# We just keep the convention of "host utility" for now +HOST_BINUTILS_CONF_OPTS = \ + --disable-multilib \ + --disable-werror \ + --target=$(GNU_TARGET_NAME) \ + --disable-shared \ + --enable-static \ + --with-sysroot=$(STAGING_DIR) \ + --enable-poison-system-directories \ + $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ + $(BINUTILS_EXTRA_CONFIG_OPTIONS) + +# binutils run configure script of subdirs at make time, so ensure +# our TARGET_CONFIGURE_ARGS are taken into consideration for those +BINUTILS_MAKE_ENV = $(TARGET_CONFIGURE_ARGS) + +# 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 +endef + +# If we don't want full binutils on target +ifneq ($(BR2_PACKAGE_BINUTILS_TARGET),y) +define BINUTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install +endef +endif + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define BINUTILS_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),binutils) +endef +BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT +BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +HOST_BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT +HOST_BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +ifeq ($(BR2_BINUTILS_ENABLE_LTO),y) +HOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto +endif + +# Hardlinks between binaries in different directories cause a problem +# with rpath fixup, so we de-hardlink those binaries, and replace them +# with copies instead. +BINUTILS_TOOLS = ar as ld ld.bfd nm objcopy objdump ranlib readelf strip +define HOST_BINUTILS_FIXUP_HARDLINKS + $(foreach tool,$(BINUTILS_TOOLS),\ + rm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \ + cp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) + ) +endef +HOST_BINUTILS_POST_INSTALL_HOOKS += HOST_BINUTILS_FIXUP_HARDLINKS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/biosdevname/Config.in b/features/buildroot/package/biosdevname/Config.in new file mode 100644 index 00000000..5cdf5426 --- /dev/null +++ b/features/buildroot/package/biosdevname/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BIOSDEVNAME + bool "biosdevname" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_ZLIB + help + Biosdevname is a udev helper that looks at various BIOS tables + to figure out what the actual hardware names are for Ethernet + ports and renames the ports accordingly. This has the + advantage of always referring to the same port regardless of + system or hardware changes that might otherwise alter the + typical ethX naming. + + https://github.com/dell/biosdevname/ diff --git a/features/buildroot/package/biosdevname/biosdevname.hash b/features/buildroot/package/biosdevname/biosdevname.hash new file mode 100644 index 00000000..f4470c32 --- /dev/null +++ b/features/buildroot/package/biosdevname/biosdevname.hash @@ -0,0 +1,3 @@ +# Locally computed hashes, not provided by upstream +sha256 3a67fee0c315996bbba586c1c077e57625382d38dc48fb3c9e84d56a7a5effad biosdevname-0.7.3.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/features/buildroot/package/biosdevname/biosdevname.mk b/features/buildroot/package/biosdevname/biosdevname.mk new file mode 100644 index 00000000..574608c5 --- /dev/null +++ b/features/buildroot/package/biosdevname/biosdevname.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# biosdevname +# +################################################################################ + +BIOSDEVNAME_VERSION = 0.7.3 +BIOSDEVNAME_SITE = $(call github,dell,biosdevname,v$(BIOSDEVNAME_VERSION)) +BIOSDEVNAME_LICENSE = GPL +BIOSDEVNAME_LICENSE_FILES = COPYING +BIOSDEVNAME_CONF_OPTS = --exec-prefix=/ +BIOSDEVNAME_DEPENDENCIES = pciutils udev zlib +BIOSDEVNAME_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bird/Config.in b/features/buildroot/package/bird/Config.in new file mode 100644 index 00000000..22c39f84 --- /dev/null +++ b/features/buildroot/package/bird/Config.in @@ -0,0 +1,75 @@ +config BR2_PACKAGE_BIRD + bool "bird" + depends on BR2_USE_MMU # fork() + help + BIRD Internet Routing Daemon + + The BIRD project aims to develop a dynamic IP routing daemon + with full support of all modern routing protocols, easy to + use configuration interface and powerful route filtering + language + + http://bird.network.cz/ + +if BR2_PACKAGE_BIRD + +config BR2_PACKAGE_BIRD_CLIENT + bool "birdc" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Enable the BIRD client + +comment "protocol support" + +config BR2_PACKAGE_BIRD_BABEL + bool "babel" + help + Enable Babel protocol. + +config BR2_PACKAGE_BIRD_BFD + bool "bfd" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + Enable BFD protocol. + +comment "BFD protocol needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_BIRD_BGP + bool "bgp" + default y + help + Enable BGP protocol. + +config BR2_PACKAGE_BIRD_MRT + bool "mrt" + help + Enable MRT protocol. + +config BR2_PACKAGE_BIRD_OSPF + bool "ospf" + help + Enable OSPFv2 and OSPFv3 protocol. + +config BR2_PACKAGE_BIRD_PERF + bool "perf" + help + Enable Perf protocol. + +config BR2_PACKAGE_BIRD_PIPE + bool "pipe" + help + Enable Pipe protocol. + +config BR2_PACKAGE_BIRD_RADV + bool "radv" + help + Enable RAdv protocol. + +config BR2_PACKAGE_BIRD_STATIC + bool "static" + help + Enable Static protocol. + +endif diff --git a/features/buildroot/package/bird/bird.hash b/features/buildroot/package/bird/bird.hash new file mode 100644 index 00000000..5e7296c0 --- /dev/null +++ b/features/buildroot/package/bird/bird.hash @@ -0,0 +1,2 @@ +sha256 676010b7517d4159b9af37401c26185f561ffcffeba73690a2ef2fad984714de bird-2.0.4.tar.gz +sha256 94c53c84320078920ac1f0d49c81a4e9004512f534521a58bdf145acbcbc2cd2 README diff --git a/features/buildroot/package/bird/bird.mk b/features/buildroot/package/bird/bird.mk new file mode 100644 index 00000000..8fe585b9 --- /dev/null +++ b/features/buildroot/package/bird/bird.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# bird +# +################################################################################ + +BIRD_VERSION = 2.0.4 +BIRD_SITE = ftp://bird.network.cz/pub/bird +BIRD_LICENSE = GPL-2.0+ +BIRD_LICENSE_FILES = README +BIRD_DEPENDENCIES = host-flex host-bison + +ifeq ($(BR2_PACKAGE_BIRD_CLIENT),y) +BIRD_CONF_OPTS += --enable-client +BIRD_DEPENDENCIES += ncurses readline +else +BIRD_CONF_OPTS += --disable-client +endif + +# BUG: RIP is mandatory for now +BIRD_PROTOCOLS = \ + rip \ + $(if $(BR2_PACKAGE_BIRD_BFD),bfd) \ + $(if $(BR2_PACKAGE_BIRD_BABEL),babel) \ + $(if $(BR2_PACKAGE_BIRD_BGP),bgp) \ + $(if $(BR2_PACKAGE_BIRD_MRT),mrt) \ + $(if $(BR2_PACKAGE_BIRD_OSPF),ospf) \ + $(if $(BR2_PACKAGE_BIRD_PERF),perf) \ + $(if $(BR2_PACKAGE_BIRD_PIPE),pipe) \ + $(if $(BR2_PACKAGE_BIRD_RADV),radv) \ + $(if $(BR2_PACKAGE_BIRD_RIP),rip) \ + $(if $(BR2_PACKAGE_BIRD_STATIC),static) + +BIRD_CONF_OPTS += --with-protocols=$(subst $(space),$(comma),$(strip $(BIRD_PROTOCOLS))) + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bison/bison.hash b/features/buildroot/package/bison/bison.hash new file mode 100644 index 00000000..a98ed6c8 --- /dev/null +++ b/features/buildroot/package/bison/bison.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 27159ac5ebf736dffd5636fd2cd625767c9e437de65baa63cb0de83570bd820d bison-3.4.1.tar.xz +# License files, locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/features/buildroot/package/bison/bison.mk b/features/buildroot/package/bison/bison.mk new file mode 100644 index 00000000..e5d09a45 --- /dev/null +++ b/features/buildroot/package/bison/bison.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# bison +# +################################################################################ + +BISON_VERSION = 3.4.1 +BISON_SOURCE = bison-$(BISON_VERSION).tar.xz +BISON_SITE = $(BR2_GNU_MIRROR)/bison +BISON_LICENSE = GPL-3.0+ +BISON_LICENSE_FILES = COPYING +HOST_BISON_DEPENDENCIES = host-m4 + +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/bitstream-vera/Config.in b/features/buildroot/package/bitstream-vera/Config.in new file mode 100644 index 00000000..034f115b --- /dev/null +++ b/features/buildroot/package/bitstream-vera/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_BITSTREAM_VERA + bool "Bitstream Vera" + help + Bitstream Vera font family. + + https://www.gnome.org/fonts/ diff --git a/features/buildroot/package/bitstream-vera/bitstream-vera.hash b/features/buildroot/package/bitstream-vera/bitstream-vera.hash new file mode 100644 index 00000000..e18b38bb --- /dev/null +++ b/features/buildroot/package/bitstream-vera/bitstream-vera.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.tar.bz2.sha256sum +sha256 db5b27df7bbb318036ebdb75acd3e98f1bd6eb6608fb70a67d478cd243d178dc ttf-bitstream-vera-1.10.tar.bz2 diff --git a/features/buildroot/package/bitstream-vera/bitstream-vera.mk b/features/buildroot/package/bitstream-vera/bitstream-vera.mk new file mode 100644 index 00000000..f487d637 --- /dev/null +++ b/features/buildroot/package/bitstream-vera/bitstream-vera.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bitstream-vera +# +################################################################################ + +BITSTREAM_VERA_VERSION = 1.10 +BITSTREAM_VERA_SITE = http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/$(BITSTREAM_VERA_VERSION) +BITSTREAM_VERA_SOURCE = ttf-bitstream-vera-$(BITSTREAM_VERA_VERSION).tar.bz2 +BITSTREAM_VERA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/ttf-bitstream-vera +BITSTREAM_VERA_LICENSE = BitstreamVera +BITSTREAM_VERA_LICENSE_FILES = COPYRIGHT.TXT + +define BITSTREAM_VERA_INSTALL_TARGET_CMDS + mkdir -p $(BITSTREAM_VERA_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.ttf $(BITSTREAM_VERA_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/bitstream/Config.in b/features/buildroot/package/bitstream/Config.in new file mode 100644 index 00000000..9d967a0f --- /dev/null +++ b/features/buildroot/package/bitstream/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BITSTREAM + bool "bitstream" + help + biTStream is a set of C headers allowing a simpler access to + binary structures such as specified by MPEG, DVB, IETF, + SMPTE, IEEE, SCTE, etc. + + http://www.videolan.org/developers/bitstream.html diff --git a/features/buildroot/package/bitstream/bitstream.hash b/features/buildroot/package/bitstream/bitstream.hash new file mode 100644 index 00000000..89da7c6f --- /dev/null +++ b/features/buildroot/package/bitstream/bitstream.hash @@ -0,0 +1,6 @@ +# From https://get.videolan.org/bitstream/1.4/bitstream-1.4.tar.bz2.md5 +md5 dfb1449194250b2d364d54b5bbac858d bitstream-1.4.tar.bz2 +# From https://get.videolan.org/bitstream/1.4/bitstream-1.4.tar.bz2.sha256 +sha256 b2484940d3b8733bec9dd1ec1731de428261dff31c9f95874264be9dc9ce786b bitstream-1.4.tar.bz2 +# Locally computed +sha256 9644a812f9a8377a59acb7092a36ce8882a39743425d9171a8fb84637e2f6e04 COPYING diff --git a/features/buildroot/package/bitstream/bitstream.mk b/features/buildroot/package/bitstream/bitstream.mk new file mode 100644 index 00000000..1746d138 --- /dev/null +++ b/features/buildroot/package/bitstream/bitstream.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bitstream +# +################################################################################ + +BITSTREAM_VERSION = 1.4 +BITSTREAM_SOURCE = bitstream-$(BITSTREAM_VERSION).tar.bz2 +BITSTREAM_SITE = https://get.videolan.org/bitstream/$(BITSTREAM_VERSION) +BITSTREAM_LICENSE = MIT +BITSTREAM_LICENSE_FILES = COPYING + +# package consists of header files only +BITSTREAM_INSTALL_STAGING = YES +BITSTREAM_INSTALL_TARGET = NO + +define BITSTREAM_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/blktrace/Config.in b/features/buildroot/package/blktrace/Config.in new file mode 100644 index 00000000..951caed5 --- /dev/null +++ b/features/buildroot/package/blktrace/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BLKTRACE + bool "blktrace" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # system() + select BR2_PACKAGE_LIBAIO + help + blktrace is a block layer IO tracing mechanism which provides + detailed information about request queue operations + up to user space. + + http://git.kernel.dk/?p=blktrace.git;a=summary + +comment "blktrace needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/blktrace/blktrace.hash b/features/buildroot/package/blktrace/blktrace.hash new file mode 100644 index 00000000..d4f62184 --- /dev/null +++ b/features/buildroot/package/blktrace/blktrace.hash @@ -0,0 +1,6 @@ +# From http://brick.kernel.dk/snaps/MD5SUMS +md5 05abb873b4de96c5e7b2deba80695bf1 blktrace-1.2.0.tar.gz + +# Locally computed +sha256 d14029bc096026dacb206bf115c912dcdb795320b5aba6dff3e46d7f94c5242d blktrace-1.2.0.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/features/buildroot/package/blktrace/blktrace.mk b/features/buildroot/package/blktrace/blktrace.mk new file mode 100644 index 00000000..6d1c8e3b --- /dev/null +++ b/features/buildroot/package/blktrace/blktrace.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# blktrace +# +################################################################################ + +BLKTRACE_VERSION = 1.2.0 +BLKTRACE_SITE = http://brick.kernel.dk/snaps +BLKTRACE_DEPENDENCIES = libaio +BLKTRACE_LICENSE = GPL-2.0+ +BLKTRACE_LICENSE_FILES = COPYING + +define BLKTRACE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define BLKTRACE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \ + DESTDIR=$(TARGET_DIR) prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/bluez-alsa/Config.in b/features/buildroot/package/bluez-alsa/Config.in new file mode 100644 index 00000000..e52933f0 --- /dev/null +++ b/features/buildroot/package/bluez-alsa/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_BLUEZ_ALSA + bool "bluez-alsa" + depends on !BR2_STATIC_LIBS # bluez5 + depends on !BR2_PACKAGE_BLUEZ_UTILS # bluez5 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5 + depends on BR2_USE_MMU # bluez5 -> dbus + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_SBC + help + Bluetooth Audio ALSA Backend. + + https://github.com/Arkq/bluez-alsa + +if BR2_PACKAGE_BLUEZ_ALSA + +config BR2_PACKAGE_BLUEZ_ALSA_HCITOP + bool "hcitop" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + select BR2_PACKAGE_LIBBSD + select BR2_PACKAGE_NCURSES + help + Enable top-like monitoring tool for HCI. + +config BR2_PACKAGE_BLUEZ_ALSA_RFCOMM + bool "rfcomm" + select BR2_PACKAGE_READLINE + help + Simple tool for sending RFCOMM commands. + +endif + +comment "bluez-alsa needs a toolchain w/ wchar, NPTL, headers >= 3.4, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_BLUEZ_UTILS diff --git a/features/buildroot/package/bluez-alsa/bluez-alsa.hash b/features/buildroot/package/bluez-alsa/bluez-alsa.hash new file mode 100644 index 00000000..afc84329 --- /dev/null +++ b/features/buildroot/package/bluez-alsa/bluez-alsa.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 6287ae6135795a78470068ef9d9ea660d556cefc409905bd9211fda04d1e1f8e bluez-alsa-1.4.0.tar.gz +sha256 45fe8648faa0e735d4aaf60c32ddd37fc7f027d34ccedcf0f69d8aa961b63b25 LICENSE diff --git a/features/buildroot/package/bluez-alsa/bluez-alsa.mk b/features/buildroot/package/bluez-alsa/bluez-alsa.mk new file mode 100644 index 00000000..4552be82 --- /dev/null +++ b/features/buildroot/package/bluez-alsa/bluez-alsa.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# bluez-alsa +# +################################################################################ + +BLUEZ_ALSA_VERSION = 1.4.0 +BLUEZ_ALSA_SITE = $(call github,Arkq,bluez-alsa,v$(BLUEZ_ALSA_VERSION)) +BLUEZ_ALSA_LICENSE = MIT +BLUEZ_ALSA_LICENSE_FILES = LICENSE +BLUEZ_ALSA_DEPENDENCIES = alsa-lib bluez5_utils libglib2 sbc host-pkgconf + +# git repo, no configure +BLUEZ_ALSA_AUTORECONF = YES + +# Autoreconf requires an existing m4 directory +define BLUEZ_ALSA_MKDIR_M4 + mkdir -p $(@D)/m4 +endef +BLUEZ_ALSA_POST_PATCH_HOOKS += BLUEZ_ALSA_MKDIR_M4 + +BLUEZ_ALSA_CONF_OPTS = \ + --enable-aplay \ + --disable-debug-time \ + --with-alsaplugindir=/usr/lib/alsa-lib \ + --with-alsaconfdir=/usr/share/alsa + +ifeq ($(BR2_PACKAGE_FDK_AAC),y) +BLUEZ_ALSA_DEPENDENCIES += fdk-aac +BLUEZ_ALSA_CONF_OPTS += --enable-aac +else +BLUEZ_ALSA_CONF_OPTS += --disable-aac +endif + +# no build dependency, disables internal HFP in favor of oFonos HFP profile +ifeq ($(BR2_PACKAGE_OFONO),y) +BLUEZ_ALSA_CONF_OPTS += --enable-ofono +else +BLUEZ_ALSA_CONF_OPTS += --disable-ofono +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_ALSA_HCITOP),y) +BLUEZ_ALSA_DEPENDENCIES += libbsd ncurses +BLUEZ_ALSA_CONF_OPTS += --enable-hcitop +else +BLUEZ_ALSA_CONF_OPTS += --disable-hcitop +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_ALSA_RFCOMM),y) +BLUEZ_ALSA_DEPENDENCIES += readline +BLUEZ_ALSA_CONF_OPTS += --enable-rfcomm +else +BLUEZ_ALSA_CONF_OPTS += --disable-rfcomm +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bluez-tools/Config.in b/features/buildroot/package/bluez-tools/Config.in new file mode 100644 index 00000000..5a1b7d04 --- /dev/null +++ b/features/buildroot/package/bluez-tools/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BLUEZ_TOOLS + bool "bluez-tools" + depends on BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS + depends on BR2_USE_MMU # dbus, libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_READLINE if BR2_PACKAGE_BLUEZ5_UTILS + help + A set of tools to manage bluetooth devices for linux + + https://github.com/khvzak/bluez-tools + +comment "bluez-tools needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/bluez-tools/bluez-tools.hash b/features/buildroot/package/bluez-tools/bluez-tools.hash new file mode 100644 index 00000000..214fa5bd --- /dev/null +++ b/features/buildroot/package/bluez-tools/bluez-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 56204ddd1cc7890d60f6a47507755f786fa3ee28f1da370a32ca7d7e0795a953 bluez-tools-171181b6ef6c94aefc828dc7fd8de136b9f97532.tar.gz +sha256 62ca98af63d2ae142dbc77995c6bd4c259eaba4a5832daa33ae9e3d585b9205f bluez-tools-97efd293491ad7ec96a655665339908f2478b3d1.tar.gz diff --git a/features/buildroot/package/bluez-tools/bluez-tools.mk b/features/buildroot/package/bluez-tools/bluez-tools.mk new file mode 100644 index 00000000..49891bd2 --- /dev/null +++ b/features/buildroot/package/bluez-tools/bluez-tools.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# bluez-tools +# +################################################################################ + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +# this is the last version compatible with BlueZ 4 API +BLUEZ_TOOLS_VERSION = 171181b6ef6c94aefc828dc7fd8de136b9f97532 +else +BLUEZ_TOOLS_VERSION = 97efd293491ad7ec96a655665339908f2478b3d1 +endif +BLUEZ_TOOLS_SITE = $(call github,khvzak,bluez-tools,$(BLUEZ_TOOLS_VERSION)) + +# sources fetched from github, no configure script) +BLUEZ_TOOLS_AUTORECONF = YES +BLUEZ_TOOLS_DEPENDENCIES = host-pkgconf dbus dbus-glib +BLUEZ_TOOLS_LICENSE = GPL-2.0+ +BLUEZ_TOOLS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +BLUEZ_TOOLS_DEPENDENCIES += bluez_utils +# readline is an optional dependency when used with bluez_utils +# obex support depends on readline so enable it optionally +ifeq ($(BR2_PACKAGE_READLINE),y) +BLUEZ_TOOLS_CONF_OPTS += --enable-obex +BLUEZ_TOOLS_DEPENDENCIES += readline +else +BLUEZ_TOOLS_CONF_OPTS += --disable-obex +endif +else +# readline is a hard dependency when used with bluez5_utils +BLUEZ_TOOLS_DEPENDENCIES += bluez5_utils readline +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bluez5_utils-headers/Config.in b/features/buildroot/package/bluez5_utils-headers/Config.in new file mode 100644 index 00000000..e29e3dfe --- /dev/null +++ b/features/buildroot/package/bluez5_utils-headers/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BLUEZ5_UTILS_HEADERS + bool + help + Header files from bluez utils version 5.x + + http://www.bluez.org + http://www.kernel.org/pub/linux/bluetooth diff --git a/features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.hash b/features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.hash new file mode 120000 index 00000000..1f489458 --- /dev/null +++ b/features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.hash @@ -0,0 +1 @@ +../bluez5_utils/bluez5_utils.hash \ No newline at end of file diff --git a/features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.mk b/features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.mk new file mode 100644 index 00000000..020e8b4d --- /dev/null +++ b/features/buildroot/package/bluez5_utils-headers/bluez5_utils-headers.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# bluez5_utils-headers +# +################################################################################ + +# Keep the version and patches in sync with bluez5_utils +BLUEZ5_UTILS_HEADERS_VERSION = 5.50 +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 +BLUEZ5_UTILS_HEADERS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ5_UTILS_HEADERS_LICENSE_FILES = COPYING COPYING.LIB + +BLUEZ5_UTILS_HEADERS_INSTALL_STAGING = YES +BLUEZ5_UTILS_HEADERS_INSTALL_TARGET = NO + +define BLUEZ5_UTILS_HEADERS_INSTALL_STAGING_CMDS + $(INSTALL) -d $(STAGING_DIR)/usr/include/bluetooth/ + $(INSTALL) -m 644 $(@D)/lib/*.h $(STAGING_DIR)/usr/include/bluetooth/ +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/bluez5_utils/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch b/features/buildroot/package/bluez5_utils/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch new file mode 100644 index 00000000..7d08c6aa --- /dev/null +++ b/features/buildroot/package/bluez5_utils/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch @@ -0,0 +1,68 @@ +From f36f71f60b1e68c0f12e615b9b128d089ec3dd19 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Fri, 7 Jun 2019 09:51:33 +0200 +Subject: tools: Fix build after y2038 changes in glibc + +The 32-bit SIOCGSTAMP has been deprecated. Use the deprecated name +to fix the build. +[Retrieved from: +https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/tools/?id=f36f71f60b1e68c0f12e615b9b128d089ec3dd19] +Signed-off-by: Fabrice Fontaine +--- + tools/l2test.c | 6 +++++- + tools/rctest.c | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +(limited to 'tools') + +diff --git a/tools/l2test.c b/tools/l2test.c +index e755ac881..e787c2ce2 100644 +--- a/tools/l2test.c ++++ b/tools/l2test.c +@@ -55,6 +55,10 @@ + #define BREDR_DEFAULT_PSM 0x1011 + #define LE_DEFAULT_PSM 0x0080 + ++#ifndef SIOCGSTAMP_OLD ++#define SIOCGSTAMP_OLD SIOCGSTAMP ++#endif ++ + /* Test modes */ + enum { + SEND, +@@ -907,7 +911,7 @@ static void recv_mode(int sk) + if (timestamp) { + struct timeval tv; + +- if (ioctl(sk, SIOCGSTAMP, &tv) < 0) { ++ if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) { + timestamp = 0; + memset(ts, 0, sizeof(ts)); + } else { +diff --git a/tools/rctest.c b/tools/rctest.c +index 94490f462..bc8ed875d 100644 +--- a/tools/rctest.c ++++ b/tools/rctest.c +@@ -50,6 +50,10 @@ + + #include "src/shared/util.h" + ++#ifndef SIOCGSTAMP_OLD ++#define SIOCGSTAMP_OLD SIOCGSTAMP ++#endif ++ + /* Test modes */ + enum { + SEND, +@@ -505,7 +509,7 @@ static void recv_mode(int sk) + if (timestamp) { + struct timeval tv; + +- if (ioctl(sk, SIOCGSTAMP, &tv) < 0) { ++ if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) { + timestamp = 0; + memset(ts, 0, sizeof(ts)); + } else { +-- +cgit 1.2-0.3.lf.el7 + diff --git a/features/buildroot/package/bluez5_utils/Config.in b/features/buildroot/package/bluez5_utils/Config.in new file mode 100644 index 00000000..c5e8dfbc --- /dev/null +++ b/features/buildroot/package/bluez5_utils/Config.in @@ -0,0 +1,105 @@ +config BR2_PACKAGE_BLUEZ5_UTILS + bool "bluez-utils 5.x" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus + depends on !BR2_STATIC_LIBS # uses dlfcn + depends on !BR2_PACKAGE_BLUEZ_UTILS # conflicts with 4.x version + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + help + bluez utils version 5.x + + With this release BlueZ only supports the new Bluetooth + Management kernel interface (introduced in Linux 3.4). + + For Low Energy support at least kernel version 3.5 is + needed. + + The API is not backward compatible with BlueZ 4. + + Bluez utils will use systemd and/or udev if enabled. + + http://www.bluez.org + http://www.kernel.org/pub/linux/bluetooth + +if BR2_PACKAGE_BLUEZ5_UTILS + +config BR2_PACKAGE_BLUEZ5_UTILS_OBEX + bool "build OBEX support" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBICAL + help + Enable the OBEX support in Bluez 5.x. + +comment "OBEX support needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_BLUEZ5_UTILS_CLIENT + bool "build CLI client" + select BR2_PACKAGE_READLINE + help + Enable the Bluez 5.x command line client. + +config BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED + bool "install deprecated tool" + depends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT + help + Build BlueZ 5.x deprecated tools. These currently include: + hciattach, hciconfig, hcitool, hcidump, rfcomm, sdptool, + ciptool, gatttool. + +config BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL + bool "build experimental obexd plugin" + help + Build BlueZ 5.x experimental Nokia OBEX PC Suite plugin + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH + bool "build health plugin" + help + Build BlueZ 5.x health plugin + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI + bool "build midi profile" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Build BlueZ 5.x midi plugin + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC + bool "build nfc plugin" + help + Build BlueZ 5.x nfc plugin + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP + bool "build sap plugin" + help + Build BlueZ 5.x sap plugin + +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS + bool "build sixaxis plugin" + depends on BR2_PACKAGE_HAS_UDEV + help + Build BlueZ 5.x sixaxis plugin (support Sony Dualshock + controller) + +comment "sixaxis plugin needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_BLUEZ5_UTILS_TEST + bool "build tests" + help + Build BlueZ 5.x tests + +endif + +comment "bluez5-utils needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + +comment "bluez5-utils conflicts with older bluez-utils version" + depends on BR2_PACKAGE_BLUEZ_UTILS diff --git a/features/buildroot/package/bluez5_utils/bluez5_utils.hash b/features/buildroot/package/bluez5_utils/bluez5_utils.hash new file mode 100644 index 00000000..b9657085 --- /dev/null +++ b/features/buildroot/package/bluez5_utils/bluez5_utils.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: +sha256 5ffcaae18bbb6155f1591be8c24898dc12f062075a40b538b745bfd477481911 bluez-5.50.tar.xz +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/features/buildroot/package/bluez5_utils/bluez5_utils.mk b/features/buildroot/package/bluez5_utils/bluez5_utils.mk new file mode 100644 index 00000000..15c9b670 --- /dev/null +++ b/features/buildroot/package/bluez5_utils/bluez5_utils.mk @@ -0,0 +1,129 @@ +################################################################################ +# +# bluez5_utils +# +################################################################################ + +# Keep the version and patches in sync with bluez5_utils-headers +BLUEZ5_UTILS_VERSION = 5.50 +BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz +BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +BLUEZ5_UTILS_INSTALL_STAGING = YES +BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB + +BLUEZ5_UTILS_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),bluez5_utils-headers) \ + dbus \ + libglib2 + +BLUEZ5_UTILS_CONF_OPTS = \ + --enable-tools \ + --enable-library \ + --disable-cups \ + --with-dbusconfdir=/etc + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_OBEX),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-obex +BLUEZ5_UTILS_DEPENDENCIES += libical +else +BLUEZ5_UTILS_CONF_OPTS += --disable-obex +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-client +BLUEZ5_UTILS_DEPENDENCIES += readline +else +BLUEZ5_UTILS_CONF_OPTS += --disable-client +endif + +# experimental plugins +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-experimental +else +BLUEZ5_UTILS_CONF_OPTS += --disable-experimental +endif + +# enable health plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-health +else +BLUEZ5_UTILS_CONF_OPTS += --disable-health +endif + +# enable midi profile +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-midi +BLUEZ5_UTILS_DEPENDENCIES += alsa-lib +else +BLUEZ5_UTILS_CONF_OPTS += --disable-midi +endif + +# enable nfc plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-nfc +else +BLUEZ5_UTILS_CONF_OPTS += --disable-nfc +endif + +# enable sap plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-sap +else +BLUEZ5_UTILS_CONF_OPTS += --disable-sap +endif + +# enable sixaxis plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-sixaxis +else +BLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis +endif + +# install gatttool (For some reason upstream choose not to do it by default) +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y) +define BLUEZ5_UTILS_INSTALL_GATTTOOL + $(INSTALL) -D -m 0755 $(@D)/attrib/gatttool $(TARGET_DIR)/usr/bin/gatttool +endef +BLUEZ5_UTILS_POST_INSTALL_TARGET_HOOKS += BLUEZ5_UTILS_INSTALL_GATTTOOL +# hciattach_bcm43xx defines default firmware path in `/etc/firmware`, but +# Broadcom firmware blobs are usually located in `/lib/firmware`. +BLUEZ5_UTILS_CONF_ENV += \ + CPPFLAGS='$(TARGET_CPPFLAGS) -DFIRMWARE_DIR=\"/lib/firmware\"' +BLUEZ5_UTILS_CONF_OPTS += --enable-deprecated +else +BLUEZ5_UTILS_CONF_OPTS += --disable-deprecated +endif + +# enable test +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TEST),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-test +else +BLUEZ5_UTILS_CONF_OPTS += --disable-test +endif + +# use udev if available +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-udev +BLUEZ5_UTILS_DEPENDENCIES += udev +else +BLUEZ5_UTILS_CONF_OPTS += --disable-udev +endif + +# integrate with systemd if available +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-systemd +BLUEZ5_UTILS_DEPENDENCIES += systemd +else +BLUEZ5_UTILS_CONF_OPTS += --disable-systemd +endif + +define BLUEZ5_UTILS_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/bluetooth.target.wants + ln -fs ../../../../usr/lib/systemd/system/bluetooth.service \ + $(TARGET_DIR)/etc/systemd/system/bluetooth.target.wants/bluetooth.service + ln -fs ../../../usr/lib/systemd/system/bluetooth.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.bluez.service +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch b/features/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch new file mode 100644 index 00000000..e80af5fd --- /dev/null +++ b/features/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch @@ -0,0 +1,106 @@ +From ac7992081abba87627c9e91735b3309584b48585 Mon Sep 17 00:00:00 2001 +From: Gregory Hermant +Date: Wed, 14 Nov 2012 14:27:02 +0100 +Subject: [PATCH] add support for the ST-Ericsson CG2900 GPS FM Bluetooth + combo controller + + +Signed-off-by: Gregory Hermant +--- + tools/hciattach.c | 22 +++++++++++++++------- + tools/hciattach.h | 1 + + 2 files changed, 16 insertions(+), 7 deletions(-) + +diff --git a/tools/hciattach.c b/tools/hciattach.c +index e4d5aa1..7f08243 100644 +--- a/tools/hciattach.c ++++ b/tools/hciattach.c +@@ -1066,6 +1066,11 @@ struct uart_t uart[] = { + { "texasalt", 0x0000, 0x0000, HCI_UART_LL, 115200, 115200, + FLOW_CTL, DISABLE_PM, NULL, texasalt, NULL }, + ++ /* ST-Ericsson CG2900 GPS FM Bluetooth combo controller */ ++ { "cg2900", 0x0000, 0x0000, HCI_UART_STE, 115200, 115200, ++ FLOW_CTL, DISABLE_PM, NULL, NULL }, ++ ++ + /* ST Microelectronics minikits based on STLC2410/STLC2415 */ + { "st", 0x0000, 0x0000, HCI_UART_H4, 57600, 115200, + FLOW_CTL, DISABLE_PM, NULL, st }, +@@ -1157,10 +1162,10 @@ static struct uart_t * get_by_type(char *type) + } + + /* Initialize UART driver */ +-static int init_uart(char *dev, struct uart_t *u, int send_break, int raw) ++static int init_uart(char *dev, struct uart_t *u, int send_break, int raw, int line_disc) + { + struct termios ti; +- int fd, i; ++ int fd; + unsigned long flags = 0; + + if (raw) +@@ -1217,8 +1222,7 @@ static int init_uart(char *dev, struct uart_t *u, int send_break, int raw) + } + + /* Set TTY to N_HCI line discipline */ +- i = N_HCI; +- if (ioctl(fd, TIOCSETD, &i) < 0) { ++ if (ioctl(fd, TIOCSETD, &line_disc) < 0) { + perror("Can't set line discipline"); + return -1; + } +@@ -1243,7 +1247,7 @@ static void usage(void) + { + printf("hciattach - HCI UART driver initialization utility\n"); + printf("Usage:\n"); +- printf("\thciattach [-n] [-p] [-b] [-r] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]\n"); ++ printf("\thciattach [-n] [-p] [-a line_disc_nr] [-b] [-r] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]\n"); + printf("\thciattach -l\n"); + } + +@@ -1252,6 +1256,7 @@ int main(int argc, char *argv[]) + struct uart_t *u = NULL; + int detach, printpid, raw, opt, i, n, ld, err; + int to = 10; ++ int line_disc = N_HCI; + int init_speed = 0; + int send_break = 0; + pid_t pid; +@@ -1264,8 +1269,11 @@ int main(int argc, char *argv[]) + printpid = 0; + raw = 0; + +- while ((opt=getopt(argc, argv, "bnpt:s:lr")) != EOF) { ++ while ((opt=getopt(argc, argv, "bnpt:s:lra:")) != EOF) { + switch(opt) { ++ case 'a': ++ line_disc = atoi(optarg); ++ break; + case 'b': + send_break = 1; + break; +@@ -1381,7 +1389,7 @@ int main(int argc, char *argv[]) + alarm(to); + bcsp_max_retries = to; + +- n = init_uart(dev, u, send_break, raw); ++ n = init_uart(dev, u, send_break, raw, line_disc); + if (n < 0) { + perror("Can't initialize device"); + exit(1); +diff --git a/tools/hciattach.h b/tools/hciattach.h +index fed0d11..09b534d 100644 +--- a/tools/hciattach.h ++++ b/tools/hciattach.h +@@ -39,6 +39,7 @@ + #define HCI_UART_H4DS 3 + #define HCI_UART_LL 4 + #define HCI_UART_ATH3K 5 ++#define HCI_UART_STE 6 + + #define HCI_UART_RAW_DEVICE 0 + +-- +1.7.9.5 + diff --git a/features/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch b/features/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch new file mode 100644 index 00000000..7d0763ff --- /dev/null +++ b/features/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch @@ -0,0 +1,27 @@ +From ae607756a5f2a09bce1fc3a52e74b5f471245e33 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 6 Apr 2015 23:54:19 +0200 +Subject: [PATCH] tools/hciconfig: include + +Needed to get the definition of mode_t in musl. + +Signed-off-by: Thomas Petazzoni +--- + tools/hciconfig.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/hciconfig.c b/tools/hciconfig.c +index f1458b9..6776d62 100644 +--- a/tools/hciconfig.c ++++ b/tools/hciconfig.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.1.0 + diff --git a/features/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch b/features/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch new file mode 100644 index 00000000..d8b48eaa --- /dev/null +++ b/features/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch @@ -0,0 +1,61 @@ +From 8aa6aa4ba2d9d00c91e36e146895af20cbc00d17 Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Wed, 2 Sep 2015 12:10:58 +0100 +Subject: [PATCH 1/1] fix compilation issues with musl. + +- sys/time.h needed for struct timeval +- unistd.h should not be included due to clash with encrypt(3) +- sys/types.h needed for mode_t + +Note that this version of bluez is 3 years old. Recent fixes have gone +into the upstream to address musl compatibility issues, but the upstream +has changed so much that it makes little sense to try to backport these. +This patch is really a stopgap until we move to the latest upstream. + +Upstream-Status: not needed +Signed-off-by: Brendan Heading +--- + compat/bnep.c | 1 + + compat/dund.c | 1 - + src/textfile.h | 1 + + 3 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/compat/bnep.c b/compat/bnep.c +index 281350b..49226c1 100644 +--- a/compat/bnep.c ++++ b/compat/bnep.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + #include + #include +diff --git a/compat/dund.c b/compat/dund.c +index af1b536..c2f085f 100644 +--- a/compat/dund.c ++++ b/compat/dund.c +@@ -29,7 +29,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/src/textfile.h b/src/textfile.h +index dc5fc2b..0148b30 100644 +--- a/src/textfile.h ++++ b/src/textfile.h +@@ -24,6 +24,7 @@ + #ifndef __TEXTFILE_H + #define __TEXTFILE_H + ++#include + int create_dirs(const char *filename, const mode_t mode); + int create_file(const char *filename, const mode_t mode); + int create_name(char *buf, size_t size, const char *path, +-- +2.4.3 + diff --git a/features/buildroot/package/bluez_utils/0004-test-add-missing-header.patch b/features/buildroot/package/bluez_utils/0004-test-add-missing-header.patch new file mode 100644 index 00000000..c74afb83 --- /dev/null +++ b/features/buildroot/package/bluez_utils/0004-test-add-missing-header.patch @@ -0,0 +1,34 @@ +From d3c098c2fde55ddf0c7d56eae56925103d35da73 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 13 May 2017 18:56:51 +0200 +Subject: [PATCH] test: add missing header + +test/attest.c: In function 'at_command': +test/attest.c:43:2: error: unknown type name 'fd_set' + fd_set rfds; + ^ + +Fixes: +http://autobuild.buildroot.net/results/06c/06c930d9c5299b79500d018ac3fb2861ce834c7c/ + +Signed-off-by: Romain Naour +--- + test/attest.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/test/attest.c b/test/attest.c +index 12ba682..2626cf1 100644 +--- a/test/attest.c ++++ b/test/attest.c +@@ -35,6 +35,8 @@ + #include + #include + ++#include ++ + #include + #include + +-- +2.9.3 + diff --git a/features/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch b/features/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch new file mode 100644 index 00000000..438da97c --- /dev/null +++ b/features/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch @@ -0,0 +1,107 @@ +From d8056252d0c99bfb2482f0a420dcf9a36019ddf8 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 13 May 2017 18:58:51 +0200 +Subject: [PATCH] test: avoid conflict with encrypt function +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With a musl based toolchain: + +test/l2test.c:110:12: error: ‘encrypt’ redeclared as different kind of symbol + static int encrypt = 0; + ^ +In file included from test/l2test.c:34:0: +[...]/sysroot/usr/include/unistd.h:145:6: note: previous declaration of ‘encrypt’ was here + void encrypt(char *, int); + ^ + +Signed-off-by: Romain Naour +--- + test/l2test.c | 8 ++++---- + test/rctest.c | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/test/l2test.c b/test/l2test.c +index f66486d..9ef6faf 100644 +--- a/test/l2test.c ++++ b/test/l2test.c +@@ -107,7 +107,7 @@ static char *filename = NULL; + static int rfcmode = 0; + static int master = 0; + static int auth = 0; +-static int encrypt = 0; ++static int _encrypt = 0; + static int secure = 0; + static int socktype = SOCK_SEQPACKET; + static int linger = 0; +@@ -340,7 +340,7 @@ static int do_connect(char *svr) + opt |= L2CAP_LM_MASTER; + if (auth) + opt |= L2CAP_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= L2CAP_LM_ENCRYPT; + if (secure) + opt |= L2CAP_LM_SECURE; +@@ -475,7 +475,7 @@ static void do_listen(void (*handler)(int sk)) + opt |= L2CAP_LM_MASTER; + if (auth) + opt |= L2CAP_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= L2CAP_LM_ENCRYPT; + if (secure) + opt |= L2CAP_LM_SECURE; +@@ -1407,7 +1407,7 @@ int main(int argc, char *argv[]) + break; + + case 'E': +- encrypt = 1; ++ _encrypt = 1; + break; + + case 'S': +diff --git a/test/rctest.c b/test/rctest.c +index 4d7c90a..7ad5a0b 100644 +--- a/test/rctest.c ++++ b/test/rctest.c +@@ -79,7 +79,7 @@ static char *filename = NULL; + + static int master = 0; + static int auth = 0; +-static int encrypt = 0; ++static int _encrypt = 0; + static int secure = 0; + static int socktype = SOCK_STREAM; + static int linger = 0; +@@ -200,7 +200,7 @@ static int do_connect(const char *svr) + opt |= RFCOMM_LM_MASTER; + if (auth) + opt |= RFCOMM_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= RFCOMM_LM_ENCRYPT; + if (secure) + opt |= RFCOMM_LM_SECURE; +@@ -291,7 +291,7 @@ static void do_listen(void (*handler)(int sk)) + opt |= RFCOMM_LM_MASTER; + if (auth) + opt |= RFCOMM_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= RFCOMM_LM_ENCRYPT; + if (secure) + opt |= RFCOMM_LM_SECURE; +@@ -701,7 +701,7 @@ int main(int argc, char *argv[]) + break; + + case 'E': +- encrypt = 1; ++ _encrypt = 1; + break; + + case 'S': +-- +2.9.3 + diff --git a/features/buildroot/package/bluez_utils/0006-tools-Fix-build-after-y2038-changes-in-glibc.patch b/features/buildroot/package/bluez_utils/0006-tools-Fix-build-after-y2038-changes-in-glibc.patch new file mode 100644 index 00000000..fd81a93b --- /dev/null +++ b/features/buildroot/package/bluez_utils/0006-tools-Fix-build-after-y2038-changes-in-glibc.patch @@ -0,0 +1,68 @@ +From f36f71f60b1e68c0f12e615b9b128d089ec3dd19 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Fri, 7 Jun 2019 09:51:33 +0200 +Subject: tools: Fix build after y2038 changes in glibc + +The 32-bit SIOCGSTAMP has been deprecated. Use the deprecated name +to fix the build. +[Retrieved (and backported) from: +https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/tools/?id=f36f71f60b1e68c0f12e615b9b128d089ec3dd19] +Signed-off-by: Fabrice Fontaine +--- + test/l2test.c | 6 +++++- + test/rctest.c | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +(limited to 'tools') + +diff --git a/test/l2test.c b/test/l2test.c +index e755ac881..e787c2ce2 100644 +--- a/test/l2test.c ++++ b/test/l2test.c +@@ -55,6 +55,10 @@ + #define BREDR_DEFAULT_PSM 0x1011 + #define LE_DEFAULT_PSM 0x0080 + ++#ifndef SIOCGSTAMP_OLD ++#define SIOCGSTAMP_OLD SIOCGSTAMP ++#endif ++ + /* Test modes */ + enum { + SEND, +@@ -907,7 +911,7 @@ static void recv_mode(int sk) + if (timestamp) { + struct timeval tv; + +- if (ioctl(sk, SIOCGSTAMP, &tv) < 0) { ++ if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) { + timestamp = 0; + memset(ts, 0, sizeof(ts)); + } else { +diff --git a/test/rctest.c b/test/rctest.c +index 94490f462..bc8ed875d 100644 +--- a/test/rctest.c ++++ b/test/rctest.c +@@ -50,6 +50,10 @@ + + #include "src/shared/util.h" + ++#ifndef SIOCGSTAMP_OLD ++#define SIOCGSTAMP_OLD SIOCGSTAMP ++#endif ++ + /* Test modes */ + enum { + SEND, +@@ -505,7 +509,7 @@ static void recv_mode(int sk) + if (timestamp) { + struct timeval tv; + +- if (ioctl(sk, SIOCGSTAMP, &tv) < 0) { ++ if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) { + timestamp = 0; + memset(ts, 0, sizeof(ts)); + } else { +-- +cgit 1.2-0.3.lf.el7 + diff --git a/features/buildroot/package/bluez_utils/Config.in b/features/buildroot/package/bluez_utils/Config.in new file mode 100644 index 00000000..327d26bc --- /dev/null +++ b/features/buildroot/package/bluez_utils/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_BLUEZ_UTILS + bool "bluez-utils" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + select BR2_PACKAGE_CHECK + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + help + bluez utils + + http://www.kernel.org/pub/linux/bluetooth + +if BR2_PACKAGE_BLUEZ_UTILS + +config BR2_PACKAGE_BLUEZ_UTILS_COMPAT + bool "BlueZ 3.x compatibility binaries" + help + BlueZ 3.x compatibility binaries like pand, hidd, sdp + +config BR2_PACKAGE_BLUEZ_UTILS_AUDIO + bool "audio support" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_LIBSNDFILE + help + Audio support + +config BR2_PACKAGE_BLUEZ_UTILS_USB + bool "USB support" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + USB support + +config BR2_PACKAGE_BLUEZ_UTILS_GATT + bool "GATT support" + select BR2_PACKAGE_READLINE + help + Generic Attribute Profile (GATT) support. This provides + profile discovery and description services for Bluetooth Low + Energy. + This will install the gatttool utility. +endif + +comment "bluez-utils needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/features/buildroot/package/bluez_utils/bluez_utils.hash b/features/buildroot/package/bluez_utils/bluez_utils.hash new file mode 100644 index 00000000..39e750ea --- /dev/null +++ b/features/buildroot/package/bluez_utils/bluez_utils.hash @@ -0,0 +1,5 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: +sha256 41f9578bef39b8c94a2d6ddeaa556afd22d136936d0f03100e422fe970a45a7d bluez-4.101.tar.xz +# License files, locally calculated +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/features/buildroot/package/bluez_utils/bluez_utils.mk b/features/buildroot/package/bluez_utils/bluez_utils.mk new file mode 100644 index 00000000..256f012d --- /dev/null +++ b/features/buildroot/package/bluez_utils/bluez_utils.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# bluez_utils +# +################################################################################ + +BLUEZ_UTILS_VERSION = 4.101 +BLUEZ_UTILS_SOURCE = bluez-$(BLUEZ_UTILS_VERSION).tar.xz +BLUEZ_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +BLUEZ_UTILS_INSTALL_STAGING = YES +BLUEZ_UTILS_DEPENDENCIES = host-pkgconf check dbus libglib2 +BLUEZ_UTILS_CONF_OPTS = --enable-test --enable-tools +BLUEZ_UTILS_AUTORECONF = YES +BLUEZ_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ_UTILS_LICENSE_FILES = COPYING COPYING.LIB + +# BlueZ 3.x compatibility +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_COMPAT),y) +BLUEZ_UTILS_CONF_OPTS += \ + --enable-hidd \ + --enable-pand \ + --enable-sdp \ + --enable-dund +endif + +# audio support +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_AUDIO),y) +BLUEZ_UTILS_DEPENDENCIES += \ + alsa-lib \ + libsndfile +BLUEZ_UTILS_CONF_OPTS += \ + --enable-alsa \ + --enable-audio +else +BLUEZ_UTILS_CONF_OPTS += \ + --disable-alsa \ + --disable-audio +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_GATT),y) +BLUEZ_UTILS_DEPENDENCIES += readline +BLUEZ_UTILS_CONF_OPTS += --enable-gatt +else +BLUEZ_UTILS_CONF_OPTS += --disable-gatt +endif + +# USB support +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_USB),y) +BLUEZ_UTILS_DEPENDENCIES += libusb +BLUEZ_UTILS_CONF_OPTS += \ + --enable-usb +else +BLUEZ_UTILS_CONF_OPTS += \ + --disable-usb +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +BLUEZ_UTILS_CONF_OPTS += --disable-pie +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bmon/Config.in b/features/buildroot/package/bmon/Config.in new file mode 100644 index 00000000..cb83cc28 --- /dev/null +++ b/features/buildroot/package/bmon/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BMON + bool "bmon" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBCONFUSE + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_NCURSES + help + bmon is a bandwidth monitor capable of retrieving statistics + from various input modules. It provides various output methods + including a curses based interface. + + https://github.com/tgraf/bmon/ + +comment "bmon needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/bmon/bmon.hash b/features/buildroot/package/bmon/bmon.hash new file mode 100644 index 00000000..dec0c7d8 --- /dev/null +++ b/features/buildroot/package/bmon/bmon.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 02fdc312b8ceeb5786b28bf905f54328f414040ff42f45c83007f24b76cc9f7a bmon-4.0.tar.gz diff --git a/features/buildroot/package/bmon/bmon.mk b/features/buildroot/package/bmon/bmon.mk new file mode 100644 index 00000000..84dab703 --- /dev/null +++ b/features/buildroot/package/bmon/bmon.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# bmon +# +################################################################################ + +BMON_VERSION = 4.0 +BMON_SITE = https://github.com/tgraf/bmon/releases/download/v$(BMON_VERSION) +BMON_DEPENDENCIES = host-pkgconf libconfuse libnl ncurses +BMON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +BMON_LICENSE = BSD-2-Clause, MIT +BMON_LICENSE_FILES = LICENSE.BSD LICENSE.MIT + +# link dynamically unless explicitly requested otherwise +ifeq ($(BR2_STATIC_LIBS),) +BMON_CONF_OPTS += --disable-static +else +# forgets to explicitly link with pthread for libnl +BMON_CONF_OPTS += LIBS=-lpthread +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/boa/0001-use-name-max.patch b/features/buildroot/package/boa/0001-use-name-max.patch new file mode 100644 index 00000000..055e56c3 --- /dev/null +++ b/features/buildroot/package/boa/0001-use-name-max.patch @@ -0,0 +1,21 @@ +Use NAME_MAX instead of MAXNAMLEN + +NAME_MAX is POSIX, and available in all C libraries, generally in +, while MAXNAMLEN is BSD-specific, and only available in +musl in . So let's use NAME_MAX instead of MAXNAMLEN. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/index_dir.c +=================================================================== +--- a/src/index_dir.c ++++ b/src/index_dir.c +@@ -29,7 +29,7 @@ + #include + #include "compat.h" + +-#define MAX_FILE_LENGTH MAXNAMLEN ++#define MAX_FILE_LENGTH NAME_MAX + #define MAX_PATH_LENGTH PATH_MAX + + #define INT_TO_HEX(x) \ diff --git a/features/buildroot/package/boa/Config.in b/features/buildroot/package/boa/Config.in new file mode 100644 index 00000000..cb085a24 --- /dev/null +++ b/features/buildroot/package/boa/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BOA + bool "boa" + depends on BR2_USE_MMU # uses fork() + help + A very small and very fast http daemon. Not intended as + a feature-packed server. + + http://www.boa.org/ diff --git a/features/buildroot/package/boa/boa.conf b/features/buildroot/package/boa/boa.conf new file mode 100644 index 00000000..e9402966 --- /dev/null +++ b/features/buildroot/package/boa/boa.conf @@ -0,0 +1,187 @@ +# Boa v0.94 configuration file +# File format has not changed from 0.93 +# File format has changed little from 0.92 +# version changes are noted in the comments +# +# The Boa configuration file is parsed with a lex/yacc or flex/bison +# generated parser. If it reports an error, the line number will be +# provided; it should be easy to spot. The syntax of each of these +# rules is very simple, and they can occur in any order. Where possible +# these directives mimic those of NCSA httpd 1.3; I saw no reason to +# introduce gratuitous differences. + +# $Id: boa.conf,v 1.1 2004/10/09 02:48:37 andersen Exp $ + +# The "ServerRoot" is not in this configuration file. It can be compiled +# into the server (see defines.h) or specified on the command line with +# the -c option, for example: +# +# boa -c /usr/local/boa + + +# Port: The port Boa runs on. The default port for http servers is 80. +# If it is less than 1024, the server must be started as root. + +Port 80 + +# Listen: the Internet address to bind(2) to. If you leave it out, +# it takes the behavior before 0.93.17.2, which is to bind to all +# addresses (INADDR_ANY). You only get one "Listen" directive, +# if you want service on multiple IP addresses, you have three choices: +# 1. Run boa without a "Listen" directive +# a. All addresses are treated the same; makes sense if the addresses +# are localhost, ppp, and eth0. +# b. Use the VirtualHost directive below to point requests to different +# files. Should be good for a very large number of addresses (web +# hosting clients). +# 2. Run one copy of boa per IP address, each has its own configuration +# with a "Listen" directive. No big deal up to a few tens of addresses. +# Nice separation between clients. +# The name you provide gets run through inet_aton(3), so you have to use dotted +# quad notation. This configuration is too important to trust some DNS. + +#Listen 192.68.0.5 + +# User: The name or UID the server should run as. +# Group: The group name or GID the server should run as. + +User nobody +Group nogroup + +# ServerAdmin: The email address where server problems should be sent. +# Note: this is not currently used, except as an environment variable +# for CGIs. + +#ServerAdmin root@localhost + +# ErrorLog: The location of the error log file. If this does not start +# with /, it is considered relative to the server root. +# Set to /dev/null if you don't want errors logged. +# If unset, defaults to /dev/stderr + +ErrorLog /var/log/boa/error_log +# Please NOTE: Sending the logs to a pipe ('|'), as shown below, +# is somewhat experimental and might fail under heavy load. +# "Usual libc implementations of printf will stall the whole +# process if the receiving end of a pipe stops reading." +#ErrorLog "|/usr/sbin/cronolog --symlink=/var/log/boa/error_log /var/log/boa/error-%Y%m%d.log" + +# AccessLog: The location of the access log file. If this does not +# start with /, it is considered relative to the server root. +# Comment out or set to /dev/null (less effective) to disable +# Access logging. + +AccessLog /var/log/boa/access_log +# Please NOTE: Sending the logs to a pipe ('|'), as shown below, +# is somewhat experimental and might fail under heavy load. +# "Usual libc implementations of printf will stall the whole +# process if the receiving end of a pipe stops reading." +#AccessLog "|/usr/sbin/cronolog --symlink=/var/log/boa/access_log /var/log/boa/access-%Y%m%d.log" + +# UseLocaltime: Logical switch. Uncomment to use localtime +# instead of UTC time +#UseLocaltime + +# VerboseCGILogs: this is just a logical switch. +# It simply notes the start and stop times of cgis in the error log +# Comment out to disable. + +#VerboseCGILogs + +# ServerName: the name of this server that should be sent back to +# clients if different than that returned by gethostname + gethostbyname + +#ServerName www.your.org.here + +# VirtualHost: a logical switch. +# Comment out to disable. +# Given DocumentRoot /var/www, requests on interface 'A' or IP 'IP-A' +# become /var/www/IP-A. +# Example: http://localhost/ becomes /var/www/127.0.0.1 +# +# Not used until version 0.93.17.2. This "feature" also breaks commonlog +# output rules, it prepends the interface number to each access_log line. +# You are expected to fix that problem with a postprocessing script. + +#VirtualHost + +# DocumentRoot: The root directory of the HTML documents. +# Comment out to disable server non user files. + +DocumentRoot /var/www + +# UserDir: The name of the directory which is appended onto a user's home +# directory if a ~user request is recieved. + +UserDir public_html + +# DirectoryIndex: Name of the file to use as a pre-written HTML +# directory index. Please MAKE AND USE THESE FILES. On the +# fly creation of directory indexes can be _slow_. +# Comment out to always use DirectoryMaker + +DirectoryIndex index.html + +# DirectoryMaker: Name of program used to create a directory listing. +# Comment out to disable directory listings. If both this and +# DirectoryIndex are commented out, accessing a directory will give +# an error (though accessing files in the directory are still ok). + +DirectoryMaker /usr/lib/boa/boa_indexer + +# DirectoryCache: If DirectoryIndex doesn't exist, and DirectoryMaker +# has been commented out, the the on-the-fly indexing of Boa can be used +# to generate indexes of directories. Be warned that the output is +# extremely minimal and can cause delays when slow disks are used. +# Note: The DirectoryCache must be writable by the same user/group that +# Boa runs as. + +# DirectoryCache /var/spool/boa/dircache + +# KeepAliveMax: Number of KeepAlive requests to allow per connection +# Comment out, or set to 0 to disable keepalive processing + +KeepAliveMax 1000 + +# KeepAliveTimeout: seconds to wait before keepalive connection times out + +KeepAliveTimeout 10 + +# MimeTypes: This is the file that is used to generate mime type pairs +# and Content-Type fields for boa. +# Set to /dev/null if you do not want to load a mime types file. +# Do *not* comment out (better use AddType!) + +MimeTypes /etc/mime.types + +# DefaultType: MIME type used if the file extension is unknown, or there +# is no file extension. + +DefaultType text/plain + +# AddType: adds types without editing mime.types +# Example: AddType type extension [extension ...] + +# Uncomment the next line if you want .cgi files to execute from anywhere +#AddType application/x-httpd-cgi cgi + +# Redirect, Alias, and ScriptAlias all have the same semantics -- they +# match the beginning of a request and take appropriate action. Use +# Redirect for other servers, Alias for the same server, and ScriptAlias +# to enable directories for script execution. + +# Redirect allows you to tell clients about documents which used to exist in +# your server's namespace, but do not anymore. This allows you to tell the +# clients where to look for the relocated document. +# Example: Redirect /bar http://elsewhere/feh/bar + +# Aliases: Aliases one path to another. +# Example: Alias /path1/bar /path2/foo + +# Alias /doc /usr/doc + +# ScriptAlias: Maps a virtual path to a directory for serving scripts +# Example: ScriptAlias /htbin/ /www/htbin/ + +ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ + diff --git a/features/buildroot/package/boa/boa.hash b/features/buildroot/package/boa/boa.hash new file mode 100644 index 00000000..37760fd5 --- /dev/null +++ b/features/buildroot/package/boa/boa.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 02c51bf25f29d56e641b662f0767759654c28d88ec31f55c5a73d57edfe13cf6 boa-0.94.14rc21.tar.gz diff --git a/features/buildroot/package/boa/boa.mk b/features/buildroot/package/boa/boa.mk new file mode 100644 index 00000000..d8bcaa12 --- /dev/null +++ b/features/buildroot/package/boa/boa.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# boa +# +################################################################################ + +BOA_VERSION = 0.94.14rc21 +BOA_SITE = http://www.boa.org +BOA_LICENSE = GPL-2.0+ +BOA_LICENSE_FILES = COPYING + +define BOA_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/src/boa $(TARGET_DIR)/usr/sbin/boa + $(INSTALL) -D -m 755 $(@D)/src/boa_indexer $(TARGET_DIR)/usr/lib/boa/boa_indexer + $(INSTALL) -D -m 644 package/boa/boa.conf $(TARGET_DIR)/etc/boa/boa.conf + $(INSTALL) -D -m 644 package/boa/mime.types $(TARGET_DIR)/etc/mime.types +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/boa/mime.types b/features/buildroot/package/boa/mime.types new file mode 100644 index 00000000..53f6ea10 --- /dev/null +++ b/features/buildroot/package/boa/mime.types @@ -0,0 +1,205 @@ +############################################################################### +# +# MIME-TYPES and the extensions that represent them +# +# This file is part of the "mime-support" package. Please send email (not a +# bug report) to mime-support@packages.debian.org if you would like new types +# and/or extensions to be added. +# +# Note: Compression schemes like "gzip", "bzip", and "compress" are not +# actually "mime-types". They are "encodings" and hence must _not_ have +# entries in this file to map their extensions. The "mime-type" of an +# encoded file refers to the type of data that has been encoded, not the +# type of the encoding. +# +############################################################################### + + +application/activemessage +application/andrew-inset +application/applefile +application/atomicmail +application/cu-seeme csm cu +application/dca-rft +application/dec-dx +application/dsptype tsp +application/futuresplash spl +application/ghostview +application/mac-binhex40 hqx +application/macwriteii +application/msaccess mdb +application/msword doc dot +application/news-message-id +application/news-transmission +application/octet-stream bin +application/oda oda +application/pdf pdf +application/pgp-signature pgp +application/postscript ps ai eps +application/remote-printing +application/rtf rtf +application/slate +application/vnd.ms-excel xls xlb +application/vnd.ms-powerpoint ppt pps pot +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/wita +application/wordperfect5.1 wp5 +application/zip zip +application/x-123 wk +application/x-bcpio bcpio +application/x-chess-pgn pgn +application/x-core +application/x-cpio cpio +application/x-csh +application/x-debian-package deb +application/x-director dcr dir dxr +application/x-dms dms +application/x-dvi dvi +application/x-executable +application/x-font pfa pfb gsf pcf pcf.Z +application/x-gnumeric gnumeric +application/x-gtar gtar tgz +application/x-hdf hdf +application/x-httpd-php phtml pht php +application/x-httpd-php3 php3 +application/x-httpd-php3-source phps +application/x-httpd-php3-preprocessed php3p +application/x-httpd-php4 php4 +application/x-ica ica +application/x-java class +application/x-javascript js +application/x-kdelnk +application/x-kchart chrt +application/x-killustrator kil +application/x-kpresenter kpr kpt +application/x-kspread ksp +application/x-kword kwd kwt +application/x-latex latex +application/x-lha lha +application/x-lzh lzh +application/x-lzx lzx +application/x-maker frm maker frame fm fb book fbdoc +application/x-mif mif +application/x-msdos-program com exe bat dll +application/x-msi msi +application/x-netcdf nc cdf +application/x-ns-proxy-autoconfig pac +application/x-object o +application/x-ogg ogg +application/x-oz-application oza +application/x-perl pl pm +application/x-redhat-package-manager rpm +application/x-rx +application/x-sh +application/x-shar shar +application/x-shellscript +application/x-shockwave-flash swf swfl +application/x-stuffit sit +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl +application/x-tex +application/x-tex-gf gf +application/x-tex-pk pk PK +application/x-texinfo texinfo texi +application/x-trash ~ % bak old sik +application/x-troff t tr roff +application/x-troff-man man +application/x-troff-me me +application/x-troff-ms ms +application/x-ustar ustar +application/x-wais-source src +application/x-wingz wz + +audio/basic au snd +audio/midi mid midi +audio/mpeg mpga mpega mp2 mp3 +audio/mpegurl m3u +audio/prs.sid sid +audio/x-aiff aif aiff aifc +audio/x-gsm gsm +audio/x-pn-realaudio ra rm ram +audio/x-wav wav + +image/bitmap bmp +image/gif gif +image/ief ief +image/jpeg jpeg jpg jpe +image/pcx pcx +image/png png +image/tiff tiff tif +image/vnd.wap.wbmp wbmp +image/x-cmu-raster ras +image/x-coreldraw cdr +image/x-coreldrawpattern pat +image/x-coreldrawtemplate cdt +image/x-corelphotopaint cpt +image/x-jng jng +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd + +inode/chardevice +inode/blockdevice +inode/directory-locked +inode/directory +inode/fifo +inode/socket + +message/external-body +message/news +message/partial +message/rfc822 + +multipart/alternative +multipart/appledouble +multipart/digest +multipart/mixed +multipart/parallel + +text/comma-separated-values csv +text/css css +text/english +text/html htm html xhtml +text/mathml mml +text/plain txt text diff +text/richtext rtx +text/tab-separated-values tsv +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/xml xml +text/x-c++hdr h++ hpp hxx hh +text/x-c++src c++ cpp cxx cc +text/x-chdr h +text/x-crontab +text/x-csh csh +text/x-csrc c +text/x-java java +text/x-makefile +text/x-moc moc +text/x-pascal p pas +text/x-setext etx +text/x-sh sh +text/x-tcl tcl tk +text/x-tex tex ltx sty cls +text/x-vcalendar vcs +text/x-vcard vcf + +video/dl dl +video/fli fli +video/gl gl +video/mpeg mpeg mpg mpe +video/quicktime qt mov +video/x-mng mng +video/x-ms-asf asf asx +video/x-msvideo avi +video/x-sgi-movie movie + +x-world/x-vrml vrm vrml wrl diff --git a/features/buildroot/package/boinc/Config.in b/features/buildroot/package/boinc/Config.in new file mode 100644 index 00000000..5239019a --- /dev/null +++ b/features/buildroot/package/boinc/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BOINC + bool "boinc" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + help + Open-source software for volunteer computing and grid + computing. + + Use the idle time on your computer to cure diseases, study + global warming, discover pulsars, and do many other types of + scientific research. + + https://boinc.berkeley.edu + +comment "boinc needs a toolchain w/ dynamic library, C++, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/boinc/S99boinc-client b/features/buildroot/package/boinc/S99boinc-client new file mode 100644 index 00000000..f4b2a2c7 --- /dev/null +++ b/features/buildroot/package/boinc/S99boinc-client @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=boinc_client +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/boinc/boinc.hash b/features/buildroot/package/boinc/boinc.hash new file mode 100644 index 00000000..eeaaf68e --- /dev/null +++ b/features/buildroot/package/boinc/boinc.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 970aedb9e25afa20be67f125ab05435df8eb2e66a3ac30ad316c54085e397c88 boinc-7.14.2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSER diff --git a/features/buildroot/package/boinc/boinc.mk b/features/buildroot/package/boinc/boinc.mk new file mode 100644 index 00000000..dd468c76 --- /dev/null +++ b/features/buildroot/package/boinc/boinc.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# boinc +# +################################################################################ + +BOINC_VERSION_MAJOR = 7.14 +BOINC_VERSION = $(BOINC_VERSION_MAJOR).2 +# client_release can be used to build the Client and Manager but not the Server +# part. The Server currently has no versioning (see +# https://github.com/BOINC/boinc/pull/1798). +BOINC_SITE = \ + $(call github,BOINC,boinc,client_release/$(BOINC_VERSION_MAJOR)/$(BOINC_VERSION)) +BOINC_LICENSE = LGPL-3.0+ +BOINC_LICENSE_FILES = COPYING COPYING.LESSER +BOINC_DEPENDENCIES = host-pkgconf libcurl openssl +BOINC_AUTORECONF = YES +BOINC_CONF_OPTS = \ + --disable-apps \ + --disable-boinczip \ + --disable-manager \ + --disable-server \ + --enable-client \ + --enable-dynamic-client-linkage \ + --enable-libraries \ + --with-pkg-config=$(PKG_CONFIG_HOST_BINARY) \ + --with-libcurl=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +BOINC_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBFCGI),y) +BOINC_DEPENDENCIES += libfcgi +BOINC_CONF_OPTS += --enable-fcgi +else +BOINC_CONF_OPTS += --disable-fcgi +endif + +# Remove boinc-client because it is incompatible with buildroot +define BOINC_REMOVE_UNNEEDED_FILE + $(RM) $(TARGET_DIR)/etc/init.d/boinc-client +endef + +BOINC_POST_INSTALL_TARGET_HOOKS += BOINC_REMOVE_UNNEEDED_FILE + +define BOINC_USERS + boinc -1 boinc -1 * /var/lib/boinc - BOINC user +endef + +define BOINC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/boinc/S99boinc-client \ + $(TARGET_DIR)/etc/init.d/S99boinc-client +endef + +define BOINC_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/boinc-client.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/boinc-client.service +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bonnie/Config.in b/features/buildroot/package/bonnie/Config.in new file mode 100644 index 00000000..4b0adda0 --- /dev/null +++ b/features/buildroot/package/bonnie/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_BONNIE + bool "bonnie++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + A benchmark suite that is aimed at performing a number of + simple tests of hard drive and file system performance. + + http://www.coker.com.au/bonnie++/ + +comment "bonnie++ needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/bonnie/bonnie.hash b/features/buildroot/package/bonnie/bonnie.hash new file mode 100644 index 00000000..acf00fdb --- /dev/null +++ b/features/buildroot/package/bonnie/bonnie.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cb3866116634bf65760b6806be4afa7e24a1cad6f145c876df8721f01ba2e2cb bonnie++-1.03e.tgz diff --git a/features/buildroot/package/bonnie/bonnie.mk b/features/buildroot/package/bonnie/bonnie.mk new file mode 100644 index 00000000..e5c8640d --- /dev/null +++ b/features/buildroot/package/bonnie/bonnie.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bonnie +# +################################################################################ + +BONNIE_VERSION = 1.03e +BONNIE_SOURCE = bonnie++-$(BONNIE_VERSION).tgz +BONNIE_SITE = http://www.coker.com.au/bonnie++ +BONNIE_LICENSE = GPL-2.0 +BONNIE_LICENSE_FILES = copyright.txt + +define BONNIE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bonnie++ $(TARGET_DIR)/usr/sbin/bonnie++ + $(INSTALL) -D -m 755 $(@D)/zcav $(TARGET_DIR)/usr/sbin/zcav +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch b/features/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch new file mode 100644 index 00000000..e8972fd7 --- /dev/null +++ b/features/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch @@ -0,0 +1,27 @@ +boost: fix ambiguous format call on 64-bit builds + +Fixes problem: + +libs/locale/src/icu/formatter.cpp: In member function +'virtual std::basic_string<_CharT, std::char_traits<_CharT>, std::allocator<_CharT> > boost::locale::impl_icu::number_format::format(boost::int64_t, size_t&) const': +libs/locale/src/icu/formatter.cpp:61: error: call of overloaded 'format(boost::int64_t&, icu_49::UnicodeString&)' is ambiguous +/ec/include/unicode/numfmt.h:317: note: candidates are: icu_49::UnicodeString& icu_49::NumberFormat::format(double, icu_49::UnicodeString&) const +/ec/include/unicode/numfmt.h:330: note: icu_49::UnicodeString& icu_49::NumberFormat::format(int32_t, icu_49::UnicodeString&) const +/ec/include/unicode/numfmt.h:343: note: icu_49::UnicodeString& icu_49::NumberFormat::format(int64_t, icu_49::UnicodeString&) const + +Signed-off-by: Thomas De Schampheleire +Backported-from: https://svn.boost.org/trac/boost/ticket/6851 + + +diff -ruN boost_1_49_0.orig/libs/locale/src/icu/formatter.cpp boost_1_49_0/libs/locale/src/icu/formatter.cpp +--- boost_1_49_0.orig/libs/locale/src/icu/formatter.cpp 2011-07-12 14:57:36.000000000 +0100 ++++ boost_1_49_0/libs/locale/src/icu/formatter.cpp 2012-05-01 14:27:54.000000000 +0100 +@@ -58,7 +58,7 @@ + virtual string_type format(int64_t value,size_t &code_points) const + { + icu::UnicodeString tmp; +- icu_fmt_->format(value,tmp); ++ icu_fmt_->format(::int64_t(value),tmp); + code_points=tmp.countChar32(); + return cvt_.std(tmp); + } diff --git a/features/buildroot/package/boost/0002-fix-uclibc-eventfd.patch b/features/buildroot/package/boost/0002-fix-uclibc-eventfd.patch new file mode 100644 index 00000000..1b7eb872 --- /dev/null +++ b/features/buildroot/package/boost/0002-fix-uclibc-eventfd.patch @@ -0,0 +1,38 @@ +Use eventfd() function with uClibc + +The Boost eventfd code either directly makes the eventfd system call +using __NR_eventfd (when __GLIBC_MINOR is less than 8), or otherwise +uses the eventfd() function provided by the C library. + +However, since uClibc pretends to be glibc 2.2, the Boost eventfd code +directly uses the system call. While it works fine on most +architectures, it doesn't on ARC since __NR_eventfd is not defined on +this architecture. However, eventfd() is properly implemented. + +So, this patch adjusts the logic used by Boost to consider uClibc as a +C library providing the eventfd() function. + +Signed-off-by: Thomas Petazzoni + +Index: b/boost/asio/detail/impl/eventfd_select_interrupter.ipp +=================================================================== +--- a/boost/asio/detail/impl/eventfd_select_interrupter.ipp ++++ b/boost/asio/detail/impl/eventfd_select_interrupter.ipp +@@ -23,7 +23,7 @@ + #include + #include + #include +-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 ++#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) + # include + #else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 + # include +@@ -46,7 +46,7 @@ + + void eventfd_select_interrupter::open_descriptors() + { +-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 ++#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) + write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0); + if (read_descriptor_ != -1) + { diff --git a/features/buildroot/package/boost/0003-fenv.patch b/features/buildroot/package/boost/0003-fenv.patch new file mode 100644 index 00000000..95c769ae --- /dev/null +++ b/features/buildroot/package/boost/0003-fenv.patch @@ -0,0 +1,37 @@ +Disable fenv.h in certain configurations + +The boost build system does not properly test whether fenv.h is +available, and if it is, if it supports all the features used by +Boost. This causes build failures with uClibc (reported upstream at +https://svn.boost.org/trac/boost/ticket/11756) but also with glibc on +specific architectures that don't have a full fenv implementation, +such as NIOSII or Microblaze. + +To address this, we forcefully disable the use of fenv support in the +affected configurations. + +Signed-off-by: Bernd Kuhls +[Thomas: add Microblaze/NIOSII exclusions.] +Signed-off-by: Thomas Petazzoni + +Index: b/boost/config/platform/linux.hpp +=================================================================== +--- a/boost/config/platform/linux.hpp ++++ b/boost/config/platform/linux.hpp +@@ -47,6 +47,16 @@ + #endif + + // ++// uClibc has no support for fenv.h, and also a few architectures ++// don't have fenv.h support at all (or incomplete support) even with ++// glibc. ++ ++// ++#if defined(__UCLIBC__) || defined(__nios2__) || defined(__microblaze__) ++# define BOOST_NO_FENV_H ++#endif ++ ++// + // If glibc is past version 2 then we definitely have + // gettimeofday, earlier versions may or may not have it: + // diff --git a/features/buildroot/package/boost/0004-workaround-musl-bug.patch b/features/buildroot/package/boost/0004-workaround-musl-bug.patch new file mode 100644 index 00000000..8613f2fe --- /dev/null +++ b/features/buildroot/package/boost/0004-workaround-musl-bug.patch @@ -0,0 +1,26 @@ +From 0506e46640989e1f919388ad36890bd6063cd43a Mon Sep 17 00:00:00 2001 +From: Zach van Rijn +Date: Sat, 26 Aug 2017 01:32:56 -0400 +Subject: [PATCH] explicitly include for memset() + +[Thomas: taken from +https://github.com/boostorg/fiber/pull/142/commits/0506e46640989e1f919388ad36890bd6063cd43a. It +is not going to be applied upstream because the actual bug is in musl, +but it's a good enough workaround for now.] +Signed-off-by: Thomas Petazzoni +--- + libs/fiber/src/numa/linux/pin_thread.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libs/fiber/src/numa/linux/pin_thread.cpp b/libs/fiber/src/numa/linux/pin_thread.cpp +index ae696be3..e9b3c423 100644 +--- a/libs/fiber/src/numa/linux/pin_thread.cpp ++++ b/libs/fiber/src/numa/linux/pin_thread.cpp +@@ -9,6 +9,7 @@ + extern "C" { + #include + #include ++#include + } + + #include diff --git a/features/buildroot/package/boost/Config.in b/features/buildroot/package/boost/Config.in new file mode 100644 index 00000000..4e6bbff6 --- /dev/null +++ b/features/buildroot/package/boost/Config.in @@ -0,0 +1,343 @@ +comment "boost needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +config BR2_PACKAGE_BOOST + bool "boost" + depends on BR2_INSTALL_LIBSTDCPP + # Boost could theorically be built with threading=single, but + # that unfortunately doesn't work. Until someone fixes that, + # let's depend on threads. + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + A general purpose C++ library + + http://www.boost.org/ + +if BR2_PACKAGE_BOOST + +choice + prompt "Layout" + default BR2_PACKAGE_BOOST_LAYOUT_SYSTEM + help + Selects the layout of Boost binary names + +config BR2_PACKAGE_BOOST_LAYOUT_SYSTEM + bool "system" + help + Boost binary names do not include the Boost version number + or the name and version number of the compiler. + +config BR2_PACKAGE_BOOST_LAYOUT_TAGGED + bool "tagged" + help + Boost binary names include the encoded build properties such + as variant and threading, but do not include compiler name + and version, or Boost version. This option is useful if you + build several variants of Boost, using the same compiler. + +config BR2_PACKAGE_BOOST_LAYOUT_VERSIONED + bool "versioned" + help + Boost binary names include the Boost version number, name + and version of the compiler and encoded build properties. + +endchoice + +config BR2_PACKAGE_BOOST_LAYOUT + string + default "system" if BR2_PACKAGE_BOOST_LAYOUT_SYSTEM + default "tagged" if BR2_PACKAGE_BOOST_LAYOUT_TAGGED + default "versioned" if BR2_PACKAGE_BOOST_LAYOUT_VERSIONED + +config BR2_PACKAGE_BOOST_ATOMIC + bool "boost-atomic" + help + C++11-style atomic<>. + +config BR2_PACKAGE_BOOST_CHRONO + bool "boost-chrono" + select BR2_PACKAGE_BOOST_SYSTEM + help + Useful time utilities. C++11. + +config BR2_PACKAGE_BOOST_CONTAINER + bool "boost-container" + help + Standard library containers and extensions. + +# see +# http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/context/architectures.html +# for the list of supported architectures. Sparc pretends to be +# supported, but it doesn't build. +config BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + bool + default y if ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM) + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc + default y if BR2_x86_64 + +config BR2_PACKAGE_BOOST_CONTEXT + bool "boost-context" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + select BR2_PACKAGE_BOOST_THREAD if !BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + C++11 context switching library. + +config BR2_PACKAGE_BOOST_CONTRACT + bool "boost-contract" + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_BOOST_SYSTEM + help + Contract programming for C++. + +comment "boost-contract needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_BOOST_COROUTINE + bool "boost-coroutine" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_CONTEXT + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + deprecated coroutine library, the non-depricated coroutine2 + library is a header-only library and does not need to be + selected. + +comment "boost-coroutine needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + +config BR2_PACKAGE_BOOST_DATE_TIME + bool "boost-date_time" + help + A set of date-time libraries based on generic programming + concepts. + +config BR2_PACKAGE_BOOST_EXCEPTION + bool "boost-exception" + help + The Boost Exception library supports transporting of arbitrary + data in exception objects, and transporting of exceptions + between threads. + +config BR2_PACKAGE_BOOST_FIBER + bool "boost-fiber" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + # mips support uses the "pause" instruction, only available + # since mips32r2/mips64r2. + depends on !BR2_MIPS_CPU_MIPS32 && !BR2_MIPS_CPU_MIPS64 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_85180 + select BR2_PACKAGE_BOOST_CONTEXT + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + help + C++11 userland threads library. + +comment "boost-fiber needs a toolchain w/ NPTL" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +comment "boost-fiber needs a toolchain not affected by GCC bug 64735, 85180" + depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || BR2_TOOLCHAIN_HAS_GCC_BUG_85180 + +config BR2_PACKAGE_BOOST_FILESYSTEM + bool "boost-filesystem" + select BR2_PACKAGE_BOOST_SYSTEM + help + The Boost Filesystem Library provides portable facilities to + query and manipulate paths, files, and directories. + +config BR2_PACKAGE_BOOST_GRAPH + bool "boost-graph" + select BR2_PACKAGE_BOOST_REGEX + help + The BGL graph interface and graph components are generic, in + the same sense as the the Standard Template Library (STL). + +config BR2_PACKAGE_BOOST_GRAPH_PARALLEL + bool "boost-graph_parallel" + help + The PBGL graph interface and graph components are generic, in + the same sense as the the Standard Template Library (STL). + +config BR2_PACKAGE_BOOST_IOSTREAMS + bool "boost-iostreams" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_ZLIB + help + Boost.IOStreams provides a framework for defining streams, + stream buffers and i/o filters. + +config BR2_PACKAGE_BOOST_LOCALE + bool "boost-locale" + # When boost-locale is enabled with icu support, Boost no + # longer supports building the libboost_* libraries as static + # libraries, causing build failures when other boost features + # than boost-locale are enabled. To work around this, we + # prevent using boost-locale on static linking configurations + # with icu enabled. See + # https://svn.boost.org/trac/boost/ticket/9685 for more + # details. + depends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU) + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Provide localization and Unicode handling tools for C++. + +comment "boost-locale needs a toolchain w/ dynamic library" + depends on BR2_PACKAGE_ICU + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BOOST_LOG + bool "boost-log" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + Logging library. + +comment "boost-log needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_BOOST_MATH + bool "boost-math" + help + Boost.Math includes several contributions in the domain of + mathematics: + + The Greatest Common Divisor and Least Common + Multiple library provides run-time and compile-time evaluation + of the greatest common divisor (GCD) or least common multiple + (LCM) of two integers. + + The Special Functions library currently provides eight + templated special functions, in namespace boost. + + The Complex Number Inverse Trigonometric Functions are the + inverses of trigonometric functions currently present in the + C++ standard. + + Quaternions are a relative of complex numbers often used to + parameterise rotations in three dimentional space. + + Octonions, like quaternions, are a relative of complex + numbers. + +config BR2_PACKAGE_BOOST_MPI + bool "boost-mpi" + help + Message Passing Interface library, for use in + distributed-memory parallel application programming. + +config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + bool "boost-program_options" + help + The program_options library allows program developers to + obtain program options, that is (name, value) pairs from the + user, via conventional methods such as command line and config + file. + +config BR2_PACKAGE_BOOST_PYTHON + bool "boost-python" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + help + The Boost Python Library is a framework for interfacing Python + and C++. It allows you to quickly and seamlessly expose C++ + classes functions and objects to Python, and vice-versa, + using no special tools -- just your C++ compiler. + +config BR2_PACKAGE_BOOST_RANDOM + bool "boost-random" + select BR2_PACKAGE_BOOST_SYSTEM + help + A complete system for random number generation. + +config BR2_PACKAGE_BOOST_REGEX + bool "boost-regex" + help + A new infrastructure for generic algorithms that builds on top + of the new iterator concepts. + +config BR2_PACKAGE_BOOST_SERIALIZATION + bool "boost-serialization" + help + Serialization for persistence and marshalling. + +config BR2_PACKAGE_BOOST_STACKTRACE + bool "boost-stacktrace" + depends on !BR2_STATIC_LIBS + help + Gather, store, copy and print backtraces. + +comment "boost-stacktrace needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BOOST_SYSTEM + bool "boost-system" + help + Operating system support, including the diagnostics support + that will be part of the C++0x standard library. + +config BR2_PACKAGE_BOOST_TEST + bool "boost-test" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_TIMER + help + Support for simple program testing, full unit testing, and for + program execution monitoring. + +config BR2_PACKAGE_BOOST_THREAD + bool "boost-thread" + select BR2_PACKAGE_BOOST_ATOMIC if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_SYSTEM + help + Portable C++ multi-threading. C++11, C++14. + +config BR2_PACKAGE_BOOST_TIMER + bool "boost-timer" + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_SYSTEM + help + Event timer, progress timer, and progress display classes. + +config BR2_PACKAGE_BOOST_TYPE_ERASURE + bool "boost-type_erasure" + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + Runtime polymorphism based on concepts. + +config BR2_PACKAGE_BOOST_WAVE + bool "boost-wave" + # limitation of assembler for coldfire + # error: Tried to convert PC relative branch to absolute jump + depends on !BR2_m68k_cf + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + The Boost.Wave library is a Standards conformant, and highly + configurable implementation of the mandated C99/C++ + preprocessor functionality packed behind an easy to use + iterator interface. + +endif diff --git a/features/buildroot/package/boost/boost.hash b/features/buildroot/package/boost/boost.hash new file mode 100644 index 00000000..c6cc3c26 --- /dev/null +++ b/features/buildroot/package/boost/boost.hash @@ -0,0 +1,5 @@ +# From http://www.boost.org/users/history/version_1_70_0.html +sha256 430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778 boost_1_70_0.tar.bz2 + +# Locally computed +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt diff --git a/features/buildroot/package/boost/boost.mk b/features/buildroot/package/boost/boost.mk new file mode 100644 index 00000000..a2d8395f --- /dev/null +++ b/features/buildroot/package/boost/boost.mk @@ -0,0 +1,203 @@ +################################################################################ +# +# boost +# +################################################################################ + +BOOST_VERSION = 1.70.0 +BOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2 +BOOST_SITE = http://downloads.sourceforge.net/project/boost/boost/$(BOOST_VERSION) +BOOST_INSTALL_STAGING = YES +BOOST_LICENSE = BSL-1.0 +BOOST_LICENSE_FILES = LICENSE_1_0.txt + +# keep host variant as minimal as possible +HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ + --without-libraries=$(subst $(space),$(comma),atomic chrono context \ + contract coroutine date_time exception filesystem graph graph_parallel \ + iostreams locale log math mpi program_options python random regex \ + serialization system test thread timer type_erasure wave) + +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) + +BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) + +BOOST_FLAGS = --with-toolset=gcc + +ifeq ($(BR2_PACKAGE_ICU),y) +BOOST_FLAGS += --with-icu=$(STAGING_DIR)/usr +BOOST_DEPENDENCIES += icu +else +BOOST_FLAGS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y) +BOOST_DEPENDENCIES += bzip2 zlib +endif + +ifeq ($(BR2_PACKAGE_BOOST_PYTHON),y) +BOOST_FLAGS += --with-python-root=$(HOST_DIR) +ifeq ($(BR2_PACKAGE_PYTHON3),y) +BOOST_FLAGS += --with-python=$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) +BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m +BOOST_DEPENDENCIES += python3 +else +BOOST_FLAGS += --with-python=$(HOST_DIR)/bin/python$(PYTHON_VERSION_MAJOR) +BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +BOOST_DEPENDENCIES += python +endif +endif + +HOST_BOOST_OPTS += --no-cmake-config toolset=gcc threading=multi \ + variant=release link=shared runtime-link=shared + +ifeq ($(BR2_MIPS_OABI32),y) +BOOST_ABI = o32 +else ifeq ($(BR2_arm),y) +BOOST_ABI = aapcs +else +BOOST_ABI = sysv +endif + +BOOST_OPTS += --no-cmake-config \ + toolset=gcc \ + threading=multi \ + abi=$(BOOST_ABI) \ + variant=$(if $(BR2_ENABLE_DEBUG),debug,release) + +ifeq ($(BR2_sparc64),y) +BOOST_OPTS += architecture=sparc instruction-set=ultrasparc +endif + +ifeq ($(BR2_sparc),y) +BOOST_OPTS += architecture=sparc instruction-set=v8 +endif + +# By default, Boost build and installs both the shared and static +# variants. Override that if we want static only or shared only. +ifeq ($(BR2_STATIC_LIBS),y) +BOOST_OPTS += link=static runtime-link=static +else ifeq ($(BR2_SHARED_LIBS),y) +BOOST_OPTS += link=shared runtime-link=shared +endif + +ifeq ($(BR2_PACKAGE_BOOST_LOCALE),y) +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# posix backend needs monetary.h which isn't available on uClibc +BOOST_OPTS += boost.locale.posix=off +endif + +BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv) +endif + +BOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS))) +BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED)) +BOOST_LAYOUT = $(call qstrip, $(BR2_PACKAGE_BOOST_LAYOUT)) + +# how verbose should the build be? +BOOST_OPTS += $(if $(QUIET),-d,-d+1) +HOST_BOOST_OPTS += $(if $(QUIET),-d,-d+1) + +define BOOST_CONFIGURE_CMDS + (cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS)) + echo "using gcc : `$(TARGET_CC) -dumpversion` : $(TARGET_CXX) : \"$(BOOST_TARGET_CXXFLAGS)\" \"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam + echo "" >> $(@D)/user-config.jam +endef + +define BOOST_BUILD_CMDS + (cd $(@D) && $(TARGET_MAKE_ENV) ./bjam -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(BOOST_OPTS) \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT)) +endef + +define BOOST_INSTALL_TARGET_CMDS + (cd $(@D) && $(TARGET_MAKE_ENV) ./b2 -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(BOOST_OPTS) \ + --prefix=$(TARGET_DIR)/usr \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT) install ) +endef + +define BOOST_INSTALL_STAGING_CMDS + (cd $(@D) && $(TARGET_MAKE_ENV) ./bjam -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(BOOST_OPTS) \ + --prefix=$(STAGING_DIR)/usr \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT) install) +endef + +# These hooks will help us to detect missing select in Config.in +# Indeed boost buildsystem can select a library even if the user has +# disable it +define BOOST_REMOVE_TARGET_LIBRARIES + rm -rf $(TARGET_DIR)/usr/lib/libboost_* +endef + +BOOST_PRE_INSTALL_TARGET_HOOKS += BOOST_REMOVE_TARGET_LIBRARIES + +define BOOST_CHECK_TARGET_LIBRARIES + @$(foreach disabled,$(BOOST_WITHOUT_FLAGS),\ + ! ls $(TARGET_DIR)/usr/lib/libboost_$(disabled)* 1>/dev/null 2>&1 || \ + ! echo "libboost_$(disabled) shouldn't have been installed: missing select in boost/Config.in" || \ + exit 1;) +endef + +BOOST_POST_INSTALL_TARGET_HOOKS += BOOST_CHECK_TARGET_LIBRARIES + +define HOST_BOOST_CONFIGURE_CMDS + (cd $(@D) && ./bootstrap.sh $(HOST_BOOST_FLAGS)) + echo "using gcc : `$(HOST_CC) -dumpversion` : $(HOSTCXX) : \"$(HOST_CXXFLAGS)\" \"$(HOST_LDFLAGS)\" ;" > $(@D)/user-config.jam + echo "" >> $(@D)/user-config.jam +endef + +define HOST_BOOST_BUILD_CMDS + (cd $(@D) && ./b2 -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(HOST_BOOST_OPTS) \ + --ignore-site-config \ + --prefix=$(HOST_DIR) ) +endef + +define HOST_BOOST_INSTALL_CMDS + (cd $(@D) && ./b2 -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(HOST_BOOST_OPTS) \ + --prefix=$(HOST_DIR) \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT) install ) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/bootstrap/Config.in b/features/buildroot/package/bootstrap/Config.in new file mode 100644 index 00000000..743d8a32 --- /dev/null +++ b/features/buildroot/package/bootstrap/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BOOTSTRAP + bool "bootstrap" + help + Bootstrap is the most popular HTML, CSS, and JS framework + for developing responsive, mobile first projects on the web. + + http://getbootstrap.com diff --git a/features/buildroot/package/bootstrap/bootstrap.hash b/features/buildroot/package/bootstrap/bootstrap.hash new file mode 100644 index 00000000..ed29f9c5 --- /dev/null +++ b/features/buildroot/package/bootstrap/bootstrap.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 75c0325fd82e29cf524e28d8be7716c216cc507ba85b087ab36868209236aa01 bootstrap-4.1.0-dist.zip +sha256 0ce7fbe215cdf921ed87d00a374404681d5d24898589a7fe60e068d09289b4ba css/bootstrap.css diff --git a/features/buildroot/package/bootstrap/bootstrap.mk b/features/buildroot/package/bootstrap/bootstrap.mk new file mode 100644 index 00000000..0699485f --- /dev/null +++ b/features/buildroot/package/bootstrap/bootstrap.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# bootstrap +# +################################################################################ + +BOOTSTRAP_VERSION = 4.1.0 +BOOTSTRAP_SITE = https://github.com/twbs/bootstrap/releases/download/v$(BOOTSTRAP_VERSION) +BOOTSTRAP_SOURCE = bootstrap-$(BOOTSTRAP_VERSION)-dist.zip +BOOTSTRAP_LICENSE = MIT +BOOTSTRAP_LICENSE_FILES = css/bootstrap.css + +define BOOTSTRAP_EXTRACT_CMDS + $(UNZIP) $(BOOTSTRAP_DL_DIR)/$(BOOTSTRAP_SOURCE) -d $(@D) +endef + +define BOOTSTRAP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css \ + $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css + $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css.map \ + $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css.map + $(INSTALL) -m 0644 -D $(@D)/js/bootstrap.min.js \ + $(TARGET_DIR)/var/www/bootstrap/js/bootstrap.min.js +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/botan/Config.in b/features/buildroot/package/botan/Config.in new file mode 100644 index 00000000..a242a38e --- /dev/null +++ b/features/buildroot/package/botan/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_powerpc || BR2_powerpc64 || BR2_sparc || BR2_sh || \ + BR2_x86_64 + +config BR2_PACKAGE_BOTAN + bool "botan" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future + select BR2_PACKAGE_BOOST_FILESYSTEM if BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_SYSTEM if BR2_PACKAGE_BOOST + help + Botan is a crypto library for C++ + + http://botan.randombit.net + +comment "botan needs a toolchain w/ C++, threads, gcc >= 4.8" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + +comment "botan needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/features/buildroot/package/botan/botan.hash b/features/buildroot/package/botan/botan.hash new file mode 100644 index 00000000..a04825a7 --- /dev/null +++ b/features/buildroot/package/botan/botan.hash @@ -0,0 +1,4 @@ +# From https://botan.randombit.net/releases/sha256sums.txt +sha256 f7874da2aeb8c018fd77df40b2137879bf90b66f5589490c991e83fb3e8094be Botan-2.11.0.tar.xz +# Locally computed +sha256 161011a9be56a6e825c06257005055a148056b5c756f75a0b99dae0883fcab7a license.txt diff --git a/features/buildroot/package/botan/botan.mk b/features/buildroot/package/botan/botan.mk new file mode 100644 index 00000000..62027280 --- /dev/null +++ b/features/buildroot/package/botan/botan.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# botan +# +################################################################################ + +BOTAN_VERSION = 2.11.0 +BOTAN_SOURCE = Botan-$(BOTAN_VERSION).tar.xz +BOTAN_SITE = http://botan.randombit.net/releases +BOTAN_LICENSE = BSD-2-Clause +BOTAN_LICENSE_FILES = license.txt + +BOTAN_INSTALL_STAGING = YES + +BOTAN_CONF_OPTS = \ + --cpu=$(BR2_ARCH) \ + --os=linux \ + --cc=gcc \ + --cc-bin="$(TARGET_CXX)" \ + --ldflags="$(BOTAN_LDFLAGS)" \ + --prefix=/usr \ + --without-documentation + +BOTAN_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +BOTAN_LDFLAGS += -latomic +endif + +ifeq ($(BR2_SHARED_LIBS),y) +BOTAN_CONF_OPTS += \ + --disable-static-library \ + --enable-shared-library +else ifeq ($(BR2_STATIC_LIBS),y) +BOTAN_CONF_OPTS += \ + --disable-shared-library \ + --enable-static-library \ + --no-autoload +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BOTAN_CONF_OPTS += \ + --enable-shared-library \ + --enable-static-library +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +BOTAN_CONF_OPTS += --with-stack-protector +else +BOTAN_CONF_OPTS += --without-stack-protector +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +BOTAN_CONF_OPTS += --without-os-feature=getauxval +endif + +ifeq ($(BR2_PACKAGE_BOOST),y) +BOTAN_DEPENDENCIES += boost +BOTAN_CONF_OPTS += --with-boost +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +BOTAN_DEPENDENCIES += bzip2 +BOTAN_CONF_OPTS += --with-bzip2 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +BOTAN_DEPENDENCIES += openssl +BOTAN_CONF_OPTS += --with-openssl +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +BOTAN_DEPENDENCIES += sqlite +BOTAN_CONF_OPTS += --with-sqlite +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +BOTAN_DEPENDENCIES += xz +BOTAN_CONF_OPTS += --with-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BOTAN_DEPENDENCIES += zlib +BOTAN_CONF_OPTS += --with-zlib +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),) +BOTAN_CONF_OPTS += --disable-altivec +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),) +BOTAN_CONF_OPTS += --disable-neon +endif + +define BOTAN_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure.py $(BOTAN_CONF_OPTS)) +endef + +define BOTAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) AR="$(TARGET_AR)" +endef + +define BOTAN_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" install +endef + +define BOTAN_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/brcm-patchram-plus/Config.in b/features/buildroot/package/brcm-patchram-plus/Config.in new file mode 100644 index 00000000..2742016e --- /dev/null +++ b/features/buildroot/package/brcm-patchram-plus/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BRCM_PATCHRAM_PLUS + bool "brcm-patchram-plus" + help + Broadcom utility to flash Bluetooth firmwares, extended with + per-device Low Power Mode configuration. + + https://github.com/AsteroidOS/brcm-patchram-plus diff --git a/features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.hash b/features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.hash new file mode 100644 index 00000000..f6910e71 --- /dev/null +++ b/features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 febad69fbc9185b4c6a31188cf381fd280b88d93cb7f5a40dfdbab9c599c29a7 brcm-patchram-plus-95b7b6916d661a4da3f9c0adf52d5e1f4f8ab042.tar.gz +sha256 26324f5c563b7e338c2876c8abe90c3681c1e9a6163fc59b494c94ad6493eda4 COPYING diff --git a/features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.mk b/features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.mk new file mode 100644 index 00000000..329571d9 --- /dev/null +++ b/features/buildroot/package/brcm-patchram-plus/brcm-patchram-plus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# brcm-patchram-plus +# +################################################################################ + +BRCM_PATCHRAM_PLUS_VERSION = 95b7b6916d661a4da3f9c0adf52d5e1f4f8ab042 +BRCM_PATCHRAM_PLUS_SITE = $(call github,AsteroidOS,brcm-patchram-plus,$(BRCM_PATCHRAM_PLUS_VERSION)) +BRCM_PATCHRAM_PLUS_LICENSE = Apache-2.0 +BRCM_PATCHRAM_PLUS_LICENSE_FILES = COPYING +BRCM_PATCHRAM_PLUS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/brickd/Config.in b/features/buildroot/package/brickd/Config.in new file mode 100644 index 00000000..7c5b8eb4 --- /dev/null +++ b/features/buildroot/package/brickd/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BRICKD + bool "brickd" + depends on BR2_PACKAGE_HAS_UDEV # gudev + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_USE_MMU # glib2, gudev + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGUDEV + help + Brick daemon for LEGO MINDSTORMS EV3 (and other LEGO- + compatible devices). This performs tasks like battery + management and controls device-specific hardware. + + https://github.com/ev3dev/brickd + +comment "brickd needs udev /dev management, a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/features/buildroot/package/brickd/S70brickd b/features/buildroot/package/brickd/S70brickd new file mode 100644 index 00000000..063ad875 --- /dev/null +++ b/features/buildroot/package/brickd/S70brickd @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=brickd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/sbin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/brickd/brickd.hash b/features/buildroot/package/brickd/brickd.hash new file mode 100644 index 00000000..8de57a9b --- /dev/null +++ b/features/buildroot/package/brickd/brickd.hash @@ -0,0 +1,5 @@ +# Locally computed hash +sha256 0b79f1ccd6fa644d7ecb2e17b19f9ffbf6374702ae9ac536b2c4a0b8b2cfe160 brickd-ev3dev-stretch_1.2.1.tar.gz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.txt diff --git a/features/buildroot/package/brickd/brickd.mk b/features/buildroot/package/brickd/brickd.mk new file mode 100644 index 00000000..7fe28daf --- /dev/null +++ b/features/buildroot/package/brickd/brickd.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# brickd +# +################################################################################ + +BRICKD_VERSION = ev3dev-stretch/1.2.1 +BRICKD_SITE = https://github.com/ev3dev/brickd +BRICKD_SITE_METHOD = git +BRICKD_GIT_SUBMODULES = YES + +BRICKD_LICENSE = GPL-2.0 +BRICKD_LICENSE_FILES = LICENSE.txt + +BRICKD_INSTALL_STAGING = YES +BRICKD_DEPENDENCIES = host-pkgconf host-vala libglib2 libgudev + +define BRICKD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/brickd/S70brickd $(TARGET_DIR)/etc/init.d/S70brickd +endef + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/bridge-utils/0001-build-system.patch b/features/buildroot/package/bridge-utils/0001-build-system.patch new file mode 100644 index 00000000..f4473775 --- /dev/null +++ b/features/buildroot/package/bridge-utils/0001-build-system.patch @@ -0,0 +1,11 @@ +--- bridge-utils-0.9.6/libbridge/Makefile.in.dist 2004-03-01 20:55:52.000000000 -0600 ++++ bridge-utils-0.9.6/libbridge/Makefile.in 2004-03-01 20:56:23.000000000 -0600 +@@ -5,7 +5,7 @@ + RANLIB=@RANLIB@ + + CC=@CC@ +-CFLAGS = -Wall -g $(KERNEL_HEADERS) ++CFLAGS = -Wall -g @CFLAGS@ $(KERNEL_HEADERS) + + prefix=@prefix@ + exec_prefix=@exec_prefix@ diff --git a/features/buildroot/package/bridge-utils/Config.in b/features/buildroot/package/bridge-utils/Config.in new file mode 100644 index 00000000..bc614b07 --- /dev/null +++ b/features/buildroot/package/bridge-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BRIDGE_UTILS + bool "bridge-utils" + help + Manage ethernet bridging; a way to connect networks together + to form a larger network. + + https://git.kernel.org/cgit/linux/kernel/git/shemminger/bridge-utils.git/ diff --git a/features/buildroot/package/bridge-utils/bridge-utils.hash b/features/buildroot/package/bridge-utils/bridge-utils.hash new file mode 100644 index 00000000..e699b24a --- /dev/null +++ b/features/buildroot/package/bridge-utils/bridge-utils.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/net/bridge-utils/sha256sums.asc +sha256 cc67efb5d5fb8928a6569b3fade2b4042ec17da04678dab127d96b46489e26c8 bridge-utils-1.6.tar.xz diff --git a/features/buildroot/package/bridge-utils/bridge-utils.mk b/features/buildroot/package/bridge-utils/bridge-utils.mk new file mode 100644 index 00000000..25192274 --- /dev/null +++ b/features/buildroot/package/bridge-utils/bridge-utils.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bridge-utils +# +################################################################################ + +BRIDGE_UTILS_VERSION = 1.6 +BRIDGE_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/bridge-utils +BRIDGE_UTILS_SOURCE = bridge-utils-1.6.tar.xz +BRIDGE_UTILS_AUTORECONF = YES +BRIDGE_UTILS_LICENSE = GPL-2.0+ +BRIDGE_UTILS_LICENSE_FILES = COPYING + +# Avoid using the host's headers. Location is not important as +# required headers will anyway be found from within the sysroot. +BRIDGE_UTILS_CONF_OPTS = --with-linux-headers=$(STAGING_DIR)/usr/include + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/brltty/0001-buildsys-fix-cross-compilation.patch b/features/buildroot/package/brltty/0001-buildsys-fix-cross-compilation.patch new file mode 100644 index 00000000..9a10d464 --- /dev/null +++ b/features/buildroot/package/brltty/0001-buildsys-fix-cross-compilation.patch @@ -0,0 +1,41 @@ +From 088666535a045dae71bd2fcc6b3a1553023106ce Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Wed, 22 Aug 2018 10:10:19 +0200 +Subject: [PATCH] buildsys: fix cross-compilation + +Some identifiers for includes and libs paths may contain digit, e.g. +X11_PACKAGE or ATSPI2_PACKAGE or GLIB2_PACKAGE... + +Also detect those identifiers when doing cros-compilation, so that the +_FOR_BUILD variants are really created and do not clash with the target +variants. + +Fixes: + http://autobuild.buildroot.org/results/a37/a37782b3cfc1a96cc129db8fade20a36a7b2d470/build-end.log + http://autobuild.buildroot.org/results/97e/97edc6a47d2140968e84b409cdc960604e5896f2/build-end.log + [...] + +Signed-off-by: "Yann E. MORIN" +--- +Upstram status: submitted +https://github.com/brltty/brltty/pull/142 +--- + mk4build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk4build b/mk4build +index db90c86a9..551283825 100755 +--- a/mk4build ++++ b/mk4build +@@ -112,7 +112,7 @@ fi + + sedScript="${outputName}.${sedExtension}" + sed -n -e ' +-s/^ *\([A-Za-z][A-Za-z_]*\) *=.*$/\1/ ++s/^ *\([A-Za-z][A-Za-z0-9_]*\) *=.*$/\1/ + t found + d + :found +-- +2.14.1 + diff --git a/features/buildroot/package/brltty/0002-Fix-linking-error-on-mips64el.patch b/features/buildroot/package/brltty/0002-Fix-linking-error-on-mips64el.patch new file mode 100644 index 00000000..4882a226 --- /dev/null +++ b/features/buildroot/package/brltty/0002-Fix-linking-error-on-mips64el.patch @@ -0,0 +1,42 @@ +From ddb06335935ef1458fe98f99cdc5d5fe6757fd02 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 3 Oct 2018 19:06:40 +0200 +Subject: [PATCH] Fix linking error on mips64el + +Patch that was fixing build on mips64el was reverted: +https://github.com/brltty/brltty/commit/9e7d62c869d3c1cbe12dda8b0291a4692c193416 + +So fix the issue again, this time by checking if $(GCC) is available as +suggested by Arnout during review of buildroot patch: +https://patchwork.ozlabs.org/patch/972614 + +Fixes: + - http://autobuild.buildroot.org/results/31f682838b3d3b2c7103b5c51f2aba0b89d4f630 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/brltty/brltty/pull/149] +--- + configure.ac | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 1e2774abf..a488d3d52 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -481,7 +481,12 @@ AC_CACHE_CHECK([for make relocatable object command], [brltty_cv_prog_make_objec + case "${host_os}" + in + *) +- brltty_cv_prog_make_object_relocatable="\$(LD) -r -o" ++ if test "${GCC}" = "yes" ++ then ++ brltty_cv_prog_make_object_relocatable="\$(CC) -shared -o" ++ else ++ brltty_cv_prog_make_object_relocatable="\$(LD) -r -o" ++ fi + ;; + esac]) + MKREL="${brltty_cv_prog_make_object_relocatable}" +-- +2.17.1 + diff --git a/features/buildroot/package/brltty/Config.in b/features/buildroot/package/brltty/Config.in new file mode 100644 index 00000000..de11af3b --- /dev/null +++ b/features/buildroot/package/brltty/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BRLTTY + bool "brltty" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + help + A daemon providing access to the Linux console for a blind + person using a refreshable braille display. + + http://brltty.app/ + +if BR2_PACKAGE_BRLTTY + +config BR2_PACKAGE_BRLTTY_TEXT_TABLE + string "text-table" + +endif + +comment "brltty needs a toolchain w/ dynamic lib, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/features/buildroot/package/brltty/S10brltty b/features/buildroot/package/brltty/S10brltty new file mode 100644 index 00000000..18e274dc --- /dev/null +++ b/features/buildroot/package/brltty/S10brltty @@ -0,0 +1,40 @@ +#!/bin/sh +# +# brltty Starts brltty. +# + +start() { + printf "Starting brltty: " + start-stop-daemon -S -q -p /var/run/brltty.pid \ + --exec /usr/bin/brltty -- -P /var/run/brltty.pid "$@" + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping brltty: " + start-stop-daemon -K -q -p /var/run/brltty.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start "$@" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + force-reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/brltty/brltty.hash b/features/buildroot/package/brltty/brltty.hash new file mode 100644 index 00000000..6b9470c8 --- /dev/null +++ b/features/buildroot/package/brltty/brltty.hash @@ -0,0 +1,3 @@ +sha256 6171258aca833bb2012afd9c63928573a48c3daab7b149a3e90001ba53beb80f brltty-5.6.tar.xz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f LICENSE-LGPL +sha256 42685d8fa420f618e325d423be110c69abd976afdef183dfac385ccd44cb12e9 README diff --git a/features/buildroot/package/brltty/brltty.mk b/features/buildroot/package/brltty/brltty.mk new file mode 100644 index 00000000..21f6877b --- /dev/null +++ b/features/buildroot/package/brltty/brltty.mk @@ -0,0 +1,112 @@ +################################################################################ +# +# brltty +# +################################################################################ + +BRLTTY_VERSION = 5.6 +BRLTTY_SOURCE = brltty-$(BRLTTY_VERSION).tar.xz +BRLTTY_SITE = http://brltty.com/archive +BRLTTY_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install +BRLTTY_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install +BRLTTY_LICENSE = LGPL-2.1+ +BRLTTY_LICENSE_FILES = LICENSE-LGPL README + +BRLTTY_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-autoconf host-pkgconf \ + $(if $(BR2_PACKAGE_AT_SPI2_CORE),at-spi2-core) + +BRLTTY_CONF_OPTS = \ + --disable-java-bindings \ + --disable-lisp-bindings \ + --disable-ocaml-bindings \ + --disable-python-bindings \ + --disable-tcl-bindings \ + --disable-x \ + --without-midi-package \ + --without-mikropuhe --without-speechd --without-swift \ + --without-theta --without-viavoice + +# Autoreconf is needed because we're patching configure.ac in +# 0002-Check-for-ioperm-to-make-sure-the-platform-supports-.patch. However, +# a plain autoreconf doesn't work, because this package is only +# autoconf-based. +define BRLTTY_AUTOCONF + cd $(BRLTTY_SRCDIR) && $(AUTOCONF) +endef + +BRLTTY_PRE_CONFIGURE_HOOKS += BRLTTY_AUTOCONF + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +BRLTTY_DEPENDENCIES += bluez5_utils +BRLTTY_CONF_OPTS += --with-bluetooth-package +else +BRLTTY_CONF_OPTS += --without-bluetooth-package +endif + +ifeq ($(BR2_PACKAGE_ESPEAK),y) +BRLTTY_DEPENDENCIES += espeak +BRLTTY_CONF_OPTS += --with-espeak=$(TARGET_DIR)/usr +else +BRLTTY_CONF_OPTS += --without-espeak +endif + +ifeq ($(BR2_PACKAGE_FLITE),y) +BRLTTY_DEPENDENCIES += flite +BRLTTY_CONF_OPTS += --with-flite=$(STAGING_DIR)/usr +else +BRLTTY_CONF_OPTS += --without-flite +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +BRLTTY_DEPENDENCIES += icu +BRLTTY_CONF_OPTS += --enable-icu +else +BRLTTY_CONF_OPTS += --disable-icu +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +BRLTTY_DEPENDENCIES += ncurses +BRLTTY_CONF_OPTS += --with-curses +else +BRLTTY_CONF_OPTS += --without-curses +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +BRLTTY_DEPENDENCIES += systemd +BRLTTY_CONF_OPTS += --with-service-package +else +BRLTTY_CONF_OPTS += --without-service-package +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +BRLTTY_CONF_OPTS += --enable-i18n +else +BRLTTY_CONF_OPTS += --disable-i18n +endif + +BRLTTY_TEXT_TABLE = $(call qstrip,$(BR2_PACKAGE_BRLTTY_TEXT_TABLE)) +ifneq ($(BRLTTY_TEXT_TABLE),) +BRLTTY_CONF_OPTS += --with-text-table=$(BRLTTY_TEXT_TABLE) +endif + +define BRLTTY_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/Documents/brltty.conf $(TARGET_DIR)/etc/brltty.conf +endef + +BRLTTY_POST_INSTALL_TARGET_HOOKS += BRLTTY_INSTALL_CONF + +define BRLTTY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/brltty/S10brltty \ + $(TARGET_DIR)/etc/init.d/S10brltty +endef + +define BRLTTY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/brltty/brltty.service \ + $(TARGET_DIR)/usr/lib/systemd/system/brltty.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants + ln -fs ../../../../usr/lib/systemd/system/brltty.service \ + $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/brltty.service +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/brltty/brltty.service b/features/buildroot/package/brltty/brltty.service new file mode 100644 index 00000000..070ec94b --- /dev/null +++ b/features/buildroot/package/brltty/brltty.service @@ -0,0 +1,23 @@ +[Unit] +Description=Braille Device Support +Documentation=man:brltty(1) +Documentation=http://brltty.com/ + +DefaultDependencies=no +Before=sysinit.target +After=systemd-udev-settle.service +Wants=systemd-udev-settle.service + +[Service] +Type=simple +ExecStart=/usr/bin/brltty --no-daemon +TimeoutStartSec=5 +TimeoutStopSec=10 +Restart=always +RestartSec=30 +Nice=-10 +OOMScoreAdjust=-900 + +[Install] +WantedBy=sysinit.target + diff --git a/features/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch b/features/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch new file mode 100644 index 00000000..ae5386b1 --- /dev/null +++ b/features/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch @@ -0,0 +1,144 @@ +From 7289e5a378ba13801996a84d89d8fe95c3fc4c11 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Mon, 26 Mar 2018 19:08:31 +0100 +Subject: [PATCH] CMake: Allow using BUILD_SHARED_LIBS to choose static/shared + libs + +By convention projects using CMake which can build either static or +shared libraries use a BUILD_SHARED_LIBS flag to allow selecting between +both: the add_library() command automatically switches between both using +this variable when the library kind is not passed to add_library(). It +is also usual to expose the BUILD_SHARED_LIBS as an user-facing setting +with the option() command. + +This way, the following will both work as expected: + + % cmake -DBUILD_SHARED_LIBS=OFF ... + % cmake -DBUILS_SHARED_LIBS=ON ... + +This is helpful for distributions which need (or want) to build only +static libraries. +--- + CMakeLists.txt | 42 ++++++++++++++---------------------------- + c/fuzz/test_fuzzer.sh | 6 +++--- + 2 files changed, 17 insertions(+), 31 deletions(-) + +Signed-off-by: Adrian Perez de Castro +Upstream-Status: Submitted [https://github.com/google/brotli/pull/655] + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fc45f80..3f87f13 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 2.8.6) + + project(brotli C) + ++option(BUILD_SHARED_LIBS "Build shared libraries" ON) ++ + # If Brotli is being bundled in another project, we don't want to + # install anything. However, we want to let people override this, so + # we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just +@@ -114,10 +116,6 @@ set(BROTLI_LIBRARIES_CORE brotlienc brotlidec brotlicommon) + set(BROTLI_LIBRARIES ${BROTLI_LIBRARIES_CORE} ${LIBM_LIBRARY}) + mark_as_advanced(BROTLI_LIBRARIES) + +-set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static) +-set(BROTLI_LIBRARIES_STATIC ${BROTLI_LIBRARIES_CORE_STATIC} ${LIBM_LIBRARY}) +-mark_as_advanced(BROTLI_LIBRARIES_STATIC) +- + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_definitions(-DOS_LINUX) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") +@@ -137,24 +135,22 @@ endfunction() + transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + +-add_library(brotlicommon SHARED ${BROTLI_COMMON_C}) +-add_library(brotlidec SHARED ${BROTLI_DEC_C}) +-add_library(brotlienc SHARED ${BROTLI_ENC_C}) +- +-add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C}) +-add_library(brotlidec-static STATIC ${BROTLI_DEC_C}) +-add_library(brotlienc-static STATIC ${BROTLI_ENC_C}) ++add_library(brotlicommon ${BROTLI_COMMON_C}) ++add_library(brotlidec ${BROTLI_DEC_C}) ++add_library(brotlienc ${BROTLI_ENC_C}) + + # Older CMake versions does not understand INCLUDE_DIRECTORIES property. + include_directories(${BROTLI_INCLUDE_DIRS}) + ++if(BUILD_SHARED_LIBS) ++ foreach(lib brotlicommon brotlidec brotlienc) ++ target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) ++ string(TOUPPER "${lib}" LIB) ++ set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION" ) ++ endforeach() ++endif() ++ + foreach(lib brotlicommon brotlidec brotlienc) +- target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) +- string(TOUPPER "${lib}" LIB) +- set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION" ) +-endforeach() +- +-foreach(lib brotlicommon brotlidec brotlienc brotlicommon-static brotlidec-static brotlienc-static) + target_link_libraries(${lib} ${LIBM_LIBRARY}) + set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS}) + set_target_properties(${lib} PROPERTIES +@@ -167,9 +163,6 @@ endforeach() + target_link_libraries(brotlidec brotlicommon) + target_link_libraries(brotlienc brotlicommon) + +-target_link_libraries(brotlidec-static brotlicommon-static) +-target_link_libraries(brotlienc-static brotlicommon-static) +- + # For projects stuck on older versions of CMake, this will set the + # BROTLI_INCLUDE_DIRS and BROTLI_LIBRARIES variables so they still + # have a relatively easy way to use Brotli: +@@ -183,7 +176,7 @@ endif() + + # Build the brotli executable + add_executable(brotli ${BROTLI_CLI_C}) +-target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC}) ++target_link_libraries(brotli ${BROTLI_LIBRARIES}) + + # Installation + if(NOT BROTLI_BUNDLED_MODE) +@@ -199,13 +192,6 @@ if(NOT BROTLI_BUNDLED_MODE) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + +- install( +- TARGETS ${BROTLI_LIBRARIES_CORE_STATIC} +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +- ) +- + install( + DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +diff --git a/c/fuzz/test_fuzzer.sh b/c/fuzz/test_fuzzer.sh +index 9985194..4b99947 100755 +--- a/c/fuzz/test_fuzzer.sh ++++ b/c/fuzz/test_fuzzer.sh +@@ -13,12 +13,12 @@ mkdir bin + cd bin + + cmake $BROTLI -DCMAKE_C_COMPILER="$CC" \ +- -DBUILD_TESTING=OFF -DENABLE_SANITIZER=address +-make -j$(nproc) brotlidec-static ++ -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DENABLE_SANITIZER=address ++make -j$(nproc) brotlidec + + ${CC} -o run_decode_fuzzer -std=c99 -fsanitize=address -I$SRC/include \ + $SRC/fuzz/decode_fuzzer.c $SRC/fuzz/run_decode_fuzzer.c \ +- ./libbrotlidec-static.a ./libbrotlicommon-static.a ++ ./libbrotlidec.a ./libbrotlicommon.a + + mkdir decode_corpora + unzip $BROTLI/java/org/brotli/integration/fuzz_data.zip -d decode_corpora +-- +2.19.1 + diff --git a/features/buildroot/package/brotli/Config.in b/features/buildroot/package/brotli/Config.in new file mode 100644 index 00000000..e40f5b6b --- /dev/null +++ b/features/buildroot/package/brotli/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_BROTLI + bool "brotli" + help + Generic-purpose lossless compression library. The algorithm + compresses data using a combination of a modern variant of + the LZ77 algorithm, Huffman coding and 2nd order context + modeling, with a compression ratio comparable to the best + currently available general-purpose compression methods. It + is similar in speed with deflate but offers more dense + compression. + + https://github.com/google/brotli diff --git a/features/buildroot/package/brotli/brotli.hash b/features/buildroot/package/brotli/brotli.hash new file mode 100644 index 00000000..82163040 --- /dev/null +++ b/features/buildroot/package/brotli/brotli.hash @@ -0,0 +1,5 @@ +# Locally generated: +sha512 a82362aa36d2f2094bca0b2808d9de0d57291fb3a4c29d7c0ca0a37e73087ec5ac4df299c8c363e61106fccf2fe7f58b5cf76eb97729e2696058ef43b1d3930a v1.0.7.tar.gz + +# Hash for license files: +sha512 bae78184c2f50f86d8c727826d3982c469454c42b9af81f4ef007e39036434fa894cf5be3bf5fc65b7de2301f0a72d067a8186e303327db8a96bd14867e0a3a8 LICENSE diff --git a/features/buildroot/package/brotli/brotli.mk b/features/buildroot/package/brotli/brotli.mk new file mode 100644 index 00000000..134f4808 --- /dev/null +++ b/features/buildroot/package/brotli/brotli.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# brotli +# +################################################################################ + +BROTLI_VERSION = 1.0.7 +BROTLI_SOURCE = v$(BROTLI_VERSION).tar.gz +BROTLI_SITE = https://github.com/google/brotli/archive +BROTLI_LICENSE = MIT +BROTLI_LICENSE_FILES = LICENSE +BROTLI_INSTALL_STAGING = YES +BROTLI_CONF_OPTS = \ + -DBROTLI_DISABLE_TESTS=ON \ + -DBROTLI_BUNDLED_MODE=OFF + +BROTLI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y) +BROTLI_CFLAGS += -O0 +endif + +BROTLI_CONF_OPTS += -DCMAKE_C_FLAGS="$(BROTLI_CFLAGS)" + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch b/features/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch new file mode 100644 index 00000000..56affb41 --- /dev/null +++ b/features/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch @@ -0,0 +1,17 @@ +bspatch: Fix missing header for u_char + +Fixes http://autobuild.buildroot.net/results/31a/31a837cf6e34b02dce498f2b12e40d6d16a5a8e6/ + +Signed-off-by: Jörg Krause + +diff -purN bsdiff-4.3.orig/bspatch.c bsdiff-4.3/bspatch.c +--- bsdiff-4.3.orig/bspatch.c 2015-04-30 13:47:26.485903359 +0200 ++++ bsdiff-4.3/bspatch.c 2015-04-30 13:48:14.808908672 +0200 +@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/b + #include + #include + #include ++#include + + static off_t offtin(u_char *buf) + { diff --git a/features/buildroot/package/bsdiff/Config.in b/features/buildroot/package/bsdiff/Config.in new file mode 100644 index 00000000..11fd8b9d --- /dev/null +++ b/features/buildroot/package/bsdiff/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BSDIFF + bool "bsdiff" + select BR2_PACKAGE_BZIP2 + help + Binary patch/diff like xdelta but creates smaller diffs. + Needs bzip2 support. + + http://www.daemonology.net/bsdiff/ diff --git a/features/buildroot/package/bsdiff/bsdiff.hash b/features/buildroot/package/bsdiff/bsdiff.hash new file mode 100644 index 00000000..989fcf1f --- /dev/null +++ b/features/buildroot/package/bsdiff/bsdiff.hash @@ -0,0 +1,2 @@ +# From http://www.daemonology.net/bsdiff/: +md5 e6d812394f0e0ecc8d5df255aa1db22a bsdiff-4.3.tar.gz diff --git a/features/buildroot/package/bsdiff/bsdiff.mk b/features/buildroot/package/bsdiff/bsdiff.mk new file mode 100644 index 00000000..9030284a --- /dev/null +++ b/features/buildroot/package/bsdiff/bsdiff.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# bsdiff +# +################################################################################ + +BSDIFF_VERSION = 4.3 +BSDIFF_SITE = http://www.daemonology.net/bsdiff +BSDIFF_DEPENDENCIES = bzip2 +BSDIFF_LICENSE = BSD-2-Clause +BSDIFF_LICENSE_FILES = bsdiff.c + +define BSDIFF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/bsdiff.c -lbz2 -o $(@D)/bsdiff + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/bspatch.c -lbz2 -o $(@D)/bspatch +endef + +define BSDIFF_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bsdiff $(TARGET_DIR)/usr/bin/bsdiff + $(INSTALL) -D -m 755 $(@D)/bspatch $(TARGET_DIR)/usr/bin/bspatch +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch b/features/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch new file mode 100644 index 00000000..de2db2f1 --- /dev/null +++ b/features/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch @@ -0,0 +1,51 @@ +From ff93866eb119cedb791894814780c0e44db35715 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Fri, 10 Mar 2017 14:56:17 +0000 +Subject: [PATCH] Makefile: install static library and headers in + install-static + +Currently, the install-static target only installs the statically +compiled tools. However, some programs outside of btrfs-progs (for +example docker) link with the btrfs libraries. If such programs want to +link statically against the btrfs-progs library, then this library +should be installed by "install-static". Indeed, "make install" cannot +be used if the support for shared library is not enabled. + +Signed-off-by: Thomas Petazzoni +[Gustavo: Rebase for btrfs-progs 4.7.2] +Signed-off-by: Gustavo Zacarias +[Vincent: Rebase for btrfs-progs 4.10] +Signed-off-by: Vicente Olivert Riera +[baruch: Rebase for btrfs-progs 4.16] +Signed-off-by: Baruch Siach +--- + Makefile | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 67fbc48..d9e34be 100644 +--- a/Makefile ++++ b/Makefile +@@ -308,7 +308,7 @@ test: test-fsck test-mkfs test-convert test-misc test-fuzz test-cli + # NOTE: For static compiles, you need to have all the required libs + # static equivalent available + # +-static: $(progs_static) ++static: $(progs_static) $(libs_static) + + version.h: version.sh version.h.in configure.ac + @echo " [SH] $@" +@@ -537,6 +537,10 @@ install-static: $(progs_static) $(INSTALLDIRS) + $(INSTALL) $(progs_static) $(DESTDIR)$(bindir) + # btrfsck is a link to btrfs in the src tree, make it so for installed file as well + $(LN_S) -f btrfs.static $(DESTDIR)$(bindir)/btrfsck.static ++ $(INSTALL) -m755 -d $(DESTDIR)$(libdir) ++ $(INSTALL) $(libs_static) $(DESTDIR)$(libdir) ++ $(INSTALL) -m755 -d $(DESTDIR)$(incdir)/btrfs ++ $(INSTALL) -m644 $(libbtrfs_headers) $(DESTDIR)$(incdir)/btrfs + + $(INSTALLDIRS): + @echo "Making install in $(patsubst install-%,%,$@)" +-- +2.10.2 + diff --git a/features/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch b/features/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch new file mode 100644 index 00000000..9c1173b3 --- /dev/null +++ b/features/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch @@ -0,0 +1,42 @@ +From 1fc5444f5620670bb9d293be4f92df59661e1810 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 20 Feb 2017 23:31:24 +0100 +Subject: [PATCH] kerncompat.h: define BTRFS_DISABLE_BACKTRACE when building + with uClibc + +uClibc does not provide backtrace() nor . When building +btrfs-progs, passing --disable-backtrace is enough to make it build with +uClibc. But once btrfs-progs is installed and another program/library +includes kerncompat.h, it fails to build with uClibc, because +BTRFS_DISABLE_BACKTRACE is not defined. + +The most correct fix for this would be to have kerncompat.h generated +from kerncompat.h.in during the btrfs-progs build process, and tuned +depending on autoconf/automake variables. But as a quick fix that +follows the current strategy, we simply tweak the existing __GLIBC__ +conditional. Indeed, uClibc pretends to be glibc and defines __GLIBC__, +but it does not replace it completely, hence the need to define +BTRFS_DISABLE_BACKTRACE when __GLIBC__ is not defined *or* when +__UCLIBC__ is defined. + +Signed-off-by: Thomas Petazzoni +--- + kerncompat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kerncompat.h b/kerncompat.h +index 0f207b7..e47d164 100644 +--- a/kerncompat.h ++++ b/kerncompat.h +@@ -32,7 +32,7 @@ + + #include + +-#ifndef __GLIBC__ ++#if !defined(__GLIBC__) || defined(__UCLIBC__) + #ifndef BTRFS_DISABLE_BACKTRACE + #define BTRFS_DISABLE_BACKTRACE + #endif +-- +2.7.4 + diff --git a/features/buildroot/package/btrfs-progs/Config.in b/features/buildroot/package/btrfs-progs/Config.in new file mode 100644 index 00000000..35dfc391 --- /dev/null +++ b/features/buildroot/package/btrfs-progs/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_BTRFS_PROGS + bool "btrfs-progs" + depends on BR2_USE_MMU # util-linux + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LZO + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + Btrfs filesystem utilities + + https://btrfs.wiki.kernel.org/index.php/Main_Page + +comment "btrfs-progs needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/btrfs-progs/Config.in.host b/features/buildroot/package/btrfs-progs/Config.in.host new file mode 100644 index 00000000..cdcd2e4e --- /dev/null +++ b/features/buildroot/package/btrfs-progs/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_BTRFS_PROGS + bool "host btrfs-progs" + help + Btrfs filesystem utilities + + https://btrfs.wiki.kernel.org/index.php/Main_Page diff --git a/features/buildroot/package/btrfs-progs/btrfs-progs.hash b/features/buildroot/package/btrfs-progs/btrfs-progs.hash new file mode 100644 index 00000000..b8e6a07f --- /dev/null +++ b/features/buildroot/package/btrfs-progs/btrfs-progs.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/sha256sums.asc +sha256 36ac4a0198ffff79d5800c537ea4b19769a8fd3ad870f75413d25b20e2d83233 btrfs-progs-v5.2.1.tar.xz +# Locally computed +sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 libbtrfsutil/COPYING +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 libbtrfsutil/COPYING.LESSER diff --git a/features/buildroot/package/btrfs-progs/btrfs-progs.mk b/features/buildroot/package/btrfs-progs/btrfs-progs.mk new file mode 100644 index 00000000..11a28449 --- /dev/null +++ b/features/buildroot/package/btrfs-progs/btrfs-progs.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# btrfs-progs +# +################################################################################ + +BTRFS_PROGS_VERSION = 5.2.1 +BTRFS_PROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/kdave/btrfs-progs +BTRFS_PROGS_SOURCE = btrfs-progs-v$(BTRFS_PROGS_VERSION).tar.xz +BTRFS_PROGS_DEPENDENCIES = host-pkgconf lzo util-linux zlib +BTRFS_PROGS_CONF_OPTS = --disable-backtrace --disable-zstd --disable-python +BTRFS_PROGS_LICENSE = GPL-2.0, LGPL-3.0+ (libbtrfsutil) +BTRFS_PROGS_LICENSE_FILES = COPYING libbtrfsutil/COPYING \ + libbtrfsutil/COPYING.LESSER +BTRFS_PROGS_INSTALL_STAGING = YES + +# Doesn't autodetect static-only and tries to build both +ifeq ($(BR2_STATIC_LIBS),y) +BTRFS_PROGS_MAKE_OPTS = static +BTRFS_PROGS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static +BTRFS_PROGS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static +endif + +# convert also supports conversion from reiserfs, which needs some +# reiserfs libraries, but we have no package for them in Buildroot, so +# we keep things simple and only handle ext2. +ifeq ($(BR2_PACKAGE_E2FSPROGS),y) +BTRFS_PROGS_CONF_OPTS += --enable-convert --with-convert=ext2 +BTRFS_PROGS_DEPENDENCIES += e2fsprogs +else +BTRFS_PROGS_CONF_OPTS += --disable-convert +endif + +HOST_BTRFS_PROGS_DEPENDENCIES = host-util-linux host-lzo host-zlib +HOST_BTRFS_PROGS_CONF_OPTS = \ + --disable-backtrace \ + --disable-zstd \ + --disable-python \ + --disable-convert + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/bullet/Config.in b/features/buildroot/package/bullet/Config.in new file mode 100644 index 00000000..fc285ab3 --- /dev/null +++ b/features/buildroot/package/bullet/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BULLET + bool "bullet" + depends on BR2_INSTALL_LIBSTDCPP + help + Bullet is a Collision Detection and Rigid Body Dynamics + Library. + + http://bulletphysics.org + +comment "bullet needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/bullet/bullet.hash b/features/buildroot/package/bullet/bullet.hash new file mode 100644 index 00000000..2b0b974c --- /dev/null +++ b/features/buildroot/package/bullet/bullet.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 21c135775527754fc2929db1db5144e92ad0218ae72840a9f162acb467a7bbf9 bullet-2.88.tar.gz +sha256 885cd516a8420acb7c3e0b1a7119913b686495001ae564e3229740460e8cff59 LICENSE.txt diff --git a/features/buildroot/package/bullet/bullet.mk b/features/buildroot/package/bullet/bullet.mk new file mode 100644 index 00000000..f3432137 --- /dev/null +++ b/features/buildroot/package/bullet/bullet.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# bullet +# +################################################################################ + +BULLET_VERSION = 2.88 +BULLET_SITE = $(call github,bulletphysics,bullet3,$(BULLET_VERSION)) +BULLET_INSTALL_STAGING = YES +BULLET_LICENSE = Zlib +BULLET_LICENSE_FILES = LICENSE.txt + +# Disable demos apps and unit tests. +# Disable Bullet3 library. +BULLET_CONF_OPTS = -DBUILD_UNIT_TESTS=OFF \ + -DBUILD_BULLET2_DEMOS=OFF \ + -DBUILD_BULLET3=OFF + +# extras needs dlfcn.h and NPTL (pthread_barrier_init) +ifeq ($(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),:y) +BULLET_CONF_OPTS += -DBUILD_EXTRAS=ON +else +BULLET_CONF_OPTS += -DBUILD_EXTRAS=OFF +endif + +BULLET_CXXFLAGS = $(TARGET_CXXFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +BULLET_CXXFLAGS += -O0 +endif + +BULLET_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(BULLET_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/bustle/Config.in b/features/buildroot/package/bustle/Config.in new file mode 100644 index 00000000..109ebdee --- /dev/null +++ b/features/buildroot/package/bustle/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_BUSTLE + bool "bustle" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBGLIB2 + help + Bustle is a better dbus-monitor! It records and draws + sequence diagrams of D-Bus activity, showing signal + emissions, method calls and their corresponding returns, + with timestamps for each individual event and the duration + of each method call. This can help you check for unwanted + D-Bus traffic, and pinpoint why your D-Bus-based application + isn't performing as well as you like. + + This only installs the command line bustle-pcap tool, not + the graphical viewer. + + http://www.willthompson.co.uk/bustle/ + +comment "bustle needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/bustle/bustle.hash b/features/buildroot/package/bustle/bustle.hash new file mode 100644 index 00000000..49890f74 --- /dev/null +++ b/features/buildroot/package/bustle/bustle.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 921c2cbbb957dcb02c3aa8fd1eeff3534cb437fa9eeca1c25206ad1e741a3f14 bustle-0.5.4.tar.gz diff --git a/features/buildroot/package/bustle/bustle.mk b/features/buildroot/package/bustle/bustle.mk new file mode 100644 index 00000000..ffbfbe40 --- /dev/null +++ b/features/buildroot/package/bustle/bustle.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# bustle +# +################################################################################ + +BUSTLE_VERSION = 0.5.4 +BUSTLE_SITE = http://www.willthompson.co.uk/bustle/releases/$(BUSTLE_VERSION) +BUSTLE_LICENSE = LGPL-2.1+ +BUSTLE_LICENSE_FILES = LICENSE +BUSTLE_DEPENDENCIES = libglib2 libpcap host-pkgconf + +BUSTLE_PCAP_FLAGS = "-lpcap" +ifeq ($(BR2_STATIC_LIBS),y) +BUSTLE_PCAP_FLAGS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif + +define BUSTLE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + PCAP_FLAGS="$(BUSTLE_PCAP_FLAGS)" -C $(@D) dist/build/bustle-pcap +endef + +define BUSTLE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dist/build/bustle-pcap \ + $(TARGET_DIR)/usr/bin/bustle-pcap +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch b/features/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch new file mode 100644 index 00000000..3aabc960 --- /dev/null +++ b/features/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch @@ -0,0 +1,29 @@ +From d4fec31889ad660a58dab633c511221feb66e817 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 5 Oct 2013 15:55:06 +0200 +Subject: [PATCH] networking/libiproute: use instead of + + +The musl C library doesn't provide the since the +corresponding kernel headers already provides the +necessary definitions. Replacing by + also removes the need to include + + +This commit fixes the build of iplink with the musl C library. + +Signed-off-by: Thomas Petazzoni +[Gustavo: update for busybox 1.22.0] + +diff -Nura busybox-1.22.0.orig/networking/libiproute/iplink.c busybox-1.22.0/networking/libiproute/iplink.c +--- busybox-1.22.0.orig/networking/libiproute/iplink.c 2014-01-01 09:42:40.301137882 -0300 ++++ busybox-1.22.0/networking/libiproute/iplink.c 2014-01-01 09:43:01.282827700 -0300 +@@ -7,7 +7,7 @@ + */ + #include + /*#include - not needed? */ +-#include ++#include + #include + + #include diff --git a/features/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch b/features/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch new file mode 100644 index 00000000..8375ae05 --- /dev/null +++ b/features/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch @@ -0,0 +1,30 @@ +From 67eb23d2be8aba3c474dac81a15b0fa11e5847b7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 25 Nov 2013 22:51:53 +0100 +Subject: [PATCH] Makefile.flags: strip non -l arguments returned by pkg-config + +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: refresh for 1.29.0] +Signed-off-by: "Yann E. MORIN" +--- + Makefile.flags | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile.flags b/Makefile.flags +index 307afa7..885e323 100644 +--- a/Makefile.flags ++++ b/Makefile.flags +@@ -153,7 +153,9 @@ ifeq ($(CONFIG_SELINUX),y) + SELINUX_PC_MODULES = libselinux libsepol + $(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES))) + CPPFLAGS += $(SELINUX_CFLAGS) +-LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%)) ++LDLIBS += $(if $(SELINUX_LIBS),\ ++ $(patsubst -l%,%,$(filter -l%,$(SELINUX_LIBS))),\ ++ $(SELINUX_PC_MODULES:lib%=%)) + endif + + ifeq ($(CONFIG_FEATURE_NSLOOKUP_BIG),y) +-- +1.8.1.2 + diff --git a/features/buildroot/package/busybox/Config.in b/features/buildroot/package/busybox/Config.in new file mode 100644 index 00000000..bab00bf8 --- /dev/null +++ b/features/buildroot/package/busybox/Config.in @@ -0,0 +1,106 @@ +config BR2_PACKAGE_BUSYBOX + bool "BusyBox" + default y + help + The Swiss Army Knife of embedded Linux. It slices, it dices, + it makes Julian Fries. + + http://busybox.net/ + + Most people will answer Y. + +if BR2_PACKAGE_BUSYBOX + +config BR2_PACKAGE_BUSYBOX_CONFIG + string "BusyBox configuration file to use?" + default "package/busybox/busybox.config" + help + Some people may wish to use their own modified BusyBox + configuration file, and will specify their config file + location with this option. + + Most people will just use the default BusyBox configuration + file. + +config BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES + string "Additional BusyBox configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main BusyBox configuration file. + +# This option is not an option of Busybox, it can be selected even +# if Busybox is not enabled. +config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + bool "Show packages that are also provided by busybox" + help + Show packages in menuconfig that are potentially also provided + by busybox. + +config BR2_PACKAGE_BUSYBOX_SELINUX + bool "Enable SELinux support" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_arc + select BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES + select BR2_PACKAGE_LIBSELINUX + help + Enable SELinux support in BusyBox. Please note that + depending on your BusyBox configuration and the SELinux + policy implementation, you may want to also enable + BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES. + + For instance, if your BusyBox configuration only uses a + couple of minor BusyBox features, such as simple command + line utilities, the symlinked version of BusyBox can be used + to save space. If BusyBox provides more features, such as + crond, then individual binaries have to be enabled for the + SELinux type transitions to occur properly. + +config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES + bool "Individual binaries" + depends on !BR2_STATIC_LIBS + help + By default (i.e with this option disabled), Busybox is + installed as a single binary in /bin/busybox and all applets + are a symbolic link to /bin/busybox. + + With this option enabled, each applet is a separate binary, + which is needed for proper operation with SELinux. + +comment "Busybox individual binaries need a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BUSYBOX_WATCHDOG + bool "Install the watchdog daemon startup script" + help + Install the watchdog daemon startup script, + that just start at the boot the busybox watchdog daemon. + +if BR2_PACKAGE_BUSYBOX_WATCHDOG + +config BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD + string "Delay between reset" + default "5" + help + Select the number of seconds between each + reset of the watchdog (default 5) + + Use ms suffix to specify milliseconds (e.g. 500ms) + +endif + +endif + +if !BR2_PACKAGE_BUSYBOX # kconfig doesn't support else + +comment "You may need to enable other packages to get a working system" +comment "You better know what you're doing!" + +# This option is not an option of Busybox, it can be selected even if +# Busybox is not enabled. This dummy option ensures that packages that +# depend on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS are visible when Busybox +# is disabled. +config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + default y +endif diff --git a/features/buildroot/package/busybox/S01syslogd b/features/buildroot/package/busybox/S01syslogd new file mode 100644 index 00000000..15006bc0 --- /dev/null +++ b/features/buildroot/package/busybox/S01syslogd @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="syslogd" +PIDFILE="/var/run/$DAEMON.pid" + +SYSLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line +# and use "-m" to instruct start-stop-daemon to create one. +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \ + -- -n $SYSLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/features/buildroot/package/busybox/S02klogd b/features/buildroot/package/busybox/S02klogd new file mode 100644 index 00000000..0677e1e5 --- /dev/null +++ b/features/buildroot/package/busybox/S02klogd @@ -0,0 +1,55 @@ +#!/bin/sh + +DAEMON="klogd" +PIDFILE="/var/run/$DAEMON.pid" + +KLOGD_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +# BusyBox' klogd does not create a pidfile, so pass "-n" in the command line +# and use "-m" to instruct start-stop-daemon to create one. +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \ + -- -n $KLOGD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/features/buildroot/package/busybox/S10mdev b/features/buildroot/package/busybox/S10mdev new file mode 100644 index 00000000..3c6f47c1 --- /dev/null +++ b/features/buildroot/package/busybox/S10mdev @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Run the mdev daemon +# + +DAEMON="mdev" +PIDFILE="/var/run/$DAEMON.pid" + + +start() { + echo -n "Starting $DAEMON... " + start-stop-daemon -S -b -m -p $PIDFILE -x /sbin/mdev -- -df + [ $? -eq 0 ] && echo "OK" || echo "ERROR" + + # coldplug modules + find /sys/ -name modalias -print0 | \ + xargs -0 sort -u | \ + tr '\n' '\0' | \ + xargs -0 modprobe -abq +} + +stop() { + echo -n "Stopping $DAEMON... " + start-stop-daemon -K -p $PIDFILE + [ $? -eq 0 ] && echo "OK" || echo "ERROR" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1" + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/busybox/S15watchdog b/features/buildroot/package/busybox/S15watchdog new file mode 100644 index 00000000..470c6d73 --- /dev/null +++ b/features/buildroot/package/busybox/S15watchdog @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Start watchdog +# + +case "$1" in + start) + echo "Starting watchdog..." + watchdog -t PERIOD /dev/watchdog + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/busybox/S50telnet b/features/buildroot/package/busybox/S50telnet new file mode 100644 index 00000000..82952b8c --- /dev/null +++ b/features/buildroot/package/busybox/S50telnet @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Start telnet.... +# + +TELNETD_ARGS=-F +[ -r /etc/default/telnet ] && . /etc/default/telnet + +start() { + printf "Starting telnetd: " + start-stop-daemon -S -q -m -b -p /var/run/telnetd.pid \ + -x /usr/sbin/telnetd -- $TELNETD_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping telnetd: " + start-stop-daemon -K -q -p /var/run/telnetd.pid \ + -x /usr/sbin/telnetd + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/busybox/busybox-minimal.config b/features/buildroot/package/busybox/busybox-minimal.config new file mode 100644 index 00000000..a7aa19ea --- /dev/null +++ b/features/buildroot/package/busybox/busybox-minimal.config @@ -0,0 +1,1143 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.28.0 +# Wed Feb 7 09:47:09 2018 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +# CONFIG_DESKTOP is not set +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +# CONFIG_SHOW_USAGE is not set +# CONFIG_FEATURE_VERBOSE_USAGE is not set +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG=y +CONFIG_PLATFORM_LINUX=y + +# +# Build Options +# +CONFIG_STATIC=y +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +# CONFIG_AR is not set +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +# CONFIG_FEATURE_AR_CREATE is not set +# CONFIG_UNCOMPRESS is not set +# CONFIG_GUNZIP is not set +CONFIG_ZCAT=y +# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set +# CONFIG_BUNZIP2 is not set +CONFIG_BZCAT=y +# CONFIG_UNLZMA is not set +CONFIG_LZCAT=y +# CONFIG_LZMA is not set +# CONFIG_UNXZ is not set +CONFIG_XZCAT=y +# CONFIG_XZ is not set +# CONFIG_BZIP2 is not set +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +# CONFIG_CPIO is not set +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_GZIP is not set +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_TAR is not set +# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set +# CONFIG_FEATURE_TAR_CREATE is not set +# CONFIG_FEATURE_TAR_AUTODETECT is not set +# CONFIG_FEATURE_TAR_FROM is not set +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set +# CONFIG_FEATURE_TAR_TO_COMMAND is not set +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +# CONFIG_UNZIP is not set +# CONFIG_FEATURE_UNZIP_CDF is not set +# CONFIG_FEATURE_UNZIP_BZIP2 is not set +# CONFIG_FEATURE_UNZIP_LZMA is not set +# CONFIG_FEATURE_UNZIP_XZ is not set +# CONFIG_FEATURE_LZMA_FAST is not set + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_EXPAND is not set +# CONFIG_UNEXPAND is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +# CONFIG_FSYNC is not set +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +# CONFIG_MKTEMP is not set +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_FEATURE_FLOAT_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +# CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +# CONFIG_BASE64 is not set +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHOAMI=y +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +# CONFIG_CHVT is not set +# CONFIG_CLEAR is not set +# CONFIG_DEALLOCVT is not set +# CONFIG_DUMPKMAP is not set +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +# CONFIG_LOADFONT is not set +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" +# CONFIG_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_FEATURE_LOADFONT_RAW is not set +# CONFIG_LOADKMAP is not set +# CONFIG_OPENVT is not set +# CONFIG_RESET is not set +# CONFIG_RESIZE is not set +# CONFIG_FEATURE_RESIZE_PRINT is not set +# CONFIG_SETCONSOLE is not set +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_SETKEYCODES is not set +# CONFIG_SETLOGCONS is not set +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +# CONFIG_PIPE_PROGRESS is not set +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +CONFIG_NUKE=y +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +# CONFIG_AWK is not set +# CONFIG_FEATURE_AWK_LIBM is not set +# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set +# CONFIG_CMP is not set +# CONFIG_DIFF is not set +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +# CONFIG_FEATURE_DIFF_DIR is not set +# CONFIG_ED is not set +# CONFIG_PATCH is not set +CONFIG_SED=y +# CONFIG_VI is not set +CONFIG_FEATURE_VI_MAX_LEN=0 +# CONFIG_FEATURE_VI_8BIT is not set +# CONFIG_FEATURE_VI_COLON is not set +# CONFIG_FEATURE_VI_YANKMARK is not set +# CONFIG_FEATURE_VI_SEARCH is not set +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +# CONFIG_FEATURE_VI_USE_SIGNALS is not set +# CONFIG_FEATURE_VI_DOT_CMD is not set +# CONFIG_FEATURE_VI_READONLY is not set +# CONFIG_FEATURE_VI_SETOPTS is not set +# CONFIG_FEATURE_VI_SET is not set +# CONFIG_FEATURE_VI_WIN_RESIZE is not set +# CONFIG_FEATURE_VI_ASK_TERMINAL is not set +# CONFIG_FEATURE_VI_UNDO is not set +# CONFIG_FEATURE_VI_UNDO_QUEUE is not set +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0 +# CONFIG_FEATURE_ALLOW_EXEC is not set + +# +# Finding Utilities +# +# CONFIG_FIND is not set +# CONFIG_FEATURE_FIND_PRINT0 is not set +# CONFIG_FEATURE_FIND_MTIME is not set +# CONFIG_FEATURE_FIND_MMIN is not set +# CONFIG_FEATURE_FIND_PERM is not set +# CONFIG_FEATURE_FIND_TYPE is not set +# CONFIG_FEATURE_FIND_XDEV is not set +# CONFIG_FEATURE_FIND_MAXDEPTH is not set +# CONFIG_FEATURE_FIND_NEWER is not set +# CONFIG_FEATURE_FIND_INUM is not set +# CONFIG_FEATURE_FIND_EXEC is not set +# CONFIG_FEATURE_FIND_EXEC_PLUS is not set +# CONFIG_FEATURE_FIND_USER is not set +# CONFIG_FEATURE_FIND_GROUP is not set +# CONFIG_FEATURE_FIND_NOT is not set +# CONFIG_FEATURE_FIND_DEPTH is not set +# CONFIG_FEATURE_FIND_PAREN is not set +# CONFIG_FEATURE_FIND_SIZE is not set +# CONFIG_FEATURE_FIND_PRUNE is not set +# CONFIG_FEATURE_FIND_DELETE is not set +# CONFIG_FEATURE_FIND_PATH is not set +# CONFIG_FEATURE_FIND_REGEX is not set +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +# CONFIG_ADDGROUP is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +# CONFIG_CRYPTPW is not set +# CONFIG_MKPASSWD is not set +# CONFIG_DELUSER is not set +# CONFIG_DELGROUP is not set +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_SU is not set +# CONFIG_FEATURE_SU_SYSLOG is not set +# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +# CONFIG_SULOGIN is not set +# CONFIG_VLOCK is not set + +# +# Linux Ext2 FS Progs +# +# CONFIG_CHATTR is not set +# CONFIG_FSCK is not set +# CONFIG_LSATTR is not set +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +# CONFIG_INSMOD is not set +# CONFIG_LSMOD is not set +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE is not set +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_RMMOD is not set + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="" +CONFIG_DEFAULT_DEPMOD_FILE="" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +# CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +# CONFIG_CHRT is not set +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +# CONFIG_EJECT is not set +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +# CONFIG_FBSET is not set +# CONFIG_FEATURE_FBSET_FANCY is not set +# CONFIG_FEATURE_FBSET_READMODE is not set +# CONFIG_FDFORMAT is not set +# CONFIG_FDISK is not set +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +# CONFIG_FEATURE_FDISK_WRITABLE is not set +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +# CONFIG_FEATURE_GPT_LABEL is not set +# CONFIG_FEATURE_FDISK_ADVANCED is not set +# CONFIG_FINDFS is not set +# CONFIG_FLOCK is not set +# CONFIG_FDFLUSH is not set +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +# CONFIG_FSTRIM is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +# CONFIG_HEXDUMP is not set +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_XXD=y +# CONFIG_HWCLOCK is not set +# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_IONICE is not set +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +# CONFIG_LAST is not set +# CONFIG_FEATURE_LAST_FANCY is not set +# CONFIG_LOSETUP is not set +# CONFIG_LSPCI is not set +# CONFIG_LSUSB is not set +# CONFIG_MDEV is not set +# CONFIG_FEATURE_MDEV_CONF is not set +# CONFIG_FEATURE_MDEV_RENAME is not set +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_FEATURE_MDEV_EXEC is not set +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +# CONFIG_MKFS_VFAT is not set +# CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +# CONFIG_MOUNTPOINT is not set +# CONFIG_NSENTER is not set +# CONFIG_PIVOT_ROOT is not set +# CONFIG_RDATE is not set +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +# CONFIG_RENICE is not set +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +# CONFIG_SETARCH is not set +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +# CONFIG_SETSID is not set +CONFIG_SWAPON=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y +# CONFIG_SWITCH_ROOT is not set +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_UEVENT is not set +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set +# CONFIG_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_FEATURE_VOLUMEID_FAT is not set +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +CONFIG_FEATURE_VOLUMEID_MINIX=y +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +# CONFIG_CROND is not set +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set +CONFIG_FEATURE_CROND_DIR="" +# CONFIG_CRONTAB is not set +# CONFIG_DC is not set +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +# CONFIG_DEVMEM is not set +# CONFIG_FBSPLASH is not set +# CONFIG_FLASHCP is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_HDPARM is not set +# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# 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_I2CGET is not set +# CONFIG_I2CSET is not set +# CONFIG_I2CDUMP is not set +# CONFIG_I2CDETECT is not set +# CONFIG_INOTIFYD is not set +# CONFIG_LESS is not set +CONFIG_FEATURE_LESS_MAXLINES=0 +# CONFIG_FEATURE_LESS_BRACKETS is not set +# CONFIG_FEATURE_LESS_FLAGS is not set +# CONFIG_FEATURE_LESS_TRUNCATE is not set +# CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_FEATURE_LESS_REGEXP is not set +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +CONFIG_LSSCSI=y +# CONFIG_MAKEDEVS is not set +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_MAN is not set +# CONFIG_MICROCOM is not set +# CONFIG_MT is not set +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +# CONFIG_RUNLEVEL is not set +# CONFIG_RX is not set +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +# CONFIG_STRINGS is not set +# CONFIG_TIME is not set +# CONFIG_TTYSIZE is not set +# CONFIG_UBIRENAME is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_VOLNAME is not set +# CONFIG_WATCHDOG is not set + +# +# Networking Utilities +# +# CONFIG_FEATURE_IPV6 is not set +# CONFIG_FEATURE_UNIX_LOCAL is not set +# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_ARP is not set +# CONFIG_ARPING is not set +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +# CONFIG_DNSD is not set +# CONFIG_ETHER_WAKE is not set +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set +CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +# CONFIG_IPTUNNEL is not set +# CONFIG_IPRULE is not set +# CONFIG_IPNEIGH is not set +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_FEATURE_IP_TUNNEL is not set +# CONFIG_FEATURE_IP_RULE is not set +# CONFIG_FEATURE_IP_NEIGH is not set +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +# CONFIG_NAMEIF is not set +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +CONFIG_NC=y +# CONFIG_NETCAT is not set +CONFIG_NC_SERVER=y +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +CONFIG_FEATURE_NETSTAT_PRG=y +# CONFIG_NSLOOKUP is not set +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +# CONFIG_FEATURE_FANCY_PING is not set +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +# CONFIG_TFTP is not set +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_TFTPD is not set +# CONFIG_FEATURE_TFTP_GET is not set +# CONFIG_FEATURE_TFTP_PUT is not set +# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +# CONFIG_TRACEROUTE is not set +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +# CONFIG_VCONFIG is not set +CONFIG_WGET=y +# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set +# CONFIG_FEATURE_WGET_STATUSBAR is not set +# CONFIG_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_FEATURE_WGET_TIMEOUT is not set +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +# CONFIG_FEATURE_UDHCPC_ARPING is not set +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set + +# +# Common options for DHCP applets +# +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=9 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +# CONFIG_FEATURE_UDHCP_8021Q is not set +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set +CONFIG_FEATURE_MIME_CHARSET="" + +# +# Process Utilities +# +# CONFIG_FREE is not set +# CONFIG_FUSER is not set +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +# CONFIG_LSOF is not set +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +# CONFIG_PIDOF is not set +# CONFIG_FEATURE_PIDOF_SINGLE is not set +# CONFIG_FEATURE_PIDOF_OMIT is not set +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +CONFIG_FEATURE_PS_WIDE=y +CONFIG_FEATURE_PS_LONG=y +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +# CONFIG_BB_SYSCTL is not set +# CONFIG_TOP is not set +# CONFIG_FEATURE_TOP_INTERACTIVE is not set +# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set +# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +# CONFIG_UPTIME is not set +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +# CONFIG_WATCH is not set +# CONFIG_FEATURE_SHOW_THREADS is not set + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +CONFIG_SVC=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +# CONFIG_SH_IS_ASH is not set +CONFIG_SH_IS_HUSH=y +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +# CONFIG_ASH is not set +# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set +# CONFIG_ASH_INTERNAL_GLOB is not set +# CONFIG_ASH_BASH_COMPAT is not set +# CONFIG_ASH_JOB_CONTROL is not set +# CONFIG_ASH_ALIAS is not set +# CONFIG_ASH_RANDOM_SUPPORT is not set +# CONFIG_ASH_EXPAND_PRMT is not set +# CONFIG_ASH_IDLE_TIMEOUT is not set +# CONFIG_ASH_MAIL is not set +# CONFIG_ASH_ECHO is not set +# CONFIG_ASH_PRINTF is not set +# CONFIG_ASH_TEST is not set +# CONFIG_ASH_HELP is not set +# CONFIG_ASH_GETOPTS is not set +# CONFIG_ASH_CMDCMD is not set +# CONFIG_CTTYHACK is not set +CONFIG_HUSH=y +CONFIG_HUSH_BASH_COMPAT=y +CONFIG_HUSH_BRACE_EXPANSION=y +CONFIG_HUSH_INTERACTIVE=y +CONFIG_HUSH_SAVEHISTORY=y +CONFIG_HUSH_JOB=y +CONFIG_HUSH_TICK=y +CONFIG_HUSH_IF=y +CONFIG_HUSH_LOOPS=y +CONFIG_HUSH_CASE=y +CONFIG_HUSH_FUNCTIONS=y +CONFIG_HUSH_LOCAL=y +CONFIG_HUSH_RANDOM_SUPPORT=y +CONFIG_HUSH_MODE_X=y +CONFIG_HUSH_ECHO=y +CONFIG_HUSH_PRINTF=y +CONFIG_HUSH_TEST=y +CONFIG_HUSH_HELP=y +CONFIG_HUSH_EXPORT=y +CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_READONLY=y +CONFIG_HUSH_KILL=y +CONFIG_HUSH_WAIT=y +CONFIG_HUSH_TRAP=y +CONFIG_HUSH_TYPE=y +CONFIG_HUSH_TIMES=y +CONFIG_HUSH_READ=y +CONFIG_HUSH_SET=y +CONFIG_HUSH_UNSET=y +CONFIG_HUSH_ULIMIT=y +CONFIG_HUSH_UMASK=y +CONFIG_HUSH_GETOPTS=y +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y +# CONFIG_FEATURE_SH_HISTFILESIZE is not set + +# +# System Logging Utilities +# +# CONFIG_KLOGD is not set +# CONFIG_FEATURE_KLOGD_KLOGCTL is not set +# CONFIG_LOGGER is not set +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_SYSLOGD is not set +# CONFIG_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_FEATURE_REMOTE_LOG is not set +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/features/buildroot/package/busybox/busybox.config b/features/buildroot/package/busybox/busybox.config new file mode 100644 index 00000000..c28718a7 --- /dev/null +++ b/features/buildroot/package/busybox/busybox.config @@ -0,0 +1,1152 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.28.0 +# Wed Feb 7 09:44:57 2018 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG=y +CONFIG_PLATFORM_LINUX=y + +# +# Build Options +# +# CONFIG_STATIC is not set +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +CONFIG_AR=y +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_FEATURE_AR_CREATE=y +# CONFIG_UNCOMPRESS is not set +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y +# CONFIG_BZIP2 is not set +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +CONFIG_CPIO=y +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +CONFIG_GZIP=y +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +# CONFIG_FEATURE_TAR_AUTODETECT is not set +CONFIG_FEATURE_TAR_FROM=y +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y +# CONFIG_FEATURE_LZMA_FAST is not set + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_EXPAND is not set +# CONFIG_UNEXPAND is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +# CONFIG_FSYNC is not set +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MKTEMP=y +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_FEATURE_FLOAT_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +# CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_BASE64=y +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHOAMI=y +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +CONFIG_LOADFONT=y +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +CONFIG_NUKE=y +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +CONFIG_AWK=y +# CONFIG_FEATURE_AWK_LIBM is not set +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_ED is not set +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +# CONFIG_FEATURE_FIND_INUM is not set +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +# CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +CONFIG_ADDGROUP=y +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_CRYPTPW is not set +CONFIG_MKPASSWD=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +CONFIG_INSMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +# CONFIG_MODINFO is not set +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_RMMOD=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +CONFIG_BLKID=y +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +CONFIG_CHRT=y +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_EJECT=y +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +# CONFIG_FINDFS is not set +CONFIG_FLOCK=y +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +CONFIG_FSTRIM=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_XXD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +# CONFIG_IONICE is not set +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LAST=y +# CONFIG_FEATURE_LAST_FANCY is not set +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +CONFIG_FEATURE_MDEV_EXEC=y +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_FEATURE_MDEV_DAEMON=y +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +# CONFIG_MKFS_VFAT is not set +CONFIG_MKSWAP=y +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +# CONFIG_NSENTER is not set +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +CONFIG_READPROFILE=y +CONFIG_RENICE=y +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +CONFIG_SETSID=y +CONFIG_SWAPON=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y +CONFIG_SWITCH_ROOT=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +CONFIG_FEATURE_VOLUMEID_MINIX=y +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +CONFIG_FEATURE_VOLUMEID_UBIFS=y +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +CONFIG_CROND=y +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=y +CONFIG_DC=y +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +# CONFIG_FBSPLASH is not set +# CONFIG_FLASHCP is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# 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_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +# CONFIG_INOTIFYD is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y +# CONFIG_FEATURE_LESS_MARKS is not set +CONFIG_FEATURE_LESS_REGEXP=y +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MAN is not set +CONFIG_MICROCOM=y +CONFIG_MT=y +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +# CONFIG_RX is not set +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y +CONFIG_TIME=y +# CONFIG_TTYSIZE is not set +CONFIG_UBIRENAME=y +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_VOLNAME is not set +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +CONFIG_FEATURE_IPV6=y +# CONFIG_FEATURE_UNIX_LOCAL is not set +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +CONFIG_ARP=y +CONFIG_ARPING=y +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +CONFIG_INETD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_NEIGH=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +# CONFIG_NC is not set +# CONFIG_NETCAT is not set +# CONFIG_NC_SERVER is not set +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +# CONFIG_FEATURE_NETSTAT_PRG is not set +CONFIG_NSLOOKUP=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_TFTPD is not set + +# +# Common options for tftp/tftpd +# +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +CONFIG_TRACEROUTE=y +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set + +# +# Common options for DHCP applets +# +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set +CONFIG_FEATURE_MIME_CHARSET="" + +# +# Process Utilities +# +CONFIG_FREE=y +CONFIG_FUSER=y +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_LSOF=y +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_WATCH=y +# CONFIG_FEATURE_SHOW_THREADS is not set + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +CONFIG_SVC=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y +# CONFIG_FEATURE_SH_HISTFILESIZE is not set + +# +# System Logging Utilities +# +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/features/buildroot/package/busybox/busybox.hash b/features/buildroot/package/busybox/busybox.hash new file mode 100644 index 00000000..2b346e68 --- /dev/null +++ b/features/buildroot/package/busybox/busybox.hash @@ -0,0 +1,3 @@ +# From https://busybox.net/downloads/busybox-1.31.0.tar.bz2.sha256 +sha256 0e4925392fd9f3743cc517e031b68b012b24a63b0cf6c1ff03cce7bb3846cc99 busybox-1.31.0.tar.bz2 +sha256 bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548 LICENSE diff --git a/features/buildroot/package/busybox/busybox.mk b/features/buildroot/package/busybox/busybox.mk new file mode 100644 index 00000000..7a5a37a0 --- /dev/null +++ b/features/buildroot/package/busybox/busybox.mk @@ -0,0 +1,356 @@ +################################################################################ +# +# busybox +# +################################################################################ + +BUSYBOX_VERSION = 1.31.0 +BUSYBOX_SITE = http://www.busybox.net/downloads +BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2 +BUSYBOX_LICENSE = GPL-2.0 +BUSYBOX_LICENSE_FILES = LICENSE + +define BUSYBOX_HELP_CMDS + @echo ' busybox-menuconfig - Run BusyBox menuconfig' +endef + +BUSYBOX_CFLAGS = \ + $(TARGET_CFLAGS) + +BUSYBOX_LDFLAGS = \ + $(TARGET_LDFLAGS) + +# Packages that provide commands that may also be busybox applets: +BUSYBOX_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_ATTR),attr) \ + $(if $(BR2_PACKAGE_BASH),bash) \ + $(if $(BR2_PACKAGE_BC),bc) \ + $(if $(BR2_PACKAGE_BINUTILS),binutils) \ + $(if $(BR2_PACKAGE_COREUTILS),coreutils) \ + $(if $(BR2_PACKAGE_CPIO),cpio) \ + $(if $(BR2_PACKAGE_DCRON),dcron) \ + $(if $(BR2_PACKAGE_DEBIANUTILS),debianutils) \ + $(if $(BR2_PACKAGE_DIFFUTILS),diffutils) \ + $(if $(BR2_PACKAGE_DOS2UNIX),dos2unix) \ + $(if $(BR2_PACKAGE_DOSFSTOOLS),dosfstools) \ + $(if $(BR2_PACKAGE_E2FSPROGS),e2fsprogs) \ + $(if $(BR2_PACKAGE_FBSET),fbset) \ + $(if $(BR2_PACKAGE_GAWK),gawk) \ + $(if $(BR2_PACKAGE_GREP),grep) \ + $(if $(BR2_PACKAGE_GZIP),gzip) \ + $(if $(BR2_PACKAGE_I2C_TOOLS),i2c-tools) \ + $(if $(BR2_PACKAGE_IFENSLAVE),ifenslave) \ + $(if $(BR2_PACKAGE_IFPLUGD),ifplugd) \ + $(if $(BR2_PACKAGE_IFUPDOWN),ifupdown) \ + $(if $(BR2_PACKAGE_IPROUTE2),iproute2) \ + $(if $(BR2_PACKAGE_IPUTILS),iputils) \ + $(if $(BR2_PACKAGE_KMOD),kmod) \ + $(if $(BR2_PACKAGE_LESS),less) \ + $(if $(BR2_PACKAGE_LSOF),lsof) \ + $(if $(BR2_PACKAGE_MTD),mtd) \ + $(if $(BR2_PACKAGE_NET_TOOLS),net-tools) \ + $(if $(BR2_PACKAGE_NETCAT),netcat) \ + $(if $(BR2_PACKAGE_NETCAT_OPENSBSD),netcat-openbsd) \ + $(if $(BR2_PACKAGE_NMAP),nmap) \ + $(if $(BR2_PACKAGE_NTP),ntp) \ + $(if $(BR2_PACKAGE_PCIUTILS),pciutils) \ + $(if $(BR2_PACKAGE_PROCPS_NG),procps-ng) \ + $(if $(BR2_PACKAGE_PSMISC),psmisc) \ + $(if $(BR2_PACKAGE_START_STOP_DAEMON),start-stop-daemon) \ + $(if $(BR2_PACKAGE_SYSKLOGD),sysklogd) \ + $(if $(BR2_PACKAGE_SYSTEMD),systemd) \ + $(if $(BR2_PACKAGE_SYSVINIT),sysvinit) \ + $(if $(BR2_PACKAGE_TAR),tar) \ + $(if $(BR2_PACKAGE_TFTPD),tftpd) \ + $(if $(BR2_PACKAGE_TRACEROUTE),traceroute) \ + $(if $(BR2_PACKAGE_UNZIP),unzip) \ + $(if $(BR2_PACKAGE_USBUTILS),usbutils) \ + $(if $(BR2_PACKAGE_UTIL_LINUX),util-linux) \ + $(if $(BR2_PACKAGE_VIM),vim) \ + $(if $(BR2_PACKAGE_WGET),wget) \ + $(if $(BR2_PACKAGE_WHOIS),whois) + +# Link against libtirpc if available so that we can leverage its RPC +# support for NFS mounting with BusyBox +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +BUSYBOX_DEPENDENCIES += libtirpc host-pkgconf +BUSYBOX_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +# Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for +# the non-final link of modules as well. +BUSYBOX_CFLAGS_busybox += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +BUSYBOX_BUILD_CONFIG = $(BUSYBOX_DIR)/.config +# Allows the build system to tweak CFLAGS +BUSYBOX_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CFLAGS="$(BUSYBOX_CFLAGS)" \ + CFLAGS_busybox="$(BUSYBOX_CFLAGS_busybox)" + +ifeq ($(BR2_REPRODUCIBLE),y) +BUSYBOX_MAKE_ENV += \ + KCONFIG_NOTIMESTAMP=1 +endif + +BUSYBOX_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + ARCH=$(KERNEL_ARCH) \ + PREFIX="$(TARGET_DIR)" \ + EXTRA_LDFLAGS="$(BUSYBOX_LDFLAGS)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CONFIG_PREFIX="$(TARGET_DIR)" \ + SKIP_STRIP=y + +ifndef BUSYBOX_CONFIG_FILE +BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)) +endif + +BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE) +BUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES)) +BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig +BUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS) + +ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) +define BUSYBOX_PERMISSIONS +# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE. +# 12 Applets are pulled from applets.h using grep command : +# grep -r -e "APPLET.*BB_SUID_REQUIRE\|APPLET.*BB_SUID_MAYBE" \ +# $(@D)/include/applets.h +# These applets are added to the device table and the makedev file +# ignores the files with type 'F' ( optional files). + /usr/bin/wall F 4755 0 0 - - - - - + /bin/ping F 4755 0 0 - - - - - + /bin/ping6 F 4755 0 0 - - - - - + /usr/bin/crontab F 4755 0 0 - - - - - + /sbin/findfs F 4755 0 0 - - - - - + /bin/login F 4755 0 0 - - - - - + /bin/mount F 4755 0 0 - - - - - + /usr/bin/passwd F 4755 0 0 - - - - - + /bin/su F 4755 0 0 - - - - - + /usr/bin/traceroute F 4755 0 0 - - - - - + /usr/bin/traceroute6 F 4755 0 0 - - - - - + /usr/bin/vlock F 4755 0 0 - - - - - +endef +else +define BUSYBOX_PERMISSIONS + /bin/busybox f 4755 0 0 - - - - - +endef +endif + +# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y) +define BUSYBOX_INSTALL_MDEV_SCRIPT + $(INSTALL) -D -m 0755 package/busybox/S10mdev \ + $(TARGET_DIR)/etc/init.d/S10mdev +endef +define BUSYBOX_INSTALL_MDEV_CONF + $(INSTALL) -D -m 0644 package/busybox/mdev.conf \ + $(TARGET_DIR)/etc/mdev.conf +endef +define BUSYBOX_SET_MDEV + $(call KCONFIG_ENABLE_OPT,CONFIG_MDEV,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# sha passwords need USE_BB_CRYPT_SHA +ifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256)$(BR2_TARGET_GENERIC_PASSWD_SHA512),y) +define BUSYBOX_SET_CRYPT_SHA + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_CRYPT_SHA,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +ifeq ($(BR2_USE_MMU),y) +define BUSYBOX_SET_MMU + $(call KCONFIG_DISABLE_OPT,CONFIG_NOMMU,$(BUSYBOX_BUILD_CONFIG)) +endef +else +define BUSYBOX_SET_MMU + $(call KCONFIG_ENABLE_OPT,CONFIG_NOMMU,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPON,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPOFF,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_ASH,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BASH_COMPAT,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BRACE_EXPANSION,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_HELP,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_INTERACTIVE,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_SAVEHISTORY,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_JOB,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_TICK,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_IF,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOOPS,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_CASE,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_FUNCTIONS,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOCAL,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_RANDOM_SUPPORT,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_EXPORT_N,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_MODE_X,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# If we're using static libs do the same for busybox +ifeq ($(BR2_STATIC_LIBS),y) +define BUSYBOX_PREFER_STATIC + $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +define BUSYBOX_INSTALL_UDHCPC_SCRIPT + if grep -q CONFIG_UDHCPC=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/udhcpc.script \ + $(TARGET_DIR)/usr/share/udhcpc/default.script; \ + $(INSTALL) -m 0755 -d \ + $(TARGET_DIR)/usr/share/udhcpc/default.script.d; \ + fi +endef + +ifeq ($(BR2_INIT_BUSYBOX),y) + +define BUSYBOX_SET_INIT + $(call KCONFIG_ENABLE_OPT,CONFIG_INIT,$(BUSYBOX_BUILD_CONFIG)) +endef + +ifeq ($(BR2_TARGET_GENERIC_GETTY),y) +define BUSYBOX_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \ + $(TARGET_DIR)/etc/inittab +endef +BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY +endif # BR2_TARGET_GENERIC_GETTY + +BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB + +endif # BR2_INIT_BUSYBOX + +ifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX),y) +BUSYBOX_DEPENDENCIES += host-pkgconf libselinux libsepol +define BUSYBOX_SET_SELINUX + $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUX,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUXENABLED,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) +define BUSYBOX_SET_INDIVIDUAL_BINARIES + $(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL,$(BUSYBOX_BUILD_CONFIG)) +endef + +define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES + rm -f $(TARGET_DIR)/bin/busybox +endef +endif + +# Only install our logging scripts if no other package does it. +ifeq ($(BR2_PACKAGE_SYSKLOGD)$(BR2_PACKAGE_RSYSLOG)$(BR2_PACKAGE_SYSLOG_NG),) +define BUSYBOX_INSTALL_LOGGING_SCRIPT + if grep -q CONFIG_SYSLOGD=y $(@D)/.config; \ + then \ + $(INSTALL) -m 0755 -D package/busybox/S01syslogd \ + $(TARGET_DIR)/etc/init.d/S01syslogd; \ + fi; \ + if grep -q CONFIG_KLOGD=y $(@D)/.config; \ + then \ + $(INSTALL) -m 0755 -D package/busybox/S02klogd \ + $(TARGET_DIR)/etc/init.d/S02klogd; \ + fi +endef +endif + +ifeq ($(BR2_INIT_BUSYBOX),y) +define BUSYBOX_INSTALL_INITTAB + $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab +endef +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y) +define BUSYBOX_SET_WATCHDOG + $(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG,$(BUSYBOX_BUILD_CONFIG)) +endef +define BUSYBOX_INSTALL_WATCHDOG_SCRIPT + $(INSTALL) -D -m 0755 package/busybox/S15watchdog \ + $(TARGET_DIR)/etc/init.d/S15watchdog + $(SED) s/PERIOD/$(call qstrip,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD))/ \ + $(TARGET_DIR)/etc/init.d/S15watchdog +endef +endif + +# PAM support requires thread support in the toolchain +ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +define BUSYBOX_LINUX_PAM + $(call KCONFIG_ENABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) +endef +BUSYBOX_DEPENDENCIES += linux-pam +else +define BUSYBOX_LINUX_PAM + $(call KCONFIG_DISABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# Telnet support +define BUSYBOX_INSTALL_TELNET_SCRIPT + if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/S50telnet \ + $(TARGET_DIR)/etc/init.d/S50telnet ; \ + fi +endef + +# Add /bin/{a,hu}sh to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define BUSYBOX_INSTALL_ADD_TO_SHELLS + if grep -q CONFIG_ASH=y $(@D)/.config; then \ + grep -qsE '^/bin/ash$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/ash" >> $(TARGET_DIR)/etc/shells; \ + fi + if grep -q CONFIG_HUSH=y $(@D)/.config; then \ + grep -qsE '^/bin/hush$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/hush" >> $(TARGET_DIR)/etc/shells; \ + fi +endef +BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS + +define BUSYBOX_KCONFIG_FIXUP_CMDS + $(BUSYBOX_SET_MMU) + $(BUSYBOX_PREFER_STATIC) + $(BUSYBOX_SET_MDEV) + $(BUSYBOX_SET_CRYPT_SHA) + $(BUSYBOX_LINUX_PAM) + $(BUSYBOX_SET_INIT) + $(BUSYBOX_SET_WATCHDOG) + $(BUSYBOX_SET_SELINUX) + $(BUSYBOX_SET_INDIVIDUAL_BINARIES) +endef + +define BUSYBOX_BUILD_CMDS + $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) +endef + +define BUSYBOX_INSTALL_TARGET_CMDS + # Use the 'noclobber' install rule, to prevent BusyBox from overwriting + # any full-blown versions of apps installed by other packages. + $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install-noclobber + $(BUSYBOX_INSTALL_INITTAB) + $(BUSYBOX_INSTALL_UDHCPC_SCRIPT) + $(BUSYBOX_INSTALL_MDEV_CONF) +endef + +define BUSYBOX_INSTALL_INIT_SYSV + $(BUSYBOX_INSTALL_MDEV_SCRIPT) + $(BUSYBOX_INSTALL_LOGGING_SCRIPT) + $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT) + $(BUSYBOX_INSTALL_TELNET_SCRIPT) + $(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_BUSYBOX)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)),) +$(error No BusyBox configuration file specified, check your BR2_PACKAGE_BUSYBOX_CONFIG setting) +endif +endif + +$(eval $(kconfig-package)) diff --git a/features/buildroot/package/busybox/inittab b/features/buildroot/package/busybox/inittab new file mode 100644 index 00000000..ff1725c7 --- /dev/null +++ b/features/buildroot/package/busybox/inittab @@ -0,0 +1,39 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +::sysinit:/bin/mount -t proc proc /proc +::sysinit:/bin/mount -o remount,rw / +::sysinit:/bin/mkdir -p /dev/pts /dev/shm +::sysinit:/bin/mount -a +::sysinit:/sbin/swapon -a +null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd +null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin +null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout +null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr +::sysinit:/bin/hostname -F /etc/hostname +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Put a getty on the serial port +#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +#::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r diff --git a/features/buildroot/package/busybox/mdev.conf b/features/buildroot/package/busybox/mdev.conf new file mode 100644 index 00000000..eaece1b7 --- /dev/null +++ b/features/buildroot/package/busybox/mdev.conf @@ -0,0 +1,39 @@ +# null may already exist; therefore ownership has to be changed with command +null root:root 666 @chmod 666 $MDEV +zero root:root 666 +full root:root 666 +random root:root 444 +urandom root:root 444 +hwrandom root:root 444 +grsec root:root 660 + +kmem root:root 640 +mem root:root 640 +port root:root 640 +# console may already exist; therefore ownership has to be changed with command +console root:tty 600 @chmod 600 $MDEV +ptmx root:tty 666 +pty.* root:tty 660 + +# Typical devices +tty root:tty 666 +tty[0-9]* root:tty 660 +vcsa*[0-9]* root:tty 660 +ttyS[0-9]* root:root 660 +ttyUSB[0-9]* root:root 660 + +# alsa sound devices +snd/pcm.* root:audio 660 +snd/control.* root:audio 660 +snd/midi.* root:audio 660 +snd/seq root:audio 660 +snd/timer root:audio 660 + +# input stuff +input/event[0-9]+ root:root 640 +input/mice root:root 640 +input/mouse[0-9] root:root 640 +input/ts[0-9] root:root 600 + +# load modules +$MODALIAS=.* root:root 660 @modprobe "$MODALIAS" diff --git a/features/buildroot/package/busybox/udhcpc.script b/features/buildroot/package/busybox/udhcpc.script new file mode 100755 index 00000000..ad110d3a --- /dev/null +++ b/features/buildroot/package/busybox/udhcpc.script @@ -0,0 +1,82 @@ +#!/bin/sh + +# udhcpc script edited by Tim Riker + +[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 + +RESOLV_CONF="/etc/resolv.conf" +[ -e $RESOLV_CONF ] || touch $RESOLV_CONF +[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" +[ -n "$subnet" ] && NETMASK="netmask $subnet" + +case "$1" in + deconfig) + /sbin/ifconfig $interface up + /sbin/ifconfig $interface 0.0.0.0 + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -k $interface + fi + ;; + + leasefail|nak) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -wD $interface --no-chroot + fi + ;; + + renew|bound) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -k $interface + fi + /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + + if [ -n "$router" ] ; then + echo "deleting routers" + while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do + : + done + + for i in $router ; do + route add default gw $i dev $interface + done + fi + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + # prefer rfc3359 domain search list (option 119) if available + if [ -n "$search" ]; then + search_list=$search + elif [ -n "$domain" ]; then + search_list=$domain + fi + + [ -n "$search_list" ] && + echo "search $search_list # $interface" >> $RESOLV_CONF + + for i in $dns ; do + echo adding dns $i + echo "nameserver $i # $interface" >> $RESOLV_CONF + done + ;; +esac + +HOOK_DIR="$0.d" +for hook in "${HOOK_DIR}/"*; do + [ -f "${hook}" -a -x "${hook}" ] || continue + "${hook}" "${@}" +done + +exit 0 diff --git a/features/buildroot/package/bwm-ng/Config.in b/features/buildroot/package/bwm-ng/Config.in new file mode 100644 index 00000000..f93dd935 --- /dev/null +++ b/features/buildroot/package/bwm-ng/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BWM_NG + bool "bwm-ng" + help + Bandwidth Monitor NG is a small and console-based live + network and disk-io bandwidth monitor for Linux, BSD, + Solaris, Mac OS X and others. + + http://www.gropp.org/?id=projects&sub=bwm-ng diff --git a/features/buildroot/package/bwm-ng/bwm-ng.hash b/features/buildroot/package/bwm-ng/bwm-ng.hash new file mode 100644 index 00000000..4c12b0d8 --- /dev/null +++ b/features/buildroot/package/bwm-ng/bwm-ng.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4b34a8ac2eae2d204d6dea8258c5e34b37094259086f8c9169391409a9311fb5 bwm-ng-f54b3fad2c80bfe63f920c9b5e7c1d80389c57ef.tar.gz diff --git a/features/buildroot/package/bwm-ng/bwm-ng.mk b/features/buildroot/package/bwm-ng/bwm-ng.mk new file mode 100644 index 00000000..587ffbea --- /dev/null +++ b/features/buildroot/package/bwm-ng/bwm-ng.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bwm-ng +# +################################################################################ + +BWM_NG_VERSION = f54b3fad2c80bfe63f920c9b5e7c1d80389c57ef +BWM_NG_SITE = $(call github,vgropp,bwm-ng,$(BWM_NG_VERSION)) +BWM_NG_CONF_OPTS = --with-procnetdev --with-diskstats +BWM_NG_LICENSE = GPL-2.0 +BWM_NG_LICENSE_FILES = COPYING +BWM_NG_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_NCURSES),y) +BWM_NG_CONF_OPTS += --with-ncurses +BWM_NG_DEPENDENCIES += ncurses +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/bzip2/0001-build-objects-twice.patch b/features/buildroot/package/bzip2/0001-build-objects-twice.patch new file mode 100644 index 00000000..9bde0f64 --- /dev/null +++ b/features/buildroot/package/bzip2/0001-build-objects-twice.patch @@ -0,0 +1,56 @@ +Build objects twice for shared and static libraries + +The existing Makefile causes problems on MIPS because the same object +files (not compiled with -fPIC) are used in static and shared libraries. +MIPS will refuce to link non-pic objects in shared libraries. +We fix this problems by creating a new rule for the shared library +and build the shared objects as *.sho instead of *.o. +Then, we use these objects to create the shared library. + +Signed-off-by: Markos Chandras + +Index: bzip2-1.0.6/Makefile-libbz2_so +=================================================================== +--- bzip2-1.0.6.orig/Makefile-libbz2_so ++++ bzip2-1.0.6/Makefile-libbz2_so +@@ -25,13 +25,13 @@ SHELL=/bin/sh + CC=gcc + override CFLAGS += -fpic -fPIC -Wall + +-OBJS= blocksort.o \ +- huffman.o \ +- crctable.o \ +- randtable.o \ +- compress.o \ +- decompress.o \ +- bzlib.o ++OBJS= blocksort.sho \ ++ huffman.sho \ ++ crctable.sho \ ++ randtable.sho \ ++ compress.sho \ ++ decompress.sho \ ++ bzlib.sho + + all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) +@@ -45,17 +45,5 @@ install: + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared + +-blocksort.o: blocksort.c +- $(CC) $(CFLAGS) -c blocksort.c +-huffman.o: huffman.c +- $(CC) $(CFLAGS) -c huffman.c +-crctable.o: crctable.c +- $(CC) $(CFLAGS) -c crctable.c +-randtable.o: randtable.c +- $(CC) $(CFLAGS) -c randtable.c +-compress.o: compress.c +- $(CC) $(CFLAGS) -c compress.c +-decompress.o: decompress.c +- $(CC) $(CFLAGS) -c decompress.c +-bzlib.o: bzlib.c +- $(CC) $(CFLAGS) -c bzlib.c ++%.sho: %.c ++ $(CC) $(CFLAGS) -o $@ -c $< diff --git a/features/buildroot/package/bzip2/0002-improve-build-system.patch b/features/buildroot/package/bzip2/0002-improve-build-system.patch new file mode 100644 index 00000000..90099aa2 --- /dev/null +++ b/features/buildroot/package/bzip2/0002-improve-build-system.patch @@ -0,0 +1,84 @@ +Improve bzip2 build system + +This patch makes a number of improvements to the bzip2 build system: + + * Remove the BIGFILE variable that was used to force largefile + support. Now, the user of the Makefile is supposed to pass + -D_FILE_OFFSET_BITS=64 when largefile support is desired. + + * Use override CFLAGS += so that additional CFLAGS can be passed on + the command line. + + * Removed "forced" CFLAGS -O2, -g and -Winline. We don't want them by + default, and want the build system to use its own ones. + + * When creating the symbolic links bzegrep, bzfgrep, bzless and + bzcmp, don't link them to an absolute path, or they'll point to + some path on the build machine. + + * Provide an install target for the shared library, which creates the + appropriate symbolic links. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -20,8 +20,7 @@ + RANLIB=ranlib + LDFLAGS= + +-BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++override CFLAGS += -Wall + + # Where you want it installed when you do 'make install' + PREFIX=/usr/local +@@ -90,14 +89,14 @@ + cp -f libbz2.a $(PREFIX)/lib + chmod a+r $(PREFIX)/lib/libbz2.a + cp -f bzgrep $(PREFIX)/bin/bzgrep +- ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep +- ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep ++ ln -s -f bzgrep $(PREFIX)/bin/bzegrep ++ ln -s -f bzgrep $(PREFIX)/bin/bzfgrep + chmod a+x $(PREFIX)/bin/bzgrep + cp -f bzmore $(PREFIX)/bin/bzmore +- ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless ++ ln -s -f bzmore $(PREFIX)/bin/bzless + chmod a+x $(PREFIX)/bin/bzmore + cp -f bzdiff $(PREFIX)/bin/bzdiff +- ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp ++ ln -s -f bzdiff $(PREFIX)/bin/bzcmp + chmod a+x $(PREFIX)/bin/bzdiff + cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1 + chmod a+r $(PREFIX)/man/man1/bzgrep.1 +Index: b/Makefile-libbz2_so +=================================================================== +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -23,8 +23,7 @@ + + SHELL=/bin/sh + CC=gcc +-BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) ++override CFLAGS += -fpic -fPIC -Wall + + OBJS= blocksort.o \ + huffman.o \ +@@ -37,8 +36,11 @@ + all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) + $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 +- rm -f libbz2.so.1.0 +- ln -s libbz2.so.1.0.6 libbz2.so.1.0 ++ ++install: ++ install -m 0755 -D libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0.6 ++ ln -sf libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so ++ ln -sf libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0 + + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared diff --git a/features/buildroot/package/bzip2/0003-Make-sure-nSelectors-is-not-out-of-range.patch b/features/buildroot/package/bzip2/0003-Make-sure-nSelectors-is-not-out-of-range.patch new file mode 100644 index 00000000..77a500d4 --- /dev/null +++ b/features/buildroot/package/bzip2/0003-Make-sure-nSelectors-is-not-out-of-range.patch @@ -0,0 +1,33 @@ +From 74de1e2e6ffc9d51ef9824db71a8ffee5962cdbc Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Tue, 28 May 2019 19:35:18 +0200 +Subject: [PATCH] Make sure nSelectors is not out of range + +nSelectors is used in a loop from 0 to nSelectors to access selectorMtf +which is + UChar selectorMtf[BZ_MAX_SELECTORS]; +so if nSelectors is bigger than BZ_MAX_SELECTORS it'll do an invalid memory +access + +Fixes out of bounds access discovered while fuzzying karchive + +Signed-off-by: Albert Astals Cid +--- + decompress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/decompress.c b/decompress.c +index ab6a624..f3db91d 100644 +--- a/decompress.c ++++ b/decompress.c +@@ -287,7 +287,7 @@ Int32 BZ2_decompress ( DState* s ) + GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); + if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); + GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); +- if (nSelectors < 1) RETURN(BZ_DATA_ERROR); ++ if (nSelectors < 1 || nSelectors > BZ_MAX_SELECTORS) RETURN(BZ_DATA_ERROR); + for (i = 0; i < nSelectors; i++) { + j = 0; + while (True) { +-- +2.21.0 diff --git a/features/buildroot/package/bzip2/Config.in b/features/buildroot/package/bzip2/Config.in new file mode 100644 index 00000000..ca447bbb --- /dev/null +++ b/features/buildroot/package/bzip2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BZIP2 + bool "bzip2" + help + Freely available, patent free, high-quality data compressor. + It typically compresses files to within 10% to 15% of the best + available techniques, while being around twice as fast at + compression and six times faster at decompression. diff --git a/features/buildroot/package/bzip2/bzip2.hash b/features/buildroot/package/bzip2/bzip2.hash new file mode 100644 index 00000000..ffe94aa4 --- /dev/null +++ b/features/buildroot/package/bzip2/bzip2.hash @@ -0,0 +1,6 @@ +# From http://www.bzip.org/downloads.html +md5 00b516f4704d4a7cb50a1d97e6e8e15b bzip2-1.0.6.tar.gz + +# Locally calculated +sha256 a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd bzip2-1.0.6.tar.gz +sha256 4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204 LICENSE diff --git a/features/buildroot/package/bzip2/bzip2.mk b/features/buildroot/package/bzip2/bzip2.mk new file mode 100644 index 00000000..a3af3229 --- /dev/null +++ b/features/buildroot/package/bzip2/bzip2.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# bzip2 +# +################################################################################ + +BZIP2_VERSION = 1.0.6 +BZIP2_SITE = http://sources.buildroot.net +BZIP2_INSTALL_STAGING = YES +BZIP2_LICENSE = bzip2 license +BZIP2_LICENSE_FILES = LICENSE + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_BUILD_SHARED_CMDS + $(TARGET_MAKE_ENV) \ + $(MAKE) -C $(@D) -f Makefile-libbz2_so $(TARGET_CONFIGURE_OPTS) +endef +endif + +define BZIP2_BUILD_CMDS + $(TARGET_MAKE_ENV) \ + $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover $(TARGET_CONFIGURE_OPTS) + $(BZIP2_BUILD_SHARED_CMDS) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_INSTALL_STAGING_SHARED_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -f Makefile-libbz2_so PREFIX=$(STAGING_DIR)/usr -C $(@D) install +endef +endif + +define BZIP2_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + PREFIX=$(STAGING_DIR)/usr -C $(@D) install + $(BZIP2_INSTALL_STAGING_SHARED_CMDS) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_INSTALL_TARGET_SHARED_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -f Makefile-libbz2_so PREFIX=$(TARGET_DIR)/usr -C $(@D) install +endef +endif + +# make sure busybox doesn't get overwritten by make install +define BZIP2_INSTALL_TARGET_CMDS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,bzip2 bunzip2 bzcat) + $(TARGET_MAKE_ENV) $(MAKE) \ + PREFIX=$(TARGET_DIR)/usr -C $(@D) install + $(BZIP2_INSTALL_TARGET_SHARED_CMDS) +endef + +define HOST_BZIP2_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) -f Makefile-libbz2_so + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover +endef + +define HOST_BZIP2_INSTALL_CMDS + $(HOST_MAKE_ENV) \ + $(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install + $(HOST_MAKE_ENV) \ + $(MAKE) -f Makefile-libbz2_so PREFIX=$(HOST_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch b/features/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch new file mode 100644 index 00000000..8210ed67 --- /dev/null +++ b/features/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch @@ -0,0 +1,17 @@ +Use XC_CHECK_BUILD_FLAGS instead of XC_CHECK_USER_FLAGS. +Otherwise it complains of CPPFLAGS in CFLAGS. + +Signed-off-by: Gustavo Zacarias + +diff -Nura c-ares-1.10.0.orig/m4/xc-cc-check.m4 c-ares-1.10.0/m4/xc-cc-check.m4 +--- c-ares-1.10.0.orig/m4/xc-cc-check.m4 2013-12-26 19:40:46.354195974 -0300 ++++ c-ares-1.10.0/m4/xc-cc-check.m4 2013-12-26 19:41:01.850718535 -0300 +@@ -59,7 +59,7 @@ + + AC_DEFUN([_XC_PROG_CC], [ + AC_REQUIRE([_XC_PROG_CC_PREAMBLE])dnl +- AC_REQUIRE([XC_CHECK_USER_FLAGS])dnl ++ AC_REQUIRE([XC_CHECK_BUILD_FLAGS])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AM_PROG_CC_C_O])dnl diff --git a/features/buildroot/package/c-ares/Config.in b/features/buildroot/package/c-ares/Config.in new file mode 100644 index 00000000..be17b166 --- /dev/null +++ b/features/buildroot/package/c-ares/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_C_ARES + bool "c-ares" + help + C library for asynchronous DNS requests. + + http://c-ares.haxx.se/ diff --git a/features/buildroot/package/c-ares/c-ares.hash b/features/buildroot/package/c-ares/c-ares.hash new file mode 100644 index 00000000..a3599aaa --- /dev/null +++ b/features/buildroot/package/c-ares/c-ares.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 6cdb97871f2930530c97deb7cf5c8fa4be5a0b02c7cea6e7c7667672a39d6852 c-ares-1.15.0.tar.gz + +# Hash for license file +sha256 db4eb63fe09daebdf57d3f79b091bb5ee5070c0d761040e83264e648d307af4c LICENSE.md diff --git a/features/buildroot/package/c-ares/c-ares.mk b/features/buildroot/package/c-ares/c-ares.mk new file mode 100644 index 00000000..f9e440d9 --- /dev/null +++ b/features/buildroot/package/c-ares/c-ares.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# c-ares +# +################################################################################ + +C_ARES_VERSION = 1.15.0 +C_ARES_SITE = http://c-ares.haxx.se/download +C_ARES_INSTALL_STAGING = YES +C_ARES_CONF_OPTS = --with-random=/dev/urandom +# Rebuild configure to avoid XC_CHECK_USER_CFLAGS +C_ARES_AUTORECONF = YES +C_ARES_LICENSE = MIT +C_ARES_LICENSE_FILES = LICENSE.md + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/c-capnproto/Config.in b/features/buildroot/package/c-capnproto/Config.in new file mode 100644 index 00000000..acad5a69 --- /dev/null +++ b/features/buildroot/package/c-capnproto/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_C_CAPNPROTO + bool "c-capnproto" + depends on BR2_USE_MMU # capnproto + depends on BR2_HOST_GCC_AT_LEAST_4_8 # capnproto + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # capnproto + depends on BR2_INSTALL_LIBSTDCPP # capnproto + depends on BR2_TOOLCHAIN_HAS_THREADS # capnproto + depends on BR2_TOOLCHAIN_HAS_ATOMIC # capnproto + select BR2_PACKAGE_CAPNPROTO + help + A C plugin for Cap'n Proto. Generates the code generator + plugin for C. Requires regular Cap'n Proto and only + provides serialization (no RPC). + +comment "c-capnproto needs host and target gcc >= 4.8 w/ C++, threads, atomic" + depends on BR2_USE_MMU + depends on!BR2_HOST_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_ATOMIC diff --git a/features/buildroot/package/c-capnproto/c-capnproto.hash b/features/buildroot/package/c-capnproto/c-capnproto.hash new file mode 100644 index 00000000..75edaebf --- /dev/null +++ b/features/buildroot/package/c-capnproto/c-capnproto.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 88c454f4f4bad87c9b60cd739c7da5605c1085c0e92b317dd72d547bbb804279 c-capnproto-9053ebe6eeb2ae762655b982e27c341cb568366d.tar.gz +sha256 27797e6c7dce96675d79ed250584d157b7a86405db6eb6fba9644e6d96d42c57 COPYING diff --git a/features/buildroot/package/c-capnproto/c-capnproto.mk b/features/buildroot/package/c-capnproto/c-capnproto.mk new file mode 100644 index 00000000..c144a4be --- /dev/null +++ b/features/buildroot/package/c-capnproto/c-capnproto.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# c-capnproto +# +################################################################################ + +C_CAPNPROTO_VERSION = 9053ebe6eeb2ae762655b982e27c341cb568366d +C_CAPNPROTO_SITE = https://github.com/opensourcerouting/c-capnproto.git +C_CAPNPROTO_SITE_METHOD = git +C_CAPNPROTO_GIT_SUBMODULES = YES +C_CAPNPROTO_LICENSE = MIT +C_CAPNPROTO_LICENSE_FILES = COPYING +C_CAPNPROTO_INSTALL_STAGING = YES + +# Fetched from git with no configure script +C_CAPNPROTO_AUTORECONF = YES + +# As a plugin for capnproto's capnpc, requires capnproto. Needs to be on the +# host to generate C code from message definitions. +C_CAPNPROTO_DEPENDENCIES = host-c-capnproto capnproto +HOST_C_CAPNPROTO_DEPENDENCIES = host-capnproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/c-icap-modules/Config.in b/features/buildroot/package/c-icap-modules/Config.in new file mode 100644 index 00000000..616456b4 --- /dev/null +++ b/features/buildroot/package/c-icap-modules/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_C_ICAP_MODULES + bool "c-icap-modules" + depends on BR2_PACKAGE_C_ICAP + help + Additionals modules for c-icap server. + + http://c-icap.sourceforge.net/ diff --git a/features/buildroot/package/c-icap-modules/c-icap-modules.hash b/features/buildroot/package/c-icap-modules/c-icap-modules.hash new file mode 100644 index 00000000..a9fee87e --- /dev/null +++ b/features/buildroot/package/c-icap-modules/c-icap-modules.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/c-icap/files/c-icap-modules/0.4.x/ +md5 1a7eaa7a34ff35c2440cf303f7b45f22 c_icap_modules-0.4.5.tar.gz +sha1 515145e6d29413aff8543937504dc5c419043fd5 c_icap_modules-0.4.5.tar.gz diff --git a/features/buildroot/package/c-icap-modules/c-icap-modules.mk b/features/buildroot/package/c-icap-modules/c-icap-modules.mk new file mode 100644 index 00000000..d7543789 --- /dev/null +++ b/features/buildroot/package/c-icap-modules/c-icap-modules.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# c-icap-modules +# +################################################################################ + +C_ICAP_MODULES_VERSION = 0.4.5 +C_ICAP_MODULES_SOURCE = c_icap_modules-$(C_ICAP_MODULES_VERSION).tar.gz +C_ICAP_MODULES_SITE = http://downloads.sourceforge.net/c-icap +C_ICAP_MODULES_LICENSE = GPL-2.0+ +C_ICAP_MODULES_LICENSE_FILES = COPYING +C_ICAP_MODULES_DEPENDENCIES = c-icap + +C_ICAP_MODULES_CONF_OPTS = \ + --with-c-icap=$(STAGING_DIR)/usr/ \ + --without-clamav + +ifeq ($(BR2_PACKAGE_ZLIB),y) +C_ICAP_MODULES_CONF_OPTS += --with-zlib +C_ICAP_MODULES_DEPENDENCIES += zlib +else +C_ICAP_MODULES_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +C_ICAP_MODULES_CONF_OPTS += --with-bdb +C_ICAP_MODULES_DEPENDENCIES += berkeleydb +else +C_ICAP_MODULES_CONF_OPTS += --without-bdb +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/c-icap/Config.in b/features/buildroot/package/c-icap/Config.in new file mode 100644 index 00000000..8f7963c2 --- /dev/null +++ b/features/buildroot/package/c-icap/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_C_ICAP + bool "c-icap" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + c-icap is an implementation of an ICAP server. It can be + used with HTTP proxies that support the ICAP protocol to + implement content adaptation and filtering services. Most + of the commercial HTTP proxies must support the ICAP + protocol. The open source Squid 3.x proxy server supports + it. + + http://c-icap.sourceforge.net/ + +comment "c-icap needs a toolchain w/ threads and dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/c-icap/S96cicap b/features/buildroot/package/c-icap/S96cicap new file mode 100644 index 00000000..7b95f860 --- /dev/null +++ b/features/buildroot/package/c-icap/S96cicap @@ -0,0 +1,27 @@ +#!/bin/sh + +# (Re)create directories +mkdir -p /var/run/c-icap +mkdir -p /var/log/c-icap + +case "$1" in + start) + printf "Starting c-icap server: " + start-stop-daemon -S -q -b -m -p /var/run/c-icap.pid \ + -x /usr/bin/c-icap -- -N + [ $? == 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping c-icap server: " + start-stop-daemon -K -q -p /var/run/c-icap.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: /etc/init.d/S96cicap {start|stop|restart|reload}" + exit 1 +esac diff --git a/features/buildroot/package/c-icap/c-icap.hash b/features/buildroot/package/c-icap/c-icap.hash new file mode 100644 index 00000000..2b083ef6 --- /dev/null +++ b/features/buildroot/package/c-icap/c-icap.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b138c7d7d9828d54c3307bcfe7b4917911266593832ffc26a60df9a0dfd2511e c_icap-0.4.2.tar.gz diff --git a/features/buildroot/package/c-icap/c-icap.mk b/features/buildroot/package/c-icap/c-icap.mk new file mode 100644 index 00000000..c722098c --- /dev/null +++ b/features/buildroot/package/c-icap/c-icap.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# c-icap +# +################################################################################ + +C_ICAP_VERSION = 0.4.2 +C_ICAP_SOURCE = c_icap-$(C_ICAP_VERSION).tar.gz +C_ICAP_SITE = http://downloads.sourceforge.net/c-icap +C_ICAP_LICENSE = LGPL-2.1+ +C_ICAP_LICENSE_FILES = COPYING +C_ICAP_INSTALL_STAGING = YES +C_ICAP_CONFIG_SCRIPTS = c-icap-config c-icap-libicapapi-config +C_ICAP_CONF_OPTS = \ + --without-perl \ + --enable-large-files \ + --enable-ipv6 +# Pre-seed cache variables for tests done with AC_TRY_RUN that are not +# cross-compile friendly +C_ICAP_CONF_ENV = ac_cv_10031b_ipc_sem=yes ac_cv_fcntl=yes +# c-icap adds '-Wl,-rpath -Wl,/usr/lib' to the link command line. This +# causes the linker to search for libraries that are listed as NEEDED +# in the libicapapi.so ELF header in host libraries, which breaks the +# build. The affected library is libz. Forcing AUTORECONF adds -lz to +# the link command line, and that makes the linker look first in +# sysroot, thus avoiding the build breakage. +C_ICAP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +C_ICAP_CONF_OPTS += --with-bdb +C_ICAP_DEPENDENCIES += berkeleydb +else +C_ICAP_CONF_OPTS += --without-bdb +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +C_ICAP_CONF_OPTS += --with-bzlib +C_ICAP_DEPENDENCIES += bzip2 +else +C_ICAP_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y) +C_ICAP_CONF_OPTS += --with-memcached +C_ICAP_DEPENDENCIES += libmemcached +else +C_ICAP_CONF_OPTS += --without-memcached +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +C_ICAP_CONF_OPTS += --with-ldap +C_ICAP_DEPENDENCIES += openldap +else +C_ICAP_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +C_ICAP_CONF_OPTS += --with-openssl +C_ICAP_DEPENDENCIES += openssl +else +C_ICAP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +C_ICAP_CONF_OPTS += --with-pcre +C_ICAP_DEPENDENCIES += pcre +else +C_ICAP_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +C_ICAP_CONF_OPTS += --with-zlib +C_ICAP_DEPENDENCIES += zlib +else +C_ICAP_CONF_OPTS += --without-zlib +endif + +define C_ICAP_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/c-icap/S96cicap $(TARGET_DIR)/etc/init.d/S96cicap +endef + +# Tweak the installation: +# - Removed unneeded sample configuration files (c-icap.*.default), +# since some real ones are also installed +# - Tweak some paths in the c-icap.conf configuration file +# - Tweak the -config scripts, because the generic +# _CONFIG_SCRIPTS logic doesn't tweak them enough +define C_ICAP_TUNE_INSTALLATION + $(RM) -f $(TARGET_DIR)/etc/c-icap.*.default + $(SED) 's%/usr/etc/%/etc/%' $(TARGET_DIR)/etc/c-icap.conf + $(SED) 's%/usr/var/%/var/%' $(TARGET_DIR)/etc/c-icap.conf + $(SED) 's%INCDIR=.*%INCDIR=$(STAGING_DIR)/usr/include%' \ + $(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config + $(SED) 's%INCDIR2=.*%INCDIR2=$(STAGING_DIR)/usr/include/c_icap%' \ + $(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config + $(SED) 's%-L$$LIBDIR %%' $(STAGING_DIR)/usr/bin/c-icap-libicapapi-config +endef + +C_ICAP_POST_INSTALL_TARGET_HOOKS += C_ICAP_TUNE_INSTALLATION + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/c-periphery/Config.in b/features/buildroot/package/c-periphery/Config.in new file mode 100644 index 00000000..0bfb4b1f --- /dev/null +++ b/features/buildroot/package/c-periphery/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_C_PERIPHERY + bool "c-periphery" + help + c-periphery is a set of C wrapper functions for GPIO, SPI, + I2C, MMIO, and Serial peripheral I/O interface access in + userspace Linux. The c-periphery wrappers simplify and + consolidate the native Linux APIs to these + interfaces. c-periphery is useful in embedded Linux + environments (including BeagleBone, Raspberry Pi, + etc. platforms) for interfacing with external + peripherals. c-periphery is re-entrant, uses static + allocations, has no dependencies outside the standard C + library and Linux, compiles into a static library for easy + integration with other projects, and is MIT licensed. + + https://github.com/vsergeev/c-periphery diff --git a/features/buildroot/package/c-periphery/c-periphery.hash b/features/buildroot/package/c-periphery/c-periphery.hash new file mode 100644 index 00000000..8f3bd8a3 --- /dev/null +++ b/features/buildroot/package/c-periphery/c-periphery.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 50665a4f298b30e4cc8f7dbd38362fd860cc3746803d00325cb04806674e3166 c-periphery-1.1.3.tar.gz +sha256 6b5669a90260126f0600aae98cb10fb5e219269dc9cbd0137f63927b96d5c31d LICENSE diff --git a/features/buildroot/package/c-periphery/c-periphery.mk b/features/buildroot/package/c-periphery/c-periphery.mk new file mode 100644 index 00000000..e62d3e05 --- /dev/null +++ b/features/buildroot/package/c-periphery/c-periphery.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# c-periphery +# +################################################################################ + +C_PERIPHERY_VERSION = 1.1.3 +C_PERIPHERY_SITE = $(call github,vsergeev,c-periphery,v$(C_PERIPHERY_VERSION)) +C_PERIPHERY_INSTALL_STAGING = YES +# only a static library +C_PERIPHERY_INSTALL_TARGET = NO +C_PERIPHERY_LICENSE = MIT +C_PERIPHERY_LICENSE_FILES = LICENSE + +define C_PERIPHERY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# There is no 'install' rule in the Makefile, so we handle things +# manually. +define C_PERIPHERY_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/periphery.a $(STAGING_DIR)/usr/lib/libc-periphery.a + mkdir -p $(STAGING_DIR)/usr/include/c-periphery/ + cp -dpfr $(@D)/src/*.h $(STAGING_DIR)/usr/include/c-periphery/ +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/ca-certificates/Config.in b/features/buildroot/package/ca-certificates/Config.in new file mode 100644 index 00000000..6bb71820 --- /dev/null +++ b/features/buildroot/package/ca-certificates/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CA_CERTIFICATES + bool "CA Certificates" + help + This package includes PEM files of CA certificates to allow + SSL-based applications to check for the authenticity of SSL + connections. + + It includes, among others, certificate authorities used by the + Debian infrastructure and those shipped with Mozilla's + browsers. + + http://anonscm.debian.org/gitweb/?p=collab-maint/ca-certificates.git diff --git a/features/buildroot/package/ca-certificates/ca-certificates.hash b/features/buildroot/package/ca-certificates/ca-certificates.hash new file mode 100644 index 00000000..71a8da47 --- /dev/null +++ b/features/buildroot/package/ca-certificates/ca-certificates.hash @@ -0,0 +1,6 @@ +# hashes from: $(CA_CERTIFICATES_SITE)/ca-certificates_$(CA_CERTIFICATES_VERSION).dsc : +sha1 47d4584eae85fc905e4994766eb3930a8a84e2e1 ca-certificates_20190110.tar.xz +sha256 ee4bf0f4c6398005f5b5ca4e0b87b82837ac5c3b0280a1cb3a63c47555c3a675 ca-certificates_20190110.tar.xz + +# Locally computed +sha256 80fd11117df5543d5cf17bfd951b0ead213f7867d0b09f09c6d5a5eca3ff7422 debian/copyright diff --git a/features/buildroot/package/ca-certificates/ca-certificates.mk b/features/buildroot/package/ca-certificates/ca-certificates.mk new file mode 100644 index 00000000..79c81a41 --- /dev/null +++ b/features/buildroot/package/ca-certificates/ca-certificates.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# ca-certificates +# +################################################################################ + +CA_CERTIFICATES_VERSION = 20190110 +CA_CERTIFICATES_SOURCE = ca-certificates_$(CA_CERTIFICATES_VERSION).tar.xz +CA_CERTIFICATES_SITE = http://snapshot.debian.org/archive/debian/20190513T145054Z/pool/main/c/ca-certificates +CA_CERTIFICATES_DEPENDENCIES = host-openssl +# ca-certificates can be built with either python 2 or python 3 +# but it must be at least python 2.7 +CA_CERTIFICATES_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) +CA_CERTIFICATES_LICENSE = GPL-2.0+ (script), MPL-2.0 (data) +CA_CERTIFICATES_LICENSE_FILES = debian/copyright + +define CA_CERTIFICATES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean all +endef + +define CA_CERTIFICATES_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/ca-certificates + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/ssl/certs + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR) + rm -f $(TARGET_DIR)/usr/sbin/update-ca-certificates + + # Remove any existing certificates under /etc/ssl/certs + rm -f $(TARGET_DIR)/etc/ssl/certs/* + + # Create symlinks to certificates under /etc/ssl/certs + # and generate the bundle + cd $(TARGET_DIR) ;\ + for i in `find usr/share/ca-certificates -name "*.crt" | LC_COLLATE=C sort` ; do \ + ln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\ + cat $$i ;\ + done >$(@D)/ca-certificates.crt + + # Create symlinks to the certificates by their hash values + $(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs + + # Install the certificates bundle + $(INSTALL) -D -m 644 $(@D)/ca-certificates.crt \ + $(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch b/features/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch new file mode 100644 index 00000000..71181a63 --- /dev/null +++ b/features/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch @@ -0,0 +1,108 @@ +From 39ac7268c4350040976005da98daf10edf676d3e Mon Sep 17 00:00:00 2001 +From: Stephan Hoffmann +Date: Mon, 28 Jan 2013 17:32:10 +0100 +Subject: [PATCH] Fix conflicting round() function + +calibrator.c defines a local round() function that conflicts +with the one from the standard library. + +This is fixed by renaming the local function. + +Signed-off-by: Stephan Hoffmann +--- + calibrator.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/calibrator.c b/calibrator.c +index e045dfd..8471c04 100644 +--- a/calibrator.c ++++ b/calibrator.c +@@ -128,7 +128,7 @@ void ErrXit(char *format, ...) { + exit(1); + } + +-lng round(dbl x) ++lng lng_round(dbl x) + { + return (lng)(x + 0.5); + } +@@ -890,16 +890,16 @@ void plotCache(cacheInfo *cache, lng **result, lng MHz, char *fn, FILE *fp, lng + fprintf(fp, ")\n"); + fprintf(fp, "set y2tics"); + for (l = 0, s = " ("; l <= cache->levels; l++, s = ", ") { +- if (!delay) fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay)); +- else fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay)); ++ if (!delay) fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay)); ++ else fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay)); + } + for (y = 1; y <= yh; y *= 10) { + fprintf(fp, "%s'%1.3g' %ld", s, (dbl)(y * MHz) / 1000.0, y); + } + fprintf(fp, ")\n"); + for (l = 0; l <= cache->levels; l++) { +- if (!delay) z = (dbl)round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz; +- else z = (dbl)round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz; ++ if (!delay) z = (dbl)lng_round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz; ++ else z = (dbl)lng_round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz; + fprintf(fp, "set label %ld '(%1.3g) ' at %f,%f right\n", l + 1, z, xl, z); + fprintf(fp, "set arrow %ld from %f,%f to %f,%f nohead lt 0\n", l + 1, xl, z, xh, z); + } +@@ -986,16 +986,16 @@ void plotTLB(TLBinfo *TLB, lng **result, lng MHz, char *fn, FILE *fp, lng delay) + fprintf(fp, "%s'' %ld)\n", s, TLB->mincachelines); + fprintf(fp, "set y2tics"); + for (l = 0, s = " ("; l <= TLB->levels; l++, s = ", ") { +- if (!delay) fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay)); +- else fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay)); ++ if (!delay) fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay)); ++ else fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay)); + } + for (y = 1; y <= yh; y *= 10) { + fprintf(fp, "%s'%1.3g' %ld", s, (dbl)(y * MHz) / 1000.0, y); + } + fprintf(fp, ")\n"); + for (l = 0; l <= TLB->levels; l++) { +- if (!delay) z = (dbl)round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz; +- else z = (dbl)round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz; ++ if (!delay) z = (dbl)lng_round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz; ++ else z = (dbl)lng_round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz; + fprintf(fp, "set label %ld '(%1.3g) ' at %f,%f right\n", l + 1, z, xl, z); + fprintf(fp, "set arrow %ld from %f,%f to %f,%f nohead lt 0\n", l + 1, xl, z, xh, z); + } +@@ -1023,9 +1023,9 @@ void printCPU(cacheInfo *cache, lng MHz, lng delay) + FILE *fp = stdout; + + fprintf(fp, "CPU loop + L1 access: "); +- fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[0]), round(CYperIt(cache->latency1[0]))); ++ fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[0]), lng_round(CYperIt(cache->latency1[0]))); + fprintf(fp, " ( delay: "); +- fprintf(fp, " %6.2f ns = %3ld cy )\n", NSperIt(delay), round(CYperIt(delay))); ++ fprintf(fp, " %6.2f ns = %3ld cy )\n", NSperIt(delay), lng_round(CYperIt(delay))); + fprintf(fp, "\n"); + fflush(fp); + } +@@ -1047,8 +1047,8 @@ void printCache(cacheInfo *cache, lng MHz) + fprintf(fp, " %3ld KB ", cache->size[l] / 1024); + } + fprintf(fp, " %3ld bytes ", cache->linesize[l + 1]); +- fprintf(fp, " %6.2f ns = %3ld cy " , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), round(CYperIt(cache->latency2[l + 1] - cache->latency2[l]))); +- fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), round(CYperIt(cache->latency1[l + 1] - cache->latency1[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy " , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), lng_round(CYperIt(cache->latency2[l + 1] - cache->latency2[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), lng_round(CYperIt(cache->latency1[l + 1] - cache->latency1[l]))); + } + fprintf(fp, "\n"); + fflush(fp); +@@ -1075,9 +1075,9 @@ void printTLB(TLBinfo *TLB, lng MHz) + } else { + fprintf(fp, " %3ld KB ", TLB->pagesize[l + 1] / 1024); + } +- fprintf(fp, " %6.2f ns = %3ld cy ", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy ", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), lng_round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l]))); + /* +- fprintf(fp, " %6.2f ns = %3ld cy" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), lng_round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l]))); + */ + fprintf(fp, "\n"); + } +-- +1.7.0.4 + diff --git a/features/buildroot/package/cache-calibrator/Config.in b/features/buildroot/package/cache-calibrator/Config.in new file mode 100644 index 00000000..db780e9f --- /dev/null +++ b/features/buildroot/package/cache-calibrator/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CACHE_CALIBRATOR + bool "cache-calibrator" + help + Cache calibrator is a small C program that is supposed to + analyze a computers (cache-) memory system and extract + useful information + + http://homepages.cwi.nl/~manegold/Calibrator/ + + It is also recommended as a load generator for realtime + testing in: + + https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO diff --git a/features/buildroot/package/cache-calibrator/cache-calibrator.hash b/features/buildroot/package/cache-calibrator/cache-calibrator.hash new file mode 100644 index 00000000..a4b4b70c --- /dev/null +++ b/features/buildroot/package/cache-calibrator/cache-calibrator.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2018ed8fa733155d44ceb1c0066c5cf8df7771cdf7cfca0a07b8dd9bebd9c221 calibrator.c +sha256 a853663f5b4fb3ad77bf2790ab53146f456b8d9b9ddf83b99fe28c0bdec42514 calibrator.c.license diff --git a/features/buildroot/package/cache-calibrator/cache-calibrator.mk b/features/buildroot/package/cache-calibrator/cache-calibrator.mk new file mode 100644 index 00000000..203732e4 --- /dev/null +++ b/features/buildroot/package/cache-calibrator/cache-calibrator.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# cache-calibrator +# +################################################################################ + +CACHE_CALIBRATOR_SOURCE = calibrator.c +CACHE_CALIBRATOR_SITE = http://homepages.cwi.nl/~manegold/Calibrator/src +CACHE_CALIBRATOR_LICENSE = Cache calibrator license +CACHE_CALIBRATOR_LICENSE_FILES = calibrator.c.license + +define CACHE_CALIBRATOR_EXTRACT_CMDS + cp $(CACHE_CALIBRATOR_DL_DIR)/$(CACHE_CALIBRATOR_SOURCE) $(@D) +endef + +define CACHE_CALIBRATOR_EXTRACT_LICENSE + head -n 38 $(@D)/calibrator.c >$(@D)/calibrator.c.license +endef +CACHE_CALIBRATOR_PRE_PATCH_HOOKS += CACHE_CALIBRATOR_EXTRACT_LICENSE + +define CACHE_CALIBRATOR_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(@D)/calibrator.c -o $(@D)/cache_calibrator -lm +endef + +define CACHE_CALIBRATOR_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cache_calibrator $(TARGET_DIR)/usr/bin/cache_calibrator +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/cairo/0001-fix-nofork-build.patch b/features/buildroot/package/cairo/0001-fix-nofork-build.patch new file mode 100644 index 00000000..702e9910 --- /dev/null +++ b/features/buildroot/package/cairo/0001-fix-nofork-build.patch @@ -0,0 +1,29 @@ +test: fix build when SHOULD_FORK is false + +The code in test/cairo-test-runner.c properly takes into account +platforms that do have fork() support, and uses the SHOULD_FORK define +to know whether fork is available or not. + +However, this SHOULD_FORK macro is used to guard the inclusion of +, which is needed to get the prototype of other functions +(namely readlink and getppid), that are used in portions of this file +not guarded by SHOULD_FORK. + +Signed-off-by: Thomas Petazzoni + +Index: b/test/cairo-test-runner.c +=================================================================== +--- a/test/cairo-test-runner.c ++++ b/test/cairo-test-runner.c +@@ -36,10 +36,10 @@ + #include /* for version information */ + + #define SHOULD_FORK HAVE_FORK && HAVE_WAITPID +-#if SHOULD_FORK + #if HAVE_UNISTD_H + #include + #endif ++#if SHOULD_FORK + #if HAVE_SIGNAL_H + #include + #endif diff --git a/features/buildroot/package/cairo/Config.in b/features/buildroot/package/cairo/Config.in new file mode 100644 index 00000000..0c87a290 --- /dev/null +++ b/features/buildroot/package/cairo/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_CAIRO + bool "cairo" + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + help + Cairo is a 2D graphics library with support for multiple + output devices. Currently supported output targets include + the X Window System, Win32, image buffers, and PostScript, + PDF, and SVG file output. Experimental backends include + OpenGL (through glitz), Quartz, and XCB. + + http://cairographics.org/ + +if BR2_PACKAGE_CAIRO + +config BR2_PACKAGE_CAIRO_PS + bool "postscript support" + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_CAIRO_PDF + +config BR2_PACKAGE_CAIRO_PDF + bool "pdf support" + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_CAIRO_PNG + bool "png support" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_CAIRO_SCRIPT + bool "script support" + select BR2_PACKAGE_CAIRO_PNG + +config BR2_PACKAGE_CAIRO_SVG + bool "svg support" + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_PDF + +config BR2_PACKAGE_CAIRO_TEE + bool "tee support" + +config BR2_PACKAGE_CAIRO_XML + bool "xml support" + select BR2_PACKAGE_CAIRO_PNG + +endif diff --git a/features/buildroot/package/cairo/cairo.hash b/features/buildroot/package/cairo/cairo.hash new file mode 100644 index 00000000..795a2eee --- /dev/null +++ b/features/buildroot/package/cairo/cairo.hash @@ -0,0 +1,9 @@ +# From https://www.cairographics.org/snapshots/cairo-1.15.12.tar.xz.sha1 +sha1 4e64c6a48789edb4c60bc3fa95bd3992cc388b88 cairo-1.15.12.tar.xz +# Calculated based on the hash above +sha256 7623081b94548a47ee6839a7312af34e9322997806948b6eec421a8c6d0594c9 cairo-1.15.12.tar.xz + +# Hash for license files: +sha256 67228a9f7c5f9b67c58f556f1be178f62da4d9e2e6285318d8c74d567255abdf COPYING +sha256 9e9e8608c4cdda51a78cc3a385f4ec9a2e4c96d5ecad74ac8bca5fca3e563b7d COPYING-LGPL-2.1 +sha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f COPYING-MPL-1.1 diff --git a/features/buildroot/package/cairo/cairo.mk b/features/buildroot/package/cairo/cairo.mk new file mode 100644 index 00000000..6dffff4b --- /dev/null +++ b/features/buildroot/package/cairo/cairo.mk @@ -0,0 +1,170 @@ +################################################################################ +# +# cairo +# +################################################################################ + +CAIRO_VERSION = 1.15.12 +CAIRO_SOURCE = cairo-$(CAIRO_VERSION).tar.xz +CAIRO_LICENSE = LGPL-2.1 or MPL-1.1 (library) +CAIRO_LICENSE_FILES = COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1 +CAIRO_SITE = http://cairographics.org/snapshots +CAIRO_INSTALL_STAGING = YES + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +CAIRO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +CAIRO_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -DCAIRO_NO_MUTEX=1" +endif + +# cairo can use C++11 atomics when available, so we need to link with +# libatomic for the architectures who need libatomic. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CAIRO_CONF_ENV += LIBS="-latomic" +endif + +CAIRO_CONF_OPTS = \ + --enable-trace=no \ + --enable-interpreter=no + +CAIRO_DEPENDENCIES = host-pkgconf fontconfig pixman + +# Just the bare minimum to make other host-* packages happy +HOST_CAIRO_CONF_OPTS = \ + --enable-trace=no \ + --enable-interpreter=no \ + --disable-directfb \ + --enable-ft \ + --disable-gobject \ + --disable-glesv2 \ + --disable-vg \ + --disable-xlib \ + --disable-xcb \ + --without-x \ + --disable-xlib-xrender \ + --disable-ps \ + --disable-pdf \ + --enable-png \ + --disable-script \ + --disable-svg \ + --disable-tee \ + --disable-xml +HOST_CAIRO_DEPENDENCIES = \ + host-freetype \ + host-fontconfig \ + host-libpng \ + host-pixman \ + host-pkgconf + +# DirectFB svg support rely on Cairo and Cairo DirectFB support depends on +# DirectFB. Break circular dependency by disabling DirectFB support in Cairo +# (which is experimental) +ifeq ($(BR2_PACKAGE_DIRECTFB)x$(BR2_PACKAGE_DIRECTFB_SVG),yx) +CAIRO_CONF_OPTS += --enable-directfb +CAIRO_DEPENDENCIES += directfb +else +CAIRO_CONF_OPTS += --disable-directfb +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +CAIRO_CONF_OPTS += --enable-ft +CAIRO_DEPENDENCIES += freetype +else +CAIRO_CONF_OPTS += --disable-ft +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +CAIRO_CONF_OPTS += --enable-gobject +CAIRO_DEPENDENCIES += libglib2 +else +CAIRO_CONF_OPTS += --disable-gobject +endif + +# Can use GL or GLESv2 but not both +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +CAIRO_CONF_OPTS += --enable-gl --disable-glesv2 +CAIRO_DEPENDENCIES += libgl +else +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +CAIRO_CONF_OPTS += --disable-gl --enable-glesv2 +CAIRO_DEPENDENCIES += libgles +else +CAIRO_CONF_OPTS += --disable-gl --disable-glesv2 +endif +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y) +CAIRO_CONF_OPTS += --enable-vg +CAIRO_DEPENDENCIES += libopenvg +else +CAIRO_CONF_OPTS += --disable-vg +endif + +ifeq ($(BR2_PACKAGE_LZO),y) +CAIRO_DEPENDENCIES += lzo +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +CAIRO_CONF_OPTS += --enable-xlib --enable-xcb --with-x +CAIRO_DEPENDENCIES += xlib_libX11 xlib_libXext +else +CAIRO_CONF_OPTS += --disable-xlib --disable-xcb --without-x +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +CAIRO_CONF_OPTS += --enable-xlib-xrender +CAIRO_DEPENDENCIES += xlib_libXrender +else +CAIRO_CONF_OPTS += --disable-xlib-xrender +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PS),y) +CAIRO_CONF_OPTS += --enable-ps +CAIRO_DEPENDENCIES += zlib +else +CAIRO_CONF_OPTS += --disable-ps +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PDF),y) +CAIRO_CONF_OPTS += --enable-pdf +CAIRO_DEPENDENCIES += zlib +else +CAIRO_CONF_OPTS += --disable-pdf +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PNG),y) +CAIRO_CONF_OPTS += --enable-png +CAIRO_DEPENDENCIES += libpng +else +CAIRO_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_CAIRO_SCRIPT),y) +CAIRO_CONF_OPTS += --enable-script +else +CAIRO_CONF_OPTS += --disable-script +endif + +ifeq ($(BR2_PACKAGE_CAIRO_SVG),y) +CAIRO_CONF_OPTS += --enable-svg +else +CAIRO_CONF_OPTS += --disable-svg +endif + +ifeq ($(BR2_PACKAGE_CAIRO_TEE),y) +CAIRO_CONF_OPTS += --enable-tee +else +CAIRO_CONF_OPTS += --disable-tee +endif + +ifeq ($(BR2_PACKAGE_CAIRO_XML),y) +CAIRO_CONF_OPTS += --enable-xml +else +CAIRO_CONF_OPTS += --disable-xml +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/cairomm/Config.in b/features/buildroot/package/cairomm/Config.in new file mode 100644 index 00000000..840549b4 --- /dev/null +++ b/features/buildroot/package/cairomm/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CAIROMM + bool "cairomm" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC + help + The cairomm package is a set of C++ bindings for Cairo. + + http://www.gtkmm.org/ + +comment "cairomm needs a toolchain w/ C++, wchar, threads, gcc >= 4.8" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/features/buildroot/package/cairomm/cairomm.hash b/features/buildroot/package/cairomm/cairomm.hash new file mode 100644 index 00000000..bebd474b --- /dev/null +++ b/features/buildroot/package/cairomm/cairomm.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/cairomm/1.12/cairomm-1.12.0.sha256sum +sha256 a54ada8394a86182525c0762e6f50db6b9212a2109280d13ec6a0b29bfd1afe6 cairomm-1.12.0.tar.xz diff --git a/features/buildroot/package/cairomm/cairomm.mk b/features/buildroot/package/cairomm/cairomm.mk new file mode 100644 index 00000000..07aae971 --- /dev/null +++ b/features/buildroot/package/cairomm/cairomm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# cairomm +# +################################################################################ + +CAIROMM_VERSION_MAJOR = 1.12 +CAIROMM_VERSION = $(CAIROMM_VERSION_MAJOR).0 +CAIROMM_LICENSE = LGPL-2.0+ +CAIROMM_LICENSE_FILES = COPYING +CAIROMM_SOURCE = cairomm-$(CAIROMM_VERSION).tar.xz +CAIROMM_SITE = http://ftp.gnome.org/pub/gnome/sources/cairomm/$(CAIROMM_VERSION_MAJOR) +CAIROMM_INSTALL_STAGING = YES +CAIROMM_DEPENDENCIES = cairo libglib2 libsigc host-pkgconf + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch b/features/buildroot/package/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch new file mode 100644 index 00000000..3cde5b42 --- /dev/null +++ b/features/buildroot/package/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch @@ -0,0 +1,109 @@ +From e9590b1ca75d360eaf3211bebd86058214d48064 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 14 Jul 2019 21:50:43 +0200 +Subject: [PATCH] fix include to find SIOCGSTAMP with latest kernel + +In linux kernel commit 0768e17073dc527ccd18ed5f96ce85f9985e9115 +the asm-generic/sockios.h header no longer defines SIOCGSTAMP. +Instead it provides only SIOCGSTAMP_OLD. + +The linux/sockios.h header now defines SIOCGSTAMP using either +SIOCGSTAMP_OLD or SIOCGSTAMP_NEW as appropriate. This linux only +header file is not pulled so we get a build failure. + +canlogserver.c: In function 'main': +canlogserver.c:404:21: error: 'SIOCGSTAMP' undeclared (first use in this function); did you mean 'SIOCGRARP'? + if (ioctl(s[i], SIOCGSTAMP, &tv) < 0) + ^~~~~~~~~~ + SIOCGRARP +canlogserver.c:404:21: note: each undeclared identifier is reported only once for each function it appears in + +Fixes: + - http://autobuild.buildroot.org/results/363de7d9bf433be8bc47ba4ee52ae0bb80fa9021 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/linux-can/can-utils/pull/147] +--- + canlogserver.c | 1 + + cansniffer.c | 1 + + isotpdump.c | 1 + + isotpperf.c | 1 + + isotpsniffer.c | 1 + + slcanpty.c | 1 + + 6 files changed, 6 insertions(+) + +diff --git a/canlogserver.c b/canlogserver.c +index f9ae159..4429ccd 100644 +--- a/canlogserver.c ++++ b/canlogserver.c +@@ -62,6 +62,7 @@ + + #include + #include ++#include + #include + #include + +diff --git a/cansniffer.c b/cansniffer.c +index b710058..0ff29b4 100644 +--- a/cansniffer.c ++++ b/cansniffer.c +@@ -62,6 +62,7 @@ + + #include + #include ++#include + + #include "terminal.h" + +diff --git a/isotpdump.c b/isotpdump.c +index 1ab9416..97baeca 100644 +--- a/isotpdump.c ++++ b/isotpdump.c +@@ -57,6 +57,7 @@ + + #include + #include ++#include + #include "terminal.h" + + #define NO_CAN_ID 0xFFFFFFFFU +diff --git a/isotpperf.c b/isotpperf.c +index 6ee6ede..5ad302a 100644 +--- a/isotpperf.c ++++ b/isotpperf.c +@@ -57,6 +57,7 @@ + + #include + #include ++#include + + #define NO_CAN_ID 0xFFFFFFFFU + #define PERCENTRES 2 /* resolution in percent for bargraph */ +diff --git a/isotpsniffer.c b/isotpsniffer.c +index 6c19c8b..5d61872 100644 +--- a/isotpsniffer.c ++++ b/isotpsniffer.c +@@ -56,6 +56,7 @@ + + #include + #include ++#include + #include "terminal.h" + + #define NO_CAN_ID 0xFFFFFFFFU +diff --git a/slcanpty.c b/slcanpty.c +index e90b32a..5fdfa55 100644 +--- a/slcanpty.c ++++ b/slcanpty.c +@@ -37,6 +37,7 @@ + + #include + #include ++#include + + /* maximum rx buffer len: extended CAN frame with timestamp */ + #define SLC_MTU (sizeof("T1111222281122334455667788EA5F\r")+1) +-- +2.20.1 + diff --git a/features/buildroot/package/can-utils/Config.in b/features/buildroot/package/can-utils/Config.in new file mode 100644 index 00000000..da563788 --- /dev/null +++ b/features/buildroot/package/can-utils/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CAN_UTILS + bool "can-utils" + depends on BR2_USE_MMU # fork() + depends on !BR2_TOOLCHAIN_USES_MUSL # error() + help + SocketCAN is a set of open source CAN drivers and a + networking stack. + This package provides various tools for this stack. + + https://github.com/linux-can/can-utils + +comment "can-utils needs a glibc or uClibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU diff --git a/features/buildroot/package/can-utils/can-utils.hash b/features/buildroot/package/can-utils/can-utils.hash new file mode 100644 index 00000000..403c5978 --- /dev/null +++ b/features/buildroot/package/can-utils/can-utils.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 370ad4b19447c29099f7300548f1a3362d6e123c4a6a827dbbd3110bc2c26839 can-utils-2018.02.0.tar.gz +sha256 c258939ebb09c3857f5fc7704a449e5077cc881090c87b38f9a81332b96fa075 Makefile diff --git a/features/buildroot/package/can-utils/can-utils.mk b/features/buildroot/package/can-utils/can-utils.mk new file mode 100644 index 00000000..7e919a3e --- /dev/null +++ b/features/buildroot/package/can-utils/can-utils.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# can-utils +# +################################################################################ + +CAN_UTILS_VERSION = 2018.02.0 +CAN_UTILS_SITE = $(call github,linux-can,can-utils,v$(CAN_UTILS_VERSION)) +CAN_UTILS_LICENSE = BSD-3-Clause or GPL-2.0, GPL-2.0+ +CAN_UTILS_LICENSE_FILES = Makefile +CAN_UTILS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch b/features/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch new file mode 100644 index 00000000..23f3d899 --- /dev/null +++ b/features/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch @@ -0,0 +1,74 @@ +From s.martin49@gmail.com Sun Sep 28 14:59:53 2014 +Content-Type: text/plain; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [PATCH] Install pkgconfig module for canfestival +X-Mercurial-Node: c408fdc77aa18fcda81db4f0d038e8a69ba84bb2 +X-Mercurial-Series-Index: 1 +X-Mercurial-Series-Total: 1 +Message-Id: +X-Mercurial-Series-Id: +User-Agent: Mercurial-patchbomb/3.1.1 +Date: Sun, 28 Sep 2014 14:59:53 +0200 +From: Samuel Martin +To: canfestival-devel@lists.sourceforge.net +Cc: Samuel Martin + +# HG changeset patch +# User "Samuel Martin" +# Date 1411906817 -7200 +# Sun Sep 28 14:20:17 2014 +0200 +# Node ID c408fdc77aa18fcda81db4f0d038e8a69ba84bb2 +# Parent 7740ac6fdedc23e1ed6908d3d7db54833c88572b +Install pkgconfig module for canfestival. + +Signed-off-by: Samuel Martin +Cc: Cluadio Laurita + +diff -r 7740ac6fdedc -r c408fdc77aa1 canfestival.pc.in +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/canfestival.pc.in Sun Sep 28 14:20:17 2014 +0200 +@@ -0,0 +1,12 @@ ++PREFIX = SUB_PREFIX ++TARGET = SUB_TARGET ++ ++prefix=${PREFIX} ++libdir=${prefix}/lib ++includedir=${prefix}/include/canfestival ++ ++Name: Canfestival ++Description: Canfestival CANOpen library ++Version: 1 ++Libs: -L${libdir} -lcanfestival -lcanfestival_${TARGET} -lrt -ldl -lpthread ++Cflags: -I${includedir} +diff -r 7740ac6fdedc -r c408fdc77aa1 configure +--- a/configure Thu Jun 12 14:07:16 2014 +0200 ++++ b/configure Sun Sep 28 14:20:17 2014 +0200 +@@ -813,6 +813,10 @@ + MAKEFILES=$MAKEFILES\ drivers/$SUB_TARGET/Makefile.in + fi + ++if [ "$SUB_TARGET" = "unix" ]; then ++ MAKEFILES=$MAKEFILES\ canfestival.pc.in ++fi ++ + if [ "$SUB_TARGET" = "unix" -a "$SUB_TIMERS_DRIVER" = "kernel" ]; then + MAKEFILES=$MAKEFILES\ + \ examples/kerneltest/Makefile.in\ +diff -r 7740ac6fdedc -r c408fdc77aa1 src/Makefile.in +--- a/src/Makefile.in Thu Jun 12 14:07:16 2014 +0200 ++++ b/src/Makefile.in Sun Sep 28 14:20:17 2014 +0200 +@@ -132,9 +132,10 @@ + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< + + install: libcanfestival.a +- mkdir -p $(DESTDIR)$(PREFIX)/lib/ ++ mkdir -p $(DESTDIR)$(PREFIX)/lib/pkgconfig + mkdir -p $(DESTDIR)$(PREFIX)/include/canfestival + cp libcanfestival.a $(DESTDIR)$(PREFIX)/lib/ ++ cp ../canfestival.pc $(DESTDIR)$(PREFIX)/lib/pkgconfig/ + cp ../include/*.h $(DESTDIR)$(PREFIX)/include/canfestival + + uninstall: + + diff --git a/features/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch b/features/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch new file mode 100644 index 00000000..bb603165 --- /dev/null +++ b/features/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch @@ -0,0 +1,176 @@ +From s.martin49@gmail.com Fri Oct 10 23:43:32 2014 +Content-Type: text/plain; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [PATCH] allow to set python interpreter +X-Mercurial-Node: 4805f636c2317d989a5f704ba691369f41be6595 +X-Mercurial-Series-Index: 1 +X-Mercurial-Series-Total: 1 +Message-Id: <4805f636c2317d989a5f.1412977412@bobook> +X-Mercurial-Series-Id: <4805f636c2317d989a5f.1412977412@bobook> +User-Agent: Mercurial-patchbomb/3.1.2 +Date: Fri, 10 Oct 2014 23:43:32 +0200 +From: Samuel Martin +To: canfestival-devel@lists.sourceforge.net +Cc: Samuel Martin + +# HG changeset patch +# User "Samuel Martin" +# Date 1412977082 -7200 +# Fri Oct 10 23:38:02 2014 +0200 +# Node ID 4805f636c2317d989a5f704ba691369f41be6595 +# Parent c408fdc77aa18fcda81db4f0d038e8a69ba84bb2 +allow to set python interpreter + +Canfestival python modules and scripts are not python3 compliant. + +Allow to pass the python interperter to be used to make. + +Signed-off-by: Samuel Martin + +diff --git a/Makefile.in b/Makefile.in +--- a/Makefile.in ++++ b/Makefile.in +@@ -21,6 +21,9 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + ++PYTHON ?= python ++export PYTHON ++ + all: objdictedit canfestival examples + + examples: canfestival driver +diff --git a/doc/manual/en/manual.tex b/doc/manual/en/manual.tex +--- a/doc/manual/en/manual.tex ++++ b/doc/manual/en/manual.tex +@@ -1134,6 +1134,7 @@ + python objdictedit.py [od files...] + \end{verbatim} + ++Note that Gnosis modules only run with python2 as interpreter. + + \subsubsection{Installation and usage on Windows} + +diff --git a/examples/CANOpenShell/Makefile.in b/examples/CANOpenShell/Makefile.in +--- a/examples/CANOpenShell/Makefile.in ++++ b/examples/CANOpenShell/Makefile.in +@@ -69,11 +69,11 @@ + + CANOpenShellMasterOD.c: CANOpenShellMasterOD.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py CANOpenShellMasterOD.od CANOpenShellMasterOD.c ++ $(PYTHON) ../../objdictgen/objdictgen.py CANOpenShellMasterOD.od CANOpenShellMasterOD.c + + CANOpenShellSlaveOD.c: CANOpenShellSlaveOD.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py CANOpenShellSlaveOD.od CANOpenShellSlaveOD.c ++ $(PYTHON) ../../objdictgen/objdictgen.py CANOpenShellSlaveOD.od CANOpenShellSlaveOD.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/DS401_Master/Makefile.in b/examples/DS401_Master/Makefile.in +--- a/examples/DS401_Master/Makefile.in ++++ b/examples/DS401_Master/Makefile.in +@@ -53,7 +53,7 @@ + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/DS401_Slave_Gui/Makefile.in b/examples/DS401_Slave_Gui/Makefile.in +--- a/examples/DS401_Slave_Gui/Makefile.in ++++ b/examples/DS401_Slave_Gui/Makefile.in +@@ -59,7 +59,7 @@ + + ObjDict.c: ObjDict.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py ObjDict.od ObjDict.c ++ $(PYTHON) ../../objdictgen/objdictgen.py ObjDict.od ObjDict.c + + .cpp.o: + $(CXX) -c $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) `wx-config --cxxflags` $< -o $@ +diff --git a/examples/SillySlave/Makefile.in b/examples/SillySlave/Makefile.in +--- a/examples/SillySlave/Makefile.in ++++ b/examples/SillySlave/Makefile.in +@@ -53,7 +53,7 @@ + + SillySlave.c: SillySlave.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py SillySlave.od SillySlave.c ++ $(PYTHON) ../../objdictgen/objdictgen.py SillySlave.od SillySlave.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/TestMasterMicroMod/Makefile.in b/examples/TestMasterMicroMod/Makefile.in +--- a/examples/TestMasterMicroMod/Makefile.in ++++ b/examples/TestMasterMicroMod/Makefile.in +@@ -61,7 +61,7 @@ + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/TestMasterSlave/Makefile.in b/examples/TestMasterSlave/Makefile.in +--- a/examples/TestMasterSlave/Makefile.in ++++ b/examples/TestMasterSlave/Makefile.in +@@ -69,11 +69,11 @@ + + TestSlave.c: TestSlave.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/TestMasterSlaveLSS/Makefile.in b/examples/TestMasterSlaveLSS/Makefile.in +--- a/examples/TestMasterSlaveLSS/Makefile.in ++++ b/examples/TestMasterSlaveLSS/Makefile.in +@@ -64,15 +64,15 @@ + + TestSlaveA.c: TestSlaveA.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlaveA.od TestSlaveA.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlaveA.od TestSlaveA.c + + TestSlaveB.c: TestSlaveB.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlaveB.od TestSlaveB.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlaveB.od TestSlaveB.c + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/kerneltest/Makefile.in b/examples/kerneltest/Makefile.in +--- a/examples/kerneltest/Makefile.in ++++ b/examples/kerneltest/Makefile.in +@@ -79,10 +79,10 @@ + + TestSlave.c: TestSlave.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + #endif + + diff --git a/features/buildroot/package/canfestival/Config.in b/features/buildroot/package/canfestival/Config.in new file mode 100644 index 00000000..8300e265 --- /dev/null +++ b/features/buildroot/package/canfestival/Config.in @@ -0,0 +1,90 @@ +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/features/buildroot/package/canfestival/canfestival.hash b/features/buildroot/package/canfestival/canfestival.hash new file mode 100644 index 00000000..dc32bd9a --- /dev/null +++ b/features/buildroot/package/canfestival/canfestival.hash @@ -0,0 +1,3 @@ +# License files, locally calculated +sha256 b5c45f160093a6c2fb7bd0078f50c62f4b4089b6206b0e90b0f122b40a2fe110 COPYING +sha256 d4594b82f4d50840df6a7e9d14132a8c0a3cc05d0ac46d15310a264a1f75447e LICENCE diff --git a/features/buildroot/package/canfestival/canfestival.mk b/features/buildroot/package/canfestival/canfestival.mk new file mode 100644 index 00000000..760f14ae --- /dev/null +++ b/features/buildroot/package/canfestival/canfestival.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# 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/features/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch b/features/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch new file mode 100644 index 00000000..1e4ad003 --- /dev/null +++ b/features/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch @@ -0,0 +1,29 @@ +From d41f5ec6bb66654558757c3ef9cd2a158ee06ccc Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Wed, 15 Feb 2017 09:29:29 +0100 +Subject: [PATCH] Add missing include + +This header defines EOF macro. Some toolchains cannot +find this macro, if is missing. So include it +explicitly. + +Signed-off-by: Yegor Yefremov +--- + sctpthread.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sctpthread.cpp b/sctpthread.cpp +index 6c83fed..d83b472 100644 +--- a/sctpthread.cpp ++++ b/sctpthread.cpp +@@ -19,6 +19,7 @@ + */ + + #include ++#include + #include + + #include +-- +2.1.4 + diff --git a/features/buildroot/package/cannelloni/Config.in b/features/buildroot/package/cannelloni/Config.in new file mode 100644 index 00000000..e137e60c --- /dev/null +++ b/features/buildroot/package/cannelloni/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CANNELLONI + bool "cannelloni" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # lksctp-tools + depends on BR2_TOOLCHAIN_HAS_THREADS # lksctp-tools + depends on !BR2_STATIC_LIBS # lksctp-tools + help + A SocketCAN over Ethernet tunnel. The tunnel supports both + UDP and SCTP protocols. + + https://github.com/mguentner/cannelloni + +comment "cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/features/buildroot/package/cannelloni/cannelloni.hash b/features/buildroot/package/cannelloni/cannelloni.hash new file mode 100644 index 00000000..c14dceb7 --- /dev/null +++ b/features/buildroot/package/cannelloni/cannelloni.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 fe5abb1c9e523049c48dd906603bc762cc55ccd20c16dbec7dc64163b9eefccf cannelloni-20160414.tar.gz diff --git a/features/buildroot/package/cannelloni/cannelloni.mk b/features/buildroot/package/cannelloni/cannelloni.mk new file mode 100644 index 00000000..cc99c54a --- /dev/null +++ b/features/buildroot/package/cannelloni/cannelloni.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# cannelloni +# +################################################################################ + +CANNELLONI_VERSION = 20160414 +CANNELLONI_SITE = $(call github,mguentner,cannelloni,$(CANNELLONI_VERSION)) +CANNELLONI_LICENSE = GPL-2.0 +CANNELLONI_LICENSE_FILES = gpl-2.0.txt + +ifeq ($(BR2_PACKAGE_LKSCTP_TOOLS),y) +CANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=ON +CANNELLONI_DEPENDENCIES += lksctp-tools +else +CANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/cantarell/Config.in b/features/buildroot/package/cantarell/Config.in new file mode 100644 index 00000000..78af96d5 --- /dev/null +++ b/features/buildroot/package/cantarell/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CANTARELL + bool "cantarell" + help + The Cantarell font family is a contemporary Humanist + sans serif designed for on-screen reading. + + https://wiki.gnome.org/Projects/CantarellFonts diff --git a/features/buildroot/package/cantarell/cantarell.hash b/features/buildroot/package/cantarell/cantarell.hash new file mode 100644 index 00000000..330e7869 --- /dev/null +++ b/features/buildroot/package/cantarell/cantarell.hash @@ -0,0 +1,2 @@ +# From http://ftp.acc.umu.se/pub/gnome/sources/cantarell-fonts/0.0/cantarell-fonts-0.0.25.sha256sum +sha256 14a228aa0b516dfc367b434a850f955a00c57fc549cbb05348e2b150196a737f cantarell-fonts-0.0.25.tar.xz diff --git a/features/buildroot/package/cantarell/cantarell.mk b/features/buildroot/package/cantarell/cantarell.mk new file mode 100644 index 00000000..2769b35c --- /dev/null +++ b/features/buildroot/package/cantarell/cantarell.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cantarell +# +################################################################################ + +CANTARELL_VERSION_MAJOR = 0.0 +CANTARELL_VERSION = $(CANTARELL_VERSION_MAJOR).25 +CANTARELL_SITE = http://ftp.gnome.org/pub/gnome/sources/cantarell-fonts/$(CANTARELL_VERSION_MAJOR) +CANTARELL_SOURCE = cantarell-fonts-$(CANTARELL_VERSION).tar.xz +CANTARELL_DEPENDENCIES = host-pkgconf +CANTARELL_LICENSE = OFL-1.1 +CANTARELL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/capnproto/0001-Do-not-use-execinfo-h-with-uclibc.patch b/features/buildroot/package/capnproto/0001-Do-not-use-execinfo-h-with-uclibc.patch new file mode 100644 index 00000000..6bb7702a --- /dev/null +++ b/features/buildroot/package/capnproto/0001-Do-not-use-execinfo-h-with-uclibc.patch @@ -0,0 +1,30 @@ +From e651ac5febc59e3e2b5d3365ededbe5362756da2 Mon Sep 17 00:00:00 2001 +From: Koen Martens +Date: Wed, 12 Jul 2017 18:49:32 +0200 +Subject: [PATCH] Do not use execinfo.h with uclibc (#511) + +Upstream commit: https://github.com/capnproto/capnproto/commit/e651ac5febc59e3e2b5d3365ededbe5362756da2 + +Signed-off-by: Koen Martens +Signed-off-by: Joel Carlson + +--- + c++/src/kj/exception.c++ | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/c++/src/kj/exception.c++ b/c++/src/kj/exception.c++ +index 218f1db..339601a 100644 +--- a/c++/src/kj/exception.c++ ++++ b/c++/src/kj/exception.c++ +@@ -33,7 +33,7 @@ + #endif + #include "io.h" + +-#if (__linux__ && __GLIBC__) || __APPLE__ ++#if (__linux__ && __GLIBC__ && !__UCLIBC__) || __APPLE__ + #define KJ_HAS_BACKTRACE 1 + #include + #endif +-- +2.7.4 + diff --git a/features/buildroot/package/capnproto/Config.in b/features/buildroot/package/capnproto/Config.in new file mode 100644 index 00000000..a979a334 --- /dev/null +++ b/features/buildroot/package/capnproto/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_CAPNPROTO + bool "capnproto" + depends on BR2_USE_MMU + depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + help + Cap'n Proto is an insanely fast data interchange format + and capability-based RPC system. Think JSON, except + binary. Or think Protocol Buffers, except faster. In + fact, in benchmarks, Cap'n Proto is INFINITY TIMES + faster than Protocol Buffers. + + https://capnproto.org/index.html + +comment "capnproto needs host and target gcc >= 4.8 w/ C++, threads, atomic" + depends on BR2_USE_MMU + depends on !BR2_HOST_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_ATOMIC diff --git a/features/buildroot/package/capnproto/capnproto.hash b/features/buildroot/package/capnproto/capnproto.hash new file mode 100644 index 00000000..bc6a2768 --- /dev/null +++ b/features/buildroot/package/capnproto/capnproto.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 85210424c09693d8fe158c1970a2bca37af3a0424f02b263f566a1b8a5451a2d capnproto-0.6.1.tar.gz +sha256 16194222e9412c3aa14d2287953f7fc89a1dcbcdd266d1534ba35060d4cde5b6 LICENSE diff --git a/features/buildroot/package/capnproto/capnproto.mk b/features/buildroot/package/capnproto/capnproto.mk new file mode 100644 index 00000000..3c7965d6 --- /dev/null +++ b/features/buildroot/package/capnproto/capnproto.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# capnproto +# +################################################################################ + +CAPNPROTO_VERSION = 0.6.1 +CAPNPROTO_SITE = $(call github,capnproto,capnproto,v$(CAPNPROTO_VERSION)) +CAPNPROTO_LICENSE = MIT +CAPNPROTO_LICENSE_FILES = LICENSE +CAPNPROTO_INSTALL_STAGING = YES +# Fetched from Github with no configure script +CAPNPROTO_AUTORECONF = YES +CAPNPROTO_CONF_OPTS = --with-external-capnp +# Needs the capnproto compiler on the host to generate C++ code from message +# definitions +CAPNPROTO_DEPENDENCIES = host-autoconf host-capnproto +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CAPNPROTO_CONF_ENV += LIBS=-latomic +endif +# The actual source to be compiled is within a 'c++' subdirectory +CAPNPROTO_SUBDIR = c++ + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/cargo-bin/cargo-bin.hash b/features/buildroot/package/cargo-bin/cargo-bin.hash new file mode 100644 index 00000000..0e9e9c5c --- /dev/null +++ b/features/buildroot/package/cargo-bin/cargo-bin.hash @@ -0,0 +1,13 @@ +# From https://static.rust-lang.org/dist/cargo-0.33.0-i686-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/cargo-0.33.0-i686-unknown-linux-gnu.tar.xz.asc +sha256 13acdb3c9f2505805ceed8a696f5f62ab8cd73e443cd43d6edd588aad88e1c32 cargo-0.33.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/cargo-0.33.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/cargo-0.33.0-powerpc64le-unknown-linux-gnu.tar.xz.asc +sha256 6628db22370f397676195555d768f0449a60f0a694bcac24611f4cd1cfc97cdc cargo-0.33.0-powerpc64le-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/cargo-0.33.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/cargo-0.33.0-x86_64-unknown-linux-gnu.tar.xz.asc +sha256 c2c31db68c4dcb50ad856a19e6f11489a0d4df1212f31bd068dfbb73c5425761 cargo-0.33.0-x86_64-unknown-linux-gnu.tar.xz +# Locally generated +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT +sha256 8bd89f9222dc80292f4107347103b693ac66f3a083371f0629ccf42338abe880 LICENSE-THIRD-PARTY diff --git a/features/buildroot/package/cargo-bin/cargo-bin.mk b/features/buildroot/package/cargo-bin/cargo-bin.mk new file mode 100644 index 00000000..3614f7a5 --- /dev/null +++ b/features/buildroot/package/cargo-bin/cargo-bin.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# cargo-bin +# +################################################################################ + +CARGO_BIN_VERSION = 0.33.0 +CARGO_BIN_SITE = https://static.rust-lang.org/dist +CARGO_BIN_SOURCE = cargo-$(CARGO_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz +CARGO_BIN_LICENSE = Apache-2.0 or MIT +CARGO_BIN_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/cargo/Config.in.host b/features/buildroot/package/cargo/Config.in.host new file mode 100644 index 00000000..c33c6851 --- /dev/null +++ b/features/buildroot/package/cargo/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_CARGO + bool "host cargo" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + help + Cargo is the package manager for the Rust programming + language. + + https://crates.io/ diff --git a/features/buildroot/package/cargo/cargo.hash b/features/buildroot/package/cargo/cargo.hash new file mode 100644 index 00000000..baa2cfbc --- /dev/null +++ b/features/buildroot/package/cargo/cargo.hash @@ -0,0 +1,8 @@ +# Locally generated +sha256 1a4bae6910ca895157a1abe8225eb2b7e9b49ee1ee1e4e72fb81cb8e1446bff9 cargo-0.26.0.tar.gz +sha256 dc7240d60a869fa24a68c8734fb7c810c27cca0a6dad52df6279865e4e8e7fae rust-installer-4f994850808a572e2cc8d43f968893c8e942e9bf.tar.gz +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT +sha256 8bd89f9222dc80292f4107347103b693ac66f3a083371f0629ccf42338abe880 LICENSE-THIRD-PARTY +# From https://src.fedoraproject.org/repo/pkgs/cargo/cargo-0.26.0-vendor.tar.xz/sha512 +sha512 6ed2a1644c9b18fc24ddad5350d41b6c36cd5b62de4cf0b748a57b589f4f0ac12f91461989158d58d0892bf6fc2c1626cf574e7e2b9da4b0e35f72dfd88f9048 cargo-0.26.0-vendor.tar.xz diff --git a/features/buildroot/package/cargo/cargo.mk b/features/buildroot/package/cargo/cargo.mk new file mode 100644 index 00000000..a387281b --- /dev/null +++ b/features/buildroot/package/cargo/cargo.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# cargo +# +################################################################################ + +CARGO_VERSION = 0.26.0 +CARGO_SITE = $(call github,rust-lang,cargo,$(CARGO_VERSION)) +CARGO_LICENSE = Apache-2.0 or MIT +CARGO_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +CARGO_DEPS_SHA512 = 6ed2a1644c9b18fc24ddad5350d41b6c36cd5b62de4cf0b748a57b589f4f0ac12f91461989158d58d0892bf6fc2c1626cf574e7e2b9da4b0e35f72dfd88f9048 +CARGO_DEPS_SITE = https://src.fedoraproject.org/repo/pkgs/cargo/$(CARGO_DEPS_SOURCE)/sha512/$(CARGO_DEPS_SHA512) +CARGO_DEPS_SOURCE = cargo-$(CARGO_VERSION)-vendor.tar.xz + +CARGO_INSTALLER_VERSION = 4f994850808a572e2cc8d43f968893c8e942e9bf +CARGO_INSTALLER_SITE = $(call github,rust-lang,rust-installer,$(CARGO_INSTALLER_VERSION)) +CARGO_INSTALLER_SOURCE = rust-installer-$(CARGO_INSTALLER_VERSION).tar.gz + +HOST_CARGO_EXTRA_DOWNLOADS = \ + $(CARGO_DEPS_SITE)/$(CARGO_DEPS_SOURCE) \ + $(CARGO_INSTALLER_SITE)/$(CARGO_INSTALLER_SOURCE) + +HOST_CARGO_DEPENDENCIES = \ + $(BR2_CMAKE_HOST_DEPENDENCY) \ + host-pkgconf \ + host-openssl \ + host-libhttpparser \ + host-libssh2 \ + host-libcurl \ + host-rustc \ + host-cargo-bin + +HOST_CARGO_SNAP_BIN = $(HOST_CARGO_BIN_DIR)/cargo/bin/cargo +HOST_CARGO_HOME = $(HOST_DIR)/share/cargo + +define HOST_CARGO_EXTRACT_DEPS + @mkdir -p $(@D)/vendor + $(call suitable-extractor,$(CARGO_DEPS_SOURCE)) \ + $(HOST_CARGO_DL_DIR)/$(CARGO_DEPS_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D)/vendor $(TAR_OPTIONS) - +endef + +HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_DEPS + +define HOST_CARGO_EXTRACT_INSTALLER + @mkdir -p $(@D)/src/rust-installer + $(call suitable-extractor,$(CARGO_INSTALLER_SOURCE)) \ + $(HOST_CARGO_DL_DIR)/$(CARGO_INSTALLER_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D)/src/rust-installer $(TAR_OPTIONS) - +endef + +HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_INSTALLER + +define HOST_CARGO_SETUP_DEPS + mkdir -p $(@D)/.cargo + ( \ + echo "[source.crates-io]"; \ + echo "registry = 'https://github.com/rust-lang/crates.io-index'"; \ + echo "replace-with = 'vendored-sources'"; \ + echo "[source.vendored-sources]"; \ + echo "directory = '$(@D)/vendor'"; \ + ) > $(@D)/.cargo/config +endef + +HOST_CARGO_PRE_CONFIGURE_HOOKS += HOST_CARGO_SETUP_DEPS + +HOST_CARGO_SNAP_OPTS = \ + --release \ + $(if $(VERBOSE),--verbose) + +HOST_CARGO_ENV = \ + RUSTFLAGS="$(addprefix -Clink-arg=,$(HOST_LDFLAGS))" \ + CARGO_HOME=$(HOST_CARGO_HOME) + +define HOST_CARGO_BUILD_CMDS + (cd $(@D); $(HOST_MAKE_ENV) $(HOST_CARGO_ENV) $(HOST_CARGO_SNAP_BIN) \ + build $(HOST_CARGO_SNAP_OPTS)) +endef + +define HOST_CARGO_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/target/release/cargo $(HOST_DIR)/bin/cargo + $(INSTALL) -D package/cargo/config.in \ + $(HOST_DIR)/share/cargo/config + $(SED) 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \ + $(HOST_DIR)/share/cargo/config + $(SED) 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \ + $(HOST_DIR)/share/cargo/config +endef + +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/cargo/config.in b/features/buildroot/package/cargo/config.in new file mode 100644 index 00000000..47fad026 --- /dev/null +++ b/features/buildroot/package/cargo/config.in @@ -0,0 +1,2 @@ +[target.@RUSTC_TARGET_NAME@] +linker = "@CROSS_PREFIX@gcc" diff --git a/features/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch b/features/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch new file mode 100644 index 00000000..587d67fc --- /dev/null +++ b/features/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch @@ -0,0 +1,43 @@ +From 64045f993c2cd8989838aeaad3d22107d96d5596 Mon Sep 17 00:00:00 2001 +From: Stephen Warren +Date: Thu, 28 Jul 2016 11:37:45 -0600 +Subject: [PATCH] bct_dump: don't crash on devices without RSA support + +format_rsa_param() currently crashes on chips that don't implement +soc_config->get_value_size(); that is, on all chips before T124. Fix the +function not to crash. Better might be to avoid even dumping RSA +parameters on chips which don't support RSA, but that's a larger change +that needs much more work. + +Fixes: 3c3b992a6814 ("Add support to dump rsa related fields for t210") +Cc: Jimmy Zhang +Signed-off-by: Stephen Warren +Signed-off-by: Misha Komarovskiy +--- + src/bct_dump.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/bct_dump.c b/src/bct_dump.c +index 4f50fa2..b4ca9fc 100644 +--- a/src/bct_dump.c ++++ b/src/bct_dump.c +@@ -133,10 +133,14 @@ static void format_rsa_param(parse_token id, char const * message, void * data) + { + #define MAX_BYTE_NUMBER_PER_LINE 16 + u_int8_t *rsa = (u_int8_t *)data; +- int size = g_soc_config->get_value_size(id); +- int byte_index; ++ int size, byte_index; + + printf("%s", message); ++ ++ if (!g_soc_config->get_value_size) ++ return; ++ ++ size = g_soc_config->get_value_size(id); + for (byte_index = 0; byte_index < size; ++byte_index) { + printf(" %02x", *rsa++); + +-- +2.1.4 + diff --git a/features/buildroot/package/cbootimage/Config.in b/features/buildroot/package/cbootimage/Config.in new file mode 100644 index 00000000..b798e5d9 --- /dev/null +++ b/features/buildroot/package/cbootimage/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_CBOOTIMAGE + bool "cbootimage" + depends on BR2_arm || BR2_armeb + # uses non-standard u_intXX_t types + # https://github.com/NVIDIA/cbootimage/pull/7 + depends on !BR2_TOOLCHAIN_USES_MUSL + help + This project provides a tool which compiles BCT (Boot + Configuration Table) images to place into the boot flash of + a Tegra-based device. + + https://github.com/NVIDIA/cbootimage + +comment "cbootimage needs a glibc or uClibc toolchain" + depends on BR2_arm || BR2_armeb + depends on BR2_TOOLCHAIN_USES_MUSL diff --git a/features/buildroot/package/cbootimage/Config.in.host b/features/buildroot/package/cbootimage/Config.in.host new file mode 100644 index 00000000..1913afa2 --- /dev/null +++ b/features/buildroot/package/cbootimage/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_CBOOTIMAGE + bool "host cbootimage" + depends on BR2_arm || BR2_armeb + help + This project provides a tool which compiles BCT (Boot + Configuration Table) images to place into the boot flash of + a Tegra-based device. + + https://github.com/NVIDIA/cbootimage diff --git a/features/buildroot/package/cbootimage/cbootimage.hash b/features/buildroot/package/cbootimage/cbootimage.hash new file mode 100644 index 00000000..01342cdc --- /dev/null +++ b/features/buildroot/package/cbootimage/cbootimage.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 373c108d7b6778c62a33e59ad0cd5ea9ebb379319a0c8b4cf469eaa8bec5521b cbootimage-1.7.tar.gz diff --git a/features/buildroot/package/cbootimage/cbootimage.mk b/features/buildroot/package/cbootimage/cbootimage.mk new file mode 100644 index 00000000..107ae709 --- /dev/null +++ b/features/buildroot/package/cbootimage/cbootimage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cbootimage +# +################################################################################ + +CBOOTIMAGE_VERSION = 1.7 +CBOOTIMAGE_SITE = $(call github,NVIDIA,cbootimage,v$(CBOOTIMAGE_VERSION)) +CBOOTIMAGE_LICENSE = GPL-2.0 +CBOOTIMAGE_LICENSE_FILES = COPYING +CBOOTIMAGE_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/features/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch b/features/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch new file mode 100644 index 00000000..c4f47fd3 --- /dev/null +++ b/features/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch @@ -0,0 +1,18 @@ +Add missing include for va_list + +Fixes the build on uClibc. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/common/log.h +=================================================================== +--- a/src/common/log.h ++++ b/src/common/log.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + #include "common.h" + + class Log diff --git a/features/buildroot/package/cc-tool/0002-boost-m4.patch b/features/buildroot/package/cc-tool/0002-boost-m4.patch new file mode 100644 index 00000000..dc07701d --- /dev/null +++ b/features/buildroot/package/cc-tool/0002-boost-m4.patch @@ -0,0 +1,883 @@ +The version of boost.m4 initially included in cc-tool has an issue +with gcc5 (one of its tests fails due to the first change described in [1] +"Preprocessor issues"). + +This was fixed upstream (boost.m4 project) in Nov 2014 [2]. + +We add the latest commit [3] of upstream boost.m4 plus a patch from github PR +[4] to add detection for gcc 5.1. + +[1] +https://gcc.gnu.org/gcc-5/porting_to.html + +[2] +https://github.com/tsuna/boost.m4/commit/32553aaf4d5090da19aa0ec33b936982c685009f + +[3] +https://github.com/tsuna/boost.m4/commit/d9ff75b6af66360d76f46f469a26ab18e24e1030 + +[4] +https://github.com/rubenk/boost.m4/commit/b879eb85f112cf054643d2e7f9544c230299c0b2 + +Signed-off-by: Jörg Krause + +diff -purN cc-tool.original/m4/boost.m4 cc-tool/m4/boost.m4 +--- cc-tool.original/m4/boost.m4 2015-07-28 15:43:25.458840000 +0200 ++++ cc-tool/m4/boost.m4 2015-07-28 16:12:02.532791424 +0200 +@@ -1,5 +1,5 @@ + # boost.m4: Locate Boost headers and libraries for autoconf-based projects. +-# Copyright (C) 2007, 2008, 2009, 2010, 2011 Benoit Sigoure ++# Copyright (C) 2007-2011, 2014 Benoit Sigoure + # + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -22,7 +22,7 @@ + # along with this program. If not, see . + + m4_define([_BOOST_SERIAL], [m4_translit([ +-# serial 16 ++# serial 25 + ], [# + ], [])]) + +@@ -59,7 +59,8 @@ m4_pattern_forbid([^_?(BOOST|Boost)_]) + # It could be useful to turn this into a macro which extracts the + # value of any macro. + m4_define([_BOOST_SED_CPP], +-[AC_LANG_PREPROC_REQUIRE()dnl ++[AC_LANG_PUSH([C++])dnl ++AC_LANG_PREPROC_REQUIRE()dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) + AS_IF([dnl eval is necessary to expand ac_cpp. +@@ -71,13 +72,31 @@ dnl strip `\n' with backquotes, not the + dnl boost_cv_lib_version='1_37\r' for instance, which breaks + dnl everything else. + dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK ++dnl ++dnl Beware that GCC 5, when expanding macros, may embed # line directives ++dnl a within single line: ++dnl ++dnl # 1 "conftest.cc" ++dnl # 1 "" ++dnl # 1 "" ++dnl # 1 "conftest.cc" ++dnl # 1 "/opt/local/include/boost/version.hpp" 1 3 ++dnl # 2 "conftest.cc" 2 ++dnl boost-lib-version = ++dnl # 2 "conftest.cc" 3 ++dnl "1_56" ++dnl ++dnl So get rid of the # lines, and glue the remaining ones together. + (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | ++ grep -v '#' | + tr -d '\r' | ++ tr -s '\n' ' ' | + $SED -n -e "$1" >conftest.i 2>&1], + [$3], + [$4]) + rm -rf conftest* +-])# AC_EGREP_CPP ++AC_LANG_POP([C++])dnl ++])# _BOOST_SED_CPP + + + +@@ -206,7 +225,7 @@ AC_LANG_POP([C++])dnl + AC_CACHE_CHECK([for Boost's header version], + [boost_cv_lib_version], + [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl +- _BOOST_SED_CPP([/^boost-lib-version = /{s///;s/\"//g;p;q;}], ++ _BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]], + [#include + boost-lib-version = BOOST_LIB_VERSION], + [boost_cv_lib_version=`cat conftest.i`])]) +@@ -214,13 +233,14 @@ boost-lib-version = BOOST_LIB_VERSION], + boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` + case $boost_major_version in #( + '' | *[[!0-9]]*) +- AC_MSG_ERROR([invalid value: boost_major_version=$boost_major_version]) ++ AC_MSG_ERROR([invalid value: boost_major_version='$boost_major_version']) + ;; + esac + fi + CPPFLAGS=$boost_save_CPPFLAGS + ])# BOOST_REQUIRE + ++ + # BOOST_STATIC() + # -------------- + # Add the "--enable-static-boost" configure argument. If this argument is given +@@ -232,6 +252,7 @@ AC_DEFUN([BOOST_STATIC], + [enable_static_boost=yes], + [enable_static_boost=no])])# BOOST_STATIC + ++ + # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) + # -------------------------------------------------------------------------- + # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for +@@ -264,14 +285,16 @@ fi + ])# BOOST_FIND_HEADER + + +-# BOOST_FIND_LIB([LIB-NAME], [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], +-# [CXX-PROLOGUE]) +-# ------------------------------------------------------------------------- +-# Look for the Boost library LIB-NAME (e.g., LIB-NAME = `thread', for +-# libboost_thread). Check that HEADER-NAME works and check that +-# libboost_LIB-NAME can link with the code CXX-TEST. The optional argument +-# CXX-PROLOGUE can be used to include some C++ code before the `main' +-# function. ++# BOOST_FIND_LIBS([COMPONENT-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Look for the Boost library COMPONENT-NAME (e.g., `thread', for ++# libboost_thread) under the possible CANDIDATE-LIB-NAMES (e.g., ++# "thread_win32 thread"). Check that HEADER-NAME works and check that ++# libboost_LIB-NAME can link with the code CXX-TEST. The optional ++# argument CXX-PROLOGUE can be used to include some C++ code before ++# the `main' function. + # + # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). + # +@@ -285,7 +308,7 @@ fi + # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp + # ... If you want to make sure you have a specific version of Boost + # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. +-AC_DEFUN([BOOST_FIND_LIB], ++AC_DEFUN([BOOST_FIND_LIBS], + [AC_REQUIRE([BOOST_REQUIRE])dnl + AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl + AC_REQUIRE([BOOST_STATIC])dnl +@@ -299,32 +322,69 @@ AS_VAR_PUSHDEF([Boost_lib], [boost_cv_li + AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl + AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl + AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl +-BOOST_FIND_HEADER([$3]) ++BOOST_FIND_HEADER([$4]) + boost_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +-# Now let's try to find the library. The algorithm is as follows: first look +-# for a given library name according to the user's PREFERRED-RT-OPT. For each +-# library name, we prefer to use the ones that carry the tag (toolset name). +-# Each library is searched through the various standard paths were Boost is +-# usually installed. If we can't find the standard variants, we try to +-# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist +-# but there's -obviously- libboost_threads-mt.dylib). + AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], +- [Boost_lib=no +- case "$2" in #( +- mt | mt-) boost_mt=-mt; boost_rtopt=;; #( +- mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$2" : 'Xmt-*\(.*\)'`;; #( +- *) boost_mt=; boost_rtopt=$2;; ++ [_BOOST_FIND_LIBS($@)]) ++case $Boost_lib in #( ++ (no) _AC_MSG_LOG_CONFTEST ++ AC_MSG_ERROR([cannot find the flags to link with Boost $1]) ++ ;; ++esac ++AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl ++AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl ++AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl ++AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl ++CPPFLAGS=$boost_save_CPPFLAGS ++AS_VAR_POPDEF([Boost_lib])dnl ++AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl ++AS_VAR_POPDEF([Boost_lib_LDPATH])dnl ++AS_VAR_POPDEF([Boost_lib_LIBS])dnl ++AC_LANG_POP([C++])dnl ++fi ++]) ++ ++ ++# BOOST_FIND_LIB([LIB-NAME], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Backward compatibility wrapper for BOOST_FIND_LIBS. ++AC_DEFUN([BOOST_FIND_LIB], ++[BOOST_FIND_LIBS([$1], $@)]) ++ ++ ++# _BOOST_FIND_LIBS([LIB-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Real implementation of BOOST_FIND_LIBS: rely on these local macros: ++# Boost_lib, Boost_lib_LDFLAGS, Boost_lib_LDPATH, Boost_lib_LIBS ++# ++# The algorithm is as follows: first look for a given library name ++# according to the user's PREFERRED-RT-OPT. For each library name, we ++# prefer to use the ones that carry the tag (toolset name). Each ++# library is searched through the various standard paths were Boost is ++# usually installed. If we can't find the standard variants, we try ++# to enforce -mt (for instance on MacOSX, libboost_thread.dylib ++# doesn't exist but there's -obviously- libboost_thread-mt.dylib). ++AC_DEFUN([_BOOST_FIND_LIBS], ++[Boost_lib=no ++ case "$3" in #( ++ (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( ++ (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$3" : 'Xmt-*\(.*\)'`;; #( ++ (*) boost_mt=; boost_rtopt=$3;; + esac + if test $enable_static_boost = yes; then + boost_rtopt="s$boost_rtopt" + fi + # Find the proper debug variant depending on what we've been asked to find. + case $boost_rtopt in #( +- *d*) boost_rt_d=$boost_rtopt;; #( +- *[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') ++ (*d*) boost_rt_d=$boost_rtopt;; #( ++ (*[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') + boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( +- *) boost_rt_d='-d';; ++ (*) boost_rt_d='-d';; + esac + # If the PREFERRED-RT-OPT are not empty, prepend a `-'. + test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" +@@ -335,8 +395,8 @@ AC_CACHE_CHECK([for the Boost $1 library + AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) + boost_save_ac_objext=$ac_objext + # Generate the test file. +- AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$3> +-$5], [$4])]) ++ AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$4> ++$6], [$5])]) + dnl Optimization hacks: compiling C++ is slow, especially with Boost. What + dnl we're trying to do here is guess the right combination of link flags + dnl (LIBS / LDFLAGS) to use a given library. This can take several +@@ -358,21 +418,22 @@ dnl start the for loops). + [AC_MSG_ERROR([cannot compile a test that uses Boost $1])]) + ac_objext=$boost_save_ac_objext + boost_failed_libs= +-# Don't bother to ident the 6 nested for loops, only the 2 innermost ones +-# matter. ++# Don't bother to ident the following nested for loops, only the 2 ++# innermost ones matter. ++for boost_lib_ in $2; do + for boost_tag_ in -$boost_cv_lib_tag ''; do + for boost_ver_ in -$boost_cv_lib_version ''; do + for boost_mt_ in $boost_mt -mt ''; do + for boost_rtopt_ in $boost_rtopt '' -d; do + for boost_lib in \ +- boost_$1$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_mt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_ver_ ++ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_ver_ + do + # Avoid testing twice the same lib + case $boost_failed_libs in #( +- *@$boost_lib@*) continue;; ++ (*@$boost_lib@*) continue;; + esac + # If with_boost is empty, we'll search in /lib first, which is not quite + # right so instead we'll try to a location based on where the headers are. +@@ -382,14 +443,17 @@ for boost_rtopt_ in $boost_rtopt '' -d; + /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ + "$with_boost" C:/Boost/lib /lib* + do +- test -e "$boost_ldpath" || continue ++ # Don't waste time with directories that don't exist. ++ if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then ++ continue ++ fi + boost_save_LDFLAGS=$LDFLAGS + # Are we looking for a static library? + case $boost_ldpath:$boost_rtopt_ in #( +- *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) ++ (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) + Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" + test -e "$Boost_lib_LIBS" || continue;; #( +- *) # No: use -lboost_foo to find the shared library. ++ (*) # No: use -lboost_foo to find the shared library. + Boost_lib_LIBS="-l$boost_lib";; + esac + boost_save_LIBS=$LIBS +@@ -403,9 +467,35 @@ dnl generated only once above (before we + LDFLAGS=$boost_save_LDFLAGS + LIBS=$boost_save_LIBS + if test x"$Boost_lib" = xyes; then +- Boost_lib_LDFLAGS="-L$boost_ldpath -Wl,-rpath,$boost_ldpath" ++ # Check or used cached result of whether or not using -R or ++ # -rpath makes sense. Some implementations of ld, such as for ++ # Mac OSX, require -rpath but -R is the flag known to work on ++ # other systems. https://github.com/tsuna/boost.m4/issues/19 ++ AC_CACHE_VAL([boost_cv_rpath_link_ldflag], ++ [case $boost_ldpath in ++ '') # Nothing to do. ++ boost_cv_rpath_link_ldflag= ++ boost_rpath_link_ldflag_found=yes;; ++ *) ++ for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do ++ LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" ++ LIBS="$boost_save_LIBS $Boost_lib_LIBS" ++ _BOOST_AC_LINK_IFELSE([], ++ [boost_rpath_link_ldflag_found=yes ++ break], ++ [boost_rpath_link_ldflag_found=no]) ++ done ++ ;; ++ esac ++ AS_IF([test "x$boost_rpath_link_ldflag_found" != "xyes"], ++ [AC_MSG_ERROR([Unable to determine whether to use -R or -rpath])]) ++ LDFLAGS=$boost_save_LDFLAGS ++ LIBS=$boost_save_LIBS ++ ]) ++ test x"$boost_ldpath" != x && ++ Boost_lib_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" + Boost_lib_LDPATH="$boost_ldpath" +- break 6 ++ break 7 + else + boost_failed_libs="$boost_failed_libs@$boost_lib@" + fi +@@ -415,25 +505,10 @@ done + done + done + done ++done # boost_lib_ + rm -f conftest.$ac_objext + ]) +-case $Boost_lib in #( +- no) _AC_MSG_LOG_CONFTEST +- AC_MSG_ERROR([cannot find the flags to link with Boost $1]) +- ;; +-esac +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl +-AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl +-AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl +-CPPFLAGS=$boost_save_CPPFLAGS +-AS_VAR_POPDEF([Boost_lib])dnl +-AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl +-AS_VAR_POPDEF([Boost_lib_LDPATH])dnl +-AS_VAR_POPDEF([Boost_lib_LIBS])dnl +-AC_LANG_POP([C++])dnl +-fi +-])# BOOST_FIND_LIB ++ + + + # --------------------------------------- # +@@ -475,20 +550,20 @@ BOOST_FIND_HEADER([boost/asio.hpp])]) + + # BOOST_BIND() + # ------------ +-# Look for Boost.Bind ++# Look for Boost.Bind. + BOOST_DEFUN([Bind], + [BOOST_FIND_HEADER([boost/bind.hpp])]) + + + # BOOST_CHRONO() +-# ------------------ +-# Look for Boost.Chrono ++# -------------- ++# Look for Boost.Chrono. + BOOST_DEFUN([Chrono], + [# Do we have to check for Boost.System? This link-time dependency was + # added as of 1.35.0. If we have a version <1.35, we must not attempt to + # find Boost.System as it didn't exist by then. + if test $boost_major_version -ge 135; then +-BOOST_SYSTEM([$1]) ++ BOOST_SYSTEM([$1]) + fi # end of the Boost.System check. + boost_filesystem_save_LIBS=$LIBS + boost_filesystem_save_LDFLAGS=$LDFLAGS +@@ -499,14 +574,40 @@ BOOST_FIND_LIB([chrono], [$1], + [boost/chrono.hpp], + [boost::chrono::thread_clock d;]) + if test $enable_static_boost = yes && test $boost_major_version -ge 135; then +- AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"]) ++ BOOST_CHRONO_LIBS="$BOOST_CHRONO_LIBS $BOOST_SYSTEM_LIBS" + fi + LIBS=$boost_filesystem_save_LIBS + LDFLAGS=$boost_filesystem_save_LDFLAGS +- + ])# BOOST_CHRONO + + ++# BOOST_CONTEXT([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.51.0 ++BOOST_DEFUN([Context], ++[BOOST_FIND_LIB([context], [$1], ++ [boost/context/all.hpp],[[ ++// creates a stack ++void * stack_pointer = new void*[4096]; ++std::size_t const size = sizeof(void*[4096]); ++ ++// context fc uses f() as context function ++// fcontext_t is placed on top of context stack ++// a pointer to fcontext_t is returned ++fc = ctx::make_fcontext(stack_pointer, size, f); ++return ctx::jump_fcontext(&fcm, fc, 3) == 6;]],[dnl ++namespace ctx = boost::context; ++// context ++static ctx::fcontext_t fcm, *fc; ++// context-function ++static void f(intptr_t i) { ++ ctx::jump_fcontext(fc, &fcm, i * 2); ++}]) ++])# BOOST_CONTEXT ++ ++ + # BOOST_CONVERSION() + # ------------------ + # Look for Boost.Conversion (cast / lexical_cast) +@@ -516,6 +617,52 @@ BOOST_FIND_HEADER([boost/lexical_cast.hp + ])# BOOST_CONVERSION + + ++# BOOST_COROUTINE([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Coroutine. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.53.0 ++BOOST_DEFUN([Coroutine], ++[ ++boost_coroutine_save_LIBS=$LIBS ++boost_coroutine_save_LDFLAGS=$LDFLAGS ++# Link-time dependency from coroutine to context ++BOOST_CONTEXT([$1]) ++# Starting from Boost 1.55 a dependency on Boost.System is added ++if test $boost_major_version -ge 155; then ++ BOOST_SYSTEM([$1]) ++fi ++m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)]) ++LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++ ++BOOST_FIND_LIB([coroutine], [$1], ++ [boost/coroutine/coroutine.hpp], ++ [boost::coroutines::coroutine< int(int) > coro; coro.empty();]) ++ ++# Link-time dependency from coroutine to context, existed only in 1.53, in 1.54 ++# coroutine doesn't use context from its headers but from its library. ++if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_CONTEXT_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++fi ++if test $enable_static_boost = yes && test $boost_major_version -ge 155; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_SYSTEM_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++fi ++LIBS=$boost_coroutine_save_LIBS ++LDFLAGS=$boost_coroutine_save_LDFLAGS ++])# BOOST_COROUTINE ++ ++ ++# BOOST_CRC() ++# ----------- ++# Look for Boost.CRC ++BOOST_DEFUN([CRC], ++[BOOST_FIND_HEADER([boost/crc.hpp]) ++])# BOOST_CRC ++ ++ + # BOOST_DATE_TIME([PREFERRED-RT-OPT]) + # ----------------------------------- + # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the +@@ -538,7 +685,7 @@ BOOST_DEFUN([Filesystem], + # added as of 1.35.0. If we have a version <1.35, we must not attempt to + # find Boost.System as it didn't exist by then. + if test $boost_major_version -ge 135; then +-BOOST_SYSTEM([$1]) ++ BOOST_SYSTEM([$1]) + fi # end of the Boost.System check. + boost_filesystem_save_LIBS=$LIBS + boost_filesystem_save_LDFLAGS=$LDFLAGS +@@ -548,23 +695,34 @@ LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" + BOOST_FIND_LIB([filesystem], [$1], + [boost/filesystem/path.hpp], [boost::filesystem::path p;]) + if test $enable_static_boost = yes && test $boost_major_version -ge 135; then +- AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"]) ++ BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" + fi + LIBS=$boost_filesystem_save_LIBS + LDFLAGS=$boost_filesystem_save_LDFLAGS + ])# BOOST_FILESYSTEM + + ++# BOOST_FLYWEIGHT() ++# ----------------- ++# Look for Boost.Flyweight. ++BOOST_DEFUN([Flyweight], ++[dnl There's a hidden dependency on pthreads. ++AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl ++BOOST_FIND_HEADER([boost/flyweight.hpp]) ++AC_SUBST([BOOST_FLYWEIGHT_LIBS], [$boost_cv_pthread_flag]) ++]) ++ ++ + # BOOST_FOREACH() + # --------------- +-# Look for Boost.Foreach ++# Look for Boost.Foreach. + BOOST_DEFUN([Foreach], + [BOOST_FIND_HEADER([boost/foreach.hpp])]) + + + # BOOST_FORMAT() + # -------------- +-# Look for Boost.Format ++# Look for Boost.Format. + # Note: we can't check for boost/format/format_fwd.hpp because the header isn't + # standalone. It can't be compiled because it triggers the following error: + # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' +@@ -580,6 +738,14 @@ BOOST_DEFUN([Function], + [BOOST_FIND_HEADER([boost/function.hpp])]) + + ++# BOOST_GEOMETRY() ++# ---------------- ++# Look for Boost.Geometry (new since 1.47.0). ++BOOST_DEFUN([Geometry], ++[BOOST_FIND_HEADER([boost/geometry.hpp]) ++])# BOOST_GEOMETRY ++ ++ + # BOOST_GRAPH([PREFERRED-RT-OPT]) + # ------------------------------- + # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the +@@ -615,9 +781,18 @@ BOOST_DEFUN([Lambda], + [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) + + ++# BOOST_LOCALE() ++# -------------- ++# Look for Boost.Locale ++BOOST_DEFUN([Locale], ++[BOOST_FIND_LIB([locale], [$1], ++ [boost/locale.hpp], ++ [[boost::locale::generator gen; std::locale::global(gen(""));]]) ++])# BOOST_LOCALE ++ + # BOOST_LOG([PREFERRED-RT-OPT]) + # ----------------------------- +-# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Log], + [BOOST_FIND_LIB([log], [$1], +@@ -628,12 +803,12 @@ BOOST_DEFUN([Log], + + # BOOST_LOG_SETUP([PREFERRED-RT-OPT]) + # ----------------------------------- +-# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Log_Setup], + [AC_REQUIRE([BOOST_LOG])dnl + BOOST_FIND_LIB([log_setup], [$1], +- [boost/log/utility/init/from_settings.hpp], ++ [boost/log/utility/setup/from_settings.hpp], + [boost::log::basic_settings bs; bs.empty();]) + ])# BOOST_LOG_SETUP + +@@ -650,6 +825,29 @@ BOOST_DEFUN([Math], + [BOOST_FIND_HEADER([boost/math/special_functions.hpp])]) + + ++# BOOST_MPI([PREFERRED-RT-OPT]) ++# ------------------------------- ++# Look for Boost MPI. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. Uses MPICXX variable if it is ++# set, otherwise tries CXX ++# ++BOOST_DEFUN([MPI], ++[boost_save_CXX=${CXX} ++boost_save_CXXCPP=${CXXCPP} ++if test x"${MPICXX}" != x; then ++ CXX=${MPICXX} ++ CXXCPP="${MPICXX} -E" ++fi ++BOOST_FIND_LIB([mpi], [$1], ++ [boost/mpi.hpp], ++ [int argc = 0; ++ char **argv = 0; ++ boost::mpi::environment env(argc,argv);]) ++CXX=${boost_save_CXX} ++CXXCPP=${boost_save_CXXCPP} ++])# BOOST_MPI ++ ++ + # BOOST_MULTIARRAY() + # ------------------ + # Look for Boost.MultiArray +@@ -657,6 +855,14 @@ BOOST_DEFUN([MultiArray], + [BOOST_FIND_HEADER([boost/multi_array.hpp])]) + + ++# BOOST_NUMERIC_UBLAS() ++# -------------------------- ++# Look for Boost.NumericUblas (Basic Linear Algebra) ++BOOST_DEFUN([Numeric_Ublas], ++[BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) ++])# BOOST_NUMERIC_UBLAS ++ ++ + # BOOST_NUMERIC_CONVERSION() + # -------------------------- + # Look for Boost.NumericConversion (policy-based numeric conversion) +@@ -679,6 +885,12 @@ BOOST_DEFUN([Preprocessor], + [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) + + ++# BOOST_RANGE() ++# -------------------- ++# Look for Boost.Range ++BOOST_DEFUN([Range], ++[BOOST_FIND_HEADER([boost/range/adaptors.hpp])]) ++ + # BOOST_UNORDERED() + # ----------------- + # Look for Boost.Unordered +@@ -725,9 +937,9 @@ BOOST_DEFUN([Python], + _BOOST_PYTHON_CONFIG([LDFLAGS], [ldflags]) + _BOOST_PYTHON_CONFIG([LIBS], [libs]) + m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl +-BOOST_FIND_LIB([python], [$1], +- [boost/python.hpp], +- [], [BOOST_PYTHON_MODULE(empty) {}]) ++BOOST_FIND_LIBS([python], [python python3], [$1], ++ [boost/python.hpp], ++ [], [BOOST_PYTHON_MODULE(empty) {}]) + CPPFLAGS=$boost_python_save_CPPFLAGS + LDFLAGS=$boost_python_save_LDFLAGS + LIBS=$boost_python_save_LIBS +@@ -774,17 +986,13 @@ BOOST_DEFUN([Signals], + [boost::signal s;]) + ])# BOOST_SIGNALS + ++ + # BOOST_SIGNALS2() +-# ----------------- +-# Look for Boost.Signals2 ++# ---------------- ++# Look for Boost.Signals2 (new since 1.39.0). + BOOST_DEFUN([Signals2], +-[BOOST_FIND_HEADER([boost/signals2.hpp])]) +- +-# BOOST_CRC() +-# ----------------- +-# Look for Boost.CRC +-BOOST_DEFUN([CRC], +-[BOOST_FIND_HEADER([boost/crc.hpp])]) ++[BOOST_FIND_HEADER([boost/signals2.hpp]) ++])# BOOST_SIGNALS2 + + + # BOOST_SMART_PTR() +@@ -837,19 +1045,18 @@ BOOST_FIND_LIB([unit_test_framework], [$ + ])# BOOST_TEST + + +-# BOOST_THREADS([PREFERRED-RT-OPT]) ++# BOOST_THREAD([PREFERRED-RT-OPT]) + # --------------------------------- + # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-# FIXME: Provide an alias "BOOST_THREAD". +-BOOST_DEFUN([Threads], ++BOOST_DEFUN([Thread], + [dnl Having the pthread flag is required at least on GCC3 where + dnl boost/thread.hpp would complain if we try to compile without + dnl -pthread on GNU/Linux. + AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl +-boost_threads_save_LIBS=$LIBS +-boost_threads_save_LDFLAGS=$LDFLAGS +-boost_threads_save_CPPFLAGS=$CPPFLAGS ++boost_thread_save_LIBS=$LIBS ++boost_thread_save_LDFLAGS=$LDFLAGS ++boost_thread_save_CPPFLAGS=$CPPFLAGS + # Link-time dependency from thread to system was added as of 1.49.0. + if test $boost_major_version -ge 149; then + BOOST_SYSTEM([$1]) +@@ -857,36 +1064,26 @@ fi # end of the Boost.System check. + m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl + LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" + LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" +-# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, +-# boost/thread.hpp will trigger a #error if -pthread isn't used: +-# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support +-# is not turned on. Please set the correct command line options for +-# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" + CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" + + # When compiling for the Windows platform, the threads library is named + # differently. + case $host_os in +- (*mingw*) +- BOOST_FIND_LIB([thread_win32], [$1], +- [boost/thread.hpp], [boost::thread t; boost::mutex m;]) +- BOOST_THREAD_LDFLAGS=$BOOST_THREAD_WIN32_LDFLAGS +- BOOST_THREAD_LDPATH=$BOOST_THREAD_WIN32_LDPATH +- BOOST_THREAD_LIBS=$BOOST_THREAD_WIN32_LIBS +- ;; +- (*) +- BOOST_FIND_LIB([thread], [$1], +- [boost/thread.hpp], [boost::thread t; boost::mutex m;]) +- ;; ++ (*mingw*) boost_thread_lib_ext=_win32;; + esac ++BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext], ++ [$1], ++ [boost/thread.hpp], [boost::thread t; boost::mutex m;]) + + BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" + BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS" + BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" +-LIBS=$boost_threads_save_LIBS +-LDFLAGS=$boost_threads_save_LDFLAGS +-CPPFLAGS=$boost_threads_save_CPPFLAGS +-])# BOOST_THREADS ++LIBS=$boost_thread_save_LIBS ++LDFLAGS=$boost_thread_save_LDFLAGS ++CPPFLAGS=$boost_thread_save_CPPFLAGS ++])# BOOST_THREAD ++ ++AU_ALIAS([BOOST_THREADS], [BOOST_THREAD]) + + + # BOOST_TOKENIZER() +@@ -935,10 +1132,23 @@ BOOST_DEFUN([Variant], + BOOST_FIND_HEADER([boost/variant.hpp])]) + + ++# BOOST_POINTER_CONTAINER() ++# ------------------------ ++# Look for Boost.PointerContainer ++BOOST_DEFUN([Pointer_Container], ++[BOOST_FIND_HEADER([boost/ptr_container/ptr_deque.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_list.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_vector.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_array.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_set.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_map.hpp]) ++])# BOOST_POINTER_CONTAINER ++ ++ + # BOOST_WAVE([PREFERRED-RT-OPT]) + # ------------------------------ + # NOTE: If you intend to use Wave/Spirit with thread support, make sure you +-# call BOOST_THREADS first. ++# call BOOST_THREAD first. + # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Wave], +@@ -973,8 +1183,16 @@ BOOST_DEFUN([Xpressive], + + # _BOOST_PTHREAD_FLAG() + # --------------------- +-# Internal helper for BOOST_THREADS. Based on ACX_PTHREAD: +-# http://autoconf-archive.cryp.to/acx_pthread.html ++# Internal helper for BOOST_THREAD. Computes boost_cv_pthread_flag ++# which must be used in CPPFLAGS and LIBS. ++# ++# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, ++# boost/thread.hpp will trigger a #error if -pthread isn't used: ++# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support ++# is not turned on. Please set the correct command line options for ++# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" ++# ++# Based on ACX_PTHREAD: http://autoconf-archive.cryp.to/acx_pthread.html + AC_DEFUN([_BOOST_PTHREAD_FLAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +@@ -1042,6 +1260,14 @@ AC_LANG_POP([C++])dnl + m4_define([_BOOST_gcc_test], + ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl + ++# _BOOST_mingw_test(MAJOR, MINOR) ++# ----------------------------- ++# Internal helper for _BOOST_FIND_COMPILER_TAG. ++m4_define([_BOOST_mingw_test], ++["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC && \ ++ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ ++ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw$1$2"])dnl ++ + + # _BOOST_FIND_COMPILER_TAG() + # -------------------------- +@@ -1051,7 +1277,8 @@ m4_define([_BOOST_gcc_test], + AC_DEFUN([_BOOST_FIND_COMPILER_TAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], ++AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], ++ [boost_cv_lib_tag], + [boost_cv_lib_tag=unknown + if test x$boost_cv_inc_path != xno; then + AC_LANG_PUSH([C++])dnl +@@ -1069,14 +1296,31 @@ if test x$boost_cv_inc_path != xno; then + # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines + # the same defines as GCC's). + for i in \ ++ _BOOST_mingw_test(5, 1) \ ++ _BOOST_gcc_test(5, 1) \ ++ _BOOST_mingw_test(5, 0) \ ++ _BOOST_gcc_test(5, 0) \ ++ _BOOST_mingw_test(4, 10) \ ++ _BOOST_gcc_test(4, 10) \ ++ _BOOST_mingw_test(4, 9) \ ++ _BOOST_gcc_test(4, 9) \ ++ _BOOST_mingw_test(4, 8) \ + _BOOST_gcc_test(4, 8) \ ++ _BOOST_mingw_test(4, 7) \ + _BOOST_gcc_test(4, 7) \ ++ _BOOST_mingw_test(4, 6) \ + _BOOST_gcc_test(4, 6) \ ++ _BOOST_mingw_test(4, 5) \ + _BOOST_gcc_test(4, 5) \ ++ _BOOST_mingw_test(4, 4) \ + _BOOST_gcc_test(4, 4) \ ++ _BOOST_mingw_test(4, 3) \ + _BOOST_gcc_test(4, 3) \ ++ _BOOST_mingw_test(4, 2) \ + _BOOST_gcc_test(4, 2) \ ++ _BOOST_mingw_test(4, 1) \ + _BOOST_gcc_test(4, 1) \ ++ _BOOST_mingw_test(4, 0) \ + _BOOST_gcc_test(4, 0) \ + "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ + && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ +@@ -1142,6 +1386,7 @@ fi])dnl end of AC_CACHE_CHECK + # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. + AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], + [# Check whether we do better use `mt' even though we weren't ask to. ++AC_LANG_PUSH([C++])dnl + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #if defined _REENTRANT || defined _MT || defined __MT__ + /* use -mt */ +@@ -1149,6 +1394,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + # error MT not needed + #endif + ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) ++AC_LANG_POP([C++])dnl + ]) + + # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +@@ -1172,11 +1418,11 @@ boost_use_source=: + test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && + _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) + AS_IF([_AC_DO_STDERR($ac_link) && { +- test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || +- test ! -s conftest.err ++ test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || ++ test ! -s conftest.err + } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_executable_p conftest$ac_exeext ++ test "$cross_compiling" = yes || ++ $as_executable_p conftest$ac_exeext + dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. + }], + [$2], diff --git a/features/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch b/features/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch new file mode 100644 index 00000000..31a64cae --- /dev/null +++ b/features/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch @@ -0,0 +1,50 @@ +From af3098e05535ddb93bb065770d87738e46089efc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 20 Aug 2017 15:06:01 +0200 +Subject: [PATCH] Makefile.am: do not overwrite LIBS + +LIBS is meant to be passed on the command line with additional +libraries, it should not be overwritten by Makefile.am. + +Instead: + + - Use LDADD to link with external libraries + + - Use _LDFLAGS for additional, non-libraries, linker flags + +Signed-off-by: Thomas Petazzoni +Upstream: https://github.com/dashesy/cc-tool/commit/553f9c601646af0c6e3f6150d0fa3bc63ff56416 +--- + Makefile.am | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index e79e47b..ed83d91 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -10,14 +10,12 @@ AM_LDFLAGS = \ + + # $(BOOST_THREADS_LDFLAGS) + +-LDADD = $(LIBUSB_LIBS) +- +-LIBS = -s \ ++LDADD = $(LIBUSB_LIBS) \ + $(BOOST_FILESYSTEM_LIBS) \ + $(BOOST_REGEX_LIBS) \ + $(BOOST_SYSTEM_LIBS) \ + $(BOOST_PROGRAM_OPTIONS_LIBS) +- ++ + # $(BOOST_THREADS_LIBS) + + bin_PROGRAMS=cc-tool +@@ -30,4 +28,4 @@ cc_tool_SOURCES=src/main.cpp src/application/cc_flasher.cpp src/application/cc_b + src/programmer/cc_253x_254x.cpp src/programmer/cc_251x_111x.cpp \ + src/programmer/cc_243x.cpp src/programmer/cc_programmer.cpp \ + src/programmer/cc_unit_driver.cpp src/programmer/cc_unit_info.cpp +- ++cc_tool_LDFLAGS=-s +-- +2.9.4 + diff --git a/features/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch b/features/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch new file mode 100644 index 00000000..acff1074 --- /dev/null +++ b/features/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch @@ -0,0 +1,44 @@ +From 5e74a15ce1e093b4d8e83cdade60a43b09d698de Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 20 Aug 2017 15:25:06 +0200 +Subject: [PATCH] m4/boost.m4: fix rpath option check for static linking + +When statically linking, the order in which -l options are passed is +important. The contents of the LIBS option passed to the configure +environment should be passed *after* other -l options used internally +by the package. + +For example, libboost_program_options may used symbols from the +libatomic library, and in this case, one need to pass LIBS="-latomic" +to cc-tool's configure script. When using dynamic linking, this works +fine, because the rpath test does "-latomic +-lboost_program_options". However, when statically linking, this +doesn't work because libboost_program_options uses symbols from +libatomic, so -latomic must be passed *after* -lboost_program_options. + +Therefore, this commit inverts the list of variables used to construct +LIBS before doing the _BOOST_AC_LINK_IFELSE() test detecting the rpath +option to be used. Indeed, $boost_save_LIBS contains the previously +saved LIBS variable, and should be passed after $Boost_lib_LIBS. + +Signed-off-by: Thomas Petazzoni +--- + m4/boost.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/m4/boost.m4 b/m4/boost.m4 +index be470a7..f1825ba 100644 +--- a/m4/boost.m4 ++++ b/m4/boost.m4 +@@ -479,7 +479,7 @@ dnl generated only once above (before we start the for loops). + *) + for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do + LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" +- LIBS="$boost_save_LIBS $Boost_lib_LIBS" ++ LIBS="$Boost_lib_LIBS $boost_save_LIBS" + _BOOST_AC_LINK_IFELSE([], + [boost_rpath_link_ldflag_found=yes + break], +-- +2.9.4 + diff --git a/features/buildroot/package/cc-tool/Config.in b/features/buildroot/package/cc-tool/Config.in new file mode 100644 index 00000000..8145b676 --- /dev/null +++ b/features/buildroot/package/cc-tool/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CC_TOOL + bool "cc-tool" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # boost-filesystem + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_FILESYSTEM + help + cc-tool provides support for Texas Instruments CC Debugger + for Linux OS in order to program 8051-based System-On-Chip + devices: CC254x CC253x CC243x CC251x CC111x + + http://sourceforge.net/projects/cctool/ + +comment "cc-tool needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/features/buildroot/package/cc-tool/cc-tool.hash b/features/buildroot/package/cc-tool/cc-tool.hash new file mode 100644 index 00000000..81844eec --- /dev/null +++ b/features/buildroot/package/cc-tool/cc-tool.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/cctool/files/ +sha1 f313e55f019ea5338438633f5b5e689b699343e1 cc-tool-0.26-src.tgz +md5 26960676f3e6264e612c299fbf8ec5ea cc-tool-0.26-src.tgz diff --git a/features/buildroot/package/cc-tool/cc-tool.mk b/features/buildroot/package/cc-tool/cc-tool.mk new file mode 100644 index 00000000..e170e06a --- /dev/null +++ b/features/buildroot/package/cc-tool/cc-tool.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# cc-tool +# +################################################################################ + +CC_TOOL_VERSION = 0.26 +CC_TOOL_SITE = http://downloads.sourceforge.net/project/cctool +CC_TOOL_SOURCE = cc-tool-$(CC_TOOL_VERSION)-src.tgz +CC_TOOL_LICENSE = GPL-2.0 +CC_TOOL_LICENSE_FILES = COPYING +CC_TOOL_DEPENDENCIES = boost libusb + +# we're patching boost.m4 +CC_TOOL_AUTORECONF = YES + +# Configure script "discovers" boost in /usr/local if not given explicitly +CC_TOOL_CONF_OPTS = --with-boost=$(STAGING_DIR)/usr +CC_TOOL_CONF_ENV = LIBS="$(CC_TOOL_LIBS)" + +# Help boost.m4 find the Boost Regex library, which needs the pthread +# library, but isn't detected using a modern (pkg-config) mechanism. +ifeq ($(BR2_STATIC_LIBS),y) +CC_TOOL_LIBS += -lpthread +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CC_TOOL_LIBS += -latomic +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/ccache/ccache.hash b/features/buildroot/package/ccache/ccache.hash new file mode 100644 index 00000000..779a2abc --- /dev/null +++ b/features/buildroot/package/ccache/ccache.hash @@ -0,0 +1,4 @@ +# sha256 computed locally +sha256 a6b129576328fcefad00cb72035bc87bc98b6a76aec0f4b59bed76d67a399b1f ccache-3.6.tar.xz +sha256 ec6b1a326ff93b2cc21df88a697ae470ff6927a55b8929e7e491b315e1563361 GPL-3.0.txt +sha256 2af7b3ec0ea737e1542e58db016122f6d75df9ea3b4f00c8151ecfef7040b39b LICENSE.adoc diff --git a/features/buildroot/package/ccache/ccache.mk b/features/buildroot/package/ccache/ccache.mk new file mode 100644 index 00000000..4d9de0a0 --- /dev/null +++ b/features/buildroot/package/ccache/ccache.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# ccache +# +################################################################################ + +CCACHE_VERSION = 3.6 +CCACHE_SITE = https://www.samba.org/ftp/ccache +CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz +CCACHE_LICENSE = GPL-3.0+, others +CCACHE_LICENSE_FILES = LICENSE.adoc GPL-3.0.txt + +# Force ccache to use its internal zlib. The problem is that without +# this, ccache would link against the zlib of the build system, but we +# might build and install a different version of zlib in $(O)/host +# afterwards, which ccache will pick up. This might break if there is +# a version mismatch. A solution would be to add host-zlib has a +# dependency of ccache, but it would require tuning the zlib .mk file +# to use HOSTCC_NOCCACHE as the compiler. Instead, we take the easy +# path: tell ccache to use its internal copy of zlib, so that ccache +# has zero dependency besides the C library. +HOST_CCACHE_CONF_OPTS += --with-bundled-zlib + +# We are ccache, so we can't use ccache +HOST_CCACHE_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + +# Patch host-ccache as follows: +# - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR +# is already used by autotargets for the ccache package. +# BR_CACHE_DIR is exported by Makefile based on config option +# BR2_CCACHE_DIR. +# - Change hard-coded last-ditch default to match path in .config, to avoid +# the need to specify BR_CACHE_DIR when invoking ccache directly. +# CCache replaces "%s" with the home directory of the current user, +# So rewrite BR_CACHE_DIR to take that into consideration for SDK purpose +HOST_CCACHE_DEFAULT_CCACHE_DIR = $(patsubst $(HOME)/%,\%s/%,$(BR_CACHE_DIR)) + +define HOST_CCACHE_PATCH_CONFIGURATION + sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/src/ccache.c + sed -i 's,"%s/.ccache","$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/conf.c +endef + +HOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION + +define HOST_CCACHE_MAKE_CACHE_DIR + mkdir -p $(BR_CACHE_DIR) +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR + +# Provide capability to do initial ccache setup (e.g. increase default size) +BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP)) +ifneq ($(BR_CCACHE_INITIAL_SETUP),) +define HOST_CCACHE_DO_INITIAL_SETUP + @$(call MESSAGE,"Applying initial settings") + $(CCACHE) $(BR_CCACHE_INITIAL_SETUP) + $(CCACHE) -s +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP +endif + +$(eval $(host-autotools-package)) + +ifeq ($(BR2_CCACHE),y) +ccache-stats: host-ccache + $(Q)$(CCACHE) -s + +ccache-options: host-ccache +ifeq ($(CCACHE_OPTIONS),) + $(Q)echo "Usage: make ccache-options CCACHE_OPTIONS=\"opts\"" + $(Q)echo "where 'opts' corresponds to one or more valid ccache options" \ + "(see ccache help text below)" + $(Q)echo +endif + $(Q)$(CCACHE) $(CCACHE_OPTIONS) +endif diff --git a/features/buildroot/package/ccid/Config.in b/features/buildroot/package/ccid/Config.in new file mode 100644 index 00000000..599bcc04 --- /dev/null +++ b/features/buildroot/package/ccid/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CCID + bool "ccid" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + select BR2_PACKAGE_LIBUSB + help + PC/SC driver for USB CCID smart card readers + + https://ccid.apdu.fr/ + +comment "ccid needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/features/buildroot/package/ccid/ccid.hash b/features/buildroot/package/ccid/ccid.hash new file mode 100644 index 00000000..6938eb5f --- /dev/null +++ b/features/buildroot/package/ccid/ccid.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ac17087be08880a0cdf99a8a2799a4ef004dc6ffa08b4d9b0ad995f39a53ff7c ccid-1.4.30.tar.bz2 +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/features/buildroot/package/ccid/ccid.mk b/features/buildroot/package/ccid/ccid.mk new file mode 100644 index 00000000..b4cc0f58 --- /dev/null +++ b/features/buildroot/package/ccid/ccid.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# ccid +# +################################################################################ + +CCID_VERSION = 1.4.30 +CCID_SOURCE = ccid-$(CCID_VERSION).tar.bz2 +CCID_SITE = https://ccid.apdu.fr/files +CCID_LICENSE = LGPL-2.1+ +CCID_LICENSE_FILES = COPYING +CCID_INSTALL_STAGING = YES +CCID_DEPENDENCIES = pcsc-lite host-pkgconf libusb +CCID_CONF_OPTS = --enable-usbdropdir=/usr/lib/pcsc/drivers + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define CCID_INSTALL_UDEV_RULES + if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \ + cp $(@D)/src/92_pcscd_ccid.rules $(TARGET_DIR)/etc/udev/rules.d/ ; \ + fi; +endef + +CCID_POST_INSTALL_TARGET_HOOKS += CCID_INSTALL_UDEV_RULES +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/ccrypt/Config.in b/features/buildroot/package/ccrypt/Config.in new file mode 100644 index 00000000..109271ae --- /dev/null +++ b/features/buildroot/package/ccrypt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CCRYPT + bool "ccrypt" + help + ccrypt is a utility for encrypting and decrypting files and + streams. + + http://ccrypt.sourceforge.net/ diff --git a/features/buildroot/package/ccrypt/ccrypt.hash b/features/buildroot/package/ccrypt/ccrypt.hash new file mode 100644 index 00000000..a93fcb9a --- /dev/null +++ b/features/buildroot/package/ccrypt/ccrypt.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 87d66da2170facabf6f2fc073586ae2c7320d4689980cfca415c74688e499ba0 ccrypt-1.10.tar.gz diff --git a/features/buildroot/package/ccrypt/ccrypt.mk b/features/buildroot/package/ccrypt/ccrypt.mk new file mode 100644 index 00000000..541a0e77 --- /dev/null +++ b/features/buildroot/package/ccrypt/ccrypt.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# ccrypt +# +################################################################################ + +CCRYPT_VERSION = 1.10 +CCRYPT_SITE = http://ccrypt.sourceforge.net/download/$(CCRYPT_VERSION) + +CCRYPT_LICENSE = GPL-2.0+ +CCRYPT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/cdrkit/0001-no-rcmd.patch b/features/buildroot/package/cdrkit/0001-no-rcmd.patch new file mode 100644 index 00000000..294779f7 --- /dev/null +++ b/features/buildroot/package/cdrkit/0001-no-rcmd.patch @@ -0,0 +1,22 @@ +[PATCH] fix build with uClibc + +cdrkit unconditionally enables code using rcmd(3), which isn't available +on uClibc. + +Signed-off-by: Peter Korsgaard +--- + include/xconfig.h.in | 1 - + 1 file changed, 1 deletion(-) + +Index: cdrkit-1.1.10/include/xconfig.h.in +=================================================================== +--- cdrkit-1.1.10.orig/include/xconfig.h.in ++++ cdrkit-1.1.10/include/xconfig.h.in +@@ -187,7 +187,6 @@ + * they are placed before the large file tests. + */ + +-#define HAVE_RCMD 1 /* rcmd() is present in libc/libsocket */ + #define HAVE_SOCKET 1 /* socket() is present in libc/libsocket */ + #define HAVE_SOCKETPAIR 1 /* socketpair() is present in libc/libsocket */ + #define HAVE_GETSERVBYNAME 1 /* getservbyname() is present in libc/libsocket */ diff --git a/features/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch b/features/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch new file mode 100644 index 00000000..2e0f6d52 --- /dev/null +++ b/features/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch @@ -0,0 +1,47 @@ +From 9454ef47db30caa4359766c8730d9d92f65c64f7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 8 Aug 2015 22:58:57 +0200 +Subject: [PATCH] define __THROW to avoid build issue with musl + +Fixes: +http://autobuild.buildroot.net/results/d27/d2781e70b04a207e2e9397d888032294c7285034/build-end.log + +Signed-off-by: Romain Naour +--- + genisoimage/sha256.h | 4 ++++ + genisoimage/sha512.h | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/genisoimage/sha256.h b/genisoimage/sha256.h +index e7f4cb9..bcae7ef 100644 +--- a/genisoimage/sha256.h ++++ b/genisoimage/sha256.h +@@ -29,6 +29,10 @@ + #include + #include + ++/* define __THROW to avoid build issue when it's not available from the libc */ ++#ifndef __THROW ++# define __THROW ++#endif + + /* Structure to save state of computation between the single steps. */ + struct sha256_ctx +diff --git a/genisoimage/sha512.h b/genisoimage/sha512.h +index 7298355..8cee8b0 100644 +--- a/genisoimage/sha512.h ++++ b/genisoimage/sha512.h +@@ -29,6 +29,10 @@ + #include + #include + ++/* define __THROW to avoid build issue when it's not available from the libc */ ++#ifndef __THROW ++# define __THROW ++#endif + + /* Structure to save state of computation between the single steps. */ + struct sha512_ctx +-- +2.4.3 + diff --git a/features/buildroot/package/cdrkit/Config.in b/features/buildroot/package/cdrkit/Config.in new file mode 100644 index 00000000..7b5b8865 --- /dev/null +++ b/features/buildroot/package/cdrkit/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CDRKIT + bool "cdrkit" + depends on BR2_USE_MMU # fork + # Needed for libbz + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_ZLIB + help + cdrkit is a suite of programs for recording CDs and DVDs, + blanking CD-RW media, creating ISO-9660 filesystem images, + extracting audio CD data, and more. + + http://www.cdrkit.org/ diff --git a/features/buildroot/package/cdrkit/cdrkit.hash b/features/buildroot/package/cdrkit/cdrkit.hash new file mode 100644 index 00000000..6ecb922d --- /dev/null +++ b/features/buildroot/package/cdrkit/cdrkit.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc +sha256 d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da cdrkit_1.1.11.orig.tar.gz diff --git a/features/buildroot/package/cdrkit/cdrkit.mk b/features/buildroot/package/cdrkit/cdrkit.mk new file mode 100644 index 00000000..f49d5150 --- /dev/null +++ b/features/buildroot/package/cdrkit/cdrkit.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# cdrkit +# +################################################################################ + +CDRKIT_VERSION = 1.1.11 +CDRKIT_SOURCE = cdrkit_$(CDRKIT_VERSION).orig.tar.gz +CDRKIT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit +CDRKIT_DEPENDENCIES = libcap bzip2 zlib +HOST_CDRKIT_DEPENDENCIES = host-libcap host-bzip2 host-zlib +CDRKIT_LICENSE = GPL-2.0 +CDRKIT_LICENSE_FILES = COPYING + +ifeq ($(BR2_ENDIAN),"BIG") +CDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=1 +else +CDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=0 +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/features/buildroot/package/cegui06/0001-stddef.h.patch b/features/buildroot/package/cegui06/0001-stddef.h.patch new file mode 100644 index 00000000..cc16effc --- /dev/null +++ b/features/buildroot/package/cegui06/0001-stddef.h.patch @@ -0,0 +1,26 @@ +includes: ptrdiff_t is defined in stddef.h + +ptrdiff_t is defined in the stddef.h header, so this +header must be included. + +Do the #include in a common header to avoid doing it +all over the place. + +Signed-off-by: "Yann E. MORIN" + +--- +Patch not sent upstream, it's a no-longer-maintained branch. +To be noted, however, is that the current devel branch is +still missing that include. + +diff -durN cegui06-0.6.2.orig/include/CEGUIBase.h cegui06-0.6.2/include/CEGUIBase.h +--- cegui06-0.6.2.orig//include/CEGUIBase.h 2008-02-11 15:38:27.000000000 +0100 ++++ cegui06-0.6.2/include/CEGUIBase.h 2012-08-19 22:51:50.260385978 +0200 +@@ -34,6 +34,7 @@ + #define _CEGUIBase_h_ + + #include ++#include + + // bring in configuration options + #include "CEGUIConfig.h" diff --git a/features/buildroot/package/cegui06/Config.in b/features/buildroot/package/cegui06/Config.in new file mode 100644 index 00000000..0139d324 --- /dev/null +++ b/features/buildroot/package/cegui06/Config.in @@ -0,0 +1,20 @@ +comment "cegui06 needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_CEGUI06 + bool "cegui06" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_PCRE + help + Crazy Eddie's GUI System is a free library providing windowing + and widgets for graphics APIs / engines where such + functionality is not natively available, or severely lacking. + The library is object orientated, written in C++, and targeted + at games developers who should be spending their time creating + great games, not building GUI sub-systems! + + http://www.cegui.org.uk/ diff --git a/features/buildroot/package/cegui06/cegui06.hash b/features/buildroot/package/cegui06/cegui06.hash new file mode 100644 index 00000000..21df3ca0 --- /dev/null +++ b/features/buildroot/package/cegui06/cegui06.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 eb77741cd9fcc927a876e8116b98691212e973d2264e2071406423f6ca3e305f CEGUI-0.6.2b.tar.gz diff --git a/features/buildroot/package/cegui06/cegui06.mk b/features/buildroot/package/cegui06/cegui06.mk new file mode 100644 index 00000000..d3da3ebc --- /dev/null +++ b/features/buildroot/package/cegui06/cegui06.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# cegui06 +# +################################################################################ + +# Do not update the version, we need exactly that one for Spice. +CEGUI06_VERSION_MAJOR = 0.6.2 +CEGUI06_VERSION = $(CEGUI06_VERSION_MAJOR)b +CEGUI06_SOURCE = CEGUI-$(CEGUI06_VERSION).tar.gz +CEGUI06_SITE = http://downloads.sourceforge.net/project/crayzedsgui/CEGUI%20Mk-2/$(CEGUI06_VERSION_MAJOR) +CEGUI06_LICENSE = MIT +CEGUI06_LICENSE_FILES = COPYING +CEGUI06_INSTALL_STAGING = YES + +CEGUI06_DEPENDENCIES = \ + expat \ + freetype \ + pcre + +CEGUI06_CONF_OPTS = \ + --enable-expat \ + --disable-external-tinyxml \ + --disable-xerces-c \ + --disable-libxml \ + --disable-tinyxml \ + --disable-opengl-renderer \ + --disable-external-glew \ + --disable-irrlicht-renderer \ + --disable-directfb-renderer \ + --disable-samples \ + --disable-lua-module \ + --disable-toluacegui \ + --disable-external-toluapp + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/celt051/0001-fix-gnuc-prereq.patch b/features/buildroot/package/celt051/0001-fix-gnuc-prereq.patch new file mode 100644 index 00000000..8efd518d --- /dev/null +++ b/features/buildroot/package/celt051/0001-fix-gnuc-prereq.patch @@ -0,0 +1,29 @@ +Fix musl build + +musl does not define __GNUC_PREREQ. Use patch from Alpine Linux +(http://git.alpinelinux.org/cgit/aports/plain/main/celt051/fix-gnuc-prereq.patch). + +Fixes http://autobuild.buildroot.net/results/223/223ba6003bdd7e0c896455c21fa8fee943b4e716/ + +Signed-off-by: Jörg Krause + +--- celt-0.5.1.3.orig/libcelt/ecintrin.h ++++ celt-0.5.1.3/libcelt/ecintrin.h +@@ -52,8 +52,7 @@ + /*Count leading zeros. + This macro should only be used for implementing ec_ilog(), if it is defined. + All other code should use EC_ILOG() instead.*/ +-#ifdef __GNUC_PREREQ +-#if __GNUC_PREREQ(3,4) ++#if defined(__GNUC__) && ((__GNUC__<<16)+__GNUC_MINOR__) >= 0x304 + # if INT_MAX>=2147483647 + # define EC_CLZ0 sizeof(unsigned)*CHAR_BIT + # define EC_CLZ(_x) (__builtin_clz(_x)) +@@ -61,7 +60,6 @@ + # define EC_CLZ0 sizeof(unsigned long)*CHAR_BIT + # define EC_CLZ(_x) (__builtin_clzl(_x)) + # endif +-#endif + #endif + + #if defined(EC_CLZ) diff --git a/features/buildroot/package/celt051/Config.in b/features/buildroot/package/celt051/Config.in new file mode 100644 index 00000000..e1513190 --- /dev/null +++ b/features/buildroot/package/celt051/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CELT051 + bool "celt051" + select BR2_PACKAGE_LIBOGG + help + The CELT ultra-low delay audio codec + + The CELT codec is a compression algorithm for audio. Like MP3, + Vorbis, and AAC it is suitable for transmitting music with + high quality. Unlike these formats CELT imposes very little + delay on the signal, even less than is typical for speech + centric formats like Speex, GSM, or G.729. + + Note: this is version 0.5.1.3 of celt. + + http://www.celt-codec.org/ diff --git a/features/buildroot/package/celt051/celt051.hash b/features/buildroot/package/celt051/celt051.hash new file mode 100644 index 00000000..4ad212b2 --- /dev/null +++ b/features/buildroot/package/celt051/celt051.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/celt/SHA1SUMS +sha1 eb05030108c36cb063c3f026c349f16d78e0a497 celt-0.5.1.3.tar.gz diff --git a/features/buildroot/package/celt051/celt051.mk b/features/buildroot/package/celt051/celt051.mk new file mode 100644 index 00000000..01da5c93 --- /dev/null +++ b/features/buildroot/package/celt051/celt051.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# celt +# +################################################################################ + +# Although version newer than 0.5.1.3 exists, we're +# stuck with 0.5.1.3 for use by Spice (coming later) +CELT051_VERSION = 0.5.1.3 +CELT051_SOURCE = celt-$(CELT051_VERSION).tar.gz +CELT051_SITE = http://downloads.xiph.org/releases/celt +CELT051_LICENSE = BSD-2-Clause +CELT051_LICENSE_FILES = COPYING +CELT051_INSTALL_STAGING = YES +CELT051_DEPENDENCIES = libogg + +# Need to specify --with-ogg, otherwise /usr/lib may be searched for +# if target is the same kind as host (ie. same arch, same bitness, +# same endianness, so that /usr/lib contains libraries linkable by +# our cross-compiler) +CELT051_CONF_OPTS = \ + --enable-fixed-point \ + --disable-fixed-point-debug \ + --disable-experimental-postfilter \ + --disable-static-modes \ + --disable-assertions \ + --disable-oggtest \ + --with-ogg=$(STAGING_DIR)/usr + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/cgic/0001-prepare_makefile.patch b/features/buildroot/package/cgic/0001-prepare_makefile.patch new file mode 100644 index 00000000..15adc4cd --- /dev/null +++ b/features/buildroot/package/cgic/0001-prepare_makefile.patch @@ -0,0 +1,44 @@ +Makefile: fix for cross-compilation + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it] +Signed-off-by: "Yann E. MORIN" +diff -rupN cgic206/Makefile cgic206-br/Makefile +--- cgic206/Makefile 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206-br/Makefile 2015-01-16 11:18:03.714874000 -0500 +@@ -1,15 +1,14 @@ +-CFLAGS=-g -Wall +-CC=gcc +-AR=ar +-RANLIB=ranlib + LIBS=-L./ -lcgic + + all: libcgic.a cgictest.cgi capture + + install: libcgic.a +- cp libcgic.a /usr/local/lib +- cp cgic.h /usr/local/include +- @echo libcgic.a is in /usr/local/lib. cgic.h is in /usr/local/include. ++ cp libcgic.a $(PREFIX)/usr/lib ++ cp cgic.h $(PREFIX)/usr/include ++ @echo libcgic.a is in $(PREFIX)/usr/lib. cgic.h is in $(PREFIX)/usr/include. ++ ++cgi.o: cgic.c cgic.h ++ $(CC) $(CFLAGS) cgic.c -o cgic.o + + libcgic.a: cgic.o cgic.h + rm -f libcgic.a +@@ -19,10 +18,10 @@ libcgic.a: cgic.o cgic.h + #mingw32 and cygwin users: replace .cgi with .exe + + cgictest.cgi: cgictest.o libcgic.a +- gcc cgictest.o -o cgictest.cgi ${LIBS} ++ $(CC) cgictest.o -o cgictest.cgi ${LIBS} + + capture: capture.o libcgic.a +- gcc capture.o -o capture ${LIBS} ++ $(CC) capture.o -o capture ${LIBS} + + clean: + rm -f *.o *.a cgictest.cgi capture diff --git a/features/buildroot/package/cgic/0002-file_enhancements.patch b/features/buildroot/package/cgic/0002-file_enhancements.patch new file mode 100644 index 00000000..a6f82fce --- /dev/null +++ b/features/buildroot/package/cgic/0002-file_enhancements.patch @@ -0,0 +1,56 @@ +Create better temporary files. + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it; split the patch in two + independent fixes] +Signed-off-by: "Yann E. MORIN" + +diff -rupN cgic206/cgic.c cgic206_tempfile/cgic.c +--- cgic206/cgic.c 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206_tempfile/cgic.c 2015-01-21 11:58:45.436384908 -0500 +@@ -22,6 +22,8 @@ + #define CGICDEBUGEND + #endif /* CGICDEBUG */ + ++#define _GNU_SOURCE ++ + #include + #include + #include +@@ -34,11 +36,11 @@ + #include + + /* cgic 2.01 */ +-#include + + #else + #include + #endif /* WIN32 */ ++#include + #include "cgic.h" + + #define cgiStrEq(a, b) (!strcmp((a), (b))) +@@ -636,16 +638,17 @@ static cgiParseResultType getTempFileNam + window between the file's creation and the + chmod call (glibc 2.0.6 and lower might + otherwise have allowed this). */ ++ mode_t umode; + int outfd; ++ umode = umask(0600); + strcpy(tfileName, cgicTempDir "/cgicXXXXXX"); +- outfd = mkstemp(tfileName); ++ outfd = mkostemp(tfileName, O_CLOEXEC | O_NOATIME); ++ umask(umode); + if (outfd == -1) { + return cgiParseIO; + } +- close(outfd); +- /* Fix the permissions */ +- if (chmod(tfileName, 0600) != 0) { +- unlink(tfileName); ++ ++ if (close(outfd)) { + return cgiParseIO; + } + #else diff --git a/features/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch b/features/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch new file mode 100644 index 00000000..f66227b6 --- /dev/null +++ b/features/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch @@ -0,0 +1,43 @@ +Restore lost functionality + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it] +Signed-off-by: "Yann E. MORIN" + +diff -rupN cgic206/cgic.c cgic206_tempfile/cgic.c +--- cgic206/cgic.c 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206_tempfile/cgic.c 2015-01-21 11:58:45.436384908 -0500 +@@ -1278,6 +1278,20 @@ cgiFormResultType cgiFormFileContentType + } + } + ++const char* cgiFormFileGetTempfileName( ++ char* name) ++{ ++ cgiFormEntry *e; ++ e = cgiFormEntryFindFirst(name); ++ if (!e) { ++ return NULL; ++ } else if (!strlen(e->tfileName)) { ++ return NULL; ++ } else { ++ return e->tfileName; ++ } ++} ++ + cgiFormResultType cgiFormFileSize( + char *name, int *sizeP) + { +diff -rupN cgic206/cgic.h cgic206_tempfile/cgic.h +--- cgic206/cgic.h 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206_tempfile/cgic.h 2015-01-21 11:53:02.915148026 -0500 +@@ -141,6 +141,8 @@ extern cgiFormResultType cgiFormRadio( + char *name, char **valuesText, int valuesTotal, + int *result, int defaultV); + ++extern const char* cgiFormFileGetTempfileName(char* name); ++ + /* The paths returned by this function are the original names of files + as reported by the uploading web browser and shoult NOT be + blindly assumed to be "safe" names for server-side use! */ diff --git a/features/buildroot/package/cgic/Config.in b/features/buildroot/package/cgic/Config.in new file mode 100644 index 00000000..402460d0 --- /dev/null +++ b/features/buildroot/package/cgic/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CGIC + bool "cgic" + help + C CGI library + + http://www.boutell.com/cgic/ diff --git a/features/buildroot/package/cgic/cgic.hash b/features/buildroot/package/cgic/cgic.hash new file mode 100644 index 00000000..fa1d0bc9 --- /dev/null +++ b/features/buildroot/package/cgic/cgic.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1e8834642a4b89528bb7bde2f287e133c6b07e210e68681a34137c436d59d320 cgic207.tar.gz diff --git a/features/buildroot/package/cgic/cgic.mk b/features/buildroot/package/cgic/cgic.mk new file mode 100644 index 00000000..cd084130 --- /dev/null +++ b/features/buildroot/package/cgic/cgic.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# cgic +# +################################################################################ + +CGIC_VERSION = 2.07 +CGIC_SOURCE = cgic207.tar.gz +CGIC_SITE = http://boutell.com/cgic +CGIC_LICENSE = Custom +CGIC_LICENSE_FILES = license.txt + +# Installs only a static library and a header file +CGIC_INSTALL_STAGING = YES +CGIC_INSTALL_TARGET = NO + +define CGIC_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) libcgic.a +endef + +define CGIC_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) PREFIX=$(STAGING_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/cgilua/Config.in b/features/buildroot/package/cgilua/Config.in new file mode 100644 index 00000000..a6761313 --- /dev/null +++ b/features/buildroot/package/cgilua/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CGILUA + bool "cgilua" + select BR2_PACKAGE_LUAFILESYSTEM # runtime + help + CGILua is a tool for creating dynamic HTML pages + and manipulating input data from Web forms. + + http://keplerproject.github.com/cgilua diff --git a/features/buildroot/package/cgilua/cgilua.hash b/features/buildroot/package/cgilua/cgilua.hash new file mode 100644 index 00000000..8bdb1d18 --- /dev/null +++ b/features/buildroot/package/cgilua/cgilua.hash @@ -0,0 +1,3 @@ +# computed by luarocks/buildroot +sha256 7d4883e6a89b3463a1d35b8084a6e2afbbb584af7aca1169380e92af0f848413 cgilua-5.2.1-1.src.rock +sha256 0cf6f0858b0fd90bb5705c8ace77a8afd11e8fce1427fe0a48156937222b8c28 cgilua-5.2.1/doc/us/license.html diff --git a/features/buildroot/package/cgilua/cgilua.mk b/features/buildroot/package/cgilua/cgilua.mk new file mode 100644 index 00000000..cd78841f --- /dev/null +++ b/features/buildroot/package/cgilua/cgilua.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# cgilua +# +################################################################################ + +CGILUA_VERSION = 5.2.1-1 +CGILUA_LICENSE = MIT +CGILUA_LICENSE_FILES = $(CGILUA_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/features/buildroot/package/cgroupfs-mount/Config.in b/features/buildroot/package/cgroupfs-mount/Config.in new file mode 100644 index 00000000..0b2e4ba1 --- /dev/null +++ b/features/buildroot/package/cgroupfs-mount/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CGROUPFS_MOUNT + bool "cgroupfs-mount" + depends on !BR2_INIT_SYSTEMD + help + cgroupfs mount and umount scripts. + + requires a Linux kernel >= 3.0 with the following options + enabled: + + - CONFIG_BLK_CGROUP + - CONFIG_CGROUPS + - CONFIG_CGROUP_CPUACCT + - CONFIG_CGROUP_DEVICE + - CONFIG_CGROUP_FREEZER + - CONFIG_CGROUP_WRITEBACK + - CONFIG_CGROUP_SCHED + - CONFIG_CGROUP_PIDS + + https://github.com/tianon/cgroupfs-mount diff --git a/features/buildroot/package/cgroupfs-mount/S30cgroupfs b/features/buildroot/package/cgroupfs-mount/S30cgroupfs new file mode 100644 index 00000000..aa0a29b1 --- /dev/null +++ b/features/buildroot/package/cgroupfs-mount/S30cgroupfs @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Set up cgroupfs mounts. +# + +start() { + printf "Mounting cgroupfs hierarchy: " + /usr/bin/cgroupfs-mount + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Unmounting cgroupfs hierarchy: " + /usr/bin/cgroupfs-umount + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/features/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash b/features/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash new file mode 100644 index 00000000..926a031d --- /dev/null +++ b/features/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d6c8aff7af59c7d0082ee3018c97f73b0421e81a49bb28ad9f66a36da5cd6ec7 cgroupfs-mount-1.4.tar.gz diff --git a/features/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk b/features/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk new file mode 100644 index 00000000..9a767999 --- /dev/null +++ b/features/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# cgroupfs-mount +# +################################################################################ + +CGROUPFS_MOUNT_VERSION = 1.4 +CGROUPFS_MOUNT_SITE = $(call github,tianon,cgroupfs-mount,$(CGROUPFS_MOUNT_VERSION)) +CGROUPFS_MOUNT_LICENSE = GPL-3.0+ +CGROUPFS_MOUNT_LICENSE_FILES = debian/copyright + +define CGROUPFS_MOUNT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cgroupfs-mount $(TARGET_DIR)/usr/bin/cgroupfs-mount + $(INSTALL) -D -m 0755 $(@D)/cgroupfs-umount $(TARGET_DIR)/usr/bin/cgroupfs-umount +endef + +define CGROUPFS_MOUNT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(CGROUPFS_MOUNT_PKGDIR)/S30cgroupfs \ + $(TARGET_DIR)/etc/init.d/S30cgroupfs +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/check/Config.in b/features/buildroot/package/check/Config.in new file mode 100644 index 00000000..2312fbf8 --- /dev/null +++ b/features/buildroot/package/check/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CHECK + bool "check" + help + Check is a unit testing framework for C. + + https://libcheck.github.io/check/ diff --git a/features/buildroot/package/check/check.hash b/features/buildroot/package/check/check.hash new file mode 100644 index 00000000..ac7fddd4 --- /dev/null +++ b/features/buildroot/package/check/check.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 464201098bee00e90f5c4bdfa94a5d3ead8d641f9025b560a27755a83b824234 check-0.12.0.tar.gz +# License files, locally calculated +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LESSER diff --git a/features/buildroot/package/check/check.mk b/features/buildroot/package/check/check.mk new file mode 100644 index 00000000..84b8c533 --- /dev/null +++ b/features/buildroot/package/check/check.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# check +# +################################################################################ + +CHECK_VERSION = 0.12.0 +CHECK_SITE = https://github.com/libcheck/check/releases/download/$(CHECK_VERSION) +CHECK_INSTALL_STAGING = YES +CHECK_DEPENDENCIES = host-pkgconf +CHECK_LICENSE = LGPL-2.1+ +CHECK_LICENSE_FILES = COPYING.LESSER + +# 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)) diff --git a/features/buildroot/package/checkpolicy/Config.in b/features/buildroot/package/checkpolicy/Config.in new file mode 100644 index 00000000..97ad0b77 --- /dev/null +++ b/features/buildroot/package/checkpolicy/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CHECKPOLICY + bool "checkpolicy" + depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_USES_GLIBC # libselinux + depends on !BR2_arc # libselinux + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_FLEX + help + checkpolicy is the SELinux policy compiler. It uses libsepol + to generate the binary policy. checkpolicy uses the static + libsepol since it deals with low level details of the policy + that have not been encapsulated/abstracted by a proper + shared library interface. + + http://selinuxproject.org/page/Main_Page + +comment "checkpolicy needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/features/buildroot/package/checkpolicy/Config.in.host b/features/buildroot/package/checkpolicy/Config.in.host new file mode 100644 index 00000000..240a5b6d --- /dev/null +++ b/features/buildroot/package/checkpolicy/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_CHECKPOLICY + bool "host checkpolicy" + help + checkpolicy is the SELinux policy compiler. It uses libsepol + to generate the binary policy. checkpolicy uses the static + libsepol since it deals with low level details of the policy + that have not been encapsulated/abstracted by a proper + shared library interface. + + http://selinuxproject.org/page/Main_Page diff --git a/features/buildroot/package/checkpolicy/checkpolicy.hash b/features/buildroot/package/checkpolicy/checkpolicy.hash new file mode 100644 index 00000000..9e77b9b0 --- /dev/null +++ b/features/buildroot/package/checkpolicy/checkpolicy.hash @@ -0,0 +1,5 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 a946c32b284532447857e4c48830f8816867c61220c8c08bdd32e6f691335f8e checkpolicy-2.9.tar.gz + +# Hash for license file +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/features/buildroot/package/checkpolicy/checkpolicy.mk b/features/buildroot/package/checkpolicy/checkpolicy.mk new file mode 100644 index 00000000..8f1ec725 --- /dev/null +++ b/features/buildroot/package/checkpolicy/checkpolicy.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# checkpolicy +# +################################################################################ + +CHECKPOLICY_VERSION = 2.9 +CHECKPOLICY_SITE = https://github.com/SELinuxProject/selinux/releases/download/20190315 +CHECKPOLICY_LICENSE = GPL-2.0 +CHECKPOLICY_LICENSE_FILES = COPYING + +CHECKPOLICY_DEPENDENCIES = libselinux flex host-flex host-bison + +CHECKPOLICY_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \ + LEX="$(HOST_DIR)/bin/flex" \ + YACC="$(HOST_DIR)/bin/bison -y" + +# DESTDIR is used at build time to find libselinux +define CHECKPOLICY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR) +endef + +define CHECKPOLICY_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install + +endef + +define CHECKPOLICY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +HOST_CHECKPOLICY_DEPENDENCIES = host-libselinux host-flex host-bison + +# PREFIX is used at build time to find host-libselinux +HOST_CHECKPOLICY_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + LEX="$(HOST_DIR)/bin/flex" \ + YACC="$(HOST_DIR)/bin/bison -y" + +define HOST_CHECKPOLICY_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) +endef + +define HOST_CHECKPOLICY_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/checksec/0001-checksec-Fixed-issue-with-relative-path.patch b/features/buildroot/package/checksec/0001-checksec-Fixed-issue-with-relative-path.patch new file mode 100644 index 00000000..3ed75a3c --- /dev/null +++ b/features/buildroot/package/checksec/0001-checksec-Fixed-issue-with-relative-path.patch @@ -0,0 +1,43 @@ +From b48a2dfae26fa3b4af8e65fb5953b3caf62c137b Mon Sep 17 00:00:00 2001 +From: Paresh Chaudhary +Date: Mon, 21 May 2018 14:34:23 -0500 +Subject: [PATCH] checksec: Fixed issue with relative path + +Before this patch, the checksec script was not able to find existing +directories when the user passed a relative path with --dir/-d, +the script aborted with a "No such file or directory". The same error +was reported when the script was executed through a relative path. + +https://github.com/slimm609/checksec.sh/issues/54 + +Signed-off-by: Paresh Chaudhary +Signed-off-by: Matt Weber +--- + checksec | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/checksec b/checksec +index 24b521f..baf8d63 100755 +--- a/checksec ++++ b/checksec +@@ -1193,7 +1193,7 @@ do + echo_message "RELRO STACK CANARY NX PIE RPATH RUNPATH FORTIFY Checked Total Filename\n" '' "\n" "{ \"dir\": { \"name\":\"$tempdir\" }," + fdircount=0 + fdirtotal=0 +- for N in $(find $tempdir -type f); do ++ for N in $(find . -type f); do + if [[ "$N" != "[A-Za-z1-0]*" ]]; then + out=$(file "$N") + if [[ $out =~ ELF ]] ; then +@@ -1201,7 +1201,7 @@ do + fi + fi + done +- for N in $(find $tempdir -type f); do ++ for N in $(find . -type f); do + if [[ "$N" != "[A-Za-z1-0]*" ]]; then + # read permissions? + if [[ ! -r "$N" ]]; then +-- +1.9.1 + diff --git a/features/buildroot/package/checksec/Config.in.host b/features/buildroot/package/checksec/Config.in.host new file mode 100644 index 00000000..e4e8903b --- /dev/null +++ b/features/buildroot/package/checksec/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_CHECKSEC + bool "host checksec" + help + This tool provides a shell script to check the + properties of executables + (PIE,RELRO,Stack Canaries,Fortify Source). + It also has a kernel test mode that can run on target + for testing of PaX, ASLR, heap and config hardening. + + NOTE: when using this tool as a host tool, the tool + can offline check a target folder of elf files for + hardening features enabled in those elf files. There + are other features of this tool, like the kernel test + feature that are not functional offline, but require the + user to execute in a chroot or on target. + + https://github.com/slimm609/checksec.sh.git diff --git a/features/buildroot/package/checksec/checksec.hash b/features/buildroot/package/checksec/checksec.hash new file mode 100644 index 00000000..e3d1ffd5 --- /dev/null +++ b/features/buildroot/package/checksec/checksec.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 510b0b0528f15d0bf13fa1ae7140d2b9fc9261323c98ff76c011bef475a69c14 checksec-cdefe53eb72e6e8f23308417d2fc6b68cba9dbac.tar.gz +sha256 c5e2a8e188040fc34eb9362084778a2e25f8d1f888e47a2be09efa7cecd9c70d LICENSE.txt diff --git a/features/buildroot/package/checksec/checksec.mk b/features/buildroot/package/checksec/checksec.mk new file mode 100644 index 00000000..bfe54c26 --- /dev/null +++ b/features/buildroot/package/checksec/checksec.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# checksec +# +################################################################################ + +CHECKSEC_VERSION = cdefe53eb72e6e8f23308417d2fc6b68cba9dbac +CHECKSEC_SITE = $(call github,slimm609,checksec.sh,$(CHECKSEC_VERSION)) +CHECKSEC_LICENSE = BSD-3-Clause +CHECKSEC_LICENSE_FILES = LICENSE.txt + +define HOST_CHECKSEC_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/checksec $(HOST_DIR)/bin/checksec +endef + +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/chipmunk/0001-Fix-build-failure-on-musl.patch b/features/buildroot/package/chipmunk/0001-Fix-build-failure-on-musl.patch new file mode 100644 index 00000000..4485e937 --- /dev/null +++ b/features/buildroot/package/chipmunk/0001-Fix-build-failure-on-musl.patch @@ -0,0 +1,37 @@ +From 231c1fb97785290aaac89ed74d7cb24eaa74b363 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 2 Sep 2018 12:05:22 +0200 +Subject: [PATCH] Fix build failure on musl + +Build fails on: +/home/test/autobuild/run/instance-0/output/build/chipmunk-7.0.2/src/cpHastySpace.c:11:24: fatal error: sys/sysctl.h: No such file or directory + +Indeed, sys/sysctl.h is not available on musl so include this header +only if __APPLE__ is defined as sysctlbyname is only used in this case. + +Fixes: + - http://autobuild.buildroot.org/results/e5be2f8eb9315a9054e1c8d854dec37cbb28eed7 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/slembcke/Chipmunk2D/pull/171] +--- + src/cpHastySpace.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/cpHastySpace.c b/src/cpHastySpace.c +index 8dca425..e087df8 100644 +--- a/src/cpHastySpace.c ++++ b/src/cpHastySpace.c +@@ -8,7 +8,9 @@ + + //#include + #ifndef _WIN32 ++#ifdef __APPLE__ + #include ++#endif + #include + #else + #ifndef WIN32_LEAN_AND_MEAN +-- +2.17.1 + diff --git a/features/buildroot/package/chipmunk/Config.in b/features/buildroot/package/chipmunk/Config.in new file mode 100644 index 00000000..7275d684 --- /dev/null +++ b/features/buildroot/package/chipmunk/Config.in @@ -0,0 +1,12 @@ + +comment "chipmunk needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_CHIPMUNK + bool "chipmunk" + depends on BR2_PACKAGE_HAS_LIBGL + help + Chipmunk2D is a simple, lightweight, fast and portable 2D + rigid body physics library written in C. + + http://chipmunk-physics.net/ diff --git a/features/buildroot/package/chipmunk/chipmunk.hash b/features/buildroot/package/chipmunk/chipmunk.hash new file mode 100644 index 00000000..7bd9b156 --- /dev/null +++ b/features/buildroot/package/chipmunk/chipmunk.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 6b6d8d5d910c4442fb9c8c4c46a178126d8c21d075cdb3ce439a7f8d8757b0ca Chipmunk-7.0.2.tar.gz + +# Hash for license file: +sha256 109cedb0301cba4e05fa99241f162bdad015c9541ae84b420b0148ac1ea588e2 LICENSE.txt diff --git a/features/buildroot/package/chipmunk/chipmunk.mk b/features/buildroot/package/chipmunk/chipmunk.mk new file mode 100644 index 00000000..a84af228 --- /dev/null +++ b/features/buildroot/package/chipmunk/chipmunk.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# chipmunk +# +################################################################################ + +CHIPMUNK_VERSION = 7.0.2 +CHIPMUNK_SITE = https://github.com/slembcke/Chipmunk2D/archive +CHIPMUNK_SOURCE = Chipmunk-$(CHIPMUNK_VERSION).tar.gz +CHIPMUNK_INSTALL_STAGING = YES +CHIPMUNK_LICENSE = MIT +CHIPMUNK_LICENSE_FILES = LICENSE.txt +CHIPMUNK_DEPENDENCIES = libgl +CHIPMUNK_CONF_OPTS = -DBUILD_DEMOS=OFF + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CHIPMUNK_CONF_OPTS += -DBUILD_STATIC=ON -DINSTALL_STATIC=ON +else +CHIPMUNK_CONF_OPTS += -DBUILD_STATIC=OFF -DINSTALL_STATIC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CHIPMUNK_CONF_OPTS += -DBUILD_SHARED=ON +else +CHIPMUNK_CONF_OPTS += -DBUILD_SHARED=OFF +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch b/features/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch new file mode 100644 index 00000000..2618396b --- /dev/null +++ b/features/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch @@ -0,0 +1,217 @@ +From 3163bf87d7b955d08dedd5ebaccb1b2a86ffdcb9 Mon Sep 17 00:00:00 2001 +From: Simon Howard +Date: Thu, 25 Feb 2016 22:55:04 -0500 +Subject: [PATCH] configure: Switch to pkg-config macros. + +All dependency libraries install pkg-config .pc files nowadays, which +makes the process of looking them up a lot simpler. Get rid of the SDL +workaround macro as it's not needed. + +[Backported from upstream commit 3163bf87d7b955d08dedd5ebaccb1b2a86ffdcb9. +Fixes static linking issues with SDL_mixer.] + +Signed-off-by: Rodrigo Rebello +--- + configure.ac | 117 ++++++++++++++-------------------------- + opl/examples/Makefile.am | 2 +- + src/Makefile.am | 7 ++- + textscreen/Makefile.am | 2 +- + textscreen/examples/Makefile.am | 2 +- + 5 files changed, 49 insertions(+), 81 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7b03485..48f83ef 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -33,89 +33,54 @@ then + CFLAGS="-O$OPT_LEVEL -g $WARNINGS $orig_CFLAGS" + fi + +-dnl Search for SDL ... +- +-AM_PATH_SDL(1.1.3) +- +-# Add the SDL compiler flags to the default compiler flag variables. +-# It is important to do this now, before checking for headers and +-# library functions. The reason being that on Windows, sdl-config +-# sets the -mno-cygwin compiler option in order to generate MinGW +-# executables. If we don't do this now, we might end up discovering +-# header files that are not actually available to us when we come +-# to compile. +- +-CFLAGS="$CFLAGS $SDL_CFLAGS" +-LDFLAGS="$LDFLAGS $SDL_LIBS" +- +-# On some platforms, SDL renames main() to SDL_main() using a #define, +-# so that its own main, stored in the SDLmain library, can be run first. +-# Unfortunately, this causes problems for autoconf, which builds +-# test programs to probe the system. All library/header/symbol checks +-# must be run in this block, that performs a workaround for the problem. +- +-AC_SDL_MAIN_WORKAROUND([ +- +- # Check for SDL_mixer. +- +- AC_CHECK_LIB(SDL_mixer,Mix_LoadMUS,[ +- SDLMIXER_LIBS="$SDLMIXER_LIBS -lSDL_mixer" +- ],[ +- echo "*** Could not find SDL_mixer. Please install it." +- exit -1 +- ]) +- +- # Check for SDL_net. +- +- AC_CHECK_LIB(SDL_net,SDLNet_UDP_Send,[ +- SDLNET_LIBS="$SDLNET_LIBS -lSDL_net" +- ],[ +- echo "*** Could not find SDL_net. Please install it." +- exit -1 +- ]) +- +- # Check for libsamplerate. +- AC_ARG_WITH([libsamplerate], +- AS_HELP_STRING([--without-libsamplerate], +- [Build without libsamplerate @<:@default=check@:>@]), +- [], +- [ +- [with_libsamplerate=check] +- ]) +- AS_IF([test "x$with_libsamplerate" != xno], [ +- AC_CHECK_LIB(samplerate, src_new, [], [ +- AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE( +- [--with-libsamplerate was given, but test for libsamplerate failed]) +- ]) ++PKG_CHECK_MODULES([SDL], [sdl]) ++PKG_CHECK_MODULES([SDLMIXER], [SDL_mixer]) ++PKG_CHECK_MODULES([SDLNET], [SDL_net]) ++ ++# Check for libsamplerate. ++AC_ARG_WITH([libsamplerate], ++AS_HELP_STRING([--without-libsamplerate], ++ [Build without libsamplerate @<:@default=check@:>@]), ++[], ++[ ++ [with_libsamplerate=check] ++]) ++AS_IF([test "x$with_libsamplerate" != xno], [ ++ PKG_CHECK_MODULES([SAMPLERATE], [samplerate >= 0.1.8], [ ++ AC_DEFINE([HAVE_LIBSAMPLERATE], [1], [libsamplerate installed]) ++ ], [ ++ AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE( ++ [--with-libsamplerate was given, but test for libsamplerate failed]) + ]) + ]) +- # Check for libpng. +- AC_ARG_WITH([libpng], +- AS_HELP_STRING([--without-libpng], +- [Build without libpng @<:@default=check@:>@]), +- [], +- [ +- [with_libpng=check] +- ]) +- AS_IF([test "x$with_libpng" != xno], [ +- AC_CHECK_LIB(z, zlibVersion) +- AC_CHECK_LIB(png, png_get_io_ptr, [], [ +- AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE( +- [--with-libpng was given, but test for libpng failed]) +- ]) ++]) ++# Check for libpng. ++AC_ARG_WITH([libpng], ++AS_HELP_STRING([--without-libpng], ++ [Build without libpng @<:@default=check@:>@]), ++[], ++[ ++ [with_libpng=check] ++]) ++AS_IF([test "x$with_libpng" != xno], [ ++ PKG_CHECK_MODULES([PNG], [libpng >= 1.6.10], [ ++ AC_DEFINE([HAVE_LIBPNG], [1], [libpng installed]) ++ ], [ ++ AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE( ++ [--with-libpng was given, but test for libpng failed]) + ]) + ]) +- AC_CHECK_LIB(m, log) ++]) ++AC_CHECK_LIB(m, log) + +- AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h]) +- AC_CHECK_FUNCS(mmap ioperm) ++AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h]) ++AC_CHECK_FUNCS(mmap ioperm) + +- # OpenBSD I/O i386 library for I/O port access. +- # (64 bit has the same thing with a different name!) ++# OpenBSD I/O i386 library for I/O port access. ++# (64 bit has the same thing with a different name!) + +- AC_CHECK_LIB(i386, i386_iopl) +- AC_CHECK_LIB(amd64, amd64_iopl) +-]) ++AC_CHECK_LIB(i386, i386_iopl) ++AC_CHECK_LIB(amd64, amd64_iopl) + + case $host in + *cygwin* | *mingw* ) +diff --git a/opl/examples/Makefile.am b/opl/examples/Makefile.am +index 9afcd51..54c37f8 100644 +--- a/opl/examples/Makefile.am ++++ b/opl/examples/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/opl ++AM_CFLAGS = -I$(top_srcdir)/opl @SDL_CFLAGS@ + + noinst_PROGRAMS=droplay + +diff --git a/src/Makefile.am b/src/Makefile.am +index 78ee3ba..9624e01 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -21,7 +21,8 @@ execgames_SCRIPTS = $(SETUP_BINARIES) + AM_CFLAGS = -I$(top_srcdir)/textscreen \ + -I$(top_srcdir)/opl \ + -I$(top_srcdir)/pcsound \ +- @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ ++ @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ \ ++ @SAMPLERATE_CFLAGS@ @PNG_CFLAGS@ + + # Common source files used by absolutely everything: + +@@ -150,7 +151,9 @@ EXTRA_LIBS = \ + @LDFLAGS@ \ + @SDL_LIBS@ \ + @SDLMIXER_LIBS@ \ +- @SDLNET_LIBS@ ++ @SDLNET_LIBS@ \ ++ @SAMPLERATE_LIBS@ \ ++ @PNG_LIBS@ + + if HAVE_WINDRES + @PROGRAM_PREFIX@doom_SOURCES=$(SOURCE_FILES_WITH_DEH) resource.rc +diff --git a/textscreen/Makefile.am b/textscreen/Makefile.am +index 628d4ff..427ed40 100644 +--- a/textscreen/Makefile.am ++++ b/textscreen/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/src ++AM_CFLAGS = -I$(top_srcdir)/src @SDL_CFLAGS@ + + CTAGS_ARGS=-I TXT_UNCAST_ARG+ + +diff --git a/textscreen/examples/Makefile.am b/textscreen/examples/Makefile.am +index 4632d92..b857748 100644 +--- a/textscreen/examples/Makefile.am ++++ b/textscreen/examples/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/textscreen ++AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/textscreen @SDL_CFLAGS@ + + noinst_PROGRAMS=guitest calculator + +-- +2.1.4 + diff --git a/features/buildroot/package/chocolate-doom/Config.in b/features/buildroot/package/chocolate-doom/Config.in new file mode 100644 index 00000000..5e0d9c11 --- /dev/null +++ b/features/buildroot/package/chocolate-doom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CHOCOLATE_DOOM + bool "chocolate-doom" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_SDL + select BR2_PACKAGE_SDL_MIXER + select BR2_PACKAGE_SDL_NET + help + Chocolate Doom is a set of conservative source ports for Doom, + Heretic, Hexen and Strife, with a philosophy of preserving the + look, feel, and bugs of the vanilla versions of each. + + http://www.chocolate-doom.org diff --git a/features/buildroot/package/chocolate-doom/chocolate-doom.hash b/features/buildroot/package/chocolate-doom/chocolate-doom.hash new file mode 100644 index 00000000..6751c7d2 --- /dev/null +++ b/features/buildroot/package/chocolate-doom/chocolate-doom.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 3e6d1a82ac5c8b025a9695ce1e47d0dc6ed142ebb1129b1e4a70e2740f79150c chocolate-doom-2.3.0.tar.gz diff --git a/features/buildroot/package/chocolate-doom/chocolate-doom.mk b/features/buildroot/package/chocolate-doom/chocolate-doom.mk new file mode 100644 index 00000000..8c16a7fa --- /dev/null +++ b/features/buildroot/package/chocolate-doom/chocolate-doom.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# chocolate-doom +# +################################################################################ + +CHOCOLATE_DOOM_VERSION = 2.3.0 +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_DEPENDENCIES = host-pkgconf sdl sdl_mixer sdl_net + +# We're patching configure.ac, so we need to autoreconf +CHOCOLATE_DOOM_AUTORECONF = YES + +# Avoid installing desktop entries, icons, etc. +CHOCOLATE_DOOM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec + +CHOCOLATE_DOOM_CONF_OPTS = \ + --disable-sdltest \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr + +CHOCOLATE_DOOM_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +CHOCOLATE_DOOM_CFLAGS += -O0 +endif + +CHOCOLATE_DOOM_CONF_ENV += CFLAGS="$(CHOCOLATE_DOOM_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +CHOCOLATE_DOOM_DEPENDENCIES += libpng +CHOCOLATE_DOOM_CONF_OPTS += --with-libpng +else +CHOCOLATE_DOOM_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +CHOCOLATE_DOOM_DEPENDENCIES += libsamplerate +CHOCOLATE_DOOM_CONF_OPTS += --with-libsamplerate +else +CHOCOLATE_DOOM_CONF_OPTS += --without-libsamplerate +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch b/features/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch new file mode 100644 index 00000000..c927b343 --- /dev/null +++ b/features/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch @@ -0,0 +1,39 @@ +From 1e64bc4c4379ae3e55be3c518e0e3e22c8c4ae77 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 14 Nov 2017 13:23:57 +0200 +Subject: [PATCH] ntp: fix build with musl libc + +The configure script enables HAVE_LINUX_TIMESTAMPING_OPT_PKTINFO based +on the existence of struct scm_ts_pktinfo and +SOF_TIMESTAMPING_OPT_PKTINFO that were introduced in Linux kernel v4.13 +in the linux/net_tstamp.h kernel header. But this feature also requires +SCM_TIMESTAMPING_PKTINFO that is defined in the socket.h header. musl +libc provides its own version of socket.h, and as of musl version 1.1.16 +this macro is missing. Define this macro in the code as a temporary +measure until musl is updated to its latest version. + +Signed-off-by: Baruch Siach +--- +Upstream status: not upstreamable +--- + ntp_io_linux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ntp_io_linux.c b/ntp_io_linux.c +index 00caed06f7ba..2214a6f6f6c5 100644 +--- a/ntp_io_linux.c ++++ b/ntp_io_linux.c +@@ -574,6 +574,10 @@ extract_udp_data(unsigned char *msg, NTP_Remote_Address *remote_addr, int len) + + /* ================================================== */ + ++#ifndef SCM_TIMESTAMPING_PKTINFO ++#define SCM_TIMESTAMPING_PKTINFO 58 ++#endif ++ + int + NIO_Linux_ProcessMessage(NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr, + NTP_Local_Timestamp *local_ts, struct msghdr *hdr, int length) +-- +2.15.0 + diff --git a/features/buildroot/package/chrony/0002-hash-include-util.h-for-MIN-macro.patch b/features/buildroot/package/chrony/0002-hash-include-util.h-for-MIN-macro.patch new file mode 100644 index 00000000..1fd5bd99 --- /dev/null +++ b/features/buildroot/package/chrony/0002-hash-include-util.h-for-MIN-macro.patch @@ -0,0 +1,28 @@ +From 948ecf84314f78da82e0e2b07b6570ca9cff86c8 Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Thu, 20 Sep 2018 15:01:16 +0200 +Subject: [PATCH] hash: include util.h for MIN macro + +The hash_intmd5.c file inadvertently relied on the system headers to +provide the MIN macro, but it is missing with some libc implementations. + +Signed-off-by: Giulio Benetti +--- + hash_intmd5.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hash_intmd5.c b/hash_intmd5.c +index 0b60f9b..49da1cf 100644 +--- a/hash_intmd5.c ++++ b/hash_intmd5.c +@@ -29,6 +29,7 @@ + #include "sysincl.h" + #include "hash.h" + #include "memory.h" ++#include "util.h" + + #include "md5.c" + +-- +2.17.1 + diff --git a/features/buildroot/package/chrony/Config.in b/features/buildroot/package/chrony/Config.in new file mode 100644 index 00000000..05d6fc1a --- /dev/null +++ b/features/buildroot/package/chrony/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CHRONY + bool "chrony" + depends on BR2_USE_MMU # fork() + help + Chrony is a pair of programs which are used to maintain the + accuracy of the system clock. + + http://chrony.tuxfamily.org/ diff --git a/features/buildroot/package/chrony/S49chrony b/features/buildroot/package/chrony/S49chrony new file mode 100644 index 00000000..f75233fe --- /dev/null +++ b/features/buildroot/package/chrony/S49chrony @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Start chrony + +[ -r /etc/default/chrony ] && . /etc/default/chrony + +case "$1" in + start) + printf "Starting chrony: " + chronyd $CHRONY_ARGS && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping chrony: " + killall chronyd && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/features/buildroot/package/chrony/chrony.hash b/features/buildroot/package/chrony/chrony.hash new file mode 100644 index 00000000..925240cf --- /dev/null +++ b/features/buildroot/package/chrony/chrony.hash @@ -0,0 +1,5 @@ +# From https://listengine.tuxfamily.org/chrony.tuxfamily.org/chrony-announce/2018/09/msg00000.html +md5 7170e750469c198fc6784047d6f71144 chrony-3.4.tar.gz +sha1 fa41e595e7041a9deda76a69e970a023091474f6 chrony-3.4.tar.gz +# Locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/features/buildroot/package/chrony/chrony.mk b/features/buildroot/package/chrony/chrony.mk new file mode 100644 index 00000000..b5821b23 --- /dev/null +++ b/features/buildroot/package/chrony/chrony.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# chrony +# +################################################################################ + +CHRONY_VERSION = 3.4 +CHRONY_SITE = http://download.tuxfamily.org/chrony +CHRONY_LICENSE = GPL-2.0 +CHRONY_LICENSE_FILES = COPYING + +CHRONY_CONF_OPTS = \ + --host-system=Linux \ + --host-machine=$(BR2_ARCH) \ + --prefix=/usr \ + --without-tomcrypt + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +CHRONY_DEPENDENCIES += libcap +else +CHRONY_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +CHRONY_DEPENDENCIES += host-pkgconf libnss +else +CHRONY_CONF_OPTS += --without-nss +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CHRONY_CONF_OPTS += --enable-scfilter +CHRONY_DEPENDENCIES += libseccomp +else +CHRONY_CONF_OPTS += --without-seccomp +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +CHRONY_DEPENDENCIES += readline +else +CHRONY_CONF_OPTS += --disable-readline +endif + +# If pps-tools is available, build it before so the package can use it +# (HAVE_SYS_TIMEPPS_H). +ifeq ($(BR2_PACKAGE_PPS_TOOLS),y) +CHRONY_DEPENDENCIES += pps-tools +endif + +define CHRONY_CONFIGURE_CMDS + cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure $(CHRONY_CONF_OPTS) +endef + +define CHRONY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define CHRONY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +define CHRONY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/chrony/S49chrony $(TARGET_DIR)/etc/init.d/S49chrony +endef + +define CHRONY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/chrony/chrony.service \ + $(TARGET_DIR)/usr/lib/systemd/system/chrony.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/chrony.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/chrony.service +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/chrony/chrony.service b/features/buildroot/package/chrony/chrony.service new file mode 100644 index 00000000..325b63c4 --- /dev/null +++ b/features/buildroot/package/chrony/chrony.service @@ -0,0 +1,11 @@ +[Unit] +Description=Chrony Network Time Daemon +After=syslog.target network.target +Conflicts=systemd-timesyncd.service + +[Service] +ExecStart=/usr/sbin/chronyd -n +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/cifs-utils/Config.in b/features/buildroot/package/cifs-utils/Config.in new file mode 100644 index 00000000..b433850a --- /dev/null +++ b/features/buildroot/package/cifs-utils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CIFS_UTILS + bool "cifs-utils" + # uses fork() + depends on BR2_USE_MMU + help + The in-kernel CIFS filesystem is generally the preferred + method for mounting SMB/CIFS shares on Linux. The in-kernel + CIFS filesystem relies on a set of user-space tools. That + package of tools is called cifs-utils. Although not really + part of Samba proper, these tools were originally part of + the Samba package. For several reasons, shipping these tools + as part of Samba was problematic and it was deemed better to + split them off into their own package. + + http://wiki.samba.org/index.php/LinuxCIFS_utils diff --git a/features/buildroot/package/cifs-utils/cifs-utils.hash b/features/buildroot/package/cifs-utils/cifs-utils.hash new file mode 100644 index 00000000..fda1573e --- /dev/null +++ b/features/buildroot/package/cifs-utils/cifs-utils.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 e7d1f6050c43f21f82cd77e288eb756755effd22f0c310fc2c525df9d41dff79 cifs-utils-6.8.tar.bz2 + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/features/buildroot/package/cifs-utils/cifs-utils.mk b/features/buildroot/package/cifs-utils/cifs-utils.mk new file mode 100644 index 00000000..3456cd91 --- /dev/null +++ b/features/buildroot/package/cifs-utils/cifs-utils.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cifs-utils +# +################################################################################ + +CIFS_UTILS_VERSION = 6.8 +CIFS_UTILS_SOURCE = cifs-utils-$(CIFS_UTILS_VERSION).tar.bz2 +CIFS_UTILS_SITE = http://ftp.samba.org/pub/linux-cifs/cifs-utils +CIFS_UTILS_LICENSE = GPL-3.0+ +CIFS_UTILS_LICENSE_FILES = COPYING +# Missing install-sh in release tarball +CIFS_UTILS_AUTORECONF = YES +CIFS_UTILS_DEPENDENCIES = host-pkgconf + +# Let's disable PIE unconditionally. We want PIE to be enabled only by +# the global BR2_RELRO_FULL option. +CIFS_UTILS_CONF_OPTS = --disable-pie --disable-man + +ifeq ($(BR2_PACKAGE_KEYUTILS),y) +CIFS_UTILS_DEPENDENCIES += keyutils +endif + +define CIFS_UTILS_NO_WERROR + $(SED) 's/-Werror//' $(@D)/Makefile.in +endef + +CIFS_UTILS_POST_PATCH_HOOKS += CIFS_UTILS_NO_WERROR + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/circus/0001-circus-tests-rename-async-argument-of-_create_circus.patch b/features/buildroot/package/circus/0001-circus-tests-rename-async-argument-of-_create_circus.patch new file mode 100644 index 00000000..6af8d872 --- /dev/null +++ b/features/buildroot/package/circus/0001-circus-tests-rename-async-argument-of-_create_circus.patch @@ -0,0 +1,97 @@ +From 7fd0495cf3520508fb1cca301ad3d792b56b5656 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Sep 2018 22:24:24 +0200 +Subject: [PATCH] circus/tests: rename async argument of _create_circus() to + use_async + +In Python 3.7.0, 'async' is now a reserved keyword of the language, so +it cannot be used as an method argument name. When used, it causes the +following byte-compilation failure: + +Traceback (most recent call last): + File "/home/thomas/projets/buildroot/output/host/lib/python3.7/py_compile.py", line 136, in compile + _optimize=optimize) + File "", line 763, in source_to_code + File "", line 219, in _call_with_frames_removed + File "usr/lib/python3.7/site-packages/circus/tests/support.py", line 210 + debug=debug, async=True, **kw) + ^ +SyntaxError: invalid syntax + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/circus-tent/circus/pull/1079 +--- + circus/tests/support.py | 6 +++--- + circus/tests/test_client.py | 2 +- + circus/tests/test_watcher.py | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/circus/tests/support.py b/circus/tests/support.py +index 38964cc..794a9c7 100644 +--- a/circus/tests/support.py ++++ b/circus/tests/support.py +@@ -217,7 +217,7 @@ class TestCircus(AsyncTestCase): + stdout_stream=None, debug=True, **kw): + testfile, arbiter = self._create_circus( + cmd, stdout_stream=stdout_stream, +- debug=debug, async=True, **kw) ++ debug=debug, use_async=True, **kw) + self.test_file = testfile + self.arbiter = arbiter + self.arbiters.append(arbiter) +@@ -265,7 +265,7 @@ class TestCircus(AsyncTestCase): + + @classmethod + def _create_circus(cls, callable_path, plugins=None, stats=False, +- async=False, arbiter_kw=None, **kw): ++ use_async=False, arbiter_kw=None, **kw): + fd, testfile = mkstemp() + os.close(fd) + wdir = os.path.dirname(os.path.dirname(os.path.dirname( +@@ -292,7 +292,7 @@ class TestCircus(AsyncTestCase): + arbiter_kw['stats_endpoint'] = "tcp://127.0.0.1:%d" % _gp() + arbiter_kw['statsd_close_outputs'] = not debug + +- if async: ++ if use_async: + arbiter_kw['background'] = False + arbiter_kw['loop'] = get_ioloop() + else: +diff --git a/circus/tests/test_client.py b/circus/tests/test_client.py +index 9a56a11..a0cfca0 100644 +--- a/circus/tests/test_client.py ++++ b/circus/tests/test_client.py +@@ -90,7 +90,7 @@ class TestWithHook(TestCircus): + self.stream = QueueStream() + self.errstream = QueueStream() + dummy_process = 'circus.tests.support.run_process' +- return self._create_circus(dummy_process, async=True, ++ return self._create_circus(dummy_process, use_async=True, + stdout_stream={'stream': self.stream}, + stderr_stream={'stream': self.errstream}, + hooks=hooks) +diff --git a/circus/tests/test_watcher.py b/circus/tests/test_watcher.py +index 5dd857c..4299ed1 100644 +--- a/circus/tests/test_watcher.py ++++ b/circus/tests/test_watcher.py +@@ -376,7 +376,7 @@ class TestWatcherHooks(TestCircus): + return self._create_circus(dummy_process, + stdout_stream=stdout_stream, + stderr_stream=stderr_stream, +- hooks=hooks, debug=True, async=True) ++ hooks=hooks, debug=True, use_async=True) + + @tornado.gen.coroutine + def _stop(self): +@@ -601,7 +601,7 @@ class RespawnTest(TestCircus): + def test_not_respawning(self): + oneshot_process = 'circus.tests.test_watcher.oneshot_process' + testfile, arbiter = self._create_circus(oneshot_process, +- respawn=False, async=True) ++ respawn=False, use_async=True) + yield arbiter.start() + watcher = arbiter.watchers[-1] + try: +-- +2.14.4 + diff --git a/features/buildroot/package/circus/Config.in b/features/buildroot/package/circus/Config.in new file mode 100644 index 00000000..f1cd93c7 --- /dev/null +++ b/features/buildroot/package/circus/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CIRCUS + bool "circus" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + depends on BR2_INSTALL_LIBSTDCPP # pyzmq -> zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # pyzmq -> zeromq + select BR2_PACKAGE_PYTHON_IOWAIT # runtime + select BR2_PACKAGE_PYTHON_PSUTIL # runtime + select BR2_PACKAGE_PYTHON_PYZMQ # runtime + select BR2_PACKAGE_PYTHON_TORNADO # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Circus is a program that will let you run and watch multiple + processes and sockets. + + https://circus.readthedocs.org/en/latest/ + +comment "circus needs Python and a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !(BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3) diff --git a/features/buildroot/package/circus/circus.hash b/features/buildroot/package/circus/circus.hash new file mode 100644 index 00000000..877ae21c --- /dev/null +++ b/features/buildroot/package/circus/circus.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/circus/json, sha256 locally computed +md5 48e6b220fb0cafca46e3ae1f6ec4bce8 circus-0.14.0.tar.gz +sha256 b8ca91d8bd87b350fda199488ac9ddff91a546b0c6214a28a2f13393713cf062 circus-0.14.0.tar.gz +sha256 3df739c05a4eed7efdf4987142658d2a4f1243e5f08e72a5ecedac5749c92a49 LICENSE diff --git a/features/buildroot/package/circus/circus.mk b/features/buildroot/package/circus/circus.mk new file mode 100644 index 00000000..8b863aa6 --- /dev/null +++ b/features/buildroot/package/circus/circus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# circus +# +################################################################################ + +CIRCUS_VERSION = 0.14.0 +CIRCUS_SITE = https://pypi.python.org/packages/68/41/02c6f5edea2df80b133a12753aee3e698e9130a5c878a9b0bffcf1e17e65 +CIRCUS_SETUP_TYPE = setuptools +CIRCUS_LICENSE = Apache-2.0 +CIRCUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/features/buildroot/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch b/features/buildroot/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch new file mode 100644 index 00000000..bd1b06ae --- /dev/null +++ b/features/buildroot/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch @@ -0,0 +1,34 @@ +From ca4325c6963e505d6fb628163abf2359427ea022 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 29 Nov 2018 21:43:28 +0100 +Subject: [PATCH] modlua.ini: include dlfcn.h + +dlfcn.h must be included to be able to use dlopen otherwise build will +fail on: +src/mod_lua.inl:2845:41: error: 'RTLD_LAZY' undeclared (first use in this function) + lib_handle_uuid = dlopen("libuuid.so", RTLD_LAZY); + +Fixes: + - http://autobuild.buildroot.org/results/7a189f49c5a8b6f7b3d4c57cda5982adc65dbc19 + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/civetweb/civetweb/pull/706] +--- + src/mod_lua.inl | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/mod_lua.inl b/src/mod_lua.inl +index 97a5de1e..ce7a4b2e 100644 +--- a/src/mod_lua.inl ++++ b/src/mod_lua.inl +@@ -2,6 +2,7 @@ + * See https://github.com/civetweb/civetweb/ + */ + ++#include + #include "civetweb_lua.h" + #include "civetweb_private_lua.h" + +-- +2.14.1 + diff --git a/features/buildroot/package/civetweb/Config.in b/features/buildroot/package/civetweb/Config.in new file mode 100644 index 00000000..9e439690 --- /dev/null +++ b/features/buildroot/package/civetweb/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_CIVETWEB + bool "civetweb" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_CIVETWEB_SERVER if !BR2_PACKAGE_CIVETWEB_LIB + help + Full featured embedded web server with Lua support. + + https://sourceforge.net/projects/civetweb + +if BR2_PACKAGE_CIVETWEB + +config BR2_PACKAGE_CIVETWEB_SERVER + bool "enable the web server application" + help + Include the web server and its config files. + +config BR2_PACKAGE_CIVETWEB_LIB + bool "enable library for embedding" + help + Enable the civetweb library for embedding in another + application. + +config BR2_PACKAGE_CIVETWEB_WITH_LUA + bool "enable Lua support" + # required by the bundled Sqlite3 and Lua code + depends on !BR2_STATIC_LIBS + help + Enable Lua support in Civetweb. Note that this will use a + version of Lua and Sqlite bundled within the Civetweb + sources, and not the packages from Buildroot. + +comment "lua support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "civetweb needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/features/buildroot/package/civetweb/civetweb.hash b/features/buildroot/package/civetweb/civetweb.hash new file mode 100644 index 00000000..e6f60ff1 --- /dev/null +++ b/features/buildroot/package/civetweb/civetweb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 de7d5e7a2d9551d325898c71e41d437d5f7b51e754b242af897f7be96e713a42 civetweb-1.11.tar.gz +sha256 1cd00da00b8649b4005757f4019acfd3102ecd407f47998081697e8e9086f706 LICENSE.md diff --git a/features/buildroot/package/civetweb/civetweb.mk b/features/buildroot/package/civetweb/civetweb.mk new file mode 100644 index 00000000..99da1b6f --- /dev/null +++ b/features/buildroot/package/civetweb/civetweb.mk @@ -0,0 +1,87 @@ +################################################################################ +# +# civetweb +# +################################################################################ + +CIVETWEB_VERSION = 1.11 +CIVETWEB_SITE = $(call github,civetweb,civetweb,v$(CIVETWEB_VERSION)) +CIVETWEB_LICENSE = MIT +CIVETWEB_LICENSE_FILES = LICENSE.md + +CIVETWEB_CONF_OPTS = TARGET_OS=LINUX WITH_IPV6=1 \ + $(if $(BR2_INSTALL_LIBSTDCPP),WITH_CPP=1) +CIVETWEB_COPT = -DHAVE_POSIX_FALLOCATE=0 +CIVETWEB_LIBS = -lpthread -lm +CIVETWEB_SYSCONFDIR = /etc +CIVETWEB_HTMLDIR = /var/www +CIVETWEB_INSTALL_OPTS = \ + DOCUMENT_ROOT="$(CIVETWEB_HTMLDIR)" \ + CONFIG_FILE2="$(CIVETWEB_SYSCONFDIR)/civetweb.conf" \ + HTMLDIR="$(TARGET_DIR)$(CIVETWEB_HTMLDIR)" \ + SYSCONFDIR="$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)" + +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),) +CIVETWEB_COPT += -DNO_ATOMICS=1 +endif + +ifeq ($(BR2_PACKAGE_CIVETWEB_WITH_LUA),y) +CIVETWEB_CONF_OPTS += WITH_LUA=1 +CIVETWEB_LIBS += -ldl +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CIVETWEB_COPT += -DNO_SSL_DL +CIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +CIVETWEB_DEPENDENCIES += openssl host-pkgconf +else +CIVETWEB_COPT += -DNO_SSL +endif + +ifeq ($(BR2_PACKAGE_CIVETWEB_SERVER),y) +CIVETWEB_BUILD_TARGETS += build +CIVETWEB_INSTALL_TARGETS += install +endif + +ifeq ($(BR2_PACKAGE_CIVETWEB_LIB),y) +CIVETWEB_INSTALL_STAGING = YES +CIVETWEB_INSTALL_TARGETS += install-headers + +ifeq ($(BR2_STATIC_LIBS)$(BR2_STATIC_SHARED_LIBS),y) +CIVETWEB_BUILD_TARGETS += lib +CIVETWEB_INSTALL_TARGETS += install-lib +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_STATIC_SHARED_LIBS),y) +CIVETWEB_BUILD_TARGETS += slib +CIVETWEB_INSTALL_TARGETS += install-slib +CIVETWEB_COPT += -fPIC +endif + +endif # BR2_PACKAGE_CIVETWEB_LIB + +define CIVETWEB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_BUILD_TARGETS) \ + $(CIVETWEB_CONF_OPTS) \ + COPT="$(CIVETWEB_COPT)" LIBS="$(CIVETWEB_LIBS)" +endef + +define CIVETWEB_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \ + PREFIX="$(STAGING_DIR)/usr" \ + $(CIVETWEB_INSTALL_OPTS) \ + $(CIVETWEB_CONF_OPTS) \ + COPT='$(CIVETWEB_COPT)' +endef + +define CIVETWEB_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/include + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \ + PREFIX="$(TARGET_DIR)/usr" \ + $(CIVETWEB_INSTALL_OPTS) \ + $(CIVETWEB_CONF_OPTS) \ + COPT='$(CIVETWEB_COPT)' +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/cjson/Config.in b/features/buildroot/package/cjson/Config.in new file mode 100644 index 00000000..ee18fced --- /dev/null +++ b/features/buildroot/package/cjson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CJSON + bool "cJSON" + help + An ultra-lightweight, portable, single-file, simple-as-can-be + ANSI-C compliant JSON parser, under MIT license. + + https://github.com/DaveGamble/cJSON diff --git a/features/buildroot/package/cjson/cjson.hash b/features/buildroot/package/cjson/cjson.hash new file mode 100644 index 00000000..a0215832 --- /dev/null +++ b/features/buildroot/package/cjson/cjson.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 760687665ab41a5cff9c40b1053c19572bcdaadef1194e5cba1b5e6f824686e7 cjson-1.7.12.tar.gz +sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/features/buildroot/package/cjson/cjson.mk b/features/buildroot/package/cjson/cjson.mk new file mode 100644 index 00000000..b61d1ceb --- /dev/null +++ b/features/buildroot/package/cjson/cjson.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# cjson +# +################################################################################ + +CJSON_VERSION = 1.7.12 +CJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION)) +CJSON_INSTALL_STAGING = YES +CJSON_LICENSE = MIT +CJSON_LICENSE_FILES = LICENSE +# Set ENABLE_CUSTOM_COMPILER_FLAGS to OFF in particular to disable +# -fstack-protector-strong which depends on BR2_TOOLCHAIN_HAS_SSP +CJSON_CONF_OPTS += \ + -DENABLE_CJSON_TEST=OFF \ + -DENABLE_CUSTOM_COMPILER_FLAGS=OFF + +# If BUILD_SHARED_AND_STATIC_LIBS is set to OFF, cjson uses the +# standard BUILD_SHARED_LIBS option which is passed by the +# cmake-package infrastructure. +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +CJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=ON +else +CJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=OFF +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch b/features/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch new file mode 100644 index 00000000..daac677e --- /dev/null +++ b/features/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch @@ -0,0 +1,34 @@ +From 52fda6e6689e22866a39ec4273713fb6035c38b2 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 7 May 2018 23:14:46 +0200 +Subject: [PATCH] clamdscan/proto.c: fix build error due to missing sockaddr_un + definition +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +proto.c: In function ‘dconnect’: +proto.c:86:67: error: invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr_un’ + if (connect(sockd, (struct sockaddr *)&nixsock, sizeof(nixsock)) == 0) + +Signed-off-by: Bernd Kuhls +Upstream-status: http://lurker.clamav.net/message/20140928.130829.5494fd68.en.html +--- + clamdscan/proto.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/clamdscan/proto.c b/clamdscan/proto.c +index 0205f6da0..d3396732f 100644 +--- a/clamdscan/proto.c ++++ b/clamdscan/proto.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + #ifdef HAVE_SYS_SELECT_H + #include + #endif +-- +2.14.3 + diff --git a/features/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch b/features/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch new file mode 100644 index 00000000..e99a9742 --- /dev/null +++ b/features/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch @@ -0,0 +1,34 @@ +From 053bac34b9f0f947c58fcdf80ac03d5a6b05aa12 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 7 May 2018 23:15:58 +0200 +Subject: [PATCH] mbox: do not use backtrace if using uClibc without backtrace + support + +Since uClibc can be configured without support for backtrace, disable +the backtrace if we are building with a uClibc that was built without +backtrace. + +This is a bit hacky, and would greatly benefit from a test in ./configure +instead, but does nicely as a quick fix for now. + +Signed-off-by: "Yann E. MORIN" +--- + libclamav/mbox.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libclamav/mbox.c b/libclamav/mbox.c +index 71f540c0a..4851297a9 100644 +--- a/libclamav/mbox.c ++++ b/libclamav/mbox.c +@@ -98,7 +98,7 @@ + #include + #endif + +-#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 ++#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 && !defined(__UCLIBC__) || defined(__UCLIBC_HAS_BACKTRACE__) + #define HAVE_BACKTRACE + #endif + #endif +-- +2.14.3 + diff --git a/features/buildroot/package/clamav/Config.in b/features/buildroot/package/clamav/Config.in new file mode 100644 index 00000000..2017011b --- /dev/null +++ b/features/buildroot/package/clamav/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CLAMAV + bool "clamav" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + ClamAV is an open source antivirus engine for detecting + trojans, viruses, malware & other malicious threats. + + http://www.clamav.net + +comment "clamav needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/features/buildroot/package/clamav/clamav.hash b/features/buildroot/package/clamav/clamav.hash new file mode 100644 index 00000000..4b61cd96 --- /dev/null +++ b/features/buildroot/package/clamav/clamav.hash @@ -0,0 +1,14 @@ +# Locally calculated +sha256 0a12ebdf6ff7a74c0bde2bdc2b55cae33449e6dd953ec90824a9e01291277634 clamav-0.101.2.tar.gz +sha256 0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584 COPYING +sha256 d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed COPYING.bzip2 +sha256 dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6 COPYING.file +sha256 6dce638b76399e7521ad8e182d3e33e4496c85b3b69b6ff434b53017101e82ad COPYING.getopt +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LGPL +sha256 e3a9b913515a42f8ff3ef1551c3a2cdba383c39ed959729e0e2911219496ad74 COPYING.llvm +sha256 d96d71b66aa32c4a2d1619b9ca3347dafa9460bcf0fb5ac2408916067ad31dfc COPYING.lzma +sha256 accdcf2455c07b99abea59016b3663eaef926a92092d103bfaa25fed27cf6b24 COPYING.pcre +sha256 e2c1395a3d9fea6d5d25847c9d783db6e2cc8b085b4025861f459139c5dfd90b COPYING.regex +sha256 1faccc6b5c7b958fb807a3f573d5be9bf7889fe898f7e0617c544b05a81bfd00 COPYING.unrar +sha256 a20d6317c5384e8d4c05f9c31097878675d9429ec46090656166039cc10bc957 COPYING.YARA +sha256 c2f77553f8d870c5635b0dace0519253233f172b33ce1fdf6578610706294eee COPYING.zlib diff --git a/features/buildroot/package/clamav/clamav.mk b/features/buildroot/package/clamav/clamav.mk new file mode 100644 index 00000000..5bb0aa09 --- /dev/null +++ b/features/buildroot/package/clamav/clamav.mk @@ -0,0 +1,100 @@ +################################################################################ +# +# clamav +# +################################################################################ + +CLAMAV_VERSION = 0.101.2 +CLAMAV_SITE = https://www.clamav.net/downloads/production +CLAMAV_LICENSE = GPL-2.0 +CLAMAV_LICENSE_FILES = COPYING COPYING.bzip2 COPYING.file COPYING.getopt \ + COPYING.LGPL COPYING.llvm COPYING.lzma COPYING.pcre COPYING.regex \ + COPYING.unrar COPYING.zlib +CLAMAV_DEPENDENCIES = \ + host-pkgconf \ + libtool \ + openssl \ + zlib \ + $(TARGET_NLS_DEPENDENCIES) + +# mmap cannot be detected when cross-compiling, needed for mempool support +CLAMAV_CONF_ENV = \ + ac_cv_c_mmap_private=yes \ + have_cv_ipv6=yes + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CLAMAV_CONF_ENV += LIBS=-latomic +endif + +# UCLIBC_HAS_FTS is disabled, therefore disable fanotify (missing fts.h) +CLAMAV_CONF_OPTS = \ + --with-dbdir=/var/lib/clamav \ + --with-ltdl-include=$(STAGING_DIR)/usr/include \ + --with-ltdl-lib=$(STAGING_DIR)/usr/lib \ + --with-openssl=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr \ + --disable-zlib-vcheck \ + --disable-rpath \ + --disable-clamav \ + --disable-fanotify \ + --disable-milter \ + --disable-llvm \ + --disable-clamdtop \ + --enable-mempool + +ifeq ($(BR2_PACKAGE_BZIP2),y) +CLAMAV_DEPENDENCIES += bzip2 +# autodetection gets confused if host has bzip2, so force it +CLAMAV_CONF_ENV += \ + ac_cv_libbz2_libs=-lbz2 \ + ac_cv_libbz2_ltlibs=-lbz2 +else +CLAMAV_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +CLAMAV_CONF_OPTS += --with-libjson=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += json-c +else +CLAMAV_CONF_OPTS += --without-libjson +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +CLAMAV_CONF_OPTS += --with-xml=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += libxml2 +else +CLAMAV_CONF_OPTS += --disable-xml +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +CLAMAV_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += libcurl +else +CLAMAV_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +CLAMAV_CONF_OPTS += --with-iconv +CLAMAV_DEPENDENCIES += libiconv +else +CLAMAV_CONF_OPTS += --without-iconv +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +CLAMAV_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += pcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +CLAMAV_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += pcre +else +CLAMAV_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +CLAMAV_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +CLAMAV_DEPENDENCIES += systemd +else +CLAMAV_CONF_OPTS += --with-systemdsystemunitdir=no +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/clang/Config.in b/features/buildroot/package/clang/Config.in new file mode 100644 index 00000000..80f03c80 --- /dev/null +++ b/features/buildroot/package/clang/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_CLANG + bool "clang" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + select BR2_PACKAGE_LLVM + help + Clang is a C/C++, Objective C/C++ and OpenCL C front-end + for the LLVM compiler. + + http://clang.llvm.org + +comment "clang needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, host gcc >= 4.8, dynamic library" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "clang needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/features/buildroot/package/clang/clang.hash b/features/buildroot/package/clang/clang.hash new file mode 100644 index 00000000..405e22ce --- /dev/null +++ b/features/buildroot/package/clang/clang.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 084c115aab0084e63b23eee8c233abb6739c399e29966eaeccfc6e088e0b736b cfe-8.0.0.src.tar.xz +sha256 bdc41b826a9a50c7a31c1b613ca5d46415be68d5cc6da06f91f5bc1db8ad87aa LICENSE.TXT diff --git a/features/buildroot/package/clang/clang.mk b/features/buildroot/package/clang/clang.mk new file mode 100644 index 00000000..07e7fced --- /dev/null +++ b/features/buildroot/package/clang/clang.mk @@ -0,0 +1,106 @@ +################################################################################ +# +# clang +# +################################################################################ + +# LLVM and Clang should be version bumped together +CLANG_VERSION = 8.0.0 +CLANG_SITE = http://llvm.org/releases/$(CLANG_VERSION) +CLANG_SOURCE = cfe-$(CLANG_VERSION).src.tar.xz +CLANG_LICENSE = NCSA +CLANG_LICENSE_FILES = LICENSE.TXT +CLANG_SUPPORTS_IN_SOURCE_BUILD = NO +CLANG_INSTALL_STAGING = YES + +HOST_CLANG_DEPENDENCIES = host-llvm host-libxml2 +CLANG_DEPENDENCIES = llvm host-clang + +# LLVM >= 9.0 will soon require C++14 support, building llvm 8.x using a +# toolchain using gcc < 5.1 gives an error but actually still works. Setting +# this option makes it still build with gcc >= 4.8. +# https://reviews.llvm.org/D57264 +HOST_CLANG_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON +CLANG_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON + +# This option is needed, otherwise multiple shared libs +# (libclangAST.so, libclangBasic.so, libclangFrontend.so, etc.) will +# be generated. As a final shared lib containing all these components +# (libclang.so) is also generated, this resulted in the following +# error when trying to use tools that use libclang: +# $ CommandLine Error: Option 'track-memory' registered more than once! +# $ LLVM ERROR: inconsistency in registered CommandLine options +# By setting BUILD_SHARED_LIBS to OFF, we generate multiple static +# libraries (the same way as host's clang build) and finally +# libclang.so to be installed on the target. +CLANG_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF + +# Default is Debug build, which requires considerably more disk space +# and build time. Release build is selected for host and target +# because the linker can run out of memory in Debug mode. +HOST_CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release +CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release + +CLANG_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 + +# We need to build tools because libclang is a tool +HOST_CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON +CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON + +HOST_CLANG_CONF_OPTS += \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=OFF \ + -DCLANG_INCLUDE_TESTS=OFF + +CLANG_CONF_OPTS += \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=OFF \ + -DCLANG_INCLUDE_TESTS=OFF + +HOST_CLANG_CONF_OPTS += -DLLVM_DIR=$(HOST_DIR)/lib/cmake/llvm \ + -DCLANG_DEFAULT_LINKER=$(TARGET_LD) +CLANG_CONF_OPTS += -DLLVM_DIR=$(STAGING_DIR)/usr/lib/cmake/llvm \ + -DCLANG_TABLEGEN:FILEPATH=$(HOST_DIR)/bin/clang-tblgen \ + -DLLVM_TABLEGEN_EXE:FILEPATH=$(HOST_DIR)/bin/llvm-tblgen + +# Clang can't be used as compiler on the target since there are no +# development files (headers) and other build tools. So remove clang +# binaries and some other unnecessary files from target. +CLANG_FILES_TO_REMOVE = \ + /usr/bin/clang* \ + /usr/bin/c-index-test \ + /usr/bin/git-clang-format \ + /usr/bin/scan-build \ + /usr/bin/scan-view \ + /usr/libexec/c++-analyzer \ + /usr/libexec/ccc-analyzer \ + /usr/share/clang \ + /usr/share/opt-viewer \ + /usr/share/scan-build \ + /usr/share/scan-view \ + /usr/share/man/man1/scan-build.1 \ + /usr/lib/clang + +define CLANG_CLEANUP_TARGET + rm -rf $(addprefix $(TARGET_DIR),$(CLANG_FILES_TO_REMOVE)) +endef +CLANG_POST_INSTALL_TARGET_HOOKS += CLANG_CLEANUP_TARGET + +# clang-tblgen is not installed by default, however it is necessary +# for cross-compiling clang +define HOST_CLANG_INSTALL_CLANG_TBLGEN + $(INSTALL) -D -m 0755 $(HOST_CLANG_BUILDDIR)/bin/clang-tblgen \ + $(HOST_DIR)/bin/clang-tblgen +endef +HOST_CLANG_POST_INSTALL_HOOKS = HOST_CLANG_INSTALL_CLANG_TBLGEN + +# This option must be enabled to link libclang dynamically against libLLVM.so +HOST_CLANG_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON +CLANG_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON + +# Prevent clang binaries from linking against LLVM static libs +HOST_CLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all +CLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/features/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch b/features/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch new file mode 100644 index 00000000..8fede9da --- /dev/null +++ b/features/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch @@ -0,0 +1,32 @@ +From 4fe2f454e454d9e6b1e83b2ea67581990461ed36 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 22:05:25 +0100 +Subject: [PATCH 1/6] cmake: force libf2c to be built as a static library + +As stated in INSTALL/LAPACK_version.c, liblapack requires to be linked +against the static library of libf2c. + +Signed-off-by: Samuel Martin +--- + F2CLIBS/libf2c/CMakeLists.txt | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt +index 43d7b3f..f98d66a 100644 +--- a/F2CLIBS/libf2c/CMakeLists.txt ++++ b/F2CLIBS/libf2c/CMakeLists.txt +@@ -58,5 +58,10 @@ if(WIN32) + endif() + include_directories(${CLAPACK_SOURCE_DIR}/F2CLIBS/libf2c) + include_directories(${CLAPACK_BINARY_DIR}/F2CLIBS/libf2c) +-add_library(f2c ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h) ++add_library(f2c STATIC ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h) + set_property(TARGET f2c PROPERTY PREFIX lib) ++# Set fPIC on the library when build shared libraries is enabled, because ++# libf2c.a will most likely be included by some shared libraries in such cases. ++if(UNIX AND BUILD_SHARED_LIBS) ++ set_target_properties(f2c PROPERTIES COMPILE_FLAGS "-fPIC") ++endif() +-- +1.8.5.3 + diff --git a/features/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch b/features/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch new file mode 100644 index 00000000..eac4164f --- /dev/null +++ b/features/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch @@ -0,0 +1,80 @@ +From 834c221936d9c460b44e3a65b6fedfb3193f491b Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:33:12 +0100 +Subject: [PATCH 2/6] cmake: make test build sensitive to BUILD_TESTING + +This patch prevent from wasting time building the tests if it's our +wish. + +The test build takes a significant amount of time, and the binaries +are not installed. + +Signed-off-by: Samuel Martin +--- + BLAS/TESTING/CMakeLists.txt | 3 +++ + CMakeLists.txt | 9 ++++++--- + TESTING/CMakeLists.txt | 4 ++++ + 3 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/BLAS/TESTING/CMakeLists.txt b/BLAS/TESTING/CMakeLists.txt +index ec2c587..e7dc0b7 100644 +--- a/BLAS/TESTING/CMakeLists.txt ++++ b/BLAS/TESTING/CMakeLists.txt +@@ -25,6 +25,9 @@ + # make single FRC=FRC + # + ####################################################################### ++if(NOT BUILD_TESTING) ++ return() ++endif() + + macro(add_blas_test name src) + get_filename_component(baseNAME ${src} NAME_WE) +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 320ccc6..0a362c0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,5 @@ + cmake_minimum_required(VERSION 2.6) + project(CLAPACK C) +-enable_testing() + include(CTest) + + if(WIN32 AND NOT CYGWIN) +@@ -11,7 +10,9 @@ else() + set(SECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/second.c) + set(DSECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/dsecnd.c) + endif() +-enable_testing() ++if(NOT BUILD_TESTING) ++ enable_testing() ++endif() + option(USE_BLAS_WRAP "pre-pend f2c_ to each function in blas" OFF) + if(NOT USE_BLAS_WRAP) + # _zrotg_ seems to be missing in the wrap header +@@ -21,7 +22,9 @@ include_directories(${CLAPACK_SOURCE_DIR}/INCLUDE) + add_subdirectory(F2CLIBS) + add_subdirectory(BLAS) + add_subdirectory(SRC) +-add_subdirectory(TESTING) ++if(NOT BUILD_TESTING) ++ add_subdirectory(TESTING) ++endif() + set(CLAPACK_VERSION 3.2.1) + set(CPACK_PACKAGE_VERSION_MAJOR 3) + set(CPACK_PACKAGE_VERSION_MINOR 2) +diff --git a/TESTING/CMakeLists.txt b/TESTING/CMakeLists.txt +index d59359d..f6b083a 100644 +--- a/TESTING/CMakeLists.txt ++++ b/TESTING/CMakeLists.txt +@@ -1,3 +1,7 @@ ++if(NOT BUILD_TESTING) ++ return() ++endif() ++ + if(MSVC_VERSION) + # string(REPLACE "/STACK:10000000" "/STACK:900000000000000000" + # CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +-- +1.8.5.3 + diff --git a/features/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch b/features/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch new file mode 100644 index 00000000..cd9828ff --- /dev/null +++ b/features/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch @@ -0,0 +1,70 @@ +From a2f0669fac1f8e7183b15cf7d14f0e99a2d8b012 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:47:39 +0100 +Subject: [PATCH 3/6] cmake: do not try to run arithchk when cross-compiling to + generate sources + +Instead, use a predefined arith.h if provided, or generate a default one. + +The arithchk binary is still built (but not installed) to allow the user to +run it on its target and use it; so then allowing to build an optimized +blas library. + +Signed-off-by: Samuel Martin +--- + F2CLIBS/libf2c/CMakeLists.txt | 38 ++++++++++++++++++++++++++++---------- + 1 file changed, 28 insertions(+), 10 deletions(-) + +diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt +index f98d66a..45a0804 100644 +--- a/F2CLIBS/libf2c/CMakeLists.txt ++++ b/F2CLIBS/libf2c/CMakeLists.txt +@@ -38,17 +38,35 @@ set(TIME dtime_.c etime_.c) + + # For INTEGER*8 support (which requires system-dependent adjustments to + # f2c.h), add ${QINT} to the OFILES assignment below... +-add_executable(arithchk arithchk.c) +-if(UNIX) +- target_link_libraries(arithchk m) ++if(CMAKE_CROSSCOMPILING) ++ if(ARITH_H) ++ message(STATUS "Using the user-defined '${ARITH_H}' as arith.h header.") ++ configure_file("${ARITH_H}" "${CMAKE_CURRENT_BINARY_DIR}/arith.h" COPYONLY) ++ else() ++ message(STATUS "No user-defined arith.h header.") ++ if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/arith.h") ++ message(WARNING "Generating the default non-optimized 'arith.h' header. ++ ++To generate and provide a custom arith.h header: ++run the cross-compiled arithchk binary on your target, ++and use its output to fill your custom arith.h header.") ++ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arith.h" ++ "/* default, not optimized arith.h */") ++ endif() ++ endif() ++else() ++ add_executable(arithchk arithchk.c) ++ if(UNIX) ++ target_link_libraries(arithchk m) ++ endif() ++ set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS ++ "NO_FPINIT;NO_LONG_LONG") ++ ADD_CUSTOM_COMMAND( ++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h ++ COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h ++ DEPENDS arithchk ++ ) + endif() +-set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS +- "NO_FPINIT;NO_LONG_LONG") +-ADD_CUSTOM_COMMAND( +- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h +- COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h +- DEPENDS arithchk +- ) + + + set(OFILES ${MISC} ${POW} ${CX} ${DCX} ${REAL} ${DBL} ${INT} +-- +1.8.5.3 + diff --git a/features/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch b/features/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch new file mode 100644 index 00000000..e83b066d --- /dev/null +++ b/features/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch @@ -0,0 +1,23 @@ +From 675111e8ffc179276a7e4950fe4a4eda4d38a703 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:48:32 +0100 +Subject: [PATCH 4/6] cmake: blas: add library and header install rules + +Signed-off-by: Samuel Martin +--- + BLAS/SRC/CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/BLAS/SRC/CMakeLists.txt b/BLAS/SRC/CMakeLists.txt +index d1caff8..a5de5a1 100644 +--- a/BLAS/SRC/CMakeLists.txt ++++ b/BLAS/SRC/CMakeLists.txt +@@ -141,3 +141,5 @@ if(UNIX) + target_link_libraries(blas m) + endif() + target_link_libraries(blas f2c) ++install(TARGETS blas LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) ++install(FILES "${CLAPACK_SOURCE_DIR}/INCLUDE/blaswrap.h" DESTINATION include) +-- +1.8.5.3 + diff --git a/features/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch b/features/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch new file mode 100644 index 00000000..abba460b --- /dev/null +++ b/features/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch @@ -0,0 +1,24 @@ +From 9dfac0d55a31be59a856bad9d3a5071d65176597 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:49:22 +0100 +Subject: [PATCH 5/6] cmake: lapack: add library and header install rules + +Signed-off-by: Samuel Martin +--- + SRC/CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt +index ac4cce3..aa60555 100644 +--- a/SRC/CMakeLists.txt ++++ b/SRC/CMakeLists.txt +@@ -377,4 +377,5 @@ if(BUILD_COMPLEX16) + endif() + add_library(lapack ${ALLOBJ} ${ALLXOBJ}) + target_link_libraries(lapack blas) +- ++install(TARGETS lapack LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) ++install(FILES "${CLAPACK_SOURCE_DIR}/INCLUDE/clapack.h" DESTINATION include) +-- +1.8.5.3 + diff --git a/features/buildroot/package/clapack/0006-remove-uninit-f2c.patch b/features/buildroot/package/clapack/0006-remove-uninit-f2c.patch new file mode 100644 index 00000000..83c2c5c7 --- /dev/null +++ b/features/buildroot/package/clapack/0006-remove-uninit-f2c.patch @@ -0,0 +1,24 @@ +uninit.c includes glibc-specific not provided by musl. +Somewhat portable replacement is , which is available in musl +but requires non-trivial changes to uninit.c. + +f2c uses _uninit_f2c() from uninit.c to implement its -trapuv option, +pre-initializiing floating-point variables to NaN and asking FPU to send +SIGFPE whenever NaN value is encountered. + +clapack source has already been run through f2c without -trapuv, +so uninit.c code is not used anywhere and can be safely excluded. + +Signed-off-by: Alex Suykov + +--- a/F2CLIBS/libf2c/CMakeLists.txt ++++ b/F2CLIBS/libf2c/CMakeLists.txt +@@ -1,7 +1,7 @@ + set(MISC + f77vers.c i77vers.c main.c s_rnge.c abort_.c exit_.c getarg_.c iargc_.c + getenv_.c signal_.c s_stop.c s_paus.c system_.c cabs.c ctype.c +- derf_.c derfc_.c erf_.c erfc_.c sig_die.c uninit.c) ++ derf_.c derfc_.c erf_.c erfc_.c sig_die.c) + set(POW pow_ci.c pow_dd.c pow_di.c pow_hh.c pow_ii.c pow_ri.c pow_zi.c pow_zz.c) + set(CX c_abs.c c_cos.c c_div.c c_exp.c c_log.c c_sin.c c_sqrt.c) + set(DCX z_abs.c z_cos.c z_div.c z_exp.c z_log.c z_sin.c z_sqrt.c) diff --git a/features/buildroot/package/clapack/0007-off64-t.patch b/features/buildroot/package/clapack/0007-off64-t.patch new file mode 100644 index 00000000..bf66d3c9 --- /dev/null +++ b/features/buildroot/package/clapack/0007-off64-t.patch @@ -0,0 +1,16 @@ +musl only provides off64_t, not __off64_t. +glibc and uclibc have both defined. + +Signed-off-by: Alex Suykov + +--- a/F2CLIBS/libf2c/sysdep1.h ++++ b/F2CLIBS/libf2c/sysdep1.h +@@ -10,7 +10,7 @@ + + #ifdef __linux__ + #define USE_LARGEFILE +-#define OFF_T __off64_t ++#define OFF_T off64_t + #endif + + #ifdef _AIX43 diff --git a/features/buildroot/package/clapack/Config.in b/features/buildroot/package/clapack/Config.in new file mode 100644 index 00000000..a912eb6c --- /dev/null +++ b/features/buildroot/package/clapack/Config.in @@ -0,0 +1,28 @@ +comment "clapack needs a glibc toolchain" + depends on BR2_powerpc + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_CLAPACK + bool "cblas/clapack" + # _fpu_control is used on PowerPC, but not available with + # uClibc or musl + depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC + # assembler: Error: value out of range + depends on !BR2_m68k_cf + help + BLAS and LAPACK C implementation (f2c'ed version of). + + http://www.netlib.org/clapack/ + +config BR2_PACKAGE_CLAPACK_ARITH_H + string "Custom BLAS arith.h" + depends on BR2_PACKAGE_CLAPACK + help + To optimize BLAS library for the hardware, an 'arith.h' header + should be provided. + + If empty, the library will not be optimized by the compiler. + + In any case an 'arithchk' program is built + (but not installed), to be run on the target to generate this + arith.h header. diff --git a/features/buildroot/package/clapack/clapack.hash b/features/buildroot/package/clapack/clapack.hash new file mode 100644 index 00000000..ad586fac --- /dev/null +++ b/features/buildroot/package/clapack/clapack.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 0b3f782bc24845d85f36bafbff0f2f1384dc72df730fda4e7924ec1a70baca5a clapack-3.2.1-CMAKE.tgz +# License files, locally calculated +sha256 23014869214a231525b38c39fdb5f82364fa24154ac80fdcab2a79671460fd09 COPYING +sha256 44561c447e91203ddc747beeca5cc2794d95ee982c17c578670e4f0408bc3904 F2CLIBS/libf2c/Notice diff --git a/features/buildroot/package/clapack/clapack.mk b/features/buildroot/package/clapack/clapack.mk new file mode 100644 index 00000000..9a083f32 --- /dev/null +++ b/features/buildroot/package/clapack/clapack.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# clapack +# +################################################################################ + +CLAPACK_VERSION = 3.2.1 +CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz +# This package provides 3 libraries: +# - libf2c.a (not installed) +# - libblas (statically linked with libf2c.a) +# - liblapack (statically linked with libf2c.a) +CLAPACK_LICENSE = HPND (libf2c), BSD-3-Clause (libblas and liblapack) +CLAPACK_LICENSE_FILES = F2CLIBS/libf2c/Notice COPYING +CLAPACK_SITE = http://www.netlib.org/clapack +CLAPACK_INSTALL_STAGING = YES + +ifneq ($(BR2_PACKAGE_CLAPACK_ARITH_H),) +CLAPACK_CONF_OPTS += -DARITH_H=$(BR2_PACKAGE_CLAPACK_ARITH_H) +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/classpath/Config.in b/features/buildroot/package/classpath/Config.in new file mode 100644 index 00000000..0385ccd4 --- /dev/null +++ b/features/buildroot/package/classpath/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k \ + || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \ + || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le \ + || BR2_sparc || BR2_sparc64 || BR2_sh || BR2_x86_64 + +config BR2_PACKAGE_CLASSPATH + bool "classpath" + depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS + select BR2_NEEDS_HOST_JAR + select BR2_NEEDS_HOST_JAVAC + help + GNU Classpath, Essential Libraries for Java, is a GNU + project to create free core class libraries for use with + virtual machines and compilers for the java programming + language. + + http://classpath.org diff --git a/features/buildroot/package/classpath/classpath.hash b/features/buildroot/package/classpath/classpath.hash new file mode 100644 index 00000000..d1c5b5c1 --- /dev/null +++ b/features/buildroot/package/classpath/classpath.hash @@ -0,0 +1,2 @@ +# From https://www.gnu.org/software/classpath/announce/20120307.html +sha256 f929297f8ae9b613a1a167e231566861893260651d913ad9b6c11933895fecc8 classpath-0.99.tar.gz diff --git a/features/buildroot/package/classpath/classpath.mk b/features/buildroot/package/classpath/classpath.mk new file mode 100644 index 00000000..6bba6948 --- /dev/null +++ b/features/buildroot/package/classpath/classpath.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# classpath +# +################################################################################ + +CLASSPATH_VERSION = 0.99 +CLASSPATH_SITE = $(BR2_GNU_MIRROR)/classpath +CLASSPATH_CONF_OPTS = \ + --disable-examples \ + --disable-rpath \ + --disable-Werror \ + --disable-gconf-peer \ + --disable-gjdoc \ + --enable-tools + +# classpath assumes qt runs on top of X11, but we +# don't support qt4 on X11 +CLASSPATH_CONF_OPTS += --disable-qt-peer +CLASSPATH_DEPENDENCIES = host-pkgconf +CLASSPATH_LICENSE = GPL-2.0+ with exception +CLASSPATH_LICENSE_FILES = COPYING + +# Needs ALSA pcm and sequencer (midi) support +# pcm is always on for alsa-lib +ifeq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y) +CLASSPATH_CONF_OPTS += --enable-alsa +CLASSPATH_DEPENDENCIES += alsa-lib +else +CLASSPATH_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_GMP),y) +CLASSPATH_CONF_OPTS += --enable-gmp --with-gmp="$(STAGING_DIR)/usr" +CLASSPATH_DEPENDENCIES += gmp +else +CLASSPATH_CONF_OPTS += --disable-gmp +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2)$(BR2_PACKAGE_XORG7),yy) +CLASSPATH_CONF_OPTS += --enable-gtk-peer +CLASSPATH_DEPENDENCIES += libgtk2 + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y) +CLASSPATH_CONF_OPTS += --enable-gstreamer-peer +CLASSPATH_DEPENDENCIES += gst-plugins-base +else +CLASSPATH_CONF_OPTS += --disable-gstreamer-peer +endif + +else +CLASSPATH_CONF_OPTS += --disable-gtk-peer --disable-gstreamer-peer +endif + +ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT)$(BR2_TOOLCHAIN_HAS_THREADS),yyy) +CLASSPATH_CONF_OPTS += --enable-xmlj +CLASSPATH_DEPENDENCIES += libxml2 libxslt +else +CLASSPATH_CONF_OPTS += --disable-xmlj +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/clinfo/Config.in b/features/buildroot/package/clinfo/Config.in new file mode 100644 index 00000000..3df4feec --- /dev/null +++ b/features/buildroot/package/clinfo/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CLINFO + bool "clinfo" + depends on BR2_PACKAGE_HAS_LIBOPENCL + help + clinfo is a simple command-line application that enumerates + all possible (known) properties of the OpenCL platform and + devices available on the system. + + https://github.com/Oblomov/clinfo + +comment "clinfo needs an OpenCL provider" + depends on !BR2_PACKAGE_HAS_LIBOPENCL diff --git a/features/buildroot/package/clinfo/clinfo.hash b/features/buildroot/package/clinfo/clinfo.hash new file mode 100644 index 00000000..d5766e63 --- /dev/null +++ b/features/buildroot/package/clinfo/clinfo.hash @@ -0,0 +1,4 @@ +# locally calculated +sha256 64b02e68ccff3b95437bd0bd70dcb88438c58adec16a7145a5d4e5c26a898ccf clinfo-2.2.18.03.26.tar.gz +sha256 a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 legalcode.txt +sha256 2a7a9321be169ea6edbc6b1010e8f7bb0f4c1482a2f65c34a49e9719f129b79a LICENSE diff --git a/features/buildroot/package/clinfo/clinfo.mk b/features/buildroot/package/clinfo/clinfo.mk new file mode 100644 index 00000000..cf086923 --- /dev/null +++ b/features/buildroot/package/clinfo/clinfo.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# clinfo +# +################################################################################ + +CLINFO_VERSION = 2.2.18.03.26 +CLINFO_SITE = $(call github,Oblomov,clinfo,$(CLINFO_VERSION)) +CLINFO_LICENSE = CC0-1.0 +CLINFO_LICENSE_FILES = legalcode.txt LICENSE +CLINFO_DEPENDENCIES = libopencl + +define CLINFO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define CLINFO_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/clinfo $(TARGET_DIR)/usr/bin/clinfo +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/cloop/0001-cflags.patch b/features/buildroot/package/cloop/0001-cflags.patch new file mode 100644 index 00000000..c421dd7f --- /dev/null +++ b/features/buildroot/package/cloop/0001-cflags.patch @@ -0,0 +1,30 @@ +Take into account the CFLAGS/LDFLAGS passed in the environment. + +Signed-off-by: Thomas Petazzoni + +Index: host-cloop-2.634-1/Makefile +=================================================================== +--- host-cloop-2.634-1.orig/Makefile 2010-12-16 09:17:52.826555645 +0100 ++++ host-cloop-2.634-1/Makefile 2010-12-16 09:18:57.208713338 +0100 +@@ -15,7 +15,7 @@ + endif + + ifdef APPSONLY +-CFLAGS:=-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -s -I. -fno-strict-aliasing -fno-common -fomit-frame-pointer ++CLOOP_CFLAGS:=-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -s -I. -fno-strict-aliasing -fno-common -fomit-frame-pointer + endif + + KERNOBJ:=compressed_loop.o +@@ -53,10 +53,10 @@ + ( cd advancecomp-1.15 ; ./configure && $(MAKE) advfs ) + + extract_compressed_fs: extract_compressed_fs.c +- $(CC) -Wall -O2 -s -o $@ $< -lz ++ $(CC) $(CFLAGS) $(CLOOP_CFLAGS) $(LDFLAGS) -Wall -O2 -s -o $@ $< -lz + + cloop_suspend: cloop_suspend.o +- $(CC) -o $@ $< ++ $(CC) $(CFLAGS) $(CLOOP_CFLAGS) $(LDFLAGS) -o $@ $< + + clean: + rm -rf create_compressed_fs extract_compressed_fs zoom *.o *.ko Module.symvers .cloop* .compressed_loop.* .tmp* diff --git a/features/buildroot/package/cloop/cloop.hash b/features/buildroot/package/cloop/cloop.hash new file mode 100644 index 00000000..9acbceb0 --- /dev/null +++ b/features/buildroot/package/cloop/cloop.hash @@ -0,0 +1,2 @@ +# From http://debian-knoppix.alioth.debian.org/packages/sources/cloop/cloop_2.634-1.dsc +sha256 d6d03e2368e19f9c6c3a313e9c34cf0620d129ce26132a8805580d953769dbbd cloop_2.634-1.tar.gz diff --git a/features/buildroot/package/cloop/cloop.mk b/features/buildroot/package/cloop/cloop.mk new file mode 100644 index 00000000..ad50d0a9 --- /dev/null +++ b/features/buildroot/package/cloop/cloop.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# cloop +# +################################################################################ + +CLOOP_VERSION = 2.634-1 +CLOOP_SOURCE = cloop_$(CLOOP_VERSION).tar.gz +CLOOP_SITE = http://debian-knoppix.alioth.debian.org/packages/sources/cloop +CLOOP_LICENSE = GPL-2.0 (module), GPL-2.0+ (advancecomp) +CLOOP_LICENSE_FILES = README advancecomp-1.15/COPYING + +HOST_CLOOP_DEPENDENCIES = host-zlib + +define HOST_CLOOP_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE1) -C $(@D) APPSONLY=yes +endef + +define HOST_CLOOP_INSTALL_CMDS + $(INSTALL) -m 0755 -d $(HOST_DIR)/bin + $(INSTALL) -m 755 $(@D)/create_compressed_fs $(HOST_DIR)/bin + $(INSTALL) -m 755 $(@D)/extract_compressed_fs $(HOST_DIR)/bin +endef + +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/cmake/0001-rename_cmake_rootfile.patch b/features/buildroot/package/cmake/0001-rename_cmake_rootfile.patch new file mode 100644 index 00000000..8c168c15 --- /dev/null +++ b/features/buildroot/package/cmake/0001-rename_cmake_rootfile.patch @@ -0,0 +1,29 @@ +ctest fails on the target, because it cannot find CMake.cmake inside +CMAKE_DATA_DIR (typically set to "/usr/share/cmake-3.0"): all *.cmake +files are removed at build time via the target-finalize rule. + +This buildroot-specific patch makes sure ctest looks also for +"Modules/CMake.cmake.ctest" before complaining + +[Vincent: tweak patch for 3.6.3] + +Signed-off-by: Davide Viti +Signed-off-by: Vicente Olivert Riera + +diff -rup a/Source/cmake.cxx b/Source/cmake.cxx +--- a/Source/cmake.cxx 2016-07-07 15:47:27.000000000 +0100 ++++ b/Source/cmake.cxx 2016-07-14 10:14:59.914265515 +0100 +@@ -771,7 +771,12 @@ int cmake::AddCMakePaths() + "Path to cpack program executable.", cmState::INTERNAL); + #endif + if (!cmSystemTools::FileExists( +- (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str())) { ++ (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str()) && ++ !cmSystemTools::FileExists( ++ (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake.ctest").c_str() ++ ) ++ ) ++ { + // couldn't find modules + cmSystemTools::Error( + "Could not find CMAKE_ROOT !!!\n" diff --git a/features/buildroot/package/cmake/0002-FindLibUV-Also-check-uv-version-h-for-version-detection.patch b/features/buildroot/package/cmake/0002-FindLibUV-Also-check-uv-version-h-for-version-detection.patch new file mode 100644 index 00000000..9abf1a53 --- /dev/null +++ b/features/buildroot/package/cmake/0002-FindLibUV-Also-check-uv-version-h-for-version-detection.patch @@ -0,0 +1,32 @@ +From 92c4b3d900a24512967a960f108d985c819fdf00 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa +Date: Sat, 23 Jun 2018 20:30:07 +0200 +Subject: [PATCH] FindLibUV: Also check uv/version.h for version detection + +Starting with libuv 1.21.0, libuv's headers were moved into a uv/ directory. +Make FindLibUV aware of the file's new location for configuration to work. + +Upstream change: https://github.com/libuv/libuv/pull/1429 + +Signed-off-by: Fabrice Fontaine +[Retrieve from: https://gitlab.kitware.com/cmake/cmake/merge_requests/2169] +--- + Source/Modules/FindLibUV.cmake | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Source/Modules/FindLibUV.cmake b/Source/Modules/FindLibUV.cmake +index ba13d75f8b..0554d62c23 100644 +--- a/Source/Modules/FindLibUV.cmake ++++ b/Source/Modules/FindLibUV.cmake +@@ -63,6 +63,8 @@ mark_as_advanced(LibUV_INCLUDE_DIR) + set(_LibUV_H_REGEX "#[ \t]*define[ \t]+UV_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+") + if(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv-version.h") + file(STRINGS "${LibUV_INCLUDE_DIR}/uv-version.h" _LibUV_H REGEX "${_LibUV_H_REGEX}") ++elseif(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv/version.h") ++ file(STRINGS "${LibUV_INCLUDE_DIR}/uv/version.h" _LibUV_H REGEX "${_LibUV_H_REGEX}") + elseif(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv.h") + file(STRINGS "${LibUV_INCLUDE_DIR}/uv.h" _LibUV_H REGEX "${_LibUV_H_REGEX}") + else() +-- +2.16.4 + diff --git a/features/buildroot/package/cmake/Config.in b/features/buildroot/package/cmake/Config.in new file mode 100644 index 00000000..e7bd14e6 --- /dev/null +++ b/features/buildroot/package/cmake/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ + BR2_m68k || BR2_mips || BR2_mips64 || \ + BR2_mipsel || BR2_mips64el || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_i386 || BR2_x86_64 || BR2_xtensa + +config BR2_PACKAGE_CMAKE + bool + +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_USE_WCHAR # libarchive + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_USE_MMU # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + select BR2_PACKAGE_CMAKE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBARCHIVE + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_XZ + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_RHASH + help + CTest is a testing tool distributed as a part of CMake. It + can be used to automate updating (using CVS for example), + configuring, building, testing, performing memory checking, + performing coverage, and submitting results to a CDash or + Dart dashboard system. + + http://www.cmake.org/ + +comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7, 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_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/features/buildroot/package/cmake/Config.in.host b/features/buildroot/package/cmake/Config.in.host new file mode 100644 index 00000000..b2e210ee --- /dev/null +++ b/features/buildroot/package/cmake/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_CMAKE + bool "host cmake" + help + CMake is an open-source, cross-platform family of tools + designed to build, test and package software. CMake is used + to control the software compilation process using simple + platform and compiler independent configuration files, and + generate native makefiles and workspaces that can be used in + the compiler environment of your choice. + + http://www.cmake.org/ diff --git a/features/buildroot/package/cmake/cmake.hash b/features/buildroot/package/cmake/cmake.hash new file mode 100644 index 00000000..9e0159a3 --- /dev/null +++ b/features/buildroot/package/cmake/cmake.hash @@ -0,0 +1,5 @@ +# From http://www.cmake.org/files/v3.8/cmake-3.8.2-SHA-256.txt +sha256 da3072794eb4c09f2d782fcee043847b99bb4cf8d4573978d9b2024214d6e92d cmake-3.8.2.tar.gz + +# Locally calculated +sha256 af3030e1bf1af2f534430fdfe3cfc5a617966648a2a7f0c06a631adc92be1e5f Copyright.txt diff --git a/features/buildroot/package/cmake/cmake.mk b/features/buildroot/package/cmake/cmake.mk new file mode 100644 index 00000000..a00691a1 --- /dev/null +++ b/features/buildroot/package/cmake/cmake.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# cmake +# +################################################################################ + +CMAKE_VERSION_MAJOR = 3.8 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).2 +CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) +CMAKE_LICENSE = BSD-3-Clause +CMAKE_LICENSE_FILES = Copyright.txt + +# CMake is a particular package: +# * CMake can be built using the generic infrastructure or the cmake one. +# Since Buildroot has no requirement regarding the host system cmake +# program presence, it uses the generic infrastructure to build the +# host-cmake package, then the (target-)cmake package can be built +# using the cmake infrastructure; +# * CMake bundles its dependencies within its sources. This is the +# reason why the host-cmake package has no dependencies:, whereas +# the (target-)cmake package has a lot of dependencies, using only +# the system-wide libraries instead of rebuilding and statically +# linking with the ones bundled into the CMake sources. + +CMAKE_DEPENDENCIES = zlib jsoncpp libcurl libarchive expat bzip2 xz libuv rhash + +CMAKE_CONF_OPTS = \ + -DKWSYS_LFS_WORKS=TRUE \ + -DKWSYS_CHAR_IS_SIGNED=TRUE \ + -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DCTEST_USE_XMLRPC=OFF \ + -DBUILD_CursesDialog=OFF + +# Get rid of -I* options from $(HOST_CPPFLAGS) to prevent that a +# header available in $(HOST_DIR)/include is used instead of a +# CMake internal header, e.g. lzma* headers of the xz package +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed -r "s%$(HOST_CPPFLAGS)%%") +HOST_CMAKE_CXXFLAGS = $(shell echo $(HOST_CXXFLAGS) | sed -r "s%$(HOST_CPPFLAGS)%%") + +define HOST_CMAKE_CONFIGURE_CMDS + (cd $(@D); \ + $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CMAKE_CFLAGS)" \ + ./bootstrap --prefix=$(HOST_DIR) \ + --parallel=$(PARALLEL_JOBS) -- \ + -DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(HOST_CMAKE_CXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \ + -DCMAKE_USE_OPENSSL:BOOL=OFF \ + -DBUILD_CursesDialog=OFF \ + ) +endef + +define HOST_CMAKE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_CMAKE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install/fast +endef + +define CMAKE_REMOVE_EXTRA_DATA + rm $(TARGET_DIR)/usr/bin/{cmake,cpack} + rm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{completions,editors} + rm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{Help,include} +endef + +define CMAKE_INSTALL_CTEST_CFG_FILE + $(INSTALL) -m 0644 -D $(@D)/Modules/CMake.cmake \ + $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/Modules/CMake.cmake.ctest +endef + +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_REMOVE_EXTRA_DATA +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_INSTALL_CTEST_CFG_FILE + +define CMAKE_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(HOST_MAKE_ENV) DESTDIR=$(TARGET_DIR) \ + cmake -P cmake_install.cmake \ + ) +endef + +$(eval $(cmake-package)) +$(eval $(host-generic-package)) diff --git a/features/buildroot/package/cmocka/Config.in b/features/buildroot/package/cmocka/Config.in new file mode 100644 index 00000000..cf49d0f6 --- /dev/null +++ b/features/buildroot/package/cmocka/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CMOCKA + bool cmocka + depends on !BR2_STATIC_LIBS + help + cmocka is an elegant unit testing framework for C with support + for mock objects. It only requires the standard C library, + works on a range of computing platforms (including embedded) + and with different compilers. It is a fork of Google's very + popular cmockery unit testing framework to fix bugs and + support it in the future. + + https://cmocka.org + +comment "cmocka needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/features/buildroot/package/cmocka/cmocka.hash b/features/buildroot/package/cmocka/cmocka.hash new file mode 100644 index 00000000..007dd7a7 --- /dev/null +++ b/features/buildroot/package/cmocka/cmocka.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f0ccd8242d55e2fd74b16ba518359151f6f8383ff8aef4976e48393f77bba8b6 cmocka-1.1.5.tar.xz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/features/buildroot/package/cmocka/cmocka.mk b/features/buildroot/package/cmocka/cmocka.mk new file mode 100644 index 00000000..eafb4898 --- /dev/null +++ b/features/buildroot/package/cmocka/cmocka.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# cmocka +# +################################################################################ + +CMOCKA_VERSION = 1.1.5 +CMOCKA_SOURCE = cmocka-$(CMOCKA_VERSION).tar.xz +CMOCKA_SITE = https://cmocka.org/files/1.1 +CMOCKA_LICENSE = Apache-2.0 +CMOCKA_LICENSE_FILES = COPYING +CMOCKA_INSTALL_STAGING = YES +CMOCKA_CONF_OPTS = -DWITH_EXAMPLES=OFF + +# cmocka only supports out of source builds +CMOCKA_SUPPORTS_IN_SOURCE_BUILD = NO + +# cmocka always builds a shared library, but you can optionally build a static +# library as well +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +CMOCKA_CONF_OPTS += -DWITH_STATIC_LIB=ON +endif + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/cog/Config.in b/features/buildroot/package/cog/Config.in new file mode 100644 index 00000000..768fcefa --- /dev/null +++ b/features/buildroot/package/cog/Config.in @@ -0,0 +1,27 @@ +comment "cog needs wpewebkit and a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_WPEWEBKIT || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_COG + bool "cog" + depends on BR2_PACKAGE_WPEWEBKIT + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS + help + Single "window" launcher for the WebKit WPE port, and + helper library for implementing WPE launcher. It does + not provide any chrome, and is suitable to be used + as a Web application container. + +if BR2_PACKAGE_COG + +config BR2_PACKAGE_COG_PROGRAMS_HOME_URI + string "home uri" + default "https://wpewebkit.org" + help + Default URI to open when "cog" is launched. If an empty + string is used, there is no default and the URI to open + must be always specified in the command line. + +endif diff --git a/features/buildroot/package/cog/cog.hash b/features/buildroot/package/cog/cog.hash new file mode 100644 index 00000000..18b53e4e --- /dev/null +++ b/features/buildroot/package/cog/cog.hash @@ -0,0 +1,7 @@ +# From https://github.com/Igalia/cog/releases/tag/v0.3.1 +md5 65bb078aad576b8402f973234e86cc82 cog-0.3.1.tar.xz +sha1 d73b060618f342accb12db71a7578940c2243d4c cog-0.3.1.tar.xz +sha256 ca7eae333cc02b947ec3d657a2090f01a9b08f9fabb855a585472edafbd9e7eb cog-0.3.1.tar.xz + +# Hashes for license files: +sha256 e6c42d93c68b292bcccf6d2ec3e13da85df90b718ba27c2c2a01053a9d009252 COPYING diff --git a/features/buildroot/package/cog/cog.mk b/features/buildroot/package/cog/cog.mk new file mode 100644 index 00000000..615d6664 --- /dev/null +++ b/features/buildroot/package/cog/cog.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# cog +# +################################################################################ + +COG_VERSION = 0.3.1 +COG_SITE = https://github.com/Igalia/cog/releases/download/v$(COG_VERSION) +COG_SOURCE = cog-$(COG_VERSION).tar.xz +COG_INSTALL_STAGING = YES +COG_DEPENDENCIES = dbus wpewebkit wpebackend-fdo +COG_LICENSE = MIT +COG_LICENSE_FILES = COPYING +COG_CONF_OPTS = \ + -DCOG_BUILD_PROGRAMS=ON \ + -DCOG_PLATFORM_FDO=ON \ + -DCOG_HOME_URI='$(call qstrip,$(BR2_PACKAGE_COG_PROGRAMS_HOME_URI))' + +$(eval $(cmake-package)) diff --git a/features/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch b/features/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch new file mode 100644 index 00000000..247d32b5 --- /dev/null +++ b/features/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch @@ -0,0 +1,87 @@ +From e170f3559fcda6d37a012aba187a96b1f42e8f9d Mon Sep 17 00:00:00 2001 +From: Ruben Kerkhof +Date: Sun, 2 Jul 2017 21:52:14 +0200 +Subject: [PATCH] libcollectdclient: increase error buffer +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf8 +Content-Transfer-Encoding: 8bit + +make[1]: Entering directory '/home/ruben/src/collectd' + CC src/libcollectdclient/libcollectdclient_la-client.lo +src/libcollectdclient/client.c: In function ‘lcc_getval’: +src/libcollectdclient/client.c:621:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:621:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ +src/libcollectdclient/client.c: In function ‘lcc_putval’: +src/libcollectdclient/client.c:754:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:754:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ +src/libcollectdclient/client.c: In function ‘lcc_flush’: +src/libcollectdclient/client.c:802:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:802:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ +src/libcollectdclient/client.c: In function ‘lcc_listval’: +src/libcollectdclient/client.c:834:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:834:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ + +Fixes #2200 + +[Upstream commit: https://git.octo.it/?p=collectd.git;a=commitdiff;h=e170f3559fcda6d37a012aba187a96b1f42e8f9d] +Signed-off-by: Thomas Petazzoni +--- + src/libcollectdclient/client.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libcollectdclient/client.c b/src/libcollectdclient/client.c +index 51a4ab2..3ae2e71 100644 +--- a/src/libcollectdclient/client.c ++++ b/src/libcollectdclient/client.c +@@ -99,7 +99,7 @@ + */ + struct lcc_connection_s { + FILE *fh; +- char errbuf[1024]; ++ char errbuf[2048]; + }; + + struct lcc_response_s { +-- +1.7.10.4 + diff --git a/features/buildroot/package/collectd/0002-gps-plugin-fix-build-with-newer-gpsd.patch b/features/buildroot/package/collectd/0002-gps-plugin-fix-build-with-newer-gpsd.patch new file mode 100644 index 00000000..b5abf815 --- /dev/null +++ b/features/buildroot/package/collectd/0002-gps-plugin-fix-build-with-newer-gpsd.patch @@ -0,0 +1,43 @@ +From 991a6d3fd38c2435d94de3853fda36b3330cf6ab Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 9 Oct 2018 19:57:21 +0300 +Subject: [PATCH] gps plugin: fix build with newer gpsd + +gpsd version 3.18 changed the prototype of gps_read(). Make the +gps_read() call depend on GPSD_API_MAJOR_VERSION to fix that. + +This fixes build failures like: + +gps.c: In function 'cgps_thread': +gps.c:144:11: error: too few arguments to function 'gps_read' + if (gps_read(&gpsd_conn) == -1) { + ^~~~~~~~ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/collectd/collectd/pull/2947 + + src/gps.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/gps.c b/src/gps.c +index 1d32d0492617..b22c3a2e5ecd 100644 +--- a/src/gps.c ++++ b/src/gps.c +@@ -141,7 +141,12 @@ static void *cgps_thread(void *pData) { + continue; + } + +- if (gps_read(&gpsd_conn) == -1) { ++#if GPSD_API_MAJOR_VERSION > 6 ++ if (gps_read(&gpsd_conn, NULL, 0) == -1) ++#else ++ if (gps_read(&gpsd_conn) == -1) ++#endif ++ { + WARNING("gps plugin: incorrect data! (err_count: %d)", err_count); + err_count++; + +-- +2.19.1 + diff --git a/features/buildroot/package/collectd/0003-sensors-Removed-checks-for-upper-limit-of-SENSORS_AP.patch b/features/buildroot/package/collectd/0003-sensors-Removed-checks-for-upper-limit-of-SENSORS_AP.patch new file mode 100644 index 00000000..9270021d --- /dev/null +++ b/features/buildroot/package/collectd/0003-sensors-Removed-checks-for-upper-limit-of-SENSORS_AP.patch @@ -0,0 +1,89 @@ +From 069796bd76dd1ab0089a64f7c9c2a3c9f1475414 Mon Sep 17 00:00:00 2001 +From: Pavel Rochnyack +Date: Mon, 3 Dec 2018 18:34:14 +0700 +Subject: [PATCH] sensors: Removed checks for upper limit of + SENSORS_API_VERSION + +That makes no more sense after lm-sensors got new maintainers. + +Issue: #3006 + +[Vadim Kochan: backported to support 5.7.1 version] +Signed-off-by: Vadim Kochan +--- + src/sensors.c | 17 ++++++----------- + 1 file changed, 6 insertions(+), 11 deletions(-) + +diff --git a/src/sensors.c b/src/sensors.c +index 8f1824d..409dc38 100644 +--- a/src/sensors.c ++++ b/src/sensors.c +@@ -149,7 +149,7 @@ typedef struct featurelist { + static char *conffile = SENSORS_CONF_PATH; + /* #endif SENSORS_API_VERSION < 0x400 */ + +-#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) ++#elif (SENSORS_API_VERSION >= 0x400) + typedef struct featurelist { + const sensors_chip_name *chip; + const sensors_feature *feature; +@@ -159,11 +159,6 @@ typedef struct featurelist { + + static char *conffile = NULL; + static _Bool use_labels = 0; +-/* #endif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */ +- +-#else /* if SENSORS_API_VERSION >= 0x500 */ +-#error "This version of libsensors is not supported yet. Please report this " \ +- "as bug." + #endif + + static featurelist_t *first_feature = NULL; +@@ -223,7 +218,7 @@ static int sensors_config(const char *key, const char *value) { + if (IS_TRUE(value)) + ignorelist_set_invert(sensor_list, 0); + } +-#if (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) ++#if (SENSORS_API_VERSION >= 0x400) + else if (strcasecmp(key, "UseLabels") == 0) { + use_labels = IS_TRUE(value) ? 1 : 0; + } +@@ -353,7 +348,7 @@ static int sensors_load_conf(void) { + } /* while sensors_get_detected_chips */ + /* #endif SENSORS_API_VERSION < 0x400 */ + +-#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) ++#elif (SENSORS_API_VERSION >= 0x400) + chip_num = 0; + while ((chip = sensors_get_detected_chips(NULL, &chip_num)) != NULL) { + const sensors_feature *feature; +@@ -404,7 +399,7 @@ static int sensors_load_conf(void) { + } /* while (subfeature) */ + } /* while (feature) */ + } /* while (chip) */ +-#endif /* (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */ ++#endif /* (SENSORS_API_VERSION >= 0x400) */ + + if (first_feature == NULL) { + sensors_cleanup(); +@@ -479,7 +474,7 @@ static int sensors_read(void) { + } /* for fl = first_feature .. NULL */ + /* #endif SENSORS_API_VERSION < 0x400 */ + +-#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) ++#elif (SENSORS_API_VERSION >= 0x400) + for (featurelist_t *fl = first_feature; fl != NULL; fl = fl->next) { + double value; + int status; +@@ -518,7 +513,7 @@ static int sensors_read(void) { + + sensors_submit(plugin_instance, type, type_instance, value); + } /* for fl = first_feature .. NULL */ +-#endif /* (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */ ++#endif /* (SENSORS_API_VERSION >= 0x400) */ + + return (0); + } /* int sensors_read */ +-- +2.14.1 + diff --git a/features/buildroot/package/collectd/Config.in b/features/buildroot/package/collectd/Config.in new file mode 100644 index 00000000..990dd44e --- /dev/null +++ b/features/buildroot/package/collectd/Config.in @@ -0,0 +1,643 @@ +menuconfig BR2_PACKAGE_COLLECTD + bool "collectd" + # Uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + collectd is a daemon which collects system performance + statistics periodically and provides mechanisms to store + the values in a variety of ways, for example in RRD files. + + http://collectd.org/ + +if BR2_PACKAGE_COLLECTD + +menu "match plugins" + +config BR2_PACKAGE_COLLECTD_EMPTY_COUNTER + bool "empty counter" + help + Match counter values which are currently zero. + +config BR2_PACKAGE_COLLECTD_HASHED + bool "hashed" + help + Match values using a hash function of the hostname. + +config BR2_PACKAGE_COLLECTD_REGEX + bool "regex" + help + Match values by their identifier based on regular expressions. + +config BR2_PACKAGE_COLLECTD_TIMEDIFF + bool "timediff" + help + Match values with an invalid timestamp. + +config BR2_PACKAGE_COLLECTD_VALUE + bool "value" + help + Select values by their data sources' values. + +endmenu + +menu "misc plugins" + +config BR2_PACKAGE_COLLECTD_AGGREGATION + bool "aggregation" + help + The Aggregate plugin allows to aggregate multiple values into + a single value using one or several consolidation functions, + e.g. summation and average. + +config BR2_PACKAGE_COLLECTD_LOGFILE + bool "logfile" + default y + help + Writes log messages to a file or STDOUT/STDERR. + +config BR2_PACKAGE_COLLECTD_LOGSTASH + bool "logstash" + select BR2_PACKAGE_YAJL + help + Writes log messages formatted as logstash JSON events. + +config BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL + bool "notify_email" + depends on !BR2_STATIC_LIBS # libesmtp + select BR2_PACKAGE_LIBESMTP + select BR2_PACKAGE_OPENSSL + help + Send an E-mail with the notification message to the + configured recipients. + +comment "notify_email needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS + bool "notify_nagios" + help + Sends notifications to Nagios as a passive check result. + +config BR2_PACKAGE_COLLECTD_SYSLOG + bool "syslog" + default y + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_COLLECTD_THRESHOLD + bool "threshold" + help + Checks values against configured thresholds and creates + notifications if values are out of bounds. + +endmenu + +menu "read plugins" + +comment "Select at least one for collectd to be useful" + +config BR2_PACKAGE_COLLECTD_APACHE + bool "apache" + select BR2_PACKAGE_LIBCURL + help + Collects Apache's mod_status information. + +config BR2_PACKAGE_COLLECTD_APCUPS + bool "apcups" + help + Collects UPS statistics from apcupsd. + +config BR2_PACKAGE_COLLECTD_BATTERY + bool "battery" + help + Collects the battery's charge, the drawn current and voltage. + +config BR2_PACKAGE_COLLECTD_BIND + bool "bind" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Collects BIND DNS statistics. + +config BR2_PACKAGE_COLLECTD_CEPH + bool "ceph" + select BR2_PACKAGE_YAJL + help + Statistics from the Ceph distributed storage system. + +config BR2_PACKAGE_COLLECTD_CHRONY + bool "chrony" + help + Collects NTP data from the chrony NTP server. + +config BR2_PACKAGE_COLLECTD_CGROUPS + bool "cgroups" + help + Collects CGroups CPU usage accounting. + +config BR2_PACKAGE_COLLECTD_CONNTRACK + bool "conntrack" + help + Collects the number of entries in Linux's connection tracking + table. + +config BR2_PACKAGE_COLLECTD_CONTEXTSWITCH + bool "contextswitch" + help + Collects the number of context switches done by the operating + system. + +config BR2_PACKAGE_COLLECTD_CPU + bool "cpu" + help + Collects the amount of time spent by the CPU in various + states. + +config BR2_PACKAGE_COLLECTD_CPUFREQ + bool "cpufreq" + help + Collects the current CPU's frequency. + +config BR2_PACKAGE_COLLECTD_CPUSLEEP + bool "cpusleep" + help + Measures time spent by CPU in deep sleep mode. + +config BR2_PACKAGE_COLLECTD_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + Uses libcurl to read files and then parses them according + to the configuration. + +config BR2_PACKAGE_COLLECTD_CURL_JSON + bool "curl-json" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_YAJL + help + Queries JSON data using the cURL library and parses it + according to the user's configuration using YAJL. + +config BR2_PACKAGE_COLLECTD_CURL_XML + bool "curl-xml" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Reads files using libcurl and parses it as XML. + +config BR2_PACKAGE_COLLECTD_DF + bool "df" + help + Collects file system usage information. + +config BR2_PACKAGE_COLLECTD_DISK + bool "disk" + help + Collects performance statistics of hard-disks and partitions. + +config BR2_PACKAGE_COLLECTD_DNS + bool "dns" + select BR2_PACKAGE_LIBPCAP + help + Collects statistics of DNS traffic using libpcap. + +config BR2_PACKAGE_COLLECTD_DRBD + bool "drbd" + help + Collect individual drbd resource statistics. + +config BR2_PACKAGE_COLLECTD_ENTROPY + bool "entropy" + help + Collects the available entropy on a system. + +config BR2_PACKAGE_COLLECTD_ETHSTAT + bool "ethstat" + help + Collects network interface card statistics. + +config BR2_PACKAGE_COLLECTD_EXEC + bool "exec" + help + Executes scripts and reads values back that are printed + to STDOUT by that program. + +config BR2_PACKAGE_COLLECTD_FHCOUNT + bool "fhcount" + help + File handles statistics. + +config BR2_PACKAGE_COLLECTD_FILECOUNT + bool "filecount" + help + Counts the number of files in a directory and all its + subdirectories. + +config BR2_PACKAGE_COLLECTD_FSCACHE + bool "fscache" + help + Collects information about the file-system based caching + infrastructure for network file-systems and other slow media. + +config BR2_PACKAGE_COLLECTD_GPS + bool "gps" + select BR2_PACKAGE_GPSD + help + Reports the number of sattelites seen by and precision + of a GPS receiver. + +config BR2_PACKAGE_COLLECTD_HUGEPAGES + bool "hugepages" + help + Reports the number of used and free hugepages on Linux. + +config BR2_PACKAGE_COLLECTD_INTERFACE + bool "interface" + help + Collects information about the traffic of network interfaces. + +config BR2_PACKAGE_COLLECTD_IPC + bool "ipc" + help + IPC counters: semaphores used, number of allocated segments + in shared memory and more. + +config BR2_PACKAGE_COLLECTD_IPTABLES + bool "iptables" + select BR2_PACKAGE_IPTABLES + help + Gather statistics from iptables packet filter. + +config BR2_PACKAGE_COLLECTD_IPVS + bool "ipvs" + help + Extracts statistics from IP Virtual Server (IPVS), the + transport-layer load-balancer of the LVS project. + It stores traffic and connections history for each of the + Real Servers (RS) behind a local Virtual Server (VS). + Collectd must be run on Directors (in LVS jargon). + +config BR2_PACKAGE_COLLECTD_IRQ + bool "irq" + help + Collects the number of interrupts. + +config BR2_PACKAGE_COLLECTD_LOAD + bool "load" + help + Collects the system load. + +config BR2_PACKAGE_COLLECTD_MD + bool "md" + help + Collects software-RAID device information. + +config BR2_PACKAGE_COLLECTD_MEMCACHEC + bool "memcachec" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBMEMCACHED + help + Query and parse data from a memcache daemon. + +comment "memcachec needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_COLLECTD_MEMCACHED + bool "memcached" + help + Collects statistics from a memcached daemon. + +config BR2_PACKAGE_COLLECTD_MEMORY + bool "memory" + help + Collects physical memory utilization. + +config BR2_PACKAGE_COLLECTD_MODBUS + bool "modbus" + select BR2_PACKAGE_LIBMODBUS + help + Reads register values from a modbus "slave" via Modbus/TCP. + +config BR2_PACKAGE_COLLECTD_MYSQL + bool "mysql" + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_USE_MMU # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_MYSQL + help + Connects to a MySQL database and issues a "show status" + command. + +config BR2_PACKAGE_COLLECTD_NETLINK + bool "netlink" + select BR2_PACKAGE_LIBMNL + help + Get statistics for interfaces, qdiscs, classes, and filters. + +config BR2_PACKAGE_COLLECTD_NFS + bool "nfs" + help + Collects information about the usage of the Network File + System. + +config BR2_PACKAGE_COLLECTD_NGINX + bool "nginx" + select BR2_PACKAGE_LIBCURL + help + Collects the number of requests handled by the nginx daemon + since startup and the number of current connections by state. + +config BR2_PACKAGE_COLLECTD_NTPD + bool "ntpd" + help + Queries an NTP server and extracts parameters. + +config BR2_PACKAGE_COLLECTD_OLSRD + bool "olsrd" + help + Reads information about meshed networks from olsrd. + +config BR2_PACKAGE_COLLECTD_OPENLDAP + bool "openldap" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_OPENLDAP + help + Read monitoring information from OpenLDAP's cn=Monitor + subtree. + +comment "openldap support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_COLLECTD_OPENVPN + bool "openvpn" + help + Reads the status file of OpenVPN to collect statistics. + +config BR2_PACKAGE_COLLECTD_PING + bool "ping" + select BR2_PACKAGE_LIBOPING + help + Mesures network latency using ICMP "echo requests". + +config BR2_PACKAGE_COLLECTD_POSTGRESQL + bool "postgresql" + depends on BR2_USE_WCHAR # postgresql + select BR2_PACKAGE_POSTGRESQL + help + Connects to and executes SQL statements on a PostgreSQL + database. It then reads back the results and, depending on the + configuration, the returned values are then converted into + collectd 'value lists'. + +comment "postgresql support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_COLLECTD_PROCESSES + bool "processes" + help + Collects the number of processes gruped by state. + +config BR2_PACKAGE_COLLECTD_PROTOCOLS + bool "protocols" + help + Collects information about the network protocols. + +config BR2_PACKAGE_COLLECTD_REDIS + bool "redis" + select BR2_PACKAGE_HIREDIS + help + Connects to one or more instances of Redis. + +config BR2_PACKAGE_COLLECTD_SENSORS + bool "sensors" + select BR2_PACKAGE_LM_SENSORS + help + Collects data from lm-sensors. + +config BR2_PACKAGE_COLLECTD_SERIAL + bool "serial" + help + Collects the traffic on serial interfaces. + +config BR2_PACKAGE_COLLECTD_SMART + bool "SMART" + depends on BR2_PACKAGE_HAS_UDEV # libatasmart + select BR2_PACKAGE_LIBATASMART + help + Collect SMART statistics, notably load cycle count, + temperature and bad sectors. + +comment "SMART requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_COLLECTD_STATSD + bool "StatsD" + help + StatsD network protocol to allow clients to report "events". + +config BR2_PACKAGE_COLLECTD_SNMP + bool "snmp" + select BR2_PACKAGE_NETSNMP + help + Reads values from SNMP devices. + +config BR2_PACKAGE_COLLECTD_SWAP + bool "swap" + help + Collects the amount of memory currently written to disk. + +config BR2_PACKAGE_COLLECTD_TABLE + bool "table" + help + Parses table-like structured plain-text files. + +config BR2_PACKAGE_COLLECTD_TAIL + bool "tail" + help + Tails log files and each line is given to one or more matches + which test if the line is relevant for any statistics. + +config BR2_PACKAGE_COLLECTD_TAIL_CSV + bool "tail csv" + help + Follows (tails) files in CSV format, parses each line and + submits extracted values. + +config BR2_PACKAGE_COLLECTD_TCPCONNS + bool "tcpconns" + help + Counts the number of TCP connections to/from a specified port. + +config BR2_PACKAGE_COLLECTD_THERMAL + bool "thermal" + help + Reads ACPI thermal zone information. + +config BR2_PACKAGE_COLLECTD_UPTIME + bool "uptime" + help + Keeps track of the system uptime. + +config BR2_PACKAGE_COLLECTD_USERS + bool "users" + help + Counts the number of users currently logged in. + +config BR2_PACKAGE_COLLECTD_VMEM + bool "vmem" + help + Collects information about the virtual memory subsystem. + +config BR2_PACKAGE_COLLECTD_WIRELESS + bool "wireless" + help + Collects signal quality, power and noise ratio for WLAN cards. + +config BR2_PACKAGE_COLLECTD_ZOOKEEPER + bool "zookeeper" + help + Read data from Zookeeper's MNTR command. + +endmenu + +menu "target plugins" + +config BR2_PACKAGE_COLLECTD_NOTIFICATION + bool "notification" + help + Create and dispatch a notification. + +config BR2_PACKAGE_COLLECTD_REPLACE + bool "replace" + help + Replace parts of an identifier using regular expressions. + +config BR2_PACKAGE_COLLECTD_SCALE + bool "scale" + help + Scale (multiply) values by an arbitrary number. + +config BR2_PACKAGE_COLLECTD_SET + bool "set" + help + Set (overwrite) entire parts of an identifier. + +endmenu + +menu "write plugins" + +comment "Select at least one for collectd to be useful" + +config BR2_PACKAGE_COLLECTD_AMQP + bool "amqp" + select BR2_PACKAGE_RABBITMQ_C + help + Send/receive values via the Advanced Message Queuing Protocol + (AMQP). + +config BR2_PACKAGE_COLLECTD_CSV + bool "csv" + help + Writes values to a plain-text file in Comma Separated Values + format. + +config BR2_PACKAGE_COLLECTD_GRAPHITE + bool "graphite" + help + Writes data collected to Carbon (Graphite's) storage API. + http://graphite.wikidot.com/start + +config BR2_PACKAGE_COLLECTD_MQTT + bool "mqtt" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mosquitto + select BR2_PACKAGE_MOSQUITTO + help + Sends metrics to and/or receives metrics from an MQTT broker. + +config BR2_PACKAGE_COLLECTD_NETWORK + bool "network" + help + Send/receive values from other instances of collectd. + +config BR2_PACKAGE_COLLECTD_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR # rrdtool + select BR2_PACKAGE_RRDTOOL + help + Writes values to RRD-files. + +comment "rrdtool support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_COLLECTD_RIEMANN + bool "riemann" + # riemann-c-client -> protobuf-c + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_HOST_GCC_AT_LEAST_4_8 + select BR2_PACKAGE_RIEMANN_C_CLIENT + select BR2_PACKAGE_LIBTOOL + help + Sends data to Riemann, a stream processing and monitoring + system. + +config BR2_PACKAGE_COLLECTD_UNIXSOCK + bool "unixsock" + help + Opens a UNIX domain socket and accepts connections. + One can send commands to the daemon and receive information. + +config BR2_PACKAGE_COLLECTD_WRITEHTTP + bool "write_http" + select BR2_PACKAGE_LIBCURL + help + Sends values collected to a web-server using HTTP POST and + PUTVAL. + +config BR2_PACKAGE_COLLECTD_WRITELOG + bool "write_log" + help + Writes data to the log. + +config BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS + bool "write_prometheus" + depends on BR2_INSTALL_LIBSTDCPP # protobuf-c + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" # protobuf-c + depends on BR2_HOST_GCC_AT_LEAST_4_8 # protobuf-c + select BR2_PACKAGE_LIBMICROHTTPD + select BR2_PACKAGE_PROTOBUF_C + help + Publishes values using an embedded HTTP server, in a format + compatible with Prometheus' collectd_exporter. + +comment "write_prometheus needs a toolchain w/ C++, host gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_COLLECTD_WRITEREDIS + bool "write_redis" + select BR2_PACKAGE_HIREDIS + help + Sends data to Redis. + +config BR2_PACKAGE_COLLECTD_WRITESENSU + bool "write_sensu" + help + Sends data to Sensu, a stream processing and monitoring + system, via the Sensu client local TCP socket. + +config BR2_PACKAGE_COLLECTD_WRITETSDB + bool "write_tsdb" + help + Sends data OpenTSDB, a scalable no master, no shared state + time series database. + +endmenu + +endif + +comment "collectd needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/features/buildroot/package/collectd/collectd.hash b/features/buildroot/package/collectd/collectd.hash new file mode 100644 index 00000000..cf7e0b83 --- /dev/null +++ b/features/buildroot/package/collectd/collectd.hash @@ -0,0 +1,6 @@ +# From https://collectd.org/files/SHA256SUM +sha256 7edd3643c0842215553b2421d5456f4e9a8a58b07e216b40a7e8e91026d8e501 collectd-5.7.1.tar.bz2 + +# Hash for license files +sha256 ed0409b2b1c30566dab5fcdaf46ee70e140c99788e22f0267645a9357b476ae4 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa libltdl/COPYING.LIB diff --git a/features/buildroot/package/collectd/collectd.mk b/features/buildroot/package/collectd/collectd.mk new file mode 100644 index 00000000..ca9a9e7a --- /dev/null +++ b/features/buildroot/package/collectd/collectd.mk @@ -0,0 +1,218 @@ +################################################################################ +# +# collectd +# +################################################################################ + +COLLECTD_VERSION = 5.7.1 +COLLECTD_SITE = http://collectd.org/files +COLLECTD_SOURCE = collectd-$(COLLECTD_VERSION).tar.bz2 +COLLECTD_CONF_ENV = ac_cv_lib_yajl_yajl_alloc=yes +COLLECTD_INSTALL_STAGING = YES +COLLECTD_LICENSE = MIT (daemon, plugins), GPL-2.0 (plugins), LGPL-2.1 (plugins) +COLLECTD_LICENSE_FILES = COPYING libltdl/COPYING.LIB + +# These require unmet dependencies, are fringe, pointless or deprecated +COLLECTD_PLUGINS_DISABLE = \ + apple_sensors aquaero ascent barometer dbi dpdkstat email \ + gmond grpc hddtemp intel_rdt ipmi java libvirt lpar lua lvm \ + madwifi mbmon mic multimeter netapp notify_desktop numa \ + nut onewire oracle perl pf pinba powerdns python routeros \ + rrdcached sigrok tape target_v5upgrade teamspeak2 ted \ + tokyotyrant turbostat uuid varnish virt vserver write_kafka \ + write_mongodb xencpu xmms zfs_arc zone + +COLLECTD_CONF_ENV += LIBS="-lm" + +# +# NOTE: There's also a third availible setting "intswap", which might +# be needed on some old ARM hardware (see [2]), but is not being +# accounted for as per discussion [1] +# +# [1] http://lists.busybox.net/pipermail/buildroot/2017-November/206100.html +# [2] http://lists.busybox.net/pipermail/buildroot/2017-November/206251.html +# +ifeq ($(BR2_ENDIAN),"BIG") +COLLECTD_FP_LAYOUT=endianflip +else +COLLECTD_FP_LAYOUT=nothing +endif + +COLLECTD_CONF_OPTS += \ + --with-nan-emulation \ + --with-fp-layout=$(COLLECTD_FP_LAYOUT) \ + --with-perl-bindings=no \ + --disable-werror \ + $(foreach p, $(COLLECTD_PLUGINS_DISABLE), --disable-$(p)) \ + $(if $(BR2_PACKAGE_COLLECTD_AGGREGATION),--enable-aggregation,--disable-aggregation) \ + $(if $(BR2_PACKAGE_COLLECTD_AMQP),--enable-amqp,--disable-amqp) \ + $(if $(BR2_PACKAGE_COLLECTD_APACHE),--enable-apache,--disable-apache) \ + $(if $(BR2_PACKAGE_COLLECTD_APCUPS),--enable-apcups,--disable-apcups) \ + $(if $(BR2_PACKAGE_COLLECTD_BATTERY),--enable-battery,--disable-battery) \ + $(if $(BR2_PACKAGE_COLLECTD_BIND),--enable-bind,--disable-bind) \ + $(if $(BR2_PACKAGE_COLLECTD_CEPH),--enable-ceph,--disable-ceph) \ + $(if $(BR2_PACKAGE_COLLECTD_CHRONY),--enable-chrony,--disable-chrony) \ + $(if $(BR2_PACKAGE_COLLECTD_CGROUPS),--enable-cgroups,--disable-cgroups) \ + $(if $(BR2_PACKAGE_COLLECTD_CONNTRACK),--enable-conntrack,--disable-conntrack) \ + $(if $(BR2_PACKAGE_COLLECTD_CONTEXTSWITCH),--enable-contextswitch,--disable-contextswitch) \ + $(if $(BR2_PACKAGE_COLLECTD_CPU),--enable-cpu,--disable-cpu) \ + $(if $(BR2_PACKAGE_COLLECTD_CPUFREQ),--enable-cpufreq,--disable-cpufreq) \ + $(if $(BR2_PACKAGE_COLLECTD_CPUSLEEP),--enable-cpusleep,--disable-cpusleep) \ + $(if $(BR2_PACKAGE_COLLECTD_CSV),--enable-csv,--disable-csv) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL),--enable-curl,--disable-curl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),--enable-curl_json,--disable-curl_json) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_XML),--enable-curl_xml,--disable-curl_xml) \ + $(if $(BR2_PACKAGE_COLLECTD_DF),--enable-df,--disable-df) \ + $(if $(BR2_PACKAGE_COLLECTD_DISK),--enable-disk,--disable-disk) \ + $(if $(BR2_PACKAGE_COLLECTD_DNS),--enable-dns,--disable-dns) \ + $(if $(BR2_PACKAGE_COLLECTD_DRBD),--enable-drbd,--disable-drbd) \ + $(if $(BR2_PACKAGE_COLLECTD_EMPTY_COUNTER),--enable-match_empty_counter,--disable-match_empty_counter) \ + $(if $(BR2_PACKAGE_COLLECTD_ENTROPY),--enable-entropy,--disable-entropy) \ + $(if $(BR2_PACKAGE_COLLECTD_ETHSTAT),--enable-ethstat,--disable-ethstat) \ + $(if $(BR2_PACKAGE_COLLECTD_EXEC),--enable-exec,--disable-exec) \ + $(if $(BR2_PACKAGE_COLLECTD_FHCOUNT),--enable-fhcount,--disable-fhcount) \ + $(if $(BR2_PACKAGE_COLLECTD_FILECOUNT),--enable-filecount,--disable-filecount) \ + $(if $(BR2_PACKAGE_COLLECTD_FSCACHE),--enable-fscache,--disable-fscache) \ + $(if $(BR2_PACKAGE_COLLECTD_GPS),--enable-gps,--disable-gps) \ + $(if $(BR2_PACKAGE_COLLECTD_GRAPHITE),--enable-write_graphite,--disable-write_graphite) \ + $(if $(BR2_PACKAGE_COLLECTD_HASHED),--enable-match_hashed,--disable-match_hashed) \ + $(if $(BR2_PACKAGE_COLLECTD_HUGEPAGES),--enable-hugepages,--disable-hugepages) \ + $(if $(BR2_PACKAGE_COLLECTD_INTERFACE),--enable-interface,--disable-interface) \ + $(if $(BR2_PACKAGE_COLLECTD_IPC),--enable-ipc,--disable-ipc) \ + $(if $(BR2_PACKAGE_COLLECTD_IPTABLES),--enable-iptables,--disable-iptables) \ + $(if $(BR2_PACKAGE_COLLECTD_IPVS),--enable-ipvs,--disable-ipvs) \ + $(if $(BR2_PACKAGE_COLLECTD_IRQ),--enable-irq,--disable-irq) \ + $(if $(BR2_PACKAGE_COLLECTD_LOAD),--enable-load,--disable-load) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGFILE),--enable-logfile,--disable-logfile) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),--enable-log_logstash,--disable-log_logstash) \ + $(if $(BR2_PACKAGE_COLLECTD_MD),--enable-md,--disable-md) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),--enable-memcachec,--disable-memcachec) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHED),--enable-memcached,--disable-memcached) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMORY),--enable-memory,--disable-memory) \ + $(if $(BR2_PACKAGE_COLLECTD_MODBUS),--enable-modbus,--disable-modbus) \ + $(if $(BR2_PACKAGE_COLLECTD_MQTT),--enable-mqtt,--disable-mqtt) \ + $(if $(BR2_PACKAGE_COLLECTD_MYSQL),--enable-mysql,--disable-mysql) \ + $(if $(BR2_PACKAGE_COLLECTD_NETLINK),--enable-netlink,--disable-netlink) \ + $(if $(BR2_PACKAGE_COLLECTD_NETWORK),--enable-network,--disable-network) \ + $(if $(BR2_PACKAGE_COLLECTD_NFS),--enable-nfs,--disable-nfs) \ + $(if $(BR2_PACKAGE_COLLECTD_NGINX),--enable-nginx,--disable-nginx) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFICATION),--enable-target_notification,--disable-target_notification) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),--enable-notify_email,--disable-notify_email) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS),--enable-notify_nagios,--disable-notify_nagios) \ + $(if $(BR2_PACKAGE_COLLECTD_NTPD),--enable-ntpd,--disable-ntpd) \ + $(if $(BR2_PACKAGE_COLLECTD_OLSRD),--enable-olsrd,--disable-olsrd) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),--enable-openldap,--disable-openldap) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENVPN),--enable-openvpn,--disable-openvpn) \ + $(if $(BR2_PACKAGE_COLLECTD_PING),--enable-ping,--disable-ping) \ + $(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),--enable-postgresql,--disable-postgresql) \ + $(if $(BR2_PACKAGE_COLLECTD_PROCESSES),--enable-processes,--disable-processes) \ + $(if $(BR2_PACKAGE_COLLECTD_PROTOCOLS),--enable-protocols,--disable-protocols) \ + $(if $(BR2_PACKAGE_COLLECTD_REDIS),--enable-redis,--disable-redis) \ + $(if $(BR2_PACKAGE_COLLECTD_REGEX),--enable-match_regex,--disable-match-regex) \ + $(if $(BR2_PACKAGE_COLLECTD_REPLACE),--enable-target_replace,--disable-target_replace) \ + $(if $(BR2_PACKAGE_COLLECTD_RIEMANN),--enable-write_riemann,--disable-write_riemann) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),--enable-rrdtool,--disable-rrdtool) \ + $(if $(BR2_PACKAGE_COLLECTD_SCALE),--enable-target_scale,--disable-target_scale) \ + $(if $(BR2_PACKAGE_COLLECTD_SENSORS),--enable-sensors,--disable-sensors) \ + $(if $(BR2_PACKAGE_COLLECTD_SERIAL),--enable-serial,--disable-serial) \ + $(if $(BR2_PACKAGE_COLLECTD_STATSD),--enable-statsd,--disable-statsd) \ + $(if $(BR2_PACKAGE_COLLECTD_SET),--enable-target_set,--disable-target_set) \ + $(if $(BR2_PACKAGE_COLLECTD_SMART),--enable-smart,--disable-smart) \ + $(if $(BR2_PACKAGE_COLLECTD_SNMP),--enable-snmp,--disable-snmp) \ + $(if $(BR2_PACKAGE_COLLECTD_SWAP),--enable-swap,--disable-swap) \ + $(if $(BR2_PACKAGE_COLLECTD_SYSLOG),--enable-syslog,--disable-syslog) \ + $(if $(BR2_PACKAGE_COLLECTD_TABLE),--enable-table,--disable-table) \ + $(if $(BR2_PACKAGE_COLLECTD_TAIL),--enable-tail,--disable-tail) \ + $(if $(BR2_PACKAGE_COLLECTD_TAIL_CSV),--enable-tail_csv,--disable-tail_csv) \ + $(if $(BR2_PACKAGE_COLLECTD_TCPCONNS),--enable-tcpconns,--disable-tcpconns) \ + $(if $(BR2_PACKAGE_COLLECTD_THERMAL),--enable-thermal,--disable-thermal) \ + $(if $(BR2_PACKAGE_COLLECTD_THRESHOLD),--enable-threshold,--disable-threshold) \ + $(if $(BR2_PACKAGE_COLLECTD_TIMEDIFF),--enable-match_timediff,--disable-match_timediff) \ + $(if $(BR2_PACKAGE_COLLECTD_UNIXSOCK),--enable-unixsock,--disable-unixsock) \ + $(if $(BR2_PACKAGE_COLLECTD_UPTIME),--enable-uptime,--disable-uptime) \ + $(if $(BR2_PACKAGE_COLLECTD_USERS),--enable-users,--disable-users) \ + $(if $(BR2_PACKAGE_COLLECTD_VALUE),--enable-match_value,--disable-match_value) \ + $(if $(BR2_PACKAGE_COLLECTD_VMEM),--enable-vmem,--disable-vmem) \ + $(if $(BR2_PACKAGE_COLLECTD_WIRELESS),--enable-wireless,--disable-wireless) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),--enable-write_http,--disable-write_http) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITELOG),--enable-write_log,--disable-write_log) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),--enable-write_prometheus,--disable-write_prometheus) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEREDIS),--enable-write_redis,--disable-write_redis) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITESENSU),--enable-write_sensu,--disable-write_sensu) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITETSDB),--enable-write_tsdb,--disable-write_tsdb) \ + $(if $(BR2_PACKAGE_COLLECTD_ZOOKEEPER),--enable-zookeeper,--disable-zookeeper) + +COLLECTD_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_COLLECTD_AMQP),rabbitmq-c) \ + $(if $(BR2_PACKAGE_COLLECTD_APACHE),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_BIND),libcurl libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_CEPH),yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),libcurl yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_XML),libcurl libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_DNS),libpcap) \ + $(if $(BR2_PACKAGE_COLLECTD_GPS),gpsd) \ + $(if $(BR2_PACKAGE_COLLECTD_IPTABLES),iptables) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),libmemcached) \ + $(if $(BR2_PACKAGE_COLLECTD_MODBUS),libmodbus) \ + $(if $(BR2_PACKAGE_COLLECTD_MQTT),mosquitto) \ + $(if $(BR2_PACKAGE_COLLECTD_MYSQL),mysql) \ + $(if $(BR2_PACKAGE_COLLECTD_NETLINK),libmnl) \ + $(if $(BR2_PACKAGE_COLLECTD_NGINX),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),libesmtp) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),openldap) \ + $(if $(BR2_PACKAGE_COLLECTD_PING),liboping) \ + $(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),postgresql) \ + $(if $(BR2_PACKAGE_COLLECTD_REDIS),hiredis) \ + $(if $(BR2_PACKAGE_COLLECTD_RIEMANN),libtool riemann-c-client) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),rrdtool) \ + $(if $(BR2_PACKAGE_COLLECTD_SENSORS),lm-sensors) \ + $(if $(BR2_PACKAGE_COLLECTD_SMART),libatasmart) \ + $(if $(BR2_PACKAGE_COLLECTD_SNMP),netsnmp) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),libmicrohttpd protobuf-c) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEREDIS),hiredis) + +# include/library fixups +ifeq ($(BR2_PACKAGE_LIBCURL),y) +COLLECTD_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_MYSQL),y) +COLLECTD_CONF_OPTS += --with-libmysql=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_NETSNMP),y) +COLLECTD_CONF_OPTS += --with-libnetsnmp=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +COLLECTD_CONF_OPTS += --with-libpq=$(STAGING_DIR)/usr/bin/pg_config +COLLECTD_CONF_ENV += LIBS="-lpthread -lm" +endif +ifeq ($(BR2_PACKAGE_YAJL),y) +COLLECTD_CONF_OPTS += --with-yajl=$(STAGING_DIR)/usr +endif + +# network can use libgcrypt +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +COLLECTD_DEPENDENCIES += libgcrypt +COLLECTD_CONF_OPTS += --with-libgcrypt=$(STAGING_DIR)/usr/bin/libgcrypt-config +else +COLLECTD_CONF_OPTS += --with-libgcrypt=no +endif + +define COLLECTD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install + rm -f $(TARGET_DIR)/usr/bin/collectd-nagios + rm -f $(TARGET_DIR)/usr/share/collectd/postgresql_default.conf +endef + +define COLLECTD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/collectd/collectd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/collectd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/collectd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/collectd.service +endef + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/collectd/collectd.service b/features/buildroot/package/collectd/collectd.service new file mode 100644 index 00000000..e203806f --- /dev/null +++ b/features/buildroot/package/collectd/collectd.service @@ -0,0 +1,17 @@ +[Unit] +Description=Statistics collection and monitoring daemon +After=local-fs.target network.target +Requires=local-fs.target network.target +ConditionPathExists=/etc/collectd.conf + +[Service] +Type=notify +NotifyAccess=main +EnvironmentFile=-/etc/default/collectd +ExecStartPre=/usr/sbin/collectd -t +ExecStart=/usr/sbin/collectd +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target diff --git a/features/buildroot/package/comix-cursors/Config.in b/features/buildroot/package/comix-cursors/Config.in new file mode 100644 index 00000000..ac7a089c --- /dev/null +++ b/features/buildroot/package/comix-cursors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_COMIX_CURSORS + bool "comix-cursors" + help + X11 mouse theme with a comics feeling. + + http://kde-look.org/content/show.php/ComixCursors?content=32627 diff --git a/features/buildroot/package/comix-cursors/comix-cursors.hash b/features/buildroot/package/comix-cursors/comix-cursors.hash new file mode 100644 index 00000000..d7f33ca0 --- /dev/null +++ b/features/buildroot/package/comix-cursors/comix-cursors.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3109e4d19d930a6a2a5c3422ebaaa2002640169118f9b12c042bb64995f3ec31 ComixCursors-0.8.2.tar.bz2 diff --git a/features/buildroot/package/comix-cursors/comix-cursors.mk b/features/buildroot/package/comix-cursors/comix-cursors.mk new file mode 100644 index 00000000..6cc73764 --- /dev/null +++ b/features/buildroot/package/comix-cursors/comix-cursors.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# comix-cursors +# +################################################################################ + +COMIX_CURSORS_VERSION = 0.8.2 +COMIX_CURSORS_SITE = http://limitland.de/downloads/comixcursors +COMIX_CURSORS_SOURCE = ComixCursors-$(COMIX_CURSORS_VERSION).tar.bz2 +COMIX_CURSORS_LICENSE = GPL-3.0 +COMIX_CURSORS_STRIP_COMPONENTS = 0 + +define COMIX_CURSORS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11 + cp -a $(@D)/* \ + $(TARGET_DIR)/usr/share/cursors/xorg-x11 +endef + +$(eval $(generic-package)) diff --git a/features/buildroot/package/conan-gtest/Config.in b/features/buildroot/package/conan-gtest/Config.in new file mode 100644 index 00000000..1a94f2c2 --- /dev/null +++ b/features/buildroot/package/conan-gtest/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CONAN_GTEST + bool "conan-gtest" + help + Google Testing and Mocking Framework + + https://github.com/google/googletest diff --git a/features/buildroot/package/conan-gtest/conan-gtest.mk b/features/buildroot/package/conan-gtest/conan-gtest.mk new file mode 100644 index 00000000..4dab555f --- /dev/null +++ b/features/buildroot/package/conan-gtest/conan-gtest.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# Conan GTest package +# +################################################################################ + +CONAN_GTEST_VERSION = 1.8.1 +CONAN_GTEST_INSTALL_STAGING = YES +CONAN_GTEST_LICENSE = BSD-3-Clause +CONAN_GTEST_LICENSE_FILES = licenses/LICENSE +CONAN_GTEST_SITE = $(call github,conan-io,conan-center-index,134dd3b84d629d27ba3474e01b688e9c0f25b9c8) +CONAN_GTEST_REFERENCE = zlib/$(CONAN_GTEST_VERSION)@ +CONAN_ZLIB_SUBDIR = recipes/gtest/all + +$(eval $(conan-package)) diff --git a/features/buildroot/package/conan-zlib/Config.in b/features/buildroot/package/conan-zlib/Config.in new file mode 100644 index 00000000..a97b3c97 --- /dev/null +++ b/features/buildroot/package/conan-zlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CONAN_ZLIB + bool "conan-zlib" + help + Standard (de)compression library. Used by things like + gzip and libpng. + + http://www.zlib.net diff --git a/features/buildroot/package/conan-zlib/conan-zlib.mk b/features/buildroot/package/conan-zlib/conan-zlib.mk new file mode 100644 index 00000000..ac69e952 --- /dev/null +++ b/features/buildroot/package/conan-zlib/conan-zlib.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# Conan zlib package +# +################################################################################ + +CONAN_ZLIB_VERSION = 1.2.11 +CONAN_ZLIB_INSTALL_STAGING = YES +CONAN_ZLIB_LICENSE = Zlib +CONAN_ZLIB_LICENSE_FILES = licenses/LICENSE +CONAN_ZLIB_SITE = $(call github,conan-io,conan-center-index,134dd3b84d629d27ba3474e01b688e9c0f25b9c8) +CONAN_ZLIB_REFERENCE = zlib/$(CONAN_ZLIB_VERSION)@ +CONAN_ZLIB_SUBDIR = recipes/zlib/1.2.11 + +$(eval $(conan-package)) diff --git a/features/buildroot/package/conan/Config.in b/features/buildroot/package/conan/Config.in new file mode 100644 index 00000000..ed42017a --- /dev/null +++ b/features/buildroot/package/conan/Config.in @@ -0,0 +1,40 @@ +choice + prompt "Build policy" + +config CONAN_BUILD_POLICY_MISSING + bool "missing" + help + It will build only the missing requires. + +config CONAN_BUILD_POLICY_OUTDATED + bool "outdated" + help + It will try to build from code if the binary is + not built with the current recipe or when missing binary package. + +config CONAN_BUILD_POLICY_CASCADE + bool "cascade" + help + It will build from code all the nodes with some dependency being + built (for any reason). Can be used together with any other build + policy. Useful to make sure that any new change introduced in a + dependency is incorporated by building again the package. + +config CONAN_BUILD_POLICY_ALWAYS + bool "always" + help + The always policy will retrieve the sources each time the package + is installed, so it can be useful for providing a “latest†mechanism + or ignoring the uploaded binary packages. + +config CONAN_BUILD_POLICY_NEVER + bool "never" + help + Never build, use binary packages or fail if a binary package is not found. + +endchoice + +config CONAN_REMOTE_NAME + string "Conan remote name" + help + Look in the specified remote server. diff --git a/features/buildroot/package/connman-gtk/Config.in b/features/buildroot/package/connman-gtk/Config.in new file mode 100644 index 00000000..467bf7ec --- /dev/null +++ b/features/buildroot/package/connman-gtk/Config.in @@ -0,0 +1,22 @@ +comment "connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_PACKAGE_LIBGTK3 || \ + BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_CONNMAN_GTK + bool "connman-gtk" + depends on BR2_USE_WCHAR # libglib2, connman + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, connman + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS # connman + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # connman + depends on !BR2_TOOLCHAIN_USES_MUSL # connman + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_CONNMAN + select BR2_PACKAGE_LIBGLIB2 + help + GTK GUI for ConnMan. + + https://github.com/jgke/connman-gtk diff --git a/features/buildroot/package/connman-gtk/connman-gtk.hash b/features/buildroot/package/connman-gtk/connman-gtk.hash new file mode 100644 index 00000000..fbc4acb1 --- /dev/null +++ b/features/buildroot/package/connman-gtk/connman-gtk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 49bdc4769a7c508b0130e4705eef21aec9df1ea4f5c29fee48a0cae8db828fca connman-gtk-1.1.1.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/features/buildroot/package/connman-gtk/connman-gtk.mk b/features/buildroot/package/connman-gtk/connman-gtk.mk new file mode 100644 index 00000000..0ea49198 --- /dev/null +++ b/features/buildroot/package/connman-gtk/connman-gtk.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# connman-gtk +# +################################################################################ + +CONNMAN_GTK_VERSION = 1.1.1 +CONNMAN_GTK_SITE = https://github.com/jgke/connman-gtk/releases/download/v$(CONNMAN_GTK_VERSION) +CONNMAN_GTK_SOURCE = connman-gtk-$(CONNMAN_GTK_VERSION).tar.bz2 +CONNMAN_GTK_INSTALL_STAGING = YES +CONNMAN_GTK_DEPENDENCIES = host-intltool connman libglib2 libgtk3 \ + $(TARGET_NLS_DEPENDENCIES) +CONNMAN_GTK_LICENSE = GPL-2.0+ +CONNMAN_GTK_LICENSE_FILES = COPYING +CONNMAN_GTK_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/connman/0001-nat-build-failure.patch b/features/buildroot/package/connman/0001-nat-build-failure.patch new file mode 100644 index 00000000..0ab58501 --- /dev/null +++ b/features/buildroot/package/connman/0001-nat-build-failure.patch @@ -0,0 +1,30 @@ +From 68f4b4f5b220f256b17ad2f084d61fe89f3632ae Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 19 Apr 2016 08:38:38 -0300 +Subject: [PATCH] nat: fix build failure + +_GNU_SOURCE needs to be defined so that O_CLOEXEC symbols can be found in +system header files. + +Signed-off-by: Gustavo Zacarias +--- +Status: submitted upstream + + src/nat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/nat.c b/src/nat.c +index 33ae6df..62e21d4 100644 +--- a/src/nat.c ++++ b/src/nat.c +@@ -24,6 +24,7 @@ + #include + #endif + ++#define _GNU_SOURCE + #include + #include + #include +-- +2.7.3 + diff --git a/features/buildroot/package/connman/Config.in b/features/buildroot/package/connman/Config.in new file mode 100644 index 00000000..5177c939 --- /dev/null +++ b/features/buildroot/package/connman/Config.in @@ -0,0 +1,78 @@ +config BR2_PACKAGE_CONNMAN + bool "connman" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # needs dlopen() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_MUSL # missing res_ninit() + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_IPTABLES + help + The Connection Manager (ConnMan) project provides a daemon + for managing internet connections within embedded devices + running the Linux operating system. + + https://01.org/connman + +if BR2_PACKAGE_CONNMAN + +config BR2_PACKAGE_CONNMAN_ETHERNET + bool "enable Ethernet support" + default y + +config BR2_PACKAGE_CONNMAN_WIFI + bool "enable WiFi support" + select BR2_PACKAGE_WPA_SUPPLICANT # runtime + select BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW # runtime + help + Enable WiFi support (scan and static/dhcp interface + setup). ConnMan detects the start of wpa_supplicant + automatically. + +config BR2_PACKAGE_CONNMAN_WISPR + bool "enable WISPr support" + depends on !BR2_STATIC_LIBS # gnutls + select BR2_PACKAGE_GNUTLS + help + Enable support for Wireless Internet Service Provider + roaming (WISPr). A RADIUS server is used to authenticate the + subscriber's credentials. + +comment "connman WISPr needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_CONNMAN_BLUETOOTH + bool "enable Bluetooth support" + help + Enable Bluetooth support. The start of bluetoothd is + automatically detected and only a runtime dependency. + +config BR2_PACKAGE_CONNMAN_LOOPBACK + bool "enable loopback support" + +config BR2_PACKAGE_CONNMAN_NEARD + bool "enable neard support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # neard + select BR2_PACKAGE_NEARD + +config BR2_PACKAGE_CONNMAN_OFONO + bool "enable ofono support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # ofono + select BR2_PACKAGE_OFONO + +config BR2_PACKAGE_CONNMAN_DEBUG + bool "enable compiling with debugging information" + +config BR2_PACKAGE_CONNMAN_CLIENT + bool "enable command line client" + select BR2_PACKAGE_READLINE + +endif # BR2_PACKAGE_CONNMAN + +comment "connman needs a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/features/buildroot/package/connman/S45connman b/features/buildroot/package/connman/S45connman new file mode 100644 index 00000000..d3d4bd5d --- /dev/null +++ b/features/buildroot/package/connman/S45connman @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting connman ... " + start-stop-daemon -S -q -m -b -p /var/run/connmand.pid --exec /usr/sbin/connmand -- -n + echo "done." + ;; + stop) + printf "Stopping connman ..." + start-stop-daemon -K -q -p /var/run/connmand.pid + echo "done." + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac diff --git a/features/buildroot/package/connman/connman.hash b/features/buildroot/package/connman/connman.hash new file mode 100644 index 00000000..ff5b4d48 --- /dev/null +++ b/features/buildroot/package/connman/connman.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/network/connman/sha256sums.asc +sha256 6ce29b3eb0bb16a7387bc609c39455fd13064bdcde5a4d185fab3a0c71946e16 connman-1.37.tar.xz +# Locally computed +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING diff --git a/features/buildroot/package/connman/connman.mk b/features/buildroot/package/connman/connman.mk new file mode 100644 index 00000000..839bc7a0 --- /dev/null +++ b/features/buildroot/package/connman/connman.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# connman +# +################################################################################ + +CONNMAN_VERSION = 1.37 +CONNMAN_SOURCE = connman-$(CONNMAN_VERSION).tar.xz +CONNMAN_SITE = $(BR2_KERNEL_MIRROR)/linux/network/connman +CONNMAN_DEPENDENCIES = libglib2 dbus iptables +CONNMAN_INSTALL_STAGING = YES +CONNMAN_LICENSE = GPL-2.0 +CONNMAN_LICENSE_FILES = COPYING +CONNMAN_CONF_OPTS += \ + --with-dbusconfdir=/etc \ + $(if $(BR2_PACKAGE_CONNMAN_DEBUG),--enable-debug,--disable-debug) \ + $(if $(BR2_PACKAGE_CONNMAN_ETHERNET),--enable-ethernet,--disable-ethernet) \ + $(if $(BR2_PACKAGE_CONNMAN_WIFI),--enable-wifi,--disable-wifi) \ + $(if $(BR2_PACKAGE_CONNMAN_WISPR),--enable-wispr,--disable-wispr) \ + $(if $(BR2_PACKAGE_CONNMAN_BLUETOOTH),--enable-bluetooth,--disable-bluetooth) \ + $(if $(BR2_PACKAGE_CONNMAN_LOOPBACK),--enable-loopback,--disable-loopback) \ + $(if $(BR2_PACKAGE_CONNMAN_NEARD),--enable-neard,--disable-neard) \ + $(if $(BR2_PACKAGE_CONNMAN_OFONO),--enable-ofono,--disable-ofono) \ + $(if $(BR2_INIT_SYSTEMD),--with-systemdunitdir=/usr/lib/systemd/system) + +CONNMAN_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_CONNMAN_NEARD),neard) \ + $(if $(BR2_PACKAGE_CONNMAN_OFONO),ofono) \ + $(if $(BR2_PACKAGE_CONNMAN_WISPR),gnutls) + +define CONNMAN_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/connman/S45connman $(TARGET_DIR)/etc/init.d/S45connman +endef + +define CONNMAN_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/connman.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/connman.service +endef + +ifeq ($(BR2_PACKAGE_CONNMAN_CLIENT),y) +CONNMAN_CONF_OPTS += --enable-client +CONNMAN_DEPENDENCIES += readline + +define CONNMAN_INSTALL_CM + $(INSTALL) -m 0755 -D $(@D)/client/connmanctl $(TARGET_DIR)/usr/bin/connmanctl +endef + +CONNMAN_POST_INSTALL_TARGET_HOOKS += CONNMAN_INSTALL_CM +else +CONNMAN_CONF_OPTS += --disable-client +endif + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/conntrack-tools/Config.in b/features/buildroot/package/conntrack-tools/Config.in new file mode 100644 index 00000000..87bf2d0c --- /dev/null +++ b/features/buildroot/package/conntrack-tools/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_CONNTRACK_TOOLS + bool "conntrack-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBNETFILTER_CTHELPER + select BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT + select BR2_PACKAGE_LIBNETFILTER_QUEUE + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + The conntrack-tools are a set of tools targeted at + system administrators. + They are conntrack, the userspace command line interface, + and conntrackd, the userspace daemon. + + http://www.netfilter.org/projects/conntrack-tools/ + +comment "conntrack-tools needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) || \ + BR2_STATIC_LIBS diff --git a/features/buildroot/package/conntrack-tools/conntrack-tools.hash b/features/buildroot/package/conntrack-tools/conntrack-tools.hash new file mode 100644 index 00000000..cd95a06d --- /dev/null +++ b/features/buildroot/package/conntrack-tools/conntrack-tools.hash @@ -0,0 +1,4 @@ +# From https://netfilter.org/projects/conntrack-tools/downloads.html +sha256 36c6d99c7684851d4d72e75bd07ff3f0ff1baaf4b6f069eb7244990cd1a9a462 conntrack-tools-1.4.5.tar.bz2 +# Locally calculated +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/features/buildroot/package/conntrack-tools/conntrack-tools.mk b/features/buildroot/package/conntrack-tools/conntrack-tools.mk new file mode 100644 index 00000000..77fcb529 --- /dev/null +++ b/features/buildroot/package/conntrack-tools/conntrack-tools.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# conntrack-tools +# +################################################################################ + +CONNTRACK_TOOLS_VERSION = 1.4.5 +CONNTRACK_TOOLS_SOURCE = conntrack-tools-$(CONNTRACK_TOOLS_VERSION).tar.bz2 +CONNTRACK_TOOLS_SITE = http://www.netfilter.org/projects/conntrack-tools/files +CONNTRACK_TOOLS_DEPENDENCIES = host-pkgconf \ + libnetfilter_conntrack libnetfilter_cthelper libnetfilter_cttimeout \ + libnetfilter_queue host-bison host-flex +CONNTRACK_TOOLS_LICENSE = GPL-2.0+ +CONNTRACK_TOOLS_LICENSE_FILES = COPYING + +CONNTRACK_TOOLS_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +CONNTRACK_TOOLS_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +CONNTRACK_TOOLS_DEPENDENCIES += libtirpc host-pkgconf +endif + +CONNTRACK_TOOLS_CONF_ENV = CFLAGS="$(CONNTRACK_TOOLS_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/features/buildroot/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch b/features/buildroot/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch new file mode 100644 index 00000000..9a7f38c6 --- /dev/null +++ b/features/buildroot/package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch @@ -0,0 +1,49 @@ +From 8d1b5a9b973a9891d676dabf31807eb825d7f262 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Perrad?= +Date: Wed, 6 Sep 2017 00:00:56 +0200 +Subject: [PATCH] Do not load coxpcall for LuaJIT + +* coxpcall is only required with PUC Lua 5.1, but not with LuaJIT + +use the same logic as in copas.lua. +this fixes issue #63. + +Fetch from: https://github.com/keplerproject/copas/commit/8d1b5a9b973a9891d676dabf31807eb825d7f262 +Signed-off-by: Francois Perrad +--- + doc/us/index.html | 5 +++++ + src/copas/limit.lua | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/copas-2_0_2/doc/us/index.html b/doc/us/index.html +index 1d008c2..c4d85ef 100644 +--- a/copas-2_0_2/doc/us/index.html ++++ b/copas-2_0_2/doc/us/index.html +@@ -114,6 +114,11 @@ LuaSocket, Coxpcall (only +

        History

        + +
        ++
        Copas [unreleased]
        ++
          ++
        • Fixed: coxpcall dependency in limit.lua #63 (Francois Perrad)
        • ++
        ++ +
        Copas 2.0.2 [2017]
        +

      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 YaKC5#2#L<9JbB_0*dOS6x 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/nconfig.png b/features/buildroot/docs/website/images/nconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..cc05d6e8e82c07298b1be7863f735e946191e4a6 GIT binary patch literal 88055 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 bSEm=7>jXG}mp)rxID_tAhT2t7>(KuKfC%_i literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/package.png b/features/buildroot/docs/website/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd8b1e0a196ccd62ce55256e72664195f071063 GIT binary patch literal 7746 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/rockwell-collins-logo.png b/features/buildroot/docs/website/images/rockwell-collins-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5956a82a75a8d16de29983413313f3a30a5a231 GIT binary patch literal 6124 zcma)gcQo5y_3 zuPSP9e%JY(@1NguzBwm(pX8l;@B7~8d0yj*daSEXMb1nPfk3DbLZs~LM6c>L$>XM=EnIJ$edIS3=|5DpIRNGA{PEuuz6 z2!ts}6Ru*2%Gj_#KQ9krcqnH0YlZzeY1(Y`JI99vk%MUtLOD;t3ER`yraLNJ$-!sV^K0J7D_7;nL*NB(nD=7c2}yK*&n!g=A6=30Ywadv~37)|yO6(LS!st)+osB5qm~GCooQezDJ?~hgolOYl$4NbJ$jV;{yp)a%hfnl4Gppeu;24r5^rhqKZ?rZ6)iGzC4)lP^lQ%Ma9L%iF(c| zM<#B~gpl=Lm|4)$HMg`x{j78u5=@cyVBb13HD3LkmX1yZ=P1cMH(85( zo1RX=979S=w}_BM1q7&WP1oo8ZB6U#QBU055Go}^Zk38Bboo%krsCWu2zOni%c|DM}+O#4GgNfljM9y-0fmjFN_TeU2ai_LDXiX6gl>09UaaDf0@ML6f#6@2opWD#8WBp zu^hdpio8N5pI@ek2nxP3Xy0nQ%<9`D?|-P-bq7m9+1@$m3qM{`mn+d8|t z?6TuhQ#GrqzSq{y=_#GREPYnN`?DtKT&@E5DEV$dk}xkX247KJ{G%sR{>E`=XejFP z;sqT3vAn!}ZJ;P$gWE-a>YiI{EbDIUMW-0fuwJ=D{A(hXwiqTlj$0KCV(NQBaH2*`QcAszvCCQjXEMFs6dI|)4z)oa)r@p$e#I3BX;MX#BvlVp~ zWo2b;(CAv7#@Zz6x;ta(9u1lwCEwjLDjk{!|F1MC(p6|EExqHI={naO0j~v!GZVP0 zbGD7=*#0&X)B+MPPrsNOVPS6mxXkE__*21~)i+5XAT?xOoOqkpB6!> z7o(1M9N@0duMrrGez3P(CN-aKh6YZ_Wsv`4S(!tZxOEeRz3BN!dB%yLpkVV?w+Vzy zQvFHE(^46<(MMwyx4nbEW8qlr>ERZi=|Nsz9*SxqQ{E3dS!_`BnH6L62_#kPN?~Ck zVzK_>WF0=e*ctD3QeRCv`m~c>0Tpuh?%lzp&Z#N3`w9x5+$O#nvO{M3a#h8Yl(G{~ zcYBp?n0bhZh$sYKC{(b5V=)}#ZTMl`l#&94;lUuLyXG2fmTAgn_Ayv&)2mnHe`gw% zw(<3@W8#v`F{~!zH`_=(-pPg+=|{H#aG*9PWnE01v|Rs0I63$rk#@2%pnks z=Pu4q(FjAqn@`?2>o$v07QTN^%L46ED6E}7KRxX4?TzL4TmF^WAxbGu8D8(d54%TP z^}Vd3LLD50WtL9*y-L>cf8IY61XxW#B`U^AgAk?vX{>H?*D4%Yce}^hryt9He^fT* zxR0B8DPWWCa=F$kV|{rYudE2~&6)oo(> zt58Hzv%Pxq&#CB~F=gKDOO;F4bwHw`*%^ z9!H8}u`JT=+&@9;h{9k&=ldhAr(o54jayaD1Fr50ghWJ7N{93v3W|zu?4DnoZlQJ- zHM5@nmfRYza=x+RUtw8KOXmer7LK;Du{m1pzkN{q9z8qoUfAsGC-If;boIqnJRUiX z-WabQ-0~2Gx?WJ15%_L5tHX`!{iU|2%{=N!ID(G2R>rS!1VR9^c%B}(u{YM#Kmi+~ zP^c!4#&c4+%s2S!G&C#18EH8~E;h$IORWK04X1Y@kh7gGk=9c&F|pS5q$@`F_)%!S zK34IBtl@0uQBU>f&*B{&9U*?x=*X1FDkqWn&ZeQEo1`@Cl%(OI^@`5Fxl`o*z%&dD z44ykLBO-anNMFkc|yH#yEs%n5lBBRRQ#mC=BN=&5N)y`5# z9p6n=7zSt>m4U^Q<^4K2@n@Cu<`>gLAjG>UC@7vM*il6@iSRDR#>A+_JXEb}AR!@n zVzz42g4sR-$cKMsiH<-D%gLn;+%}!QT#VPlwpgcXV;p-j<`llv)TA6ylSecc%5icD z3&-$F$jGGZZc2v7)z!)4=TC4=ceU;TJhCmQ-)?6aRCs?~8Zr`Z3sln}*Q)}*i~4}W z59ExuZgp-u<)m(8W@KQ8wUDdca)0Q5T#*PCtEs8kdRleN-f8M6&@wW@1QbJ8Clf7g z({yszlA-D^pvKU>gHDo$UDJR@%7zK910@k29v-y=luOGTHLJ|qjxT#ZgDwC4(lRnO z*2rA7#G&F+R_5EH;SI(@|CQNcsU8syALLWr5+?>*imI%vG^BA?Qc?myp(NXz4Py56 z3P}gV#q;SQcKTn-C#`+y zRm=~PPxET+?xvD<9Ss32y08Q?JS90f5`eP9eKlIT!@pyy2?dY&Wk|CDVbY^vab#D; z=HS+i`j01H=d+!iT`^jyyT8zWZ9P)s;N>T&wzf7KXJ-Mun@lFp^R0se~nOROypd@Ok3*nQjH2&B@e6)%1XOtl7@0d9}zD z1WMlb@28V9=Yc}H8N1!(Zlm3LP*L|}N7xkup+KCbO@=r)I8=%|QAHRFwafc$e!~6y zsg=-a4|fNzdw zl#aNBgw4s`+S|lLlCiNd;2=5|d^W~!VkmDB0>MMe#B>c&JLxiZdaywOfc;;$^o+8v z?>+OzpiKPs&Q2JO(%IW7`gfU`I+KU@Y?_Iuvnn;?d4GU}MNJMA>8ZYWalgY}90GY< zY&cl&otvBc$)<(0CyC((fVZZ06|qJU`lzO^E((BGM1Ux(MjYc(Qplt|reE%_kF)@R zJiFYT4iF~FJXM=itAHK`gINO={&)ZOGAdm*Yl@85QjnUxh5a zI!>slHRQB0_m84zu+sc}tHpV8-OwMnbzwH@F}-CCQA#4gL~?MVWIzqH+KL?=9VuH| z&q{O-t?z@y#yGCPT1H-eBEO@I97_gLGCY!o;{k9(U?fO|*{v-a;5!r=Dwhciaco4^ zfz5R*@h3{2o8zCdX|h*y=Qp6%gJ&_gERSH4axXh()I%b}o;TO>OA_!%y)2qn{acFb zcP`dFQB{HgszQw6+1VUN$H!w&%fEb)0P7lz%v{`|je_@8+NsYwg}?l6^%+aP%rHo0 zZzEE9`Ft0FCFeClh2yN~Pa8Lz>GHxt<0;K=@QxZ5CXsS&=7kiID)y^R#ci|(xL4@f zMOI?Te6C4EDU7sgaw1L~TmK#YpoHnM%ae1HZ#fEi?dA;a+Y?@>czKC|xU#*9j?M*O zucf6mdYq-rOJrqbPN=@%^(KoX(RO~Bq*@*d1@;jLm42t>Dl`OK5rxq=$ zpfJgMhtt`u$I>BJ*ipz5m(s#^-(ND$aV_x@_u%noBM4B_AONEUkCJ)Q$2GfP2M{+| zRo-|T;K#b^kSo+fUs@6Pwq0_Yn$c!2KvgN?4&-Mi>lHdZ>2Kdc&QJD{%EcjnXtUnE zYZlYG61hxm6cA2D#fE*%l)GS>Srh_)$y+zc+YF95 z#|fX8dq1nNbU*{YH8@*c*mv!cgzUZvMH{dI)&M^<-0mi6XlaElF50h7)k(j6`O?!? z7zXpAt1B<3*3FP10EJ^M3RMPij*PrUOiZl&;6a$qBk1~Y*=_a`F{eIG?5kI{mowje z?l?&@vx~^cKru9zcu{>TE1LcNeMpmqu^$3q%e0}RU_hxZ8Ev+EC?SbG6@1h&5|zm^}nTRS62Hw6t_PTBM=LcVm2820$~PUY7RMY5?GBR%v(hd@o*L z9S+t8t^t?ef}FZdj)`TA1Tw(Il{y6Dc6&HbyxT^S*{eHEDu&dB=bS%T#7Z|oGn(cW zJ$>_a>MFl2OIRR_f|4^PhC56=ZZkSRh zFDH7eaq8^;{5EO!ko>T(+(Q0rHk>AH&k_)@-Fg~h#8?6YIf)(`?8A%VtrQuUUzx&# zx{o%yb(mc{zyI+_e}WdzUDGNu8g>P&`Wx2V_6XwHc6~VfS5Hsj1+@F{bw6%L7<}p? z=%U+LEkWwWjSR9gLq;(RtNr{P~Mo*ts_KMuO(=s_}ZvNHvmIqZI*<@-tu1t;qRq>V;ZD z|2GdST{2Q+pDvlyObQx!Cm0^lYpkXgp%c))=YL=7b+~M=srGqChen=Q__B@d=J^Bp zMZyr47hUXE6VA5Bunfk!qgP3(m}4+9FW+f!qjr~dTogga>Fj7*D3bBWX>YZk)dV;* z!w4ykP4}tqi5=@>U-;D7g$HwzlbOUc;`^Oifn>R{n}SCUx>SSyjz-z;(Gf}^@aU7y z{xp=B=Q&r6=N#dFc>28BJyO%Nc5pPN-6KVM9JY!EkgS~@gf{{KL;PaG`N**iiGTN5 zH|mjauH5NH58M8!Fs=+cx?5#@8}y78Gbb!SJE*g>)5z}Q-r7JU>a(r^C%*{=K{uQV zGFqs^;<9Ih?0XGmx#ya*EQ|WbDHaRBI-qdk%55+1{TYfLknblXGhx@%-VHDWglpic zn<=NZD8NAOvMMu<>mRS30@?!K8P8|%LTCbLc>Cx)*{coYw6#bVfX<2KBiE?WQDa-n zuD7ndR}QyTh7T5pWi!1Wbe4jGl0s%dczb`^LNR`v7y%R0MJFy|xBY2p8Wtz&tNG{R zmt}y+kb>wNBgwp=M4X+U%hvZq-QdG2JgPX$%Y)g*&i(!SODuf=cgRD3 zUF72Z^(yoNP}6QD!5Etl4S7i`4N@dw@2WY0@{5zRuS|OQ8XAh-`_chn4$JRJlcKm1 zjG(LZZQL$RK^lt5MF^YujyIPtnX+`ZG`~}iF7|MLEv9Z_a?5L)pFZl-r%$wWEJA4j zjbuQB=PGl7t-ZMp8h+NI)|#5vpK1yRY!m`+V8j4(Q4$xLq|Lhp_V}l-ypo$S+6#0H zGCaqD`Q<|h2e1X8meRA;9b?p^|KXhaVX)xEjyR#n|N31&+5{{mK68~rW{|3MnsQ!6 z?S4+5xSF~;@-+>x-A)MBHYTe;IuY}lraO2n-EHg{(9TFy)wJ_$Qz$FDTXEAnN3>yr z!2Z@uwy~9IS(2Z5qClpM7a<*s{}RY*soL#Sspm%d$hr2bi~@Bb?fD~&WVA6jnDY8{ zn~^49*uonc8lV8^+GnIAALjq?Ss%Xg@0E#3S_M!Rmgq-GLO(zkWn1?g?uz}ay`C9# zdG43=%*^bOkB9h-#D4(gDt7=ocI{A-676HH$7>y`lq;5>BZJTPnW#AwStq`Ecu4KZ zD~BU@KvT|5v9w&Q>U&M}r4Oe=Hk8Vxni;e_X8ZHiL$I828abc^mGhXN)%a%;6~^X& z+Ms|OK-pvAFi#&J65w_LS$!4|{a8kupdA9ari!iO|3CMs|JMfg|G#mjWXw-BT(K$k R7PRXjnrgc6@(0#o{|{tIyRQHM literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/scaleway-logo.png b/features/buildroot/docs/website/images/scaleway-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..16859145480183b7b59ea61b2da40f66004de932 GIT binary patch literal 12331 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 XLMHAA0mVSZelQsc1@UT8qo4l=0b?Wu literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/smile-logo.png b/features/buildroot/docs/website/images/smile-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcea3334c046debf0b1c09b50031f340cce0c7e GIT binary patch literal 60367 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 literal 0 HcmV?d00001 diff --git a/features/buildroot/docs/website/images/synopsys-logo.png b/features/buildroot/docs/website/images/synopsys-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4fbd89a106a0d4daaa935f110b2f76cd097f03d GIT binary patch literal 52426 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